diff options
author | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2008-05-16 16:13:11 +0000 |
---|---|---|
committer | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2008-05-16 16:13:11 +0000 |
commit | 68c951c7f1014e7cfe936aa3de9e0b992280be10 (patch) | |
tree | 9408e2f89f85491587ba3350ce814f92bb3a5394 /Master | |
parent | 5fb6577c47cfacface48ccd80ba4b532b603cb08 (diff) |
tablor v2.05 (2008/05/14)
git-svn-id: svn://tug.org/texlive/trunk@8181 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/tablor/Figures.zip | bin | 161346 -> 175060 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tablor/tablor.html | 356 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tablor/tablor.pdf | bin | 331007 -> 469785 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tablor/tablor.tex | 332 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tablor/tablor.cfg | 8 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tablor/tablor.sty | 140 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tablor/tablorutf8.sty | 2393 |
7 files changed, 510 insertions, 2719 deletions
diff --git a/Master/texmf-dist/doc/latex/tablor/Figures.zip b/Master/texmf-dist/doc/latex/tablor/Figures.zip Binary files differindex c9be5218fe3..ae85df1bd44 100644 --- a/Master/texmf-dist/doc/latex/tablor/Figures.zip +++ b/Master/texmf-dist/doc/latex/tablor/Figures.zip diff --git a/Master/texmf-dist/doc/latex/tablor/tablor.html b/Master/texmf-dist/doc/latex/tablor/tablor.html index 4070357a6b8..0668506334f 100644 --- a/Master/texmf-dist/doc/latex/tablor/tablor.html +++ b/Master/texmf-dist/doc/latex/tablor/tablor.html @@ -25,6 +25,12 @@ color: #9932cc; font-weight: bold; } + .flyspell-duplicate { + /* flyspell-duplicate-face */ + color: #cdad00; + font-weight: bold; + text-decoration: underline; + } .flyspell-incorrect { /* flyspell-incorrect-face */ color: #ff4500; @@ -83,13 +89,13 @@ <pre> <span class="font-latex-sedate">\NeedsTeXFormat</span>{LaTeX2e}[1995/12/01] -<span class="font-latex-sedate">\ProvidesPackage</span>{tablor}[24/03/2008 v2.03 la machine à créer des tableaux de signes et variations] +<span class="font-latex-sedate">\ProvidesPackage</span>{<span class="flyspell-duplicate">tablor</span>}[14/05/2008 v2.05 la machine à créer des tableaux de signes et variations] <span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\copyleft</span></span><span class="comment"> Connan le Barbare </span><span class="font-latex-sedate"><span class="comment">\copyright</span></span><span class="comment"> </span><span class="comment-delimiter">% </span><span class="comment">avec l'efficace participation de Jean-Michel </span><span class="comment"><span class="flyspell-incorrect">Boucart</span></span><span class="comment"> </span> -<span class="comment-delimiter">%% </span><span class="comment">Crée 14 environnements : +<span class="comment-delimiter">%% </span><span class="comment">Crée 16 environnements : </span><span class="comment-delimiter">%% </span><span class="comment">tableau de signes de 2 facteurs affines </span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TSa} </span><span class="comment-delimiter">% </span><span class="comment">TSa(-2,3,-1,5,</span><span class="font-latex-sedate"><span class="comment">\tv</span></span><span class="comment">); @@ -110,7 +116,14 @@ </span><span class="comment-delimiter">% </span><span class="comment">TV([0,+infinity],[0],"h","x",ln(x)-(ln(x))^2,1,</span><span class="font-latex-sedate"><span class="comment">\tv</span></span><span class="comment">) </span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TV} </span><span class="comment-delimiter">%</span><span class="comment"> -</span><span class="comment-delimiter">% </span><span class="comment">tableau avec valeurs </span><span class="comment"><span class="flyspell-incorrect">intermédiares</span></span><span class="comment"> +</span><span class="comment-delimiter">% </span><span class="comment">tableau de variation avec zones interdites +</span><span class="comment-delimiter">%</span><span class="comment"> +</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TVZ} +</span><span class="comment-delimiter">% </span><span class="comment">TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",sqrt(x^2-1),1,</span><span class="font-latex-sedate"><span class="comment">\tv</span></span><span class="comment">) +</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TVZ} +</span><span class="comment-delimiter">%</span><span class="comment"> +</span><span class="comment-delimiter">%</span><span class="comment"> +</span><span class="comment-delimiter">% </span><span class="comment">tableau avec valeurs intermédiares </span><span class="comment-delimiter">%</span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TVI} </span><span class="comment-delimiter">%</span><span class="comment">TVI([-1,+infinity],[-1],"f","x",x2/sqrt(x+1)-1,1,2,</span><span class="font-latex-sedate"><span class="comment">\tv</span></span><span class="comment">) </span><span class="comment-delimiter">%</span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TVI} @@ -144,29 +157,29 @@ </span> <span class="font-latex-sedate">\RequirePackage</span>{ifthen} -<span class="font-latex-sedate">\RequirePackage</span>{fancyvrb} -<span class="font-latex-sedate">\RequirePackage</span>{ifpdf} +<span class="font-latex-sedate">\RequirePackage</span>{<span class="flyspell-incorrect">fancyvrb</span>} +<span class="font-latex-sedate">\RequirePackage</span>{<span class="flyspell-duplicate">ifpdf</span>} <span class="comment-delimiter">% </span><span class="comment">option xcas présent </span> -<span class="font-latex-sedate">\newboolean</span>{xcas}<span class="font-latex-sedate">\setboolean</span>{xcas}{false} +<span class="font-latex-sedate">\newboolean</span>{xcas}<span class="font-latex-sedate">\setboolean</span>{xcas}{<span class="flyspell-duplicate">false</span>} <span class="font-latex-sedate">\DeclareOption</span>{xcas}{<span class="font-latex-sedate">\setboolean</span>{xcas}{true}} -<span class="comment-delimiter">%% </span><span class="comment">Initialisation du choix d'OS -</span><span class="font-latex-sedate">\newboolean</span>{windows}<span class="font-latex-sedate">\setboolean</span>{windows}{false} +<span class="comment-delimiter">%% </span><span class="comment">Initialisation du choix </span><span class="comment"><span class="flyspell-incorrect">d'OS</span></span><span class="comment"> +</span><span class="font-latex-sedate">\newboolean</span>{windows}<span class="font-latex-sedate">\setboolean</span>{windows}{<span class="flyspell-duplicate">false</span>} -<span class="comment-delimiter">%% </span><span class="comment">on configure tablor dans un fichier extérieur pour la plateforme +<span class="comment-delimiter">%% </span><span class="comment">on configure tablor dans un fichier extérieur pour la </span><span class="comment"><span class="flyspell-incorrect">plateforme</span></span><span class="comment"> </span><span class="comment-delimiter">%% </span><span class="comment">et l'éditeur </span> -<span class="font-latex-sedate">\IfFileExists</span>{tablor.cfg}{<span class="font-latex-sedate"><span class="keyword">\input</span></span><span class="constant">{tablor.cfg}</span>}<span class="comment">%</span><span class="font-latex-sedate"><span class="comment">\typeout</span></span><span class="comment">{pas de fichier tablor.cfg}} +<span class="font-latex-sedate">\IfFileExists</span>{tablor.cfg}{<span class="font-latex-sedate"><span class="keyword">\input</span></span><span class="constant">{tablor.cfg}</span>}<span class="comment">%</span><span class="font-latex-sedate"><span class="comment">\typeout</span></span><span class="comment">{pas de fichier tablor.</span><span class="comment"><span class="flyspell-duplicate">cfg</span></span><span class="comment">}} </span> <span class="font-latex-sedate">\ProcessOptions</span><span class="font-latex-sedate">\relax</span> -<span class="comment-delimiter">%% </span><span class="comment">pour ceux compilant via pdflatex +<span class="comment-delimiter">%% </span><span class="comment">pour ceux compilant via </span><span class="comment"><span class="flyspell-incorrect">pdflatex</span></span><span class="comment"> </span> <span class="font-latex-sedate">\ifpdf</span> <span class="font-latex-sedate">\DeclareGraphicsRule</span>{*}{mps}{*}{} @@ -174,7 +187,7 @@ <span class="comment-delimiter">%% </span><span class="comment">pour nettoyer les fichiers auxiliaires </span> -<span class="font-latex-sedate">\AtEndDocument</span>{<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\rem</span> tete.* *.user XCas* Xcas* *.mpx}} +<span class="font-latex-sedate">\AtEndDocument</span>{<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\rem</span> tete.* *.user XCas* Xcas* *.<span class="flyspell-incorrect">mpx</span>}} @@ -182,16 +195,16 @@ <span class="comment-delimiter">%% </span><span class="comment">En-tête pour le fichier metapost contenant les codes </span><span class="comment-delimiter">%% </span><span class="comment">de tous les tableaux produits </span> - <span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{tete.mp} + <span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{tete.mp} input tableauVariation; verbatimtex <span class="comment-delimiter">%</span><span class="comment">&latex </span> <span class="font-latex-sedate"><span class="keyword">\documentclass</span></span><span class="function-name">{article}</span> - <span class="font-latex-warning">\\</span>?fonte + \?fonte <span class="font-latex-sedate"><span class="keyword">\usepackage</span></span><span class="function-name">{amsmath}</span> <span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\Mathbold</span></span><span class="function-name">}</span>[1]{<span class="font-latex-sedate"><span class="keyword">\mbox</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\boldmath</span></span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="font-latex-sedate"><span class="function-name">\unboldmath</span></span><span class="function-name">}</span>} <span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{document}</span> - etex + <span class="flyspell-duplicate">etex</span> <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> @@ -203,17 +216,17 @@ </span> <span class="comment-delimiter">%% </span><span class="comment">Définit des commandes disque selon l'OS utilisé -</span><span class="font-latex-sedate">\ifthenelse</span>{<span class="font-latex-sedate">\boolean</span>{windows}}<span class="comment">% +</span><span class="font-latex-sedate">\ifthenelse</span>{<span class="font-latex-sedate">\boolean</span>{<span class="flyspell-duplicate">windows</span>}}<span class="comment">% </span> {<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\rem</span></span><span class="function-name">}</span>{DEL } <span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\cat</span></span><span class="function-name">}</span>{TYPE } <span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\cp</span></span><span class="function-name">}</span>{COPY }}<span class="comment">% -</span> {<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\rem</span></span><span class="function-name">}</span>{rm }<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\cat</span></span><span class="function-name">}</span>{cat } - <span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\cp</span></span><span class="function-name">}</span>{cp }} +</span> {<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\rem</span></span><span class="function-name">}</span>{rm }<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\cat</span></span><span class="function-name">}</span>{<span class="flyspell-duplicate">cat</span> } + <span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\cp</span></span><span class="function-name">}</span>{<span class="flyspell-duplicate">cp</span> }} <span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\nettoyer</span></span><span class="function-name">}</span>[1][<span class="font-latex-sedate">\jobname</span>]<span class="comment">% </span>{<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\rem</span> #1.Tab.log} -<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{echo end >> #1.Tab.mp} +<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{echo end >> #1.Tab.<span class="flyspell-duplicate">mp</span>} } @@ -283,7 +296,7 @@ </span><span class="comment-delimiter">%%</span><span class="comment"> </span> -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTV.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{XcasTV.cxx} TV(L,F,nom,nomv,f,ftt,nmr):={ nl:=size(L); f:=unapply(f,x); @@ -324,7 +337,7 @@ if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; if(ksp==1){"plus;"}else{"moins;"} }; } -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; +<span class="flyspell-duplicate">lsf</span>:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; "} lm0:=limite(f(x),x=Z[0],1)==-infinity; li:=" @@ -352,7 +365,7 @@ lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; "}; -intro:="input tableauVariation; +intro:="input <span class="flyspell-duplicate">tableauVariation</span>; verbatimtex <span class="comment-delimiter">%</span><span class="comment">&latex </span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span> @@ -395,7 +408,7 @@ if(nz>2){intro+"beginTableau("+nmr+")"+ lsi+lsp+lsf+ li+ lp+ -lf +<span class="flyspell-duplicate">lf</span> +" endTableau; end";}else{intro+"beginTableau("+nmr+")"+ @@ -437,7 +450,7 @@ endTableau; li+ lf +" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; ";}}else{ if(nz>2){"beginTableau("+nmr+")"+ @@ -474,28 +487,44 @@ return(MetaL); <span class="comment-delimiter">%%</span><span class="comment"> </span><span class="comment-delimiter">%%</span><span class="comment"> -</span><span class="comment-delimiter">%% </span><span class="comment">TV avec une zone interdite : on rajoute comme argument l'intervalle interdit -</span><span class="comment-delimiter">%% </span><span class="comment">par exemple, pour sqrt(x^2-1) : TVZ([-infinity,100],[],[-1,1],"f","x",sqrt(x^2-1),1,1) +</span><span class="comment-delimiter">%% </span><span class="comment">TV avec une zone interdite : on rajoute comme argument la liste des intervalles interdits +</span><span class="comment-delimiter">%% </span><span class="comment">par exemple, pour sqrt(x^2-1) : TVZ([-infinity,100],[],[[-1,1]],"f","x",sqrt(x^2-1),1,1) </span><span class="comment-delimiter">%%</span><span class="comment"> </span> -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTVZ.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{XcasTVZ.<span class="flyspell-duplicate">cxx</span>} + TVZ(L,F,FF,nom,nomv,f,ftt,nmr):={ nl:=size(L); -if(FF[0]>L[0]){Imin:=FF[0];LL:=L}else{Imin:=L[0];LL:=[L[1]]}; -if(FF[1]<L[1]){Imax:=FF[1];LL:=L}else{Imax:=L[1];LL:=[L[0]]}; -FF:=[Imin,Imax]; -f:=unapply(f,x); +nf:=size(FF); + Ff:=NULL;IMIN:=NULL;IMAX:=NULL; +for(k:=0;k<nf;k++){ +if(FF[k][0]>L[0]){Imin[k]:=FF[k][0];LL:=L}else{Imin[k]:=L[0];LL:=[L[1]]}; +if(FF[k][1]<L[1]){Imax[k]:=FF[k][1];LL:=L}else{Imax[k]:=L[1];LL:=[L[0]]}; + Ff:=Ff,[Imin[k],Imax[k]]; + IMIN:=IMIN,Imin[k]; + IMAX:=IMAX,Imax[k]; + } + FF:=[Ff]; + IMIN:=[IMIN]; + IMAX:=[IMAX]; + f:=unapply(f,x); fp:=fonction_derivee(f); Z:=concat(LL,F); -Z:=concat(Z,FF); + +for(k:=0;k<nf;k++){ +Z:=concat(Z,FF[k]); +} + S:=resoudre(fp(x),x); si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - kK:=(evalf(S[j])<evalf(Imin)) or (evalf(S[j])>evalf(Imax)); + for(k:=0;k<nf;k++){ + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + kK:=(evalf(S[j])<evalf(Imin[k])) or (evalf(S[j])>evalf(Imax[k])); Kk:=(kk) and kK; if(Kk==1){Z:=append(Z,simplifier(S[j]))}; - fpour + } + fpour fsi; Z:=sort(Z); @@ -510,9 +539,12 @@ pour u de 1 jusque nz-2 faire fsi; fpour; nz:=size(Z); -for(k:=1;k<nz;k++){ -if ((Z[k]>Imin)and(Z[k]<Imax)){Z:=augment(Z[0..k-1],Z[k+1..nz-1]);nz:=nz-1; -} + +for(j:=0;j<nf;j++){ + for(k:=1;k<nz;k++){ + if ((Z[k]>Imin[j])and(Z[k]<Imax[j])){Z:=augment(Z[0..k-1],Z[k+1..nz-1]);nz:=nz-1; + } + } } nz:=size(Z); @@ -525,21 +557,27 @@ pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+ lsi:=" newLigneSignes(btex <span class="font-latex-math">$\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$</span> etex);"+ - if(Z[0]==Imin){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ +if(member(Z[0],IMIN)!=0){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}} - -if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; - lsp:=lsp+if(Z[r]==Imin){"debutNonDef;"}else{ - if(Z[r]==Imax){"finNonDef;"+ + + + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; + lsp:=lsp+if(member(Z[r],IMIN)!=0){"debutNonDef;"}else{ + if(member(Z[r],IMAX)!=0){"finNonDef;"+ if(ksp==1){"plus;"}else{"moins;"}}else{ if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ if(ksp==1){"plus;"}else{"moins;"} }}}}; -lsf:=if(Z[0]==Imax){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; + + +lsf:=if(member(Z[0],IMAX)!=0){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; "}} + + lm0:=limite(f(x),x=Z[0],1)==-infinity; li:=" newLigneVariations(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$</span> etex);"+ @@ -549,11 +587,12 @@ newLigneVariations(btex <span class="font-latex-math">$\\hbox{\</span><span clas ");"; if(nz>2){ - for(r:=1; r<=nz-2;r++){ + for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; - lp:=lp+if(Z[r]==Imin){"limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){ + + lp:=lp+if(member(Z[r],IMIN)!=0){"limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){ "-\\infty"}else{ latex(simplifier(limite(f(x),x=Z[r],-1)))} +"$</span> etex,"+if(krm==1){ @@ -561,9 +600,9 @@ if(nz>2){ +"debutNonDef;" }//fsi Zr=Imin else{ - if (Z[r]==Imax) {"finNonDef;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){ + if (member(Z[r],IMAX)!=0) {"finNonDef;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){ "-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))} - +"$</span> etex,"+if(krp==1){ + +"$</span> etex,"+if(<span class="flyspell-duplicate">krp</span>==1){ "1);"}else{"0);"} } else { @@ -587,7 +626,7 @@ if(nz>2){ }//felse(member Zr F) } //felse(Zr=Imax) }//felse(Zr=Imin) - };//ffor + };//ffor }//fsi nz lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; @@ -646,7 +685,7 @@ end";}else{intro+"beginTableau("+nmr+")"+ l0+ lsi+lsf+ li+ -lf +<span class="flyspell-duplicate">lf</span> +" endTableau; end";} @@ -689,7 +728,7 @@ if(nz>2){"beginTableau("+nmr+")"+ lsi+lsp+lsf+ li+ lp+ -lf +<span class="flyspell-duplicate">lf</span> +" endTableau; @@ -714,6 +753,7 @@ return(MetaL); } :; + <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> @@ -724,7 +764,7 @@ return(MetaL); </span> -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTVapp.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{XcasTVapp.cxx} @@ -732,7 +772,7 @@ return(MetaL); -TVapp(L,F,nom,nomv,f,ftt,nmr):={ +<span class="flyspell-duplicate">TVapp</span>(L,F,nom,nomv,f,ftt,nmr):={ nl:=size(L); @@ -771,7 +811,7 @@ for(j:=1;j<nz;j++){ Z:=[S]; -nz:=size(Z); +<span class="flyspell-duplicate">nz</span>:=size(Z); l0:=" newLigneVariables(btex <span class="font-latex-math">$"+nomv+"$</span> etex);";lp:=" "; lf:=" ";lsp:=" "; pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> etex); ";fpour; @@ -835,7 +875,7 @@ MetaL:=if(ftt==2){if(nz>2){intro+"beginTableau("+nmr+")"+ endTableau; end ";}else{ -intro+"beginTableau("+nmr+")"+ +<span class="flyspell-duplicate">intro</span>+"beginTableau("+nmr+")"+ l0+ lsi+lsf+" endTableau; @@ -877,7 +917,7 @@ end";} MetaLfc:=if(ftt==2){if(nz>2){" -beginTableau("+nmr+")"+ +beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+ l0+lsi+lsp+lsf+" endTableau; @@ -920,7 +960,7 @@ lsi+lsf+ li+ lf +" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; ";} }} @@ -957,7 +997,7 @@ return(MetaL); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTVI.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{XcasTVI.cxx} TVI(L,F,nom,nomv,f,ftt,ao,nmr):={ @@ -1001,7 +1041,7 @@ l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[nz-1])+"$</span> etex) if(NL>nz){for(k:=0;k<NL-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0); TestL:=(abs(LL[k])==abs(LL[k+1])); if(TestS==0){ if( TestL==1 ){l0:=l0}else{ -A:=A,aa;l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[kk])+"$</span> etex);"+"val(btex <span class="font-latex-math">$\\alpha_</span><span class="font-latex-subscript"><span class="font-latex-math">"</span></span><span class="font-latex-math">+aa+"$</span> etex);";aa:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[kk])+"$</span> etex);";kk:=kk+1}} +A:=A,aa;l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[kk])+"$</span> etex);"+"val(btex <span class="font-latex-math">$\\alpha_</span><span class="font-latex-subscript"><span class="font-latex-math">"</span></span><span class="font-latex-math">+aa+"$</span> <span class="flyspell-duplicate">etex</span>);";aa:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[kk])+"$</span> etex);";kk:=kk+1}} l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[nz-1])+"$</span> etex); "}; @@ -1028,7 +1068,7 @@ if(nz>2){rr:=1; if(nz==NL){for(r:=1; r<=NL-2;r++){ TestS:=(sign(evalf(LL[r lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex <span class="font-latex-math">$ $</span> etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "}; }} -else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); +else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-<span class="flyspell-duplicate">ao</span>))==0.0); TestL:=(abs(LL[r])==abs(LL[r+1])); if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex <span class="font-latex-math">$ $</span> etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} @@ -1056,7 +1096,7 @@ newLigneVariations(btex <span class="font-latex-math">$\\hbox{\</span><span clas krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; lp:=lp+if(member(Z[r],F)) { - "limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$</span> etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$</span> etex,"+if(krp==1){"1);"}else{"0);"}} + "limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$</span> etex,"+if(krm==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$</span> etex,"+if(krp==1){"1);"}else{"0);"}} else{"valPos(btex <span class="font-latex-math">$"+latex(simplifier(f(Z[r])))+"$</span> etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex <span class="font-latex-math">$ "+ao+" $</span> etex,0.5);" @@ -1079,7 +1119,7 @@ else{lp:=lp+if(member(Z[rr],F)){ else{"valPos(btex <span class="font-latex-math">$"+latex(simplifier(f(Z[rr])))+"$</span> etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); "}}};rr:=rr+1; -}//else testS==0 +}//else <span class="flyspell-duplicate">testS</span>==0 }//for nz<NL }// else nz<NL //if nz=NL @@ -1120,7 +1160,7 @@ end"; if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ l0+ li+ -lp+ +<span class="flyspell-duplicate">lp</span>+ lf +" endTableau; @@ -1205,7 +1245,7 @@ fprint(sortie,Unquoted,MetaLfc); fclose(sortie); -return(MetaL); +return(<span class="flyspell-duplicate">MetaL</span>); }:; @@ -1226,7 +1266,7 @@ return(MetaL); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTVIapp.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{XcasTVIapp.cxx} TVIapp(L,F,nom,nomv,f,ftt,ao,nmr):={ @@ -1245,7 +1285,7 @@ si size(S)>0 alors pour j de 0 jusque size(S)-1 faire kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]); if(kk==1){if(kok==1){z:=append(z,simplifier(S[j]))}}; fpour; -fsi; +<span class="flyspell-duplicate">fsi</span>; S:=NULL; @@ -1365,7 +1405,7 @@ if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) { }// else testL==1 }//testS==0 else{lp:=lp+if(member(Z[rr],F)){ - "limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$</span> etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$</span> etex,"+if(krp==1){"1);"}else{"0);"}} + "limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$</span> etex,"+if(krm==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$</span> etex,"+if(krp==1){"1);"}else{"0);"}} else{"valPos(btex <span class="font-latex-math">$"+latex(simplifier(f(Z[rr])))+"$</span> etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); "}}};rr:=rr+1; @@ -1402,7 +1442,7 @@ endTableau; end";}else{ intro+"beginTableau("+nmr+")"+ l0+ -lsi+lsf+" +<span class="flyspell-duplicate">lsi</span>+lsf+" endTableau; end"; } @@ -1444,7 +1484,7 @@ MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+ l0+lsi+lsp+lsf+" endTableau; -";}else{ +";}<span class="flyspell-duplicate">else</span>{ "beginTableau("+nmr+")"+ l0+ lsi+lsf+" @@ -1483,7 +1523,7 @@ lsi+lsf+ li+ lf +" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; ";} }}; @@ -1521,7 +1561,7 @@ return(MetaL); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTabSignL.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{XcasTabSignL.cxx} TS(L,D,nmr):={ @@ -1570,7 +1610,7 @@ MetaL:=" input tableauVariation; etex; beginTableau("+nmr+") -newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); +<span class="flyspell-duplicate">newLigneVariables</span>(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); "+l0+li+ " newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe du }\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> produit}}$</span> etex);"+ @@ -1649,7 +1689,7 @@ newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex li + " - newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe du }\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> produit}}$</span> etex);"+ + newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe du }\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> produit}}$</span> <span class="flyspell-duplicate">etex</span>);"+ if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" "}+ @@ -1685,7 +1725,7 @@ endTableau; sortie:=fopen("XCasmpfc.mp"); fprint(sortie,Unquoted,MetaLfc); fclose(sortie); -return(MetaL); +return(<span class="flyspell-duplicate">MetaL</span>); }:; <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> @@ -1699,8 +1739,8 @@ return(MetaL); </span> -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTabSignQ.cxx} -TSq(nomf,L,Fo,D,nmr):={ +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{<span class="flyspell-duplicate">XcasTabSignQ</span>.cxx} +<span class="flyspell-duplicate">TSq</span>(nomf,L,Fo,D,nmr):={ L:=apply(f->unapply(f,x),L); Fo:=apply(f->unapply(f,x),Fo); L:=concat(L,Fo); @@ -1717,7 +1757,7 @@ pour k de 0 jusque n-1 faire if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);} fpour; fsi; -fpour; +<span class="flyspell-duplicate">fpour</span>; pour k de 0 jusque m-1 faire @@ -1727,7 +1767,7 @@ pour k de 0 jusque m-1 faire if(SF[j]>mini and SF[j]<maxi){F:=F,simplifier(SF[j]);} fpour; fsi; -fpour; +<span class="flyspell-duplicate">fpour</span>; @@ -1754,13 +1794,13 @@ if(mini!=-infinity and L[p](mini)==0){" valBarre(btex 0 etex);"}else{" "}+ if(L[p]((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}+if(maxi!=+infinity and L[p](maxi)==0){" - valBarre(btex 0 etex);"}else{" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" "} } lf:=if(product(L[s]((mini+maxi)*.5),s,0,n-1)>0){"plus;"}else{"moins;"}; -MetaL:=" input tableauVariation; +MetaL:=" input <span class="flyspell-duplicate">tableauVariation</span>; verbatimtex <span class="comment-delimiter">%</span><span class="comment">&latex </span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span> @@ -1776,31 +1816,31 @@ newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex " newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe }\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> de "+nomf+"(x)}}$</span> etex);"+ if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" "}}else{"nonDefBarre;"}+ lf+ if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+" endTableau; -end" +<span class="flyspell-duplicate">end</span>" ; -MetaLfc:=" +<span class="flyspell-duplicate">MetaLfc</span>:=" beginTableau("+nmr+") newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); "+l0+li+ " - newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe }\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> de "+nomf+"(x)}}$</span> etex);"+ + newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe }\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> de "+nomf+"(x)}}$</span> <span class="flyspell-duplicate">etex</span>);"+ if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+ lf+ - if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" + if(member(maxi,FF)==0){if(maxi!=+infinity and <span class="flyspell-duplicate">product</span>(L[s](maxi),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; " ; @@ -1808,18 +1848,18 @@ endTableau; -}else{ +}<span class="flyspell-duplicate">else</span>{ l0:="val(btex <span class="font-latex-math">$"+latex(D[0])+"$</span> etex);";li:=" ";lr:=" "; pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> etex); ";fpour; -l0:=l0+"val(btex <span class="font-latex-math">$"+latex(D[1])+"$</span> etex);"; +l0:=l0+"val(btex <span class="font-latex-math">$"+latex(D[1])+"$</span> <span class="flyspell-duplicate">etex</span>);"; for(p:=0;p<=n-1;p++){lp:=""; li:=li+" -newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$</span> etex);"+ +newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$</span> <span class="flyspell-duplicate">etex</span>);"+ if(mini!=-infinity and L[p](mini)==0){" valBarre(btex 0 etex);"}else{" "}+ @@ -1834,7 +1874,7 @@ newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="f li:=li+lp+ if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ if(L[p](Z[nz-1]+1.0)>0){"plus;"}else{"moins; "}+if(maxi!=+infinity and L[p](maxi)==0){" - valBarre(btex 0 etex);"}else{" "} + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" "} }; @@ -1842,10 +1882,10 @@ newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="f pour t de 0 jusque nz-2 faire lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+ if(member(Z[t+1],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"} - fpour + <span class="flyspell-duplicate">fpour</span> MetaL:=" input tableauVariation; -verbatimtex +<span class="flyspell-duplicate">verbatimtex</span> <span class="comment-delimiter">%</span><span class="comment">&latex </span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span> <span class="font-latex-warning">\\</span>?fonte @@ -1862,21 +1902,21 @@ newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de}\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> "+nomf+"(x)}}$</span> etex);"+ if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+ + "}}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+ if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ if(member(Z[0],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"}+ lr+ - if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ + if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}+ if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+" endTableau; -end" +<span class="flyspell-duplicate">end</span>" ; -MetaLfc:=" +<span class="flyspell-duplicate">MetaLfc</span>:=" beginTableau("+nmr+") newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); "+l0+ @@ -1886,14 +1926,14 @@ newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de}\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> "+nomf+"(x)}}$</span> etex);"+ if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+ + "}}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+ if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ if(member(Z[0],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"}+ lr+ - if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ + if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}+ if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; " @@ -1911,7 +1951,7 @@ fclose(sortie); -return(MetaL); +return(<span class="flyspell-duplicate">MetaL</span>); }:; <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> @@ -1926,11 +1966,11 @@ return(MetaL); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTabSign.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?WW]{XcasTabSign.cxx} TSa(a,b,c,d,nmr):={ zA:=resoudre(a*x+b=0,x)[0]; zB:=resoudre(c*x+d=0,x)[0]; -zmin:=min(zA,zB); +<span class="flyspell-duplicate">zmin</span>:=min(zA,zB); zmax:=max(zA,zB); Meta:= " input tableauVariation; verbatimtex @@ -1988,7 +2028,7 @@ return(Meta); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?§£]{XcasTSc.cxx} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=?<span class="flyspell-duplicate">WW</span>]{XcasTSc.cxx} TSc(g,D,nmr):={ f:=unapply(g,x); Z:=NULL; @@ -2017,39 +2057,39 @@ if(nz>2){pour u de 1 jusque nz-2 faire fpour;} -nz:=size(Z); +<span class="flyspell-duplicate">nz</span>:=size(Z); l0:=" ";li:=" ";lr:=" "; if(nz==0){l0:="val(btex <span class="font-latex-math">$"+latex(D[0])+"$</span> etex);val(btex <span class="font-latex-math">$"+latex(D[1])+"$</span> etex);"; li:=if(mini!=-infinity and f(mini)==0){" - valBarre(btex 0 etex);"}else{" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" "}+ if(f((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}; lf:=if(maxi!=+infinity and f(maxi)==0){" - valBarre(btex 0 etex);"}else{" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" "}; }else{ l0:="val(btex <span class="font-latex-math">$"+latex(D[0])+"$</span> etex);";li:=" "; pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> etex); "; -fpour; -l0:=l0+"val(btex <span class="font-latex-math">$"+latex(D[1])+"$</span> etex);"; +<span class="flyspell-duplicate">fpour</span>; +l0:=l0+"val(btex <span class="font-latex-math">$"+latex(D[1])+"$</span> <span class="flyspell-duplicate">etex</span>);"; li:= if(mini!=-infinity and f(mini)==0){" valBarre(btex 0 etex);"}else{" "}+ -if(f(Z[0]-0.01)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"; +if(f(Z[0]-0.01)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"; lm:=if(nz>=2){for(r:=0; r<=nz-2;r++){lm:=lm+if(f((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}+ "valBarre(btex 0 etex);" }}else{" "}; -lf:=if(f(Z[nz-1]+1.0)>0){"plus;"}else{"moins;"}+if(maxi!=+infinity and f(maxi)==0){"valBarre(btex 0 etex);"}else{" +<span class="flyspell-duplicate">lf</span>:=if(f(Z[nz-1]+1.0)>0){"plus;"}else{"moins;"}+if(maxi!=+infinity and f(maxi)==0){"valBarre(btex 0 etex);"}else{" "}; }}; -MetaL:=" input tableauVariation; +<span class="flyspell-duplicate">MetaL</span>:=" input tableauVariation; verbatimtex <span class="comment-delimiter">%</span><span class="comment">&latex </span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span> @@ -2061,23 +2101,23 @@ MetaL:=" input tableauVariation; beginTableau("+nmr+") newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); "+l0+" -newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(f(x))+"}}$</span> etex);"+ +<span class="flyspell-duplicate">newLigneSignes</span>(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(f(x))+"}}$</span> etex);"+ li+lm+lf +" endTableau; -end" +<span class="flyspell-duplicate">end</span>" ; MetaLfc:=" -beginTableau("+nmr+") -newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); +<span class="flyspell-duplicate">beginTableau</span>("+nmr+") +<span class="flyspell-duplicate">newLigneVariables</span>(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); "+l0+" newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(f(x))+"}}$</span> etex);"+ li+lm+lf +" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; " ; @@ -2104,7 +2144,7 @@ return(MetaL); <span class="comment-delimiter">%%</span><span class="comment"> </span><span class="comment-delimiter">%%</span><span class="comment"> -</span><span class="comment-delimiter">%% </span><span class="comment">traitement des fichiers produits par giac/xcas +</span><span class="comment-delimiter">%% </span><span class="comment">traitement des fichiers produits par giac/</span><span class="comment"><span class="flyspell-duplicate">xcas</span></span><span class="comment"> </span><span class="comment-delimiter">%%</span><span class="comment"> </span><span class="comment-delimiter">%%</span><span class="comment"> </span> @@ -2118,7 +2158,7 @@ return(MetaL); </span> <span class="comment">% exporter le source mp </span> <span class="comment">% puis lancer metapost pour créer </span> <span class="comment">% l'image du tableau -</span> <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\cat</span> XCasmpfc.mp >> <span class="font-latex-sedate">\Tableaux</span>.Tab.mp} +</span> <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\cat</span> XCasmpfc.mp >> <span class="font-latex-sedate">\Tableaux</span>.Tab.<span class="flyspell-duplicate">mp</span>} <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost -interaction=batchmode -jobname=<span class="font-latex-sedate">\Tableaux</span>.Tab XCasmp#1}}<span class="comment">% </span> {<span class="comment">% sinon, si le tableau est absent, alerte. </span> <span class="font-latex-sedate">\IfFileExists</span>{<span class="font-latex-sedate">\Tableaux</span>.Tab.<span class="font-latex-sedate">\theTVn</span>}{}{<span class="comment">% @@ -2146,7 +2186,7 @@ return(MetaL); </span><span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\cat</span> TSav-<span class="font-latex-sedate">\theTVn</span>.mp >> <span class="font-latex-sedate">\Tableaux</span>.Tab.mp}} <span class="comment-delimiter">% </span><span class="comment">Si non, lancement des opérations de fabrication </span>{<span class="font-latex-sedate">\executGiacmp</span>{XCas#1.giac}<span class="comment">% -</span><span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\editeur</span> XCasmpfc.mp} +</span><span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="font-latex-sedate">\editeur</span> XCasmpfc.<span class="flyspell-duplicate">mp</span>} <span class="comment">% Modification avec l'éditeur choisi </span> @@ -2167,7 +2207,7 @@ return(MetaL); <span class="font-latex-sedate">\includegraphics</span>{<span class="font-latex-sedate">\Tableaux</span>.Tab.<span class="font-latex-sedate">\theTVn</span>} <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span> -<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVnbis</span></span><span class="variable-name">}</span> <span class="comment">% Restauration du compteur TVn +<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVnbis</span></span><span class="variable-name">}</span> <span class="comment">% Restauration du compteur </span><span class="comment"><span class="flyspell-duplicate">TVn</span></span><span class="comment"> </span>} @@ -2196,15 +2236,15 @@ vect.xcas.user := read("XCas.user"); vxo := vect.xcas.user; dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); +<span class="flyspell-duplicate">Resultat</span>:=cat(" "); rslt := vxo[0]; RslT:=cat(rslt); Resultat:=cat(Resultat,RslT); fprint(Sortie,Unquoted,Resultat); fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> -<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TSa}</span> -{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCas.user}} +<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TSa</span></span><span class="function-name">}</span> +{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCas.user}} {<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate">\dresse</span>{} } @@ -2217,11 +2257,11 @@ fclose(Sortie); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasQ.giac} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{<span class="flyspell-duplicate">XCasQ</span>.giac} maple_mode(0); -read("XcasTabSignQ.cxx"); -Sortie:=fopen("XCasmpQ.mp"); -vect.xcas.user := read("XCasQ.user"); +read("<span class="flyspell-duplicate">XcasTabSignQ</span>.cxx"); +Sortie:=fopen("<span class="flyspell-incorrect">XCasmpQ</span>.mp"); +vect.xcas.user := read("<span class="flyspell-duplicate">XCasQ</span>.user"); vxo := vect.xcas.user; dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; @@ -2232,16 +2272,16 @@ fprint(Sortie,Unquoted,Resultat); fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> -<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TSq}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasQ.user}} +<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TSq</span></span><span class="function-name">}</span><span class="comment">% +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{<span class="flyspell-duplicate">XCasQ</span>.user}} {<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dresse</span>{Q}} -<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TSq*}</span>[1]<span class="comment">% +<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TSq</span></span><span class="function-name">*}</span>[1]<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> <span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasQ.user}} +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{<span class="flyspell-duplicate">XCasQ</span>.user}} {<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{Q}} @@ -2261,14 +2301,14 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TS}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasL.user}} +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasL.user}} {<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dresse</span>{L}} <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TS*}</span>[1] {<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> <span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasL.user}} +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasL.user}} {<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{L}} @@ -2282,7 +2322,7 @@ dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; Resultat:=cat(" "); rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); +<span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,RslT); fprint(Sortie,Unquoted,Resultat); fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> @@ -2293,12 +2333,12 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TSc*}</span>[1]<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> <span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTSc.user}} +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTSc.user}} {<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{TSc}} <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TSc}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTSc.user}} +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTSc.user}} {<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dresse</span>{TSc}} @@ -2318,14 +2358,14 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TV}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTV.user}}<span class="comment">% +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTV.user}}<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate">\dresse</span>{TV}} <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TV*}</span>[1]{<span class="comment">% </span><span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> -<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTV.user}}<span class="comment">% +<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{</span><span class="variable-name"><span class="flyspell-duplicate">TVn</span></span><span class="variable-name">}{#1}</span> +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTV.user}}<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{TV}} @@ -2354,15 +2394,15 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVZ}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVZ.user}}<span class="comment">% +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVZ.user}}<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate">\dresse</span>{TVZ}} <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVZ*}</span>[1]{<span class="comment">% </span><span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> <span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVZ.user}}<span class="comment">% -</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{TVZ}} +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVZ.user}}<span class="comment">% +</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{<span class="flyspell-duplicate">TVZ</span>}} @@ -2374,13 +2414,13 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTVapp.giac} -maple_mode(0); +<span class="flyspell-duplicate">maple</span>_mode(0); read("XcasTVapp.cxx"); Sortie:=fopen("XCasmpTVapp.mp"); vect.xcas.user := read("XCasTVapp.user"); vxo := vect.xcas.user; dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; +<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo; Resultat:=cat(" "); rslt := vxo[0]; RslT:=cat(rslt); Resultat:=cat(Resultat,RslT); @@ -2389,15 +2429,15 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVapp}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVapp.user}}<span class="comment">% +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVapp.user}}<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> -<span class="font-latex-sedate">\dresse</span>{TVapp}} +<span class="font-latex-sedate">\dresse</span>{<span class="flyspell-duplicate">TVapp</span>}} <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVapp*}</span>[1]{<span class="comment">% </span><span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> <span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVapp.user}}<span class="comment">% -</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{TVapp}} +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVapp.user}}<span class="comment">% +</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{<span class="flyspell-duplicate">TVapp</span>}} @@ -2410,13 +2450,13 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTVI.giac} -maple_mode(0); +<span class="flyspell-duplicate">maple</span>_mode(0); read("XcasTVI.cxx"); Sortie:=fopen("XCasmpTVI.mp"); vect.xcas.user := read("XCasTVI.user"); vxo := vect.xcas.user; dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; +<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo; Resultat:=cat(" "); rslt := vxo[0]; RslT:=cat(rslt); Resultat:=cat(Resultat,RslT); @@ -2425,15 +2465,15 @@ fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVI}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVI.user}}<span class="comment">% -</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dresse</span>{TVI}} +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVI.user}}<span class="comment">% +</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dresse</span>{<span class="flyspell-duplicate">TVI</span>}} <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVI*}</span>[1]<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> <span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVI.user}}<span class="comment">% -</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{TVI}} +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVI.user}}<span class="comment">% +</span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{<span class="flyspell-duplicate">TVI</span>}} @@ -2446,24 +2486,24 @@ read("XcasTVIapp.cxx"); Sortie:=fopen("XCasmpTVIapp.mp"); vect.xcas.user := read("XCasTVIapp.user"); vxo := vect.xcas.user; -dim.vxo := dim(vxo); +<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo); nbr.line.vxo := dim.vxo; Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); +rslt := vxo[0]; RslT:=cat(<span class="flyspell-duplicate">rslt</span>); Resultat:=cat(Resultat,RslT); fprint(Sortie,Unquoted,Resultat); fclose(Sortie); <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVIapp}</span><span class="comment">% -</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVIapp.user}}<span class="comment">% +</span>{<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVIapp.user}}<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dresse</span>{TVIapp}} <span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TVIapp*}</span>[1]<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVnbis}{</span><span class="font-latex-sedate"><span class="variable-name">\theTVn</span></span><span class="variable-name">}</span> <span class="font-latex-sedate"><span class="keyword">\setcounter</span></span><span class="variable-name">{TVn}{#1}</span> -<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>£µ]{XCasTVIapp.user}}<span class="comment">% +<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>[commandchars=<span class="font-latex-warning">\\</span>WW]{XCasTVIapp.user}}<span class="comment">% </span>{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="font-latex-sedate">\dressetoile</span>{TVIapp}} diff --git a/Master/texmf-dist/doc/latex/tablor/tablor.pdf b/Master/texmf-dist/doc/latex/tablor/tablor.pdf Binary files differindex 9da5fd2ad8f..58e9301be17 100644 --- a/Master/texmf-dist/doc/latex/tablor/tablor.pdf +++ b/Master/texmf-dist/doc/latex/tablor/tablor.pdf diff --git a/Master/texmf-dist/doc/latex/tablor/tablor.tex b/Master/texmf-dist/doc/latex/tablor/tablor.tex index 7415079fefb..5c8db7e2e25 100644 --- a/Master/texmf-dist/doc/latex/tablor/tablor.tex +++ b/Master/texmf-dist/doc/latex/tablor/tablor.tex @@ -1,9 +1,15 @@ \documentclass[12pt]{article} \usepackage[height=250mm,width=183mm]{geometry} +\usepackage[T1]{fontenc} +\usepackage[french]{babel} + +\usepackage[xcas]{tablor} +\usepackage{listings,keystroke} +\usepackage{graphicx,bclogo} + +% bclogo est téléchargeable ici : http://melusine.eu.org/syracuse/wiki/doku.php/mc/bclogo + -\usepackage{preambule} -\usepackage{lmodern} -\usepackage{tablor} \usepackage{tocloft} %ajoute de l'espace entre le %numero de chapitre (chap) et le titre @@ -11,28 +17,78 @@ \addtolength{\cftsecnumwidth}{2em} -\usepackage[dvips,colorlinks=true,linkcolor=orange]{hyperref} - +\usepackage[dvips,colorlinks=true,linkcolor=0.2white]{hyperref} +\usepackage{color} +\definecolor{0.9white}{rgb}{.9,.9,.9} +\definecolor{0.8white}{rgb}{.8,.8,.8} +\definecolor{0.2white}{rgb}{.2,.2,.2} +\definecolor{0.4white}{rgb}{.4,.4,.4} +\definecolor{0.6white}{rgb}{.6,.6,.6} \newcommand{\lat}{ \lstset{numbers=none,language=[LaTeX]{TeX},xleftmargin=10pt,% keywordstyle =\color{0.2white}\usefont{OT1}{cmtt}{b}{n},basicstyle=\ttfamily,commentstyle=\normalfont\scriptsize\slshape, - backgroundcolor=\color{0.8white},breaklines=true} + backgroundcolor=\color{0.8white},breaklines=true,morecomment=[l]\%} } -\renewcommand{\xcas}{\lstset{numbers=none,language=XCAS,xleftmargin=10pt,% +\newcommand{\xcas}{\lstset{numbers=none,language=mupad,xleftmargin=10pt,% keywordstyle =\color{0.2white}\usefont{OT1}{cmtt}{b}{n},basicstyle=\ttfamily,commentstyle=\normalfont\scriptsize\slshape, backgroundcolor=\color{0.8white},breaklines=true} } +\newenvironment{DANGER}[1]{% +\begin{bclogo}{\attention}{#1}{0.9white}{0.1}} +{\end{bclogo}} + +\newenvironment{Idee}[1]{% +\begin{bclogo}{\coeur}{#1}{0.9white}{0.1}} +{\end{bclogo}} + + + +% sections +\usepackage{sectsty} + + +\sectionfont{\LARGE \sffamily\color{0.2white}} +\subsectionfont{\sffamily\color{0.4white}} +\renewcommand\thesection{\Roman{section} -} +\renewcommand\thesubsection{\alph{subsection}. } +\subsubsectionfont{\sffamily\color{0.6white}} +\renewcommand\thesubsubsection{\roman{subsection}. } + + + + + +%%%% Macros pour un Vrai-Faux + +\usepackage{pifont} + +\newcommand{\Q}{\mbox{\ding{114}\hspace{-.7em}\raisebox{.2ex}[1ex]{\ding{51}}}} + +\newcommand{\VF}{% + \hfill\makebox[1cm][s]{\bf V\hfill F} + } + +\newcommand{\Rep}[1][]{% + \ifthenelse{\equal{#1}{v}}{% + \hfill\makebox[1cm][s]{\Q\hfill \ding{114}}}{% + \ifthenelse{\equal{#1}{f}}{% + \hfill\makebox[1cm][s]{\ding{114} \hfill\Q}}{% + \hfill\makebox[1cm][s]{\ding{114} \hfill\ding{114}}}}} + + + + \title{\texttt{tablor.sty} \\La machine à créer des tableaux de signes et de variations } \author{Guillaume \textsc{Connan} \\ \href{http://gconnan.free.fr}{http://gconnan.free.fr}\\ avec l'efficace participation de Jean-Michel \textsc{Boucart}} -\date{12 mai 2008 - Version 2.03} +\date{14 mai 2008 - Version 2.05} \begin{document} @@ -49,9 +105,9 @@ minimum de commandes. \subsection{Principe général} -On entre une instruction qu'on envoie via \LaTeX{} à \Prog{XCAS} qui effectue un certain nombre de -calculs (résolution d'équations, calcul de limites). \Prog{XCAS} renvoie un résultat sous la forme -d'un script \Prog{MetaPOST} qui est compilé. Un tableau est créé et ensuite inséré dans le document +On entre une instruction qu'on envoie via \LaTeX{} à \texttt{XCAS} qui effectue un certain nombre de +calculs (résolution d'équations, calcul de limites). \texttt{XCAS} renvoie un résultat sous la forme +d'un script \texttt{MetaPOST} qui est compilé. Un tableau est créé et ensuite inséré dans le document \texttt{tex}. @@ -60,14 +116,17 @@ d'un script \Prog{MetaPOST} qui est compilé. Un tableau est créé et ensuite ins En utilisant un environnement \texttt{tablor}, de nombreux fichiers sont créés dans le répertoire courant puis effacés par la commande \texttt{nettoyer} si vous le souhaitez~: -\bez +\begin{itemize} \item des fichiers d'extension \texttt{.cxx}~:~il s'agit du fichier le plus important. C'est le - programme \Prog{XCAS} qui «~fabrique~» le tableau. Vous pouvez l'utilisez tel quel dans une - session \Prog{XCAS} ou \Prog{giac}. + programme \texttt{XCAS} qui «~fabrique~» le tableau. Vous pouvez l'utilisez tel quel dans une + session \texttt{XCAS} ou \texttt{giac}. \item des fichiers d'extension \texttt{.giac} qui regroupent des instructions lues et exécutées par - \Prog{giac}. + \texttt{giac}. Les lignes importantes sont~: + +\xcas + \begin{lstlisting} read("XcasTV.cxx"); // giac charge le programme Sortie:=fopen("XCasmpTV.mp"); // la sortie portera l'extension metapost @@ -79,30 +138,30 @@ vect.xcas.user := read("XCasTV.user"); // giac lit les paramètres rentrés dans l trouve par exemple entre \verb+\begin{TVI}+ et \verb+\end{TVI}+. -\ez +\end{itemize} \section{De quoi a-t-on besoin~?} -\bez +\begin{itemize} -\item Il faut avoir installé \Prog{XCAS}, logiciel multi-plateforme de calcul et de programmation~: +\item Il faut avoir installé \texttt{XCAS}, logiciel multi-plateforme de calcul et de programmation~: \href{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}; -\item il faut avoir le fichier de macros \Prog{MetaPOST} +\item il faut avoir le fichier de macros \texttt{MetaPOST} \texttt{tableauVariation.mp} de Frédéric Mazoit~: \href{http://frederic.mazoit.free.fr/LaTeX\_metapost/tableauVariations/}{http://frederic.mazoit.free.fr/LaTeX\_metapost/tableauVariations/}; -Pour ceux qui sont guère habitués à \Prog{MetaPOST}, cela ne pose aucun problème car les -scripts et compilations \Prog{MetaPOST} se font automatiquement. Il suffit de créer dans son +Pour ceux qui sont guère habitués à \texttt{MetaPOST}, cela ne pose aucun problème car les +scripts et compilations \texttt{MetaPOST} se font automatiquement. Il suffit de créer dans son \texttt{texmf} personnel une arborescence du style~: \texttt{./texmfperso/metapost/tablor/} et d'y placer \texttt{tableauVariation.mp} puis un \texttt{rehash}. C'est exactement la même démarche que pour installer une nouvelle extension \LaTeX{}. \item il faut être en mode \texttt{shell-escape} pour autoriser - les sorties de la compilation \texttt{tex}. Pour \Prog{emacs}, on rajoute en + les sorties de la compilation \texttt{tex}. Pour \texttt{emacs}, on rajoute en fin de fichier \verb+%%% LaTeX-command: "latex --shell-escape" ***+; pour les autres éditeurs, il faut modifier la commande de compilation. Sinon, on peut modifier le fichier \texttt{texmf.cnf} pour que le mode soit automatisé en modifiant la ligne suivante~:~\texttt{shell-escape t}; @@ -114,9 +173,9 @@ pour installer une nouvelle extension \LaTeX{}. \verb+\ifpdf \DeclareGraphicsRule{*}{mps}{*}{} \fi+ \item il faut installer le fichier \texttt{tablor.sty} dans son \texttt{texmf} personnel. Pour ceux - qui ont \Prog{MiKTeX} sous \Prog{windows}, il suffit d'aller le chercher dans les dépôts. Pour les - utilisateurs de \Prog{Unix}, vous devez savoir comment faire... Par commodité, vous pouvez en - profiter pour installer la version \Prog{Unix} de \emph{MiKTeX package manager}. J'ai fait un + qui ont \texttt{MiKTeX} sous \texttt{windows}, il suffit d'aller le chercher dans les dépôts. Pour les + utilisateurs de \texttt{Unix}, vous devez savoir comment faire... Par commodité, vous pouvez en + profiter pour installer la version \texttt{Unix} de \emph{MiKTeX package manager}. J'ai fait un petit script pour vous y aider ici : \href{http://gconnan.free.fr/?page=52}{http://gconnan.free.fr/?page=52} @@ -124,32 +183,31 @@ pour installer une nouvelle extension \LaTeX{}. -\ez +\end{itemize} -\begin{figure} - \begin{DANGER} - -Pour les utilisateurs de TeXnicCenter, observez cette + + \begin{Idee}{shell-escape} + Pour les utilisateurs de TeXnicCenter, observez cette \href{http://img221.imageshack.us/img221/27/capture20080114215233hu7.png}{explication} du -paramétrage du \texttt{shell-escape}. On peut par exemple mettre~:\\ -\texttt{-enable-write18 --shell-escape --src -interaction=nonstopmode "\%Wm"}.\\ +paramétrage du \texttt{shell-escape}. On peut par exemple mettre~: + +\texttt{-enable-write18 --shell-escape --src -interaction=nonstopmode "\%Wm"}. + Sur TeXmaker, c'est \texttt{latex -enable-write18 --shell-escape -interaction=nonstopmode \%.tex}. +Pour faire comprendre à \texttt{Microsoft Windows XP} où trouver \texttt{giac}, vous pouvez modifier le \texttt{path} en suivant +ces instructions~: -\smallskip -Pour faire comprendre à \texttt{Microsoft Windows XP} où trouver \Prog{giac}, vous pouvez modifier le \texttt{path} en suivant -ces instructions~: \\ -Demarrer->Panneau de configuration->Système onglet Avancé->Variable d'environnement.\\ +Demarrer->Panneau de configuration->Système onglet Avancé->Variable d'environnement. Le séparateur est le point virgule. (Merci à Gaëtan et à Daniel). - - \end{DANGER} - \end{figure} - +\end{Idee} + + \begin{figure} - \begin{DANGER} + \begin{DANGER}{Conflit d'extensions} L'extension \verb+fancybox+ rentre en conflit avec \verb+fancyvrb+ qu'utilise \verb+tablor+ car elles définissent toutes deux différemment l'environnement \verb+VerbatimOut+. \end{DANGER} @@ -157,7 +215,7 @@ Le séparateur est le point virgule. \begin{figure} - \begin{DANGER} + \begin{DANGER}{Commandes créées} Huit nouvelles commandes sont crées~:~\verb+\tv, \tvbis, \nettoyer, \initablor, \Tableaux,+ \verb+ \dresse, \dressetoile, \executGiacmp+. Attention aux conflits si de tels noms existent quelque part dans vos @@ -168,15 +226,23 @@ Le séparateur est le point virgule. +% \begin{figure} +% %\begin{DANGER} +% Le fichier \texttt{tablor.sty} est codé en \texttt{latin-1}. Les utilisateurs de +% \texttt{utf-8} devront donc utiliser \texttt{tablorutf8.sty} à la place. +% %\end{DANGER} +% \end{figure} + + \begin{figure} - \begin{DANGER} -Le fichier \texttt{tablor.sty} est codé en \texttt{latin-1}. Les utilisateurs de -\texttt{utf-8} devront donc utiliser \texttt{tablorutf8.sty} à la place. + \begin{DANGER}{La lettre W} + L'option \texttt{commandchars} de \texttt{fancyvrb} utilise la lettre W qui devient + ainsi «~protégée~» et par suite inutilisable pour nommer une fonction. Tout autre + caractère hors alphabet posait soit des problèmes d'encodage, soit était utilisé par XCAS... \end{DANGER} \end{figure} - \section{Comment l'utiliser~?} \subsection{Préambule} @@ -212,10 +278,10 @@ Le préambule sera toujours~: \subsection{L'option xcas}\label{option} -On met \texttt{xcas} si l'on a installé \Prog{giac/XCAS} sur son - ordinateur et on ne met rien si \Prog{giac/XCAS} n'est pas installé et qu'on a récupéré un - fichier \texttt{tex} avec les fichiers sources \Prog{MetaPOST}; Ainsi, \texttt{tablor} ne fera - pas appel à \Prog{giac/XCAS} et se contentera de compiler les fichiers \Prog{MetaPOST}; +On met \texttt{xcas} si l'on a installé \texttt{giac/XCAS} sur son + ordinateur et on ne met rien si \texttt{giac/XCAS} n'est pas installé et qu'on a récupéré un + fichier \texttt{tex} avec les fichiers sources \texttt{MetaPOST}; Ainsi, \texttt{tablor} ne fera + pas appel à \texttt{giac/XCAS} et se contentera de compiler les fichiers \texttt{MetaPOST}; @@ -225,7 +291,8 @@ On met \texttt{xcas} si l'on a installé \Prog{giac/XCAS} sur son {\small -\begin{Verbatim} + +\begin{lstlisting} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Fichier de configuration de tablor.sty % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -235,7 +302,7 @@ On met \texttt{xcas} si l'on a installé \Prog{giac/XCAS} sur son % Déclaration du système d'exploitation : % ===================================== - +% % Si vous utilisez Microsoft-Windows, dé-commentez la ligne suivante : % \setboolean{windows}{true} @@ -243,35 +310,35 @@ On met \texttt{xcas} si l'on a installé \Prog{giac/XCAS} sur son % Déclaration de l'éditeur utilisé % ================================ % -% Remplacez "texmaker" par la commande qui lance votre éditeur favori. +% Remplacez "kile" par la commande qui lance votre éditeur favori. % Laissez une espace avant de fermer l'accolade. -\newcommand{\editeur}{texmaker } +\newcommand{\editeur}{kile } % Déclaration des fontes utilisées % ================================ % -% Remplacez "[upright]{fourier}" par la fonte qui vous convient pour les maths -% (lmodern, mathpazo, etc.) +% Remplacez "lmodern" par la fonte qui vous convient pour les maths +% (fourier, mathpazo, etc.) -\newcommand{\fonte}{usepackage[upright]{fourier}} +\newcommand{\fonte}{usepackage{lmodern}} -\end{Verbatim} +\end{lstlisting} } - +\xcas Vous le placerez dans la même arborescence que \texttt{tablor.sty} et le modifierez si besoin est. \subsubsection*{Éditeur} L'éditeur sera appelé dans certains cas pour modifier - l'aspect des tableaux dans les fichiers sources \Prog{MetaPOST}. Il faudra choisir un éditeur + l'aspect des tableaux dans les fichiers sources \texttt{MetaPOST}. Il faudra choisir un éditeur comme par exemple \texttt{emacs, xemacs, texmaker, vi, winshell, notepad, vim, kate, gedit, - textmate,texshop}, \texttt{kile}, etc. Voir aussi le paragraphe~\vref{modif}. + textmate,texshop}, \texttt{kile}, etc. Voir aussi le paragraphe~\ref{modif}. \subsubsection*{Fontes} @@ -283,7 +350,7 @@ d'autres, remplacez «~[upright]{fourier}~» par la fonte qui vous convient pour \subsection{Initialisation de \texttt{tablor} et préfixe des tableaux}\label{prefix} -Les fichiers \Prog{MetaPOST} des tableaux sont regroupés dans un fichier de suffixe +Les fichiers \texttt{MetaPOST} des tableaux sont regroupés dans un fichier de suffixe \texttt{.Tab.mp}. Le préfixe est par défaut celui du fichier \texttt{tex} appelant \texttt{tablor}. Il est possible, pour des raisons de classement personnel, de modifier ce préfixe à la suite du \verb+\begin{document}+ en entrant~: @@ -298,11 +365,11 @@ si l'on veut avoir comme préfixe le préfixe courant (obtenu par \verb+\jobname+) \initablor[Waouh] \end{lstlisting} -si l'on veut que le fichier \Prog{MetaPOST} des tableaux s'appelle \verb+Waouh.Tab.mp+ +si l'on veut que le fichier \texttt{MetaPOST} des tableaux s'appelle \verb+Waouh.Tab.mp+ \medskip -Si tout s'est bien passé, on doit supprimer les fichiers \texttt{log} de \Prog{MetaPOST} et clore le +Si tout s'est bien passé, on doit supprimer les fichiers \texttt{log} de \texttt{MetaPOST} et clore le fichier \texttt{.Tab.mp} en entrant juste avant \verb+\end{document}+ la commande~: \begin{lstlisting} @@ -356,14 +423,14 @@ L'environnement s'appelle \texttt{TV}. On utilise une commande au format \texttt TV([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,\tv) \end{lstlisting} -\bez +\begin{itemize} \item \texttt{[borne inf,borne sup]} désigne les bornes de l'ensemble de définition. On note $+\infty$~:~\texttt{+infinity} et $-\infty$~:~\texttt{-infinity}. N'oubliez pas les crochets~! \item \texttt{[valeurs interdites]} désigne la liste des valeurs interdites; \item \texttt{"nom fonction"} désigne la lettre représentant la fonction telle que vous voulez - qu'elle apparaisse : $f$, $g$, $\f$, etc. + qu'elle apparaisse : $f$, $g$, $\varphi$, etc. \item \texttt{"nom variable"}~:~même chose pour la variable, selon que vous voulez la désigner par $x$, $t$, etc. N'oubliez pas les guillemets~! \item \texttt{expression en fonction de x} désigne l'expression de la fonction. Attention~! Utilisez @@ -373,14 +440,14 @@ TV([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expr que le signe de la dérivée. \item on termine par \verb+\tv+, une commande permettant de numéroter les tableaux en interne. -\ez +\end{itemize} \lat Voyons à présent quelques exemples. \begin{enumerate} -\item Le tableau de variation sans signe de la dérivée de la fonction $f~:~x\mapsto x^2$ sur $[-5\pv7]$. +\item Le tableau de variation sans signe de la dérivée de la fonction $f~:~x\mapsto x^2$ sur $[-5;7]$. On obtient~: @@ -400,7 +467,7 @@ TV([-5,7],[],"f","x",x^2,0,\tv) -\item Si on veut la même fonction sur $\bbr$ avec le signe de la dérivée~: +\item Si on veut la même fonction sur \textbf{R} avec le signe de la dérivée~: \begin{lstlisting} \begin{TV} @@ -412,7 +479,7 @@ TV([-infinity,+infinity],[],"f","x",x^2,1,\tv) TV([-infinity,+infinity],[],"f","x",x^2,1,\tv) \end{TV} -\item Avec la même fonction sur $\bbr$ avec uniquement le signe de la dérivée~: +\item Avec la même fonction sur \textbf{R} avec uniquement le signe de la dérivée~: @@ -429,7 +496,7 @@ TV([-infinity,+infinity],[],"f","x",x^2,2,\tv) -\item Voici ce que cela donne pour $g~:~t\mapsto \frac{t^2}{t^2-1}$ sur $[-10\pv +\infty[$~: +\item Voici ce que cela donne pour $g~:~t\mapsto \frac{t^2}{t^2-1}$ sur $[-10; +\infty[$~: \begin{lstlisting} \begin{TV} @@ -447,7 +514,7 @@ TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,\tv) \end{center} -\item Il y aura des problèmes pour des équations $f'(x)=0$ que \Prog{XCAS} ne saurait pas résoudre +\item Il y aura des problèmes pour des équations $f'(x)=0$ que \texttt{XCAS} ne saurait pas résoudre de manière formelle. Il faudrait alors utiliser une résolution numérique et remplacer \texttt{resoudre} par \texttt{fsolve}. Mais dans les études demandées au Bac, l'étude des signes de la dérivée est possible formellement. Dans les cas plus exotiques, on peut faire le tableau «~à @@ -456,12 +523,12 @@ TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,\tv) -\subsection{Tableau de variation avec «~zone interdite~»} +\subsection{Tableau de variation avec «~zone(s) interdite(s)~»} -Pour certaines fonctions, tout un intervalle est exclu de l'ensemble de définition. +Pour certaines fonctions, tout un (ou plusieurs) intervalle(s) est(sont) exclu(s) de l'ensemble de définition. -Par exemple, la fonction $x\mapsto \sqrt{x^2-1}$ est définie sur $]-\infty\pv -1]\cup[1\pv +Par exemple, la fonction $x\mapsto \sqrt{x^2-1}$ est définie sur $]-\infty; -1]\cup[1; +\infty[$. On utilise alors l'environnement \texttt{TVZ} (Z comme zone...). @@ -469,18 +536,42 @@ On utilise alors l'environnement \texttt{TVZ} (Z comme zone...). \begin{lstlisting} \begin{TVZ} - TVZ([-infinity,+infinity],[],[-1,1],"f","x",sqrt(x^2-1),1,\tv) + TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",sqrt(x^2-1),1,\tv) \end{TVZ} \end{lstlisting} \begin{center} - \begin{TVZ*}{2003} - TVZ([-infinity,+infinity],[],[-1,1],"f","x",sqrt(x^2-1),1,\tv) -\end{TVZ*} + \begin{TVZ} + TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",sqrt(x^2-1),1,\tv) +\end{TVZ} \end{center} +\begin{figure} + \begin{DANGER}{Listes des intervalles interdits} + Le troisième argument est une liste d'intervalles : la liste des «~zones interdites~» + qui peut éventuellemnt se réduire à un seul intervalle comme dans l'exemple précédent. + \end{DANGER} + \end{figure} + +Voici un exemple comportant plusieurs zones interdites~:~$x\mapsto +\ln\big((x-5)^2-1\big)+\ln\big(x^2-1\big)$ + + +\begin{lstlisting} +\begin{TVZ} + TVZ([-infinity,+infinity],[-1,1,4,6],[[-1,1],[4,6]],"f","x",ln((x-5)^2-1)+ln(x^2-1),1,\tv) +\end{TVZ} +\end{lstlisting} + + + +\begin{center} + \begin{TVZ*}{3001} + TVZ([-infinity,+infinity],[-1,1,4,6],[[-1,1],[4,6]],"f","x",ln((x-5)^2-1)+ln(x^2-1),1,\tv) +\end{TVZ*} +\end{center} \subsection{Tableau des variations avec théorème des valeurs intermédiaires} @@ -538,15 +629,15 @@ TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,\tv) Il n'est parfois pas possible d'obtenir une valeur formelle des zéros de la dérivée. On est donc amené à rechercher une approximation numérique de ces zéros. Cela est possible grâce à la commande -\code{fsolve} de \Prog{XCAS} utilisée à bon escient. On appelera les environnements \code{TVapp} et -\code{TVIapp} ainsi que leurs associés étoilés. +\texttt{fsolve} de \texttt{XCAS} utilisée à bon escient. On appelera les environnements \texttt{TVapp} et +\texttt{TVIapp} ainsi que leurs associés étoilés. Voyons sur un exemple. \paragraph*{Exemple} -Soit $g$ la fonction $x\mapsto \ln(x)-x\E^{2-x} $. +Soit $g$ la fonction $x\mapsto \ln(x)-x e^{2-x} $. On étudie d'abord la fonction $x\mapsto g'(x)$~: @@ -557,9 +648,11 @@ On étudie d'abord la fonction $x\mapsto g'(x)$~: \end{lstlisting} -\begin{TVIapp} - TVIapp([0,+infinity],[0],"g'","x",diff(ln(x)-x*exp(2-x),x),1,0,\tv) - \end{TVIapp} +% \begin{TVIapp} +% TVIapp([0,+infinity],[0],"g'","x",diff(ln(x)-x*exp(2-x),x),1,0,\tv) +% \end{TVIapp} + +\stepcounter{TVn} On en déduit le tableau suivant~: @@ -582,7 +675,7 @@ TVapp([0,+infinity],[0],"g","x",ln(x)-x*exp(2-x),1,\tv) \subsubsection*{Cas du produit de deux facteurs affines} -Pour étudier le signe de $(-2x+3)(-x+5)$ sur $\bbr$, on entre~: +Pour étudier le signe de $(-2x+3)(-x+5)$ sur \textbf{R}, on entre~: \begin{lstlisting} \begin{TSa} @@ -645,7 +738,7 @@ TSq("nom du quotient",[liste des facteurs du numérateur],[liste des facteurs du \end{TSq} \end{lstlisting} -Par exemple, pour étudier le signe de $\dfrac{(-2x+3)(-4x+5)}{(x^2-16)(x-2)}$ sur $\bbr$~: +Par exemple, pour étudier le signe de $\frac{(-2x+3)(-4x+5)}{(x^2-16)(x-2)}$ sur \textbf{R}~: \begin{lstlisting} \begin{TSq} @@ -704,14 +797,14 @@ TSc((x-10)*(x+5),[-10,10],\tv) % L'extension \texttt{tablor} contient également une commande \verb+\nettoyer+, qui, comme son nom % l'indique, fait le ménage~:~on efface tous les fichiers auxiliaires créés et on garde uniquement les -% fichiers eps créés par \Prog{MetaPOST} ayant une extension sous forme de numéro. +% fichiers eps créés par \texttt{MetaPOST} ayant une extension sous forme de numéro. % Il suffit de taper \verb+\nettoyer+ juste avant le \verb+\end{document}+ % \begin{figure} -% \begin{DANGER} +% %\begin{DANGER} % Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{rm} par \texttt{DEL} -% \end{DANGER} +% %\end{DANGER} % \end{figure} % \smallskip @@ -730,9 +823,9 @@ TSc((x-10)*(x+5),[-10,10],\tv) % \begin{figure} -% \begin{DANGER} +% %\begin{DANGER} % Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{cp} par \texttt{XCOPY} -% \end{DANGER} +% %\end{DANGER} % \end{figure} @@ -745,7 +838,7 @@ TSc((x-10)*(x+5),[-10,10],\tv) Il est impossible de prévoir toutes les requêtes des différents utilisateurs. Le style du tableau produit peut néanmoins vous déplaire. Vous pouvez le modifier en intervenant directement sur le -fichier \Prog{MetaPOST} créé pour chaque tableau. Pour cela, il suffit d'ajouter une étoile au nom de +fichier \texttt{MetaPOST} créé pour chaque tableau. Pour cela, il suffit d'ajouter une étoile au nom de l'environnement utilisé et de donner un numéro à votre nouvelle figure pour qu'elle ne soit pas écrasée par les compilations suivantes. Numérotez à partir de 100 par exemple. @@ -757,8 +850,8 @@ Si vous tapez~: \end{TV*} \end{lstlisting} -l'éditeur que vous avez mis en option (voir le paragraphe~\vref{option}) est directement lancé et le fichier -\Prog{MetaPOST} correspondant à votre tableau qui portera le numéro 100 +l'éditeur que vous avez mis en option (voir le paragraphe~\ref{option}) est directement lancé et le fichier +\texttt{MetaPOST} correspondant à votre tableau qui portera le numéro 100 est affiché. Vous pouvez alors le modifier, taper sur \Ctrl + \keystroke{S} pour l'enregistrer et \Ctrl + \keystroke{Q} pour fermer l'éditeur\footnote{Ces combinaisons de touches correspondent à la plupart des éditeurs mais ne sont pas universelles : vérifiez pour celui que vous avez choisi.}. La compilation s'achève alors automatiquement comme @@ -804,21 +897,21 @@ vous changez le numéro de la figure. Un fichier \texttt{préfixe.Tab.mp} est créé où sont copiés les sources de chaque tableau. Vous pouvez ainsi retravailler globalement sur les tableaux si besoin ou les transmettre à une personne n'ayant -pas installé \Prog{XCAS}. Voir le paragraphe~\vref{prefix} pour plus de détails. +pas installé \texttt{XCAS}. Voir le paragraphe~\ref{prefix} pour plus de détails. \section{Merci...} -\bez +\begin{itemize} \item à \href{http://frederic.mazoit.free.fr/LaTeX\_metapost/tableauVariations/}{Frédéric \textsc{Mazoit}} pour son fichier \texttt{tableauVariation.mp}; \item à \href{http://www.yvesdelhaye.be/?Generateur-d-interrogations-le}{Yves \textsc{Delhaye}} pour ses idées sur le \texttt{shell-escape} \item à \href{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}{Bernard - \textsc{Parisse}} pour \Prog{XCAS}. + \textsc{Parisse}} pour \texttt{XCAS}. -\ez +\end{itemize} \section{Galerie} @@ -858,6 +951,8 @@ TVI([0,+infinity],[0],"f","x",ln(x),1,2,\tv) TVI([0,+infinity],[0],"f","x",ln(x),1,2,\tv) \end{TVI} +\stepcounter{TVn} + \begin{lstlisting} \begin{TV} TV([1,+infinity],[],"f","x",-ln(x),1,\tv) @@ -892,7 +987,7 @@ TV([0,2*Pi],[],"f","x",cos(x),1,\tv) \begin{figure} - \begin{DANGER} + \begin{DANGER}{Fonctions périodiques} Il y aura des problèmes si vous demandez un tableau des variations d'une fonction périodique sur un intervalle d'amplitude supérieure à la période, mais est-ce vraiment utile ?... @@ -967,7 +1062,7 @@ TVI([-infinity,+infinity],[],"f","x",1+(-2*x+1)*exp(2*x),1,0,\tv) TVI([-infinity,+infinity],[],"f","x",1+(-2*x+1)*exp(2*x),1,0,\tv) \end{TVI} - +\stepcounter{TVn} \begin{lstlisting} @@ -1023,26 +1118,41 @@ TSc((x-10)*(x+10),[-10,10],\tv) \begin{lstlisting} \begin{TVZ} - TVZ([-infinity,+infinity],[],[-1,1],"f","x",(sqrt(x^2-1))*(x^2-4),1,\tv) + TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",(sqrt(x^2-1))*(x^2-4),1,\tv) \end{TVZ} \end{lstlisting} - \begin{TVZ*}{2004} - TVZ([-infinity,+infinity],[],[-1,1],"f","x",(sqrt(x^2-1))*(x^2-4),1,\tv) - \end{TVZ*} + \begin{TVZ} + TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",(sqrt(x^2-1))*(x^2-4),1,\tv) + \end{TVZ} \begin{lstlisting} \begin{TVZ} - TVZ([-infinity,+infinity],[],[-1,1],"f","x",ln(x^2-1),1,\tv) + TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",ln(x^2-1),1,\tv) \end{TVZ} \end{lstlisting} - \begin{TVZ*}{2005} - TVZ([-infinity,+infinity],[],[-1,1],"f","x",ln(x^2-1),1,\tv) - \end{TVZ*} + \begin{TVZ} + TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",ln(x^2-1),1,\tv) + \end{TVZ} + + + +\begin{lstlisting} +\begin{TVZ} + TVZ([-infinity,+infinity],[-1,1,4,6],[[-1,1],[4,6]],"f","x",ln((x-5)^2-1)+ln(x^2-1),1,\tv) +\end{TVZ} +\end{lstlisting} +\begin{center} + \begin{TVZ} + TVZ([-infinity,+infinity],[],[[-1,1],[4,6]],"f","x",sqrt((x-5)^2-1)+sqrt(x^2-1),1,\tv) +\end{TVZ} +\end{center} + +\lat \begin{lstlisting} \begin{enumerate} @@ -1175,7 +1285,7 @@ TSc((x-10)*(x+10),[-10,10],\tv) \begin{lstlisting} -On considère la fonction $f$ définie sur $\bbr$ par $f(x)=\frac{1}{2}\bigl(x+(1-x)\E^{2x}\bigr)$ +On considère la fonction $f$ définie sur \textbf{R} par $f(x)=\frac{1}{2}\bigl(x+(1-x){\rm e}^{2x}\bigr)$ Étudions sa dérivée~: @@ -1192,7 +1302,7 @@ On en déduit le tableau de variation de $f$ \end{TVapp*} \end{lstlisting} -On considère la fonction $f$ définie sur $\bbr$ par $f(x)=\frac{1}{2}\bigl(x+(1-x)\E^{2x}\bigr)$ +On considère la fonction $f$ définie sur \textbf{R} par $f(x)=\frac{1}{2}\bigl(x+(1-x){\rm e}^{2x}\bigr)$ Étudions sa dérivée~: diff --git a/Master/texmf-dist/tex/latex/tablor/tablor.cfg b/Master/texmf-dist/tex/latex/tablor/tablor.cfg index 07aa2e6badb..9565de82c81 100644 --- a/Master/texmf-dist/tex/latex/tablor/tablor.cfg +++ b/Master/texmf-dist/tex/latex/tablor/tablor.cfg @@ -18,18 +18,18 @@ % Déclaration de l'éditeur utilisé % ================================ % -% Remplacez "texmaker" par la commande qui lance votre éditeur favori. +% Remplacez "kile" par la commande qui lance votre éditeur favori. % Laissez une espace avant de fermer l'accolade. -\newcommand{\editeur}{texmaker } +\newcommand{\editeur}{kile } % Déclaration des fontes utilisées % ================================ % -% Remplacez "[upright]{fourier}" par la fonte qui vous convient pour les maths +% Remplacez "fourier" par la fonte qui vous convient pour les maths % (lmodern, mathpazo, etc.) -\newcommand{\fonte}{usepackage[upright]{fourier}} +\newcommand{\fonte}{usepackage{fourier}} diff --git a/Master/texmf-dist/tex/latex/tablor/tablor.sty b/Master/texmf-dist/tex/latex/tablor/tablor.sty index d42c65e07c4..a62c439f72c 100644 --- a/Master/texmf-dist/tex/latex/tablor/tablor.sty +++ b/Master/texmf-dist/tex/latex/tablor/tablor.sty @@ -1,12 +1,12 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{tablor}[24/03/2008 v2.03 la machine à créer des tableaux de signes et variations] +\ProvidesPackage{tablor}[14/05/2008 v2.05 la machine à créer des tableaux de signes et variations] % \copyleft Connan le Barbare \copyright % avec l'efficace participation de Jean-Michel Boucart -%% Crée 14 environnements : +%% Crée 16 environnements : %% tableau de signes de 2 facteurs affines % \begin{TSa} % TSa(-2,3,-1,5,\tv); @@ -27,6 +27,13 @@ % TV([0,+infinity],[0],"h","x",ln(x)-(ln(x))^2,1,\tv) % \end{TV} % +% tableau de variation avec zones interdites +% +% \begin{TVZ} +% TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",sqrt(x^2-1),1,\tv) +% \end{TVZ} +% +% % tableau avec valeurs intermédiares %\begin{TVI} %TVI([-1,+infinity],[-1],"f","x",x2/sqrt(x+1)-1,1,2,\tv) @@ -99,12 +106,12 @@ %% En-tête pour le fichier metapost contenant les codes %% de tous les tableaux produits - \begin{VerbatimOut}[commandchars=?§£]{tete.mp} + \begin{VerbatimOut}[commandchars=?WW]{tete.mp} input tableauVariation; verbatimtex %&latex \documentclass{article} - \\?fonte + \?fonte \usepackage{amsmath} \newcommand{\Mathbold}[1]{\mbox{\boldmath$#1$\unboldmath}} \begin{document} @@ -200,7 +207,7 @@ %% -\begin{VerbatimOut}[commandchars=?§£]{XcasTV.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTV.cxx} TV(L,F,nom,nomv,f,ftt,nmr):={ nl:=size(L); f:=unapply(f,x); @@ -391,28 +398,44 @@ return(MetaL); %% %% -%% TV avec une zone interdite : on rajoute comme argument l'intervalle interdit -%% par exemple, pour sqrt(x^2-1) : TVZ([-infinity,100],[],[-1,1],"f","x",sqrt(x^2-1),1,1) +%% TV avec une zone interdite : on rajoute comme argument la liste des intervalles interdits +%% par exemple, pour sqrt(x^2-1) : TVZ([-infinity,100],[],[[-1,1]],"f","x",sqrt(x^2-1),1,1) %% -\begin{VerbatimOut}[commandchars=?§£]{XcasTVZ.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTVZ.cxx} + TVZ(L,F,FF,nom,nomv,f,ftt,nmr):={ nl:=size(L); -if(FF[0]>L[0]){Imin:=FF[0];LL:=L}else{Imin:=L[0];LL:=[L[1]]}; -if(FF[1]<L[1]){Imax:=FF[1];LL:=L}else{Imax:=L[1];LL:=[L[0]]}; -FF:=[Imin,Imax]; -f:=unapply(f,x); +nf:=size(FF); + Ff:=NULL;IMIN:=NULL;IMAX:=NULL; +for(k:=0;k<nf;k++){ +if(FF[k][0]>L[0]){Imin[k]:=FF[k][0];LL:=L}else{Imin[k]:=L[0];LL:=[L[1]]}; +if(FF[k][1]<L[1]){Imax[k]:=FF[k][1];LL:=L}else{Imax[k]:=L[1];LL:=[L[0]]}; + Ff:=Ff,[Imin[k],Imax[k]]; + IMIN:=IMIN,Imin[k]; + IMAX:=IMAX,Imax[k]; + } + FF:=[Ff]; + IMIN:=[IMIN]; + IMAX:=[IMAX]; + f:=unapply(f,x); fp:=fonction_derivee(f); Z:=concat(LL,F); -Z:=concat(Z,FF); + +for(k:=0;k<nf;k++){ +Z:=concat(Z,FF[k]); +} + S:=resoudre(fp(x),x); si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - kK:=(evalf(S[j])<evalf(Imin)) or (evalf(S[j])>evalf(Imax)); + for(k:=0;k<nf;k++){ + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + kK:=(evalf(S[j])<evalf(Imin[k])) or (evalf(S[j])>evalf(Imax[k])); Kk:=(kk) and kK; if(Kk==1){Z:=append(Z,simplifier(S[j]))}; - fpour + } + fpour fsi; Z:=sort(Z); @@ -427,9 +450,12 @@ pour u de 1 jusque nz-2 faire fsi; fpour; nz:=size(Z); -for(k:=1;k<nz;k++){ -if ((Z[k]>Imin)and(Z[k]<Imax)){Z:=augment(Z[0..k-1],Z[k+1..nz-1]);nz:=nz-1; -} + +for(j:=0;j<nf;j++){ + for(k:=1;k<nz;k++){ + if ((Z[k]>Imin[j])and(Z[k]<Imax[j])){Z:=augment(Z[0..k-1],Z[k+1..nz-1]);nz:=nz-1; + } + } } nz:=size(Z); @@ -442,21 +468,27 @@ pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); lsi:=" newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$ etex);"+ - if(Z[0]==Imin){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ +if(member(Z[0],IMIN)!=0){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}} - -if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; - lsp:=lsp+if(Z[r]==Imin){"debutNonDef;"}else{ - if(Z[r]==Imax){"finNonDef;"+ + + + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; + lsp:=lsp+if(member(Z[r],IMIN)!=0){"debutNonDef;"}else{ + if(member(Z[r],IMAX)!=0){"finNonDef;"+ if(ksp==1){"plus;"}else{"moins;"}}else{ if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ if(ksp==1){"plus;"}else{"moins;"} }}}}; -lsf:=if(Z[0]==Imax){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; + + +lsf:=if(member(Z[0],IMAX)!=0){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; "}} + + lm0:=limite(f(x),x=Z[0],1)==-infinity; li:=" newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$ etex);"+ @@ -466,11 +498,12 @@ newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Math ");"; if(nz>2){ - for(r:=1; r<=nz-2;r++){ + for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; - lp:=lp+if(Z[r]==Imin){"limGauche(btex $"+if(lmrm==1){ + + lp:=lp+if(member(Z[r],IMIN)!=0){"limGauche(btex $"+if(lmrm==1){ "-\\infty"}else{ latex(simplifier(limite(f(x),x=Z[r],-1)))} +"$ etex,"+if(krm==1){ @@ -478,7 +511,7 @@ if(nz>2){ +"debutNonDef;" }//fsi Zr=Imin else{ - if (Z[r]==Imax) {"finNonDef;limDroite(btex $"+if(lmrp==1){ + if (member(Z[r],IMAX)!=0) {"finNonDef;limDroite(btex $"+if(lmrp==1){ "-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))} +"$ etex,"+if(krp==1){ "1);"}else{"0);"} @@ -504,7 +537,7 @@ if(nz>2){ }//felse(member Zr F) } //felse(Zr=Imax) }//felse(Zr=Imin) - };//ffor + };//ffor }//fsi nz lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; @@ -631,6 +664,7 @@ return(MetaL); } :; + \end{VerbatimOut} @@ -641,7 +675,7 @@ return(MetaL); -\begin{VerbatimOut}[commandchars=?§£]{XcasTVapp.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTVapp.cxx} @@ -874,7 +908,7 @@ return(MetaL); -\begin{VerbatimOut}[commandchars=?§£]{XcasTVI.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTVI.cxx} TVI(L,F,nom,nomv,f,ftt,ao,nmr):={ @@ -1143,7 +1177,7 @@ return(MetaL); -\begin{VerbatimOut}[commandchars=?§£]{XcasTVIapp.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTVIapp.cxx} TVIapp(L,F,nom,nomv,f,ftt,ao,nmr):={ @@ -1438,7 +1472,7 @@ return(MetaL); -\begin{VerbatimOut}[commandchars=?§£]{XcasTabSignL.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTabSignL.cxx} TS(L,D,nmr):={ @@ -1616,7 +1650,7 @@ return(MetaL); -\begin{VerbatimOut}[commandchars=?§£]{XcasTabSignQ.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTabSignQ.cxx} TSq(nomf,L,Fo,D,nmr):={ L:=apply(f->unapply(f,x),L); Fo:=apply(f->unapply(f,x),Fo); @@ -1843,7 +1877,7 @@ return(MetaL); -\begin{VerbatimOut}[commandchars=?§£]{XcasTabSign.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTabSign.cxx} TSa(a,b,c,d,nmr):={ zA:=resoudre(a*x+b=0,x)[0]; zB:=resoudre(c*x+d=0,x)[0]; @@ -1905,7 +1939,7 @@ return(Meta); -\begin{VerbatimOut}[commandchars=?§£]{XcasTSc.cxx} +\begin{VerbatimOut}[commandchars=?WW]{XcasTSc.cxx} TSc(g,D,nmr):={ f:=unapply(g,x); Z:=NULL; @@ -2121,7 +2155,7 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TSa} -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCas.user}} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCas.user}} {\end{VerbatimOut} \dresse{} } @@ -2150,7 +2184,7 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TSq}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasQ.user}} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasQ.user}} {\end{VerbatimOut}\dresse{Q}} @@ -2158,7 +2192,7 @@ fclose(Sortie); \newenvironment{TSq*}[1]% {\setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasQ.user}} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasQ.user}} {\end{VerbatimOut}\dressetoile{Q}} @@ -2178,14 +2212,14 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TS}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasL.user}} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasL.user}} {\end{VerbatimOut}\dresse{L}} \newenvironment{TS*}[1] {\setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasL.user}} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasL.user}} {\end{VerbatimOut}\dressetoile{L}} @@ -2210,12 +2244,12 @@ fclose(Sortie); \newenvironment{TSc*}[1]% {\setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTSc.user}} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTSc.user}} {\end{VerbatimOut}\dressetoile{TSc}} \newenvironment{TSc}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTSc.user}} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTSc.user}} {\end{VerbatimOut}\dresse{TSc}} @@ -2235,14 +2269,14 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TV}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTV.user}}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTV.user}}% {\end{VerbatimOut} \dresse{TV}} \newenvironment{TV*}[1]{% \setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTV.user}}% +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTV.user}}% {\end{VerbatimOut}\dressetoile{TV}} @@ -2271,14 +2305,14 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TVZ}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVZ.user}}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVZ.user}}% {\end{VerbatimOut} \dresse{TVZ}} \newenvironment{TVZ*}[1]{% \setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVZ.user}}% +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVZ.user}}% {\end{VerbatimOut}\dressetoile{TVZ}} @@ -2306,14 +2340,14 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TVapp}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVapp.user}}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVapp.user}}% {\end{VerbatimOut} \dresse{TVapp}} \newenvironment{TVapp*}[1]{% \setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVapp.user}}% +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVapp.user}}% {\end{VerbatimOut}\dressetoile{TVapp}} @@ -2342,14 +2376,14 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TVI}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVI.user}}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVI.user}}% {\end{VerbatimOut}\dresse{TVI}} \newenvironment{TVI*}[1]% {\setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVI.user}}% +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVI.user}}% {\end{VerbatimOut}\dressetoile{TVI}} @@ -2373,14 +2407,14 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TVIapp}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVIapp.user}}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVIapp.user}}% {\end{VerbatimOut}\dresse{TVIapp}} \newenvironment{TVIapp*}[1]% {\setcounter{TVnbis}{\theTVn} \setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVIapp.user}}% +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\WW]{XCasTVIapp.user}}% {\end{VerbatimOut}\dressetoile{TVIapp}} diff --git a/Master/texmf-dist/tex/latex/tablor/tablorutf8.sty b/Master/texmf-dist/tex/latex/tablor/tablorutf8.sty deleted file mode 100644 index d89eda8b40b..00000000000 --- a/Master/texmf-dist/tex/latex/tablor/tablorutf8.sty +++ /dev/null @@ -1,2393 +0,0 @@ - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{tablor}[24/03/2008 v2.03 la machine à créer des tableaux de signes et variations] - -% \copyleft Connan le Barbare \copyright -% avec l'efficace participation de Jean-Michel Boucart - - -%% Crée 14 environnements : -%% tableau de signes de 2 facteurs affines -% \begin{TSa} -% TSa(-2,3,-1,5,\tv); -% \end{TSa} -% %%%%%% Pour des tableaux de plus de 2 facteurs -% -% \begin{TS} -% TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],[a,b],\tv); -% \end{TS} -% -% pour les tableaux de signes avec quotient -%\begin{TSq} -%TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[a,b],\tv) -%%\end{TSq} -% un tableau de variation : -% -% \begin{TV} -% TV([0,+infinity],[0],"h","x",ln(x)-(ln(x))^2,1,\tv) -% \end{TV} -% -% tableau avec valeurs intermédiares -%\begin{TVI} -%TVI([-1,+infinity],[-1],"f","x",x2/sqrt(x+1)-1,1,2,\tv) -%\end{TVI} -%%% -% tableau de variations avec f' sans zéro formel -%\begin{TVapp} -% TVapp([0,+infinity],[0],"g","x",ln(x)-x*exp(2-x),1,\tv) -% \end{TVapp} -% -% -% tableau de variations avec f' sans zéro formel -%\begin{TVIapp} -% TVIapp([0,+infinity],[0],"g","x",ln(x)-x*exp(2-x),1,0,\tv) -% \end{TVIapp} -% -% -%%% -% et leurs pendants étoilés qui permet l'affichage intermédiaire du -% fichier metapost pour le modifier -% -% -% -% - - - - -%% extensions requises -%% Il faudra rajouter dans le préambule \usepackage{graphicx} si vous -%% ne l'avez pas de base - - -\RequirePackage{ifthen} -\RequirePackage{fancyvrb} -\RequirePackage{ifpdf} - - -% option xcas présent - - -\newboolean{xcas}\setboolean{xcas}{false} -\DeclareOption{xcas}{\setboolean{xcas}{true}} - -%% Initialisation du choix d'OS -\newboolean{windows}\setboolean{windows}{false} - - - -%% on configure tablor dans un fichier extérieur pour la plateforme -%% et l'éditeur - -\IfFileExists{tablor.cfg}{\input{tablor.cfg}}%\typeout{pas de fichier tablor.cfg}} - -\ProcessOptions\relax - -%% pour ceux compilant via pdflatex - -\ifpdf -\DeclareGraphicsRule{*}{mps}{*}{} -\fi - -%% pour nettoyer les fichiers auxiliaires - -\AtEndDocument{\immediate\write18{\rem tete.* *.user XCas* Xcas* *.mpx}} - - - - -%% En-tête pour le fichier metapost contenant les codes -%% de tous les tableaux produits - - \begin{VerbatimOut}[commandchars=?§£]{tete.mp} - input tableauVariation; - verbatimtex -%&latex - \documentclass{article} - \\?fonte - \usepackage{amsmath} - \newcommand{\Mathbold}[1]{\mbox{\boldmath$#1$\unboldmath}} - \begin{document} - etex - - \end{VerbatimOut} - - - -%% Nettoie les fichiers log dont le nom dépend du choix de l'utilisateur -%% Par défaut, c'est le nom du fichier tex courant (\jobname) -%% Clôt le fichier metapost contenant le récapitulatif de tous les tableaux - - -%% Définit des commandes disque selon l'OS utilisé -\ifthenelse{\boolean{windows}}% - {\newcommand{\rem}{DEL } \newcommand{\cat}{TYPE } - \newcommand{\cp}{COPY }}% - {\newcommand{\rem}{rm }\newcommand{\cat}{cat } - \newcommand{\cp}{cp }} - - - -\newcommand{\nettoyer}[1][\jobname]% -{\immediate\write18{\rem #1.Tab.log} -\immediate\write18{echo end >> #1.Tab.mp} -} - - - - -%% Donne comme prefixe aux tableaux le prefixe courant -%% Peut-être modifié par \initablor - -\newcommand{\Tableaux}{\jobname} - -%% initialise les compteurs - -\newcounter{TVn} -\newcommand{\tv}{\theTVn} - -\newcounter{TVnbis} -\newcommand{\tvbis}{\theTVnbis} - - - -%% permet de donner un prefixe aux tableaux produits (\jobname par défaut) -%% effectue quelques vérifications : - - -\newcommand{\initablor}[1][\jobname]{% -\renewcommand{\Tableaux}{#1}% Arret du nom des tableaux -\setcounter{TVn}{0}% Initialisation du compteur de tableaux. -\ifthenelse{\boolean{xcas}}% Avec l'option XCas -{\IfFileExists{\Tableaux.Tab.mp}% Si Tableaux.mp est présent... - {\immediate\write18{\rem \Tableaux.Tab.mp}}% le détruire - {}% - \immediate\write18{\cp -f tete.mp \Tableaux.Tab.mp}% Reconstituer l'entête de Tableaux.mp -} -{\IfFileExists{\Tableaux.Tab.mp}% Sans l'option XCas, si - % Tableaux.mp existe -{\immediate\write18{mpost -interaction=batchmode \Tableaux.Tab}}% l'exécuter pour reconstituer les figures -{\PackageWarning{tablor}{Pas de source metapost pour creer les tableaux.}}% sinon message d'erreur - % (mais pas d'arret car les tableaux - % peuvent être présents ) -}}% - - - -%% commande pour lancer giac selon l'OS - -\makeatletter -\newcommand{\executGiacmp}[1]{% -\ifthenelse{\boolean{windows}}% -{\immediate\write18{giac #1 }}% -{\immediate\write18{giac <#1 }}} -\makeatother - - - - -%%% -% -%%% LES SCRIPTS GIAC/XCAS -% -%%% - - - - -%% -%% Code giac/Xcas pour les Tableaux de Variations -%% - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTV.cxx} -TV(L,F,nom,nomv,f,ftt,nmr):={ -nl:=size(L); -f:=unapply(f,x); -fp:=fonction_derivee(f); -Z:=concat(L,F); -S:=resoudre(fp(x),x); - si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - if(kk==1){Z:=append(Z,simplifier(S[j]))}; - fpour - fsi; - -Z:=sort(Z); -nz:=size(Z); - si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; - fsi; -pour u de 1 jusque nz-2 faire - si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; - fsi; -fpour; -nz:=size(Z); -l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; -pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); -";fpour; - - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); - -lsi:=" -newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$ etex);"+ - if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ - if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ - if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ - if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} - -if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; - lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(ksp==1){"plus;"}else{"moins;"} - }; } - -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; -"} -lm0:=limite(f(x),x=Z[0],1)==-infinity; - li:=" -newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$ etex);"+ - if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ - if(k0==1){"1"}else{"0"}+ - ");"; - - if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; - lp:=lp+if(member(Z[r],F)){ - "limGauche(btex - $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ - etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ - etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); -"}}} - }; } - -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0); -"}; - - -intro:="input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - -" - - -MetaL:=if(ftt==2){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; -end -";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; -end"; -} -}else{ if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; -end";}}else{ -if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; -end";} -}} - - - -MetaLfc:=if(ftt==2){if(nz>2){" - -beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; - -";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; - -"; -} -}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; - -";}}else{ -if(nz>2){"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; - -";} -}} - - -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); - - -return(MetaL); - }:; - -\end{VerbatimOut} - - -%% -%% -%% TV avec une zone interdite : on rajoute comme argument l'intervalle interdit -%% par exemple, pour sqrt(x^2-1) : TVZ([-infinity,100],[],[-1,1],"f","x",sqrt(x^2-1),1,1) -%% - -\begin{VerbatimOut}[commandchars=?§£]{XcasTVZ.cxx} - -TVZ(L,F,FF,nom,nomv,f,ftt,nmr):={ -nl:=size(L); -if(FF[0]>L[0]){Imin:=FF[0];LL:=L}else{Imin:=L[0];LL:=[L[1]]}; -if(FF[1]<L[1]){Imax:=FF[1];LL:=L}else{Imax:=L[1];LL:=[L[0]]}; -FF:=[Imin,Imax]; -f:=unapply(f,x); -fp:=fonction_derivee(f); -Z:=concat(LL,F); -Z:=concat(Z,FF); -S:=resoudre(fp(x),x); - si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - kK:=(evalf(S[j])<evalf(Imin)) or (evalf(S[j])>evalf(Imax)); - Kk:=(kk) and kK; - if(Kk==1){Z:=append(Z,simplifier(S[j]))}; - fpour - fsi; - -Z:=sort(Z); -nz:=size(Z); - - - - si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; - fsi; -pour u de 1 jusque nz-2 faire - si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; - fsi; -fpour; -nz:=size(Z); -for(k:=1;k<nz;k++){ -if ((Z[k]>Imin)and(Z[k]<Imax)){Z:=augment(Z[0..k-1],Z[k+1..nz-1]);nz:=nz-1; -} -} -nz:=size(Z); - -l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; -pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); -";fpour; - - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); - -lsi:=" -newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$ etex);"+ - if(Z[0]==Imin){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ - if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ - if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ - if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}} - -if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; - lsp:=lsp+if(Z[r]==Imin){"debutNonDef;"}else{ - if(Z[r]==Imax){"finNonDef;"+ - if(ksp==1){"plus;"}else{"moins;"}}else{ - if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(ksp==1){"plus;"}else{"moins;"} - }}}}; - -lsf:=if(Z[0]==Imax){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; -"}} -lm0:=limite(f(x),x=Z[0],1)==-infinity; - li:=" -newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$ etex);"+ - if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ - if(k0==1){"1"}else{"0"}+ - ");"; - -if(nz>2){ - for(r:=1; r<=nz-2;r++){ - krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; - lp:=lp+if(Z[r]==Imin){"limGauche(btex $"+if(lmrm==1){ - "-\\infty"}else{ - latex(simplifier(limite(f(x),x=Z[r],-1)))} - +"$ etex,"+if(krm==1){ - "1);"}else{"0);"} - +"debutNonDef;" - }//fsi Zr=Imin - else{ - if (Z[r]==Imax) {"finNonDef;limDroite(btex $"+if(lmrp==1){ - "-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))} - +"$ etex,"+if(krp==1){ - "1);"}else{"0);"} - } - else { - if(member(Z[r],F)){ - "limGauche(btex $"+if(lmrm==1){ - "-\\infty"}else{ - latex(simplifier(limite(f(x),x=Z[r],-1)))} - +"$ etex,"+if(krm==1){ - "1);"}else{"0);"} - +"nonDefBarre;limDroite(btex $"+if(lmrp==1){ - "-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))} - +"$ etex,"+if(krp==1){ - "1);"}else{"0);"} - }//fsi (member Zr F) - else{"valPos(btex$"+latex(simplifier(f(Z[r])))+"$etex,"+ - if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){ - "0.5);"}else{ - if(krp==1){ - "1);"}else{"0);"}//felse(krp) - }//felse(valpos) - }//felse(member Zr F) - } //felse(Zr=Imax) - }//felse(Zr=Imin) - };//ffor - }//fsi nz - -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0); -"}; - - -intro:="input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - -" - - -MetaL:=if(ftt==2){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; -end -";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; -end"; -} -}else{ if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; -end";}}else{ -if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; -end";} -}} - - - -MetaLfc:=if(ftt==2){if(nz>2){" - -beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; - -";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; - -"; -} -}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; - -";}}else{ -if(nz>2){"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; - -";} -}} - - -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); - - -return(MetaL); - } -:; - -\end{VerbatimOut} - - -%% -%% -%% Quand les solutions formelles de f'(x)=0 ne sont pas calculables -%% - - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTVapp.cxx} - - - - - - - -TVapp(L,F,nom,nomv,f,ftt,nmr):={ - - -nl:=size(L); -f:=unapply(f,x); -fp:=fonction_derivee(f); -z0:=concat(L,F);z:=sort(z0); -nz:=size(z); -if(L==[-infinity,+infinity]){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..100);} -else{if(L[0]==-infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..L[1]);} -else{if(L[1]==+infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=L[0]..100);} -else{S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=z[0]..z[nz-1])}}}; -si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]); - if(kk==1){if(kok==1){z:=append(z,simplifier(S[j]))}}; - fpour; -fsi; - - -S:=NULL; -S:=S,z[0]; -for(j:=1;j<size(z);j++){ - if(z[j]!=undef and (abs(z[j])>1e-15 or z[j]==0)){ - S:=S,z[j]}; -} -z:=[S]; - -Z:=sort(z); -nz:=size(Z); - -S:=NULL; -S:=S,Z[0]; -for(j:=1;j<nz;j++){ - if(Z[j]!=S[size(S)-1]){ - S:=S,Z[j]}; -} -Z:=[S]; - - -nz:=size(Z); -l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; -pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); -";fpour; - - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); - -lsi:=" -newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$ etex);"+ - if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ - if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ - if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ - if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} - -if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; - lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(ksp==1){"plus;"}else{"moins;"} - }; } - -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; -"} -lm0:=limite(f(x),x=Z[0],1)==-infinity; - li:=" -newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$ etex);"+ - if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ - if(k0==1){"1"}else{"0"}+ - ");"; - - if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; - lp:=lp+if(member(Z[r],F)){ - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ - etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); -"}}} - }; } - -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0); -"}; - - -intro:="input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - -" - - -MetaL:=if(ftt==2){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; -end -";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; -end"; -} -}else{ if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; -end";}}else{ -if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; -end";} -}} - - - -MetaLfc:=if(ftt==2){if(nz>2){" - -beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; - -";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; - -"; -} -}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; - -";}}else{ -if(nz>2){"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; - -";} -}} - - -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); - - -return(MetaL); - }:; - - - - - - - -\end{VerbatimOut} - - - - - - - -%% -%% Code giac/Xcas pour les Tableaux de Variations avec -%% Valeurs intermédiaires -%% - - - - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTVI.cxx} - - -TVI(L,F,nom,nomv,f,ftt,ao,nmr):={ -nl:=size(L); -f:=unapply(f,x); -fp:=fonction_derivee(f); -Z:=concat(L,F); -S:=resoudre(fp(x),x); - si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - if(kk==1){Z:=append(Z,simplifier(S[j]))}; - fpour - fsi; - -Z:=sort(Z); -nz:=size(Z); - si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; - fsi; -pour u de 1 jusque nz-2 faire - si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; - fsi; -fpour; -nz:=size(Z); -l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; - - - -LI:=limite(f(x),x,Z[0],1); -LF:=limite(f(x),x,Z[nz-1],-1); -LP:=NULL; -if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limite(f(x),x,Z[r],-1),limite(f(x),x,Z[r],1)}else{f(Z[r])}}}; -if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]}; - -NL:=size(LL); -A:=NULL;aa:=1;kk:=0; - -if(NL==nz){for(k:=0;k<nz-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0); -if(TestS==0){A:=A,aa;l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;}else{l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"}} -l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex);"}; - -if(NL>nz){for(k:=0;k<NL-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0); -TestL:=(abs(LL[k])==abs(LL[k+1])); -if(TestS==0){ if( TestL==1 ){l0:=l0}else{ -A:=A,aa;l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);";kk:=kk+1}} -l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex); -"}; - - - -TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); - -lsi:=" -newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$ etex);"+ - if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ - if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ - if(sign(fp((Z[0]+10^(-10))))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ - if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"} }}+if(TestS==0){"valBarre(btex$ $ etex);"+ if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}else{" "}; - - - - - -if(nz>2){rr:=1; if(nz==NL){for(r:=1; r<=NL-2;r++){ TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - ksp:=evalf(fp(Z[r]+0.01))>0; - TestL:=(abs(LL[r])==abs(LL[r+1])); - lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex $ $ etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "}; - }} -else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - TestL:=(abs(LL[r])==abs(LL[r+1])); - if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex $ $ etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} - } else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} -}} - }; - - - -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;"} -lm0:=limite(f(x),x=Z[0],1)==-infinity; - -TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); - - li:=" -newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$ etex); -"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ - if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "}; - - - if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; - lp:=lp+if(member(Z[r],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ - etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex - $ "+ao+" $ etex,0.5);" - }else{" "}; -};//for -}else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[rr-1],1))< evalf(limite(f(x),x=Z[rr],-1)); - krp:=evalf(limite(f(x),x=Z[rr],1))> evalf(limite(f(x),x=Z[rr+1],-1)) ; - lmrm:=limite(f(x),x=Z[rr],-1)==-infinity;lmrp:=limite(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); -if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ - etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex - $ "+ao+" $ etex,0.5); - ";rr:=rr+1; -}// else testL==1 -}//testS==0 -else{lp:=lp+if(member(Z[rr],F)){ - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ - etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); - "}}};rr:=rr+1; -}//else testS==0 -}//for nz<NL -}// else nz<NL -//if nz=NL -};//if nz>2 - - -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0);"}; - - - -intro:=" -input tableauVariation; -verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - -"; - - -MetaL:= if(ftt==2){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; -end";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; -end"; -} -}else{ -if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; -end";}}else{ -if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; -end";} -}}; - - -MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; - -";}else{ -"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; - -"; -} -}else{ -if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; -";}}else{ -if(nz>2){"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; - -";} -}}; - - - -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); - - -return(MetaL); - }:; - - - -\end{VerbatimOut} - - - - - - - -%% -%% -%% Quand les solutions de f'(x)=0 ne sont pas formellement calculables -%% - - - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTVIapp.cxx} - - -TVIapp(L,F,nom,nomv,f,ftt,ao,nmr):={ - - -nl:=size(L); -f:=unapply(f,x); -fp:=fonction_derivee(f); -z0:=concat(L,F);z:=sort(z0); -nz:=size(z); -if(L==[-infinity,+infinity]){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..100);} -else{if(L[0]==-infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..L[1]);} -else{if(L[1]==+infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=L[0]..100);} -else{S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=z[0]..z[nz-1])}}}; -si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]); - if(kk==1){if(kok==1){z:=append(z,simplifier(S[j]))}}; - fpour; -fsi; - - -S:=NULL; -S:=S,z[0]; -for(j:=1;j<size(z);j++){ - if(z[j]!=undef and (abs(z[j])>1e-15 or z[j]==0)){ - S:=S,z[j]}; -} -z:=[S]; - - - -Z:=sort(z); -nz:=size(Z); - -S:=NULL; -S:=S,Z[0]; -for(j:=1;j<nz;j++){ - if(Z[j]!=S[size(S)-1]){ - S:=S,Z[j]}; -} -Z:=[S]; - - -nz:=size(Z); -l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; - - - -LI:=limite(f(x),x,Z[0],1); -LF:=limite(f(x),x,Z[nz-1],-1); -LP:=NULL; -if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limite(f(x),x,Z[r],-1),limite(f(x),x,Z[r],1)}else{f(Z[r])}}}; -if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]}; - -NL:=size(LL); -A:=NULL;aa:=1;kk:=0; - -if(NL==nz){for(k:=0;k<nz-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0); -if(TestS==0){A:=A,aa;l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;}else{l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"}} -l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex);"}; - -if(NL>nz){for(k:=0;k<NL-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0); -TestL:=(abs(LL[k])==abs(LL[k+1])); -if(TestS==0){ if( TestL==1 ){l0:=l0}else{ -A:=A,aa;l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);";kk:=kk+1}} -l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex); -"}; - - - -TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); - -lsi:=" -newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$ etex);"+ - if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ - if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ - if(sign(fp((Z[0]+10^(-10))))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ - if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"} }}+if(TestS==0){"valBarre(btex$ $ etex);"+ if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}else{" "}; - - - - - -if(nz>2){rr:=1; if(nz==NL){for(r:=1; r<=NL-2;r++){ TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - ksp:=evalf(fp(Z[r]+0.01))>0; - TestL:=(abs(LL[r])==abs(LL[r+1])); - lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex $ $ etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "}; - }} -else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - TestL:=(abs(LL[r])==abs(LL[r+1])); - if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex $ $ etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} - } else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} -}} - }; - - - -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;"} -lm0:=limite(f(x),x=Z[0],1)==-infinity; - -TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); - - li:=" -newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$ etex); -"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ - if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "}; - - - if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; - lp:=lp+if(member(Z[r],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ - etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex - $ "+ao+" $ etex,0.5);" - }else{" "}; -};//for -}else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[rr-1],1))< evalf(limite(f(x),x=Z[rr],-1)); - krp:=evalf(limite(f(x),x=Z[rr],1))> evalf(limite(f(x),x=Z[rr+1],-1)) ; - lmrm:=limite(f(x),x=Z[rr],-1)==-infinity;lmrp:=limite(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); -if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ - etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex - $ "+ao+" $ etex,0.5); - ";rr:=rr+1; -}// else testL==1 -}//testS==0 -else{lp:=lp+if(member(Z[rr],F)){ - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ - etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); - "}}};rr:=rr+1; -}//else testS==0 -}//for nz<NL -}// else nz<NL -//if nz=NL -};//if nz>2 - - -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0);"}; - - - -intro:=" -input tableauVariation; -verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - -"; - - -MetaL:= if(ftt==2){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; -end";}else{ -intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; -end"; -} -}else{ -if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; -end";}}else{ -if(nz>2){intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; -end";} -}}; - - -MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+ - l0+lsi+lsp+lsf+" -endTableau; - -";}else{ -"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+" -endTableau; - -"; -} -}else{ -if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ - l0+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -li+ -lf -+" -endTableau; -";}}else{ -if(nz>2){"beginTableau("+nmr+")"+ - l0+ -lsi+lsp+lsf+ -li+ -lp+ -lf -+" -endTableau; - -";}else{"beginTableau("+nmr+")"+ - l0+ -lsi+lsf+ -li+ -lf -+" -endTableau; - -";} -}}; - - - -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); - - -return(MetaL); - }:; - - - -\end{VerbatimOut} - - - - - - - - - - - - - -%% -%% Code giac/Xcas pour les Tableaux de signes de produits -%% - - - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTabSignL.cxx} - - -TS(L,D,nmr):={ -L:=apply(f->unapply(f,x),L) -n:=size(L); -Z:=NULL; - -mini:=D[0]; maxi:=D[1]; - -pour k de 0 jusque n-1 faire - S:=resoudre(L[k](x),x); - si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);} - fpour; - fsi; -fpour; -Z:=sort(Z); -nz:=size(Z); -if(nz>2){pour u de 1 jusque nz-2 faire - si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1; - fsi; -fpour;}; -nz:=size(Z); - -if(nz==0){li:="";l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; - for(p:=0;p<=n-1;p++){li:=li+" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$ etex);"+ -if(mini!=-infinity and L[p](mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ -if(L[p]((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}+if(maxi!=+infinity and L[p](maxi)==0){" - valBarre(btex 0 etex);"}else{" - "} - -} - lf:=if(product(L[s]((mini+maxi)*.5),s,0,n-1)>0){"plus;"}else{"moins;"}; - -MetaL:=" input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - -beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+li+ - " - newLigneSignes(btex $\\hbox{\\bf Signe du }\\atop{{\\bf produit}}$ etex);"+ - if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+ lf+ - if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+" -endTableau; -end" -; - - -MetaLfc:=" beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+li+ - " - newLigneSignes(btex $\\hbox{\\bf Signe du }\\atop{{\\bf produit}}$ etex);"+ - if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+ lf+ - if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+" -endTableau; -" -; - -}else{ - -l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" ";lr:=" "; -pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); -";fpour; -l0:=l0+"val(btex $"+latex(D[1])+"$ etex);"; - - -for(p:=0;p<=n-1;p++){lp:=""; - li:=li+" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$ etex);"+ - if(mini!=-infinity and L[p](mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ - if(L[p](Z[0]-0.01)>0){"plus;"}else{"moins;"}; - - for(r:=0; r<=nz-2;r++){ - lp:=lp+if(simplifier(L[p](Z[r]))==0){" - valBarre(btex 0 etex);"}else{"barre; - "}+ - if(L[p]((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}}; - - li:=li+lp+ if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ - if(L[p](Z[nz-1]+1.0)>0){"plus;"}else{"moins; - "}+if(maxi!=+infinity and L[p](maxi)==0){" - valBarre(btex 0 etex);"}else{" - "} - }; - - -pour t de 0 jusque nz-2 faire - lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);" - fpour - -MetaL:=" input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+ - li - + - " - newLigneSignes(btex $\\hbox{\\bf Signe du }\\atop{{\\bf produit}}$ etex);"+ - if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+ - if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"+ - lr+ - if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ - if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+" -endTableau; -end" -; -MetaLfc:=" beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+ - li - + - " - newLigneSignes(btex $\\hbox{\\bf Signe du }\\atop{{\\bf produit}}$ etex);"+ - if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+ - if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"+ - lr+ - if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ - if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}+" -endTableau; - - "; -} -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); -return(MetaL); - }:; - -\end{VerbatimOut} - - - - -%% -%% Code giac/Xcas pour les Tableaux de signes de quotients -%% - - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTabSignQ.cxx} -TSq(nomf,L,Fo,D,nmr):={ -L:=apply(f->unapply(f,x),L); -Fo:=apply(f->unapply(f,x),Fo); -L:=concat(L,Fo); -n:=size(L); -Z:=NULL; -m:=size(Fo); -F:=NULL;FF:=NULL; -mini:=D[0]; maxi:=D[1]; - - -pour k de 0 jusque n-1 faire - S:=resoudre(L[k](x),x); - si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);} - fpour; - fsi; -fpour; - - -pour k de 0 jusque m-1 faire - SF:=resoudre(Fo[k](x),x); - si size(SF)>0 alors pour j de 0 jusque size(SF)-1 faire - FF:=FF,simplifier(SF[j]); - if(SF[j]>mini and SF[j]<maxi){F:=F,simplifier(SF[j]);} - fpour; - fsi; -fpour; - - - -Z:=sort(Z); // on classe les zéros dans l'ordre croissant -nz:=size(Z); -if(nz>2){pour u de 1 jusque nz-2 faire - si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1; // pour les zéros en double - fsi; -fpour;} - - -Z:=sort(Z); -nz:=size(Z); -if(nz>2){pour u de 1 jusque nz-2 faire - si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1; - fsi; -fpour;}; -nz:=size(Z); - -if(nz==0){li:="";l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; - for(p:=0;p<=n-1;p++){li:=li+" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$ etex);"+ -if(mini!=-infinity and L[p](mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ -if(L[p]((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}+if(maxi!=+infinity and L[p](maxi)==0){" - valBarre(btex 0 etex);"}else{" - "} - -} - lf:=if(product(L[s]((mini+maxi)*.5),s,0,n-1)>0){"plus;"}else{"moins;"}; - -MetaL:=" input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - -beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+li+ - " - newLigneSignes(btex $\\hbox{\\bf Signe }\\atop{{\\bf de "+nomf+"(x)}}$ etex);"+ - if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+ lf+ - if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+" -endTableau; -end" -; - - - - -MetaLfc:=" -beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+li+ - " - newLigneSignes(btex $\\hbox{\\bf Signe }\\atop{{\\bf de "+nomf+"(x)}}$ etex);"+ - if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+ lf+ - if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+" -endTableau; - -" -; - - - - -}else{ - - -l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" ";lr:=" "; -pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); -";fpour; -l0:=l0+"val(btex $"+latex(D[1])+"$ etex);"; - - -for(p:=0;p<=n-1;p++){lp:=""; - li:=li+" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$ etex);"+ - if(mini!=-infinity and L[p](mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ - if(L[p](Z[0]-0.01)>0){"plus;"}else{"moins;"}; - - for(r:=0; r<=nz-2;r++){ - lp:=lp+if(simplifier(L[p](Z[r]))==0){" - valBarre(btex 0 etex);"}else{"barre; - "}+ - if(L[p]((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}}; - - li:=li+lp+ if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ - if(L[p](Z[nz-1]+1.0)>0){"plus;"}else{"moins; - "}+if(maxi!=+infinity and L[p](maxi)==0){" - valBarre(btex 0 etex);"}else{" "} - - }; - - -pour t de 0 jusque nz-2 faire - lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+ - if(member(Z[t+1],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"} - fpour - -MetaL:=" input tableauVariation; -verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+ - li - + - " - newLigneSignes(btex $\\hbox{\\bf Signe de}\\atop{{\\bf "+nomf+"(x)}}$ etex);"+ - if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+ - if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ - if(member(Z[0],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"}+ - lr+ - if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ - if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+" -endTableau; -end" -; - - - - -MetaLfc:=" -beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+ - li - + - " - newLigneSignes(btex $\\hbox{\\bf Signe de}\\atop{{\\bf "+nomf+"(x)}}$ etex);"+ - if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" - "}}else{"nonDefBarre;"}+ - if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ - if(member(Z[0],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"}+ - lr+ - if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ - if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" - valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+" -endTableau; - -" - - -} - - - - -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); - - - - - -return(MetaL); - }:; - -\end{VerbatimOut} - - - - -%% Code giac/Xcas pour les Tableaux de signes du produit -%% de 2 facteurs affines -%% - - - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTabSign.cxx} -TSa(a,b,c,d,nmr):={ -zA:=resoudre(a*x+b=0,x)[0]; -zB:=resoudre(c*x+d=0,x)[0]; -zmin:=min(zA,zB); -zmax:=max(zA,zB); - Meta:= " input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; - beginTableau("+nmr+") - newLigneVariables(btex $\\Mathbold{x}$ etex); - val(btex $-\\infty$ etex);val(btex $"+latex(zmin)+"$ etex); -val(btex $"+latex(zmax)+"$etex); -val(btex $+\\infty$ etex); - newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+"}}$ etex);" - + if(a>0){"moins;"}else{"plus;"}+ - if(zmin==zA){"valBarre(btex 0 etex);"}else{"barre;"}+ - if(zmin==zA){si a>0 alors "plus;"; sinon "moins;";fsi} - else{si a>0 alors "moins;"; sinon "plus;"; fsi}+ - if(zmin==zA){"barre;"}else{"valBarre(btex 0 etex);"}+ - if(a>0){"plus;"}else{"moins;"} - +" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+"}}$ etex);" - + if(c>0){"moins"}else{"plus"}+";"+ - if(zmin==zB){"valBarre(btex 0 etex);"}else{"barre;"}+ - if(zmin==zB){si c>0 alors "plus;"; sinon "moins;";fsi} - else{si c>0 alors "moins;"; sinon "plus;"; fsi}+ - if(zmin==zB){"barre;"}else{"valBarre(btex 0 etex);"}+ - if(c>0){"plus;"}else{"moins;"} - - +" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{("+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+")("+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+")}}$ etex);" - + si a*c>0 alors plus; sinon moins;fsi+";"+ - "valBarre(btex 0 etex);"+ - si a*c>0 alors moins; sinon plus;fsi+";"+ - "valBarre(btex 0 etex);"+ - si a*c>0 alors plus; sinon moins;fsi+";"+" -endTableau; -end" -; -return(Meta); - }:; -\end{VerbatimOut} - - - - - - -%% -%% Code giac/Xcas pour les Tableaux de Signes d'expression ne contenant -%% qu'un seul terme - - - - -\begin{VerbatimOut}[commandchars=?§£]{XcasTSc.cxx} -TSc(g,D,nmr):={ -f:=unapply(g,x); -Z:=NULL; -mini:=D[0]; maxi:=D[1];lm:=" "; -S:=resoudre(f(x),x); -if(size(S)==0){ -l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; -li:=if(mini!=-infinity and f(mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ -if(mini!=-infinity or maxi!=+infinity){if(f((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}}else{if(f(0)>0){"plus;"}else{"moins;"}}; -lf:=if(maxi!=+infinity and f(maxi)==0){" - valBarre(btex 0 etex);"}else{" - "}; -} -else{pour j de 0 jusque size(S)-1 faire - if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j])}; - fpour; - - -Z:=sort(Z); -nz:=size(Z); -if(nz>2){pour u de 1 jusque nz-2 faire - si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1; - fsi; -fpour;} - - -nz:=size(Z); -l0:=" ";li:=" ";lr:=" "; -if(nz==0){l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; -li:=if(mini!=-infinity and f(mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ -if(f((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}; -lf:=if(maxi!=+infinity and f(maxi)==0){" - valBarre(btex 0 etex);"}else{" - "}; - -}else{ -l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" "; -pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); -"; -fpour; -l0:=l0+"val(btex $"+latex(D[1])+"$ etex);"; - -li:= if(mini!=-infinity and f(mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ -if(f(Z[0]-0.01)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"; - -lm:=if(nz>=2){for(r:=0; r<=nz-2;r++){lm:=lm+if(f((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}+ - "valBarre(btex 0 etex);" - }}else{" "}; - -lf:=if(f(Z[nz-1]+1.0)>0){"plus;"}else{"moins;"}+if(maxi!=+infinity and f(maxi)==0){"valBarre(btex 0 etex);"}else{" - "}; -}}; - - -MetaL:=" input tableauVariation; - verbatimtex -%&latex - \\documentclass{article} - \\?fonte - \\usepackage{amsmath} - \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}} - \\begin{document} - etex; -beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(f(x))+"}}$ etex);"+ - li+lm+lf - +" -endTableau; -end" -; - - -MetaLfc:=" - -beginTableau("+nmr+") -newLigneVariables(btex $\\Mathbold{x}$ etex); - "+l0+" -newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(f(x))+"}}$ etex);"+ - li+lm+lf - +" -endTableau; - -" -; - - - - -sortie:=fopen("XCasmpfc.mp"); -fprint(sortie,Unquoted,MetaLfc); -fclose(sortie); - - - - -return(MetaL); - }:; -\end{VerbatimOut} - - - - - - - -%% -%% -%% traitement des fichiers produits par giac/xcas -%% -%% - - - - - -\newcommand{\dresse}[1]{% -\ifthenelse{\boolean{xcas}}{% Avec l'option "XCas présent" - \executGiacmp{XCas#1.giac}% reconstituer le tableau - % exporter le source mp - % puis lancer metapost pour créer - % l'image du tableau - \immediate\write18{\cat XCasmpfc.mp >> \Tableaux.Tab.mp} - \immediate\write18{mpost -interaction=batchmode -jobname=\Tableaux.Tab XCasmp#1}}% - {% sinon, si le tableau est absent, alerte. - \IfFileExists{\Tableaux.Tab.\theTVn}{}{% - \PackageError{tablor}{Tableau absent non - reconstituable.}{Pour compiler il faut, soit les fichiers de - tableaux, soit le fichier \Tableaux.Tab.mp, soit disposer de - XCas.}}} - -\begin{center} - \includegraphics{\Tableaux.Tab.\theTVn} -\end{center} -\stepcounter{TVn}} - - -%% -%% traitement des fichiers produits par giac/xcas avec possibilité -%% de modifier le fichier metapost (environnement étoilé)) -%% - - - -\newcommand{\dressetoile}[1]{% -\IfFileExists{\Tableaux.Tab.\theTVn}{% Test sur l'existence du tableau -% Si oui, inclusion du fichier source de sauvegarde mp dans Tableaux -\immediate\write18{\cat TSav-\theTVn.mp >> \Tableaux.Tab.mp}} -% Si non, lancement des opérations de fabrication -{\executGiacmp{XCas#1.giac}% -\immediate\write18{\editeur XCasmpfc.mp} - - % Modification avec l'éditeur choisi - -\immediate\write18{\cp -f XCasmpfc.mp TSav-\theTVn.mp} % Sauvegarde du - % source mp sur le disque pour une - % inclusion ultérieure dans Tableaux.mp. -\immediate\write18{\cat XCasmpfc.mp >> \Tableaux.Tab.mp}} % Inclusion du - % source dans le - % fichier - % Tableaux - -\immediate\write18{mpost -interaction=batchmode \Tableaux.Tab}% Reconstitution des tableaux - % et création du dernier. L'option - % pallie l'absence de end en fin de - % fichier - -\begin{center} - \includegraphics{\Tableaux.Tab.\theTVn} -\end{center} - -\setcounter{TVn}{\theTVnbis} % Restauration du compteur TVn -} - - - - - - - -%% -%% -%%% -%%% -%%% les "giac" qui permettent d'exécuter la commande rentrée dans le fichier tex -%%% suivis des environnements qui permettront la saisie du code giac/xcas -%%% Les versions étoilées permettent de modifier le code metapost produit initialement -%%% - - - - -\begin{VerbatimOut}{XCas.giac} -maple_mode(0); -read("XcasTabSign.cxx"); -Sortie:=fopen("XCasmp.mp"); -vect.xcas.user := read("XCas.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TSa} -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCas.user}} -{\end{VerbatimOut} - \dresse{} -} - - - - - - - - - -\begin{VerbatimOut}{XCasQ.giac} -maple_mode(0); -read("XcasTabSignQ.cxx"); -Sortie:=fopen("XCasmpQ.mp"); -vect.xcas.user := read("XCasQ.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TSq}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasQ.user}} -{\end{VerbatimOut}\dresse{Q}} - - - -\newenvironment{TSq*}[1]% -{\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasQ.user}} -{\end{VerbatimOut}\dressetoile{Q}} - - -\begin{VerbatimOut}{XCasL.giac} -maple_mode(0); -read("XcasTabSignL.cxx"); -Sortie:=fopen("XCasmpL.mp"); -vect.xcas.user := read("XCasL.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TS}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasL.user}} -{\end{VerbatimOut}\dresse{L}} - - -\newenvironment{TS*}[1] -{\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasL.user}} -{\end{VerbatimOut}\dressetoile{L}} - - -\begin{VerbatimOut}{XCasTSc.giac} -maple_mode(0); -read("XcasTSc.cxx"); -Sortie:=fopen("XCasmpTSc.mp"); -vect.xcas.user := read("XCasTSc.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - - - - -\newenvironment{TSc*}[1]% -{\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTSc.user}} -{\end{VerbatimOut}\dressetoile{TSc}} - - -\newenvironment{TSc}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTSc.user}} -{\end{VerbatimOut}\dresse{TSc}} - - -\begin{VerbatimOut}{XCasTV.giac} -maple_mode(0); -read("XcasTV.cxx"); -Sortie:=fopen("XCasmpTV.mp"); -vect.xcas.user := read("XCasTV.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TV}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTV.user}}% -{\end{VerbatimOut} -\dresse{TV}} - -\newenvironment{TV*}[1]{% -\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTV.user}}% -{\end{VerbatimOut}\dressetoile{TV}} - - - - - - - - - - - -\begin{VerbatimOut}{XCasTVZ.giac} -maple_mode(0); -read("XcasTVZ.cxx"); -Sortie:=fopen("XCasmpTVZ.mp"); -vect.xcas.user := read("XCasTVZ.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TVZ}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVZ.user}}% -{\end{VerbatimOut} -\dresse{TVZ}} - -\newenvironment{TVZ*}[1]{% -\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVZ.user}}% -{\end{VerbatimOut}\dressetoile{TVZ}} - - - - - - - - - - -\begin{VerbatimOut}{XCasTVapp.giac} -maple_mode(0); -read("XcasTVapp.cxx"); -Sortie:=fopen("XCasmpTVapp.mp"); -vect.xcas.user := read("XCasTVapp.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TVapp}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVapp.user}}% -{\end{VerbatimOut} -\dresse{TVapp}} - -\newenvironment{TVapp*}[1]{% -\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVapp.user}}% -{\end{VerbatimOut}\dressetoile{TVapp}} - - - - - - - - - - - -\begin{VerbatimOut}{XCasTVI.giac} -maple_mode(0); -read("XcasTVI.cxx"); -Sortie:=fopen("XCasmpTVI.mp"); -vect.xcas.user := read("XCasTVI.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TVI}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVI.user}}% -{\end{VerbatimOut}\dresse{TVI}} - - -\newenvironment{TVI*}[1]% -{\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVI.user}}% -{\end{VerbatimOut}\dressetoile{TVI}} - - - - - - -\begin{VerbatimOut}{XCasTVIapp.giac} -maple_mode(0); -read("XcasTVIapp.cxx"); -Sortie:=fopen("XCasmpTVIapp.mp"); -vect.xcas.user := read("XCasTVIapp.user"); -vxo := vect.xcas.user; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -Resultat:=cat(Resultat,RslT); -fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); -\end{VerbatimOut} - -\newenvironment{TVIapp}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVIapp.user}}% -{\end{VerbatimOut}\dresse{TVIapp}} - - -\newenvironment{TVIapp*}[1]% -{\setcounter{TVnbis}{\theTVn} -\setcounter{TVn}{#1} -\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVIapp.user}}% -{\end{VerbatimOut}\dressetoile{TVIapp}} - - - - - - - -%% -%% Zi end -> enjoy :) |