diff options
author | Karl Berry <karl@freefriends.org> | 2008-01-28 19:35:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-01-28 19:35:44 +0000 |
commit | 24078264b6352d3a11d7d4e8a8e3793528b76339 (patch) | |
tree | 6019bfec9bd87a484a288501c7e6a844e815d959 /Master/texmf-dist | |
parent | a898113387e9657ab658eb9cccb60988c3a3a2cc (diff) |
tablor update (25jan08)
git-svn-id: svn://tug.org/texlive/trunk@6436 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/tablor/tablor.html | 802 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tablor/tablor.pdf | bin | 137247 -> 156708 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tablor/tablor.tex | 310 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tablor/tablor.sty | 460 |
4 files changed, 1154 insertions, 418 deletions
diff --git a/Master/texmf-dist/doc/latex/tablor/tablor.html b/Master/texmf-dist/doc/latex/tablor/tablor.html index 9505cccb01f..3a8dd19054a 100644 --- a/Master/texmf-dist/doc/latex/tablor/tablor.html +++ b/Master/texmf-dist/doc/latex/tablor/tablor.html @@ -85,7 +85,7 @@ <span class="font-latex-sedate">\NeedsTeXFormat</span>{LaTeX2e}[1995/12/01] <span class="font-latex-sedate">\ProvidesPackage</span>{<span class="flyspell-incorrect">tablor</span>} - [21/01/2008 v1.3 + [23/01/2008 v1.4 la machine à créer des tableaux de signes et variations] @@ -93,17 +93,17 @@ <span class="comment-delimiter">%% </span><span class="comment">Crée 5 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"><span class="flyspell-duplicate">TSa</span></span><span class="comment">(-2,3,-1,5,</span><span class="font-latex-sedate"><span class="comment">\tv</span></span><span class="comment">); +</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">); </span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TSa} </span><span class="comment-delimiter">% </span><span class="comment">%%%%%% Pour des tableaux de plus de 2 facteurs </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">{TS} -</span><span class="comment-delimiter">% </span><span class="comment">TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],</span><span class="font-latex-sedate"><span class="comment">\tv</span></span><span class="comment">); +</span><span class="comment-delimiter">% </span><span class="comment">TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],[a,b],</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">{TS} </span><span class="comment-delimiter">%</span><span class="comment"> </span><span class="comment-delimiter">% </span><span class="comment">pour les tableaux de signes avec quotient </span><span class="comment-delimiter">%</span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TSq} -</span><span class="comment-delimiter">%</span><span class="comment">TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],</span><span class="font-latex-sedate"><span class="comment">\tv</span></span><span class="comment">) +</span><span class="comment-delimiter">%</span><span class="comment">TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[a,b],</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">{TSq} </span><span class="comment-delimiter">% </span><span class="comment">un tableau de variation : </span><span class="comment-delimiter">%</span><span class="comment"> @@ -120,11 +120,11 @@ <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>{ -<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{rm XCasmp.mp* XCasmp.log XCasmp?.mp* XCasmp?.log XCasmpTV.mp* XCasmpTV.log *.out XCasmpTVI.mp* XCasmpTVI.log - *.in *.meta *<span class="flyspell-incorrect">mpx</span>* *~}} +<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{rm XCasmp.mp* XCasmp.log XCasmp?.mp* XCasmp?.log XCasmpTV.mp* XCasmpTV.log *.user XCasmpTVI.mp* XCasmpTVI.log + *.giac *.cxx *<span class="flyspell-incorrect">mpx</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">\bouger</span></span><span class="function-name">}</span>[1]{ -<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{cp <span class="flyspell-duplicate">XCas</span>* #1}} +<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{cp XCas* #1}} <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">\recup</span></span><span class="function-name">}</span>[2]{ @@ -132,7 +132,7 @@ -<span class="font-latex-sedate"><span class="keyword">\newcounter</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TVn</span></span><span class="function-name">}</span> +<span class="font-latex-sedate"><span class="keyword">\newcounter</span></span><span class="function-name">{TVn}</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">\tv</span></span><span class="function-name">}</span>{<span class="font-latex-sedate">\theTVn</span>} @@ -145,7 +145,7 @@ <span class="font-latex-sedate">\makeatother</span> -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTV.meta} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTV.cxx} TV(L,F,nom,nomv,f,ftt,nmr):={ nl:=size(L); f:=unapply(f,x); @@ -153,9 +153,9 @@ 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])<=<span class="flyspell-duplicate">evalf</span>(L[<span class="flyspell-duplicate">nl</span>-1])); + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[<span class="flyspell-duplicate">nl</span>-1])); if(kk==1){Z:=append(Z,simplifier(S[j]))}; - <span class="flyspell-duplicate">fpour</span> + fpour fsi; Z:=sort(Z); @@ -175,8 +175,8 @@ pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+ kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); lsi:=" -newLigneSignes(btex <span class="font-latex-math">$\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$</span> <span class="flyspell-duplicate">etex</span>);"+ - 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){ +newLigneSignes(btex <span class="font-latex-math">$\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$</span> etex);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}}else{if(member(Z[0],F)==0){ if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"+ if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} @@ -185,19 +185,19 @@ 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)==-<span class="flyspell-duplicate">infinity</span>; +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> <span class="flyspell-duplicate">etex</span>);"+ if(member(Z[0],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> etex,"} else{"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> etex,"}+ - if(k0==1){"1"}else{"0"}+ + if(k0==1){"1"}<span class="flyspell-duplicate">else</span>{"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; + lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-<span class="flyspell-duplicate">infinity</span>; 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);"}} else{"valPos(btex <span class="font-latex-math">$"+latex(simplifier(f(Z[r])))+"$</span> @@ -205,13 +205,13 @@ newLigneVariations(btex <span class="font-latex-math">$\\hbox{\</span><span clas "}}} }; } -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}else{"nonDefBarre;limGauche(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}+ +lnz:=limite(f(x),x=Z[nz-1],-1)==-<span class="flyspell-duplicate">infinity</span>; + lf:=if(member(Z[nz-1],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;limGauche(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}+ if(kz==1){"1);"}<span class="flyspell-duplicate">else</span>{"0); "}; -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> @@ -224,58 +224,68 @@ intro:="input tableauVariation; " -MetaL:= if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ +<span class="flyspell-duplicate">MetaL</span>:=if(ftt==2){if(nz>2){intro+"beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; +end";}else{ +intro+"beginTableau("+nmr+")"+ + l0+ +<span class="flyspell-duplicate">lsi</span>+lsf+" +endTableau; +end"; +} +}<span class="flyspell-duplicate">else</span>{ if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ l0+ li+ lp+ <span class="flyspell-duplicate">lf</span> +" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ +<span class="flyspell-duplicate">endTableau</span>; +end";}else{intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+ l0+ li+ <span class="flyspell-duplicate">lf</span> +" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; end";}}else{ if(nz>2){intro+"beginTableau("+nmr+")"+ l0+ <span class="flyspell-duplicate">lsi</span>+lsp+lsf+ li+ lp+ -lf +<span class="flyspell-duplicate">lf</span> +" endTableau; <span class="flyspell-duplicate">end</span>";}else{intro+"beginTableau("+nmr+")"+ l0+ lsi+lsf+ li+ -lf +<span class="flyspell-duplicate">lf</span> +" <span class="flyspell-duplicate">endTableau</span>; -end";} -} +<span class="flyspell-duplicate">end</span>";} +}} -return(<span class="flyspell-duplicate">MetaL</span>); +<span class="flyspell-duplicate">return</span>(<span class="flyspell-duplicate">MetaL</span>); }:; <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">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTVI.<span class="flyspell-duplicate">meta</span>} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTVI<span class="flyspell-duplicate">.cxx</span>} -TVI(L,F,nom,nomv,f,ftt,ao,nmr):={ +<span class="flyspell-duplicate">TVI</span>(L,F,nom,nomv,f,ftt,ao,nmr):={ nl:=size(L); f:=unapply(f,x); -fp:=fonction_derivee(f); +<span class="flyspell-duplicate">fp</span>:=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])); + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[<span class="flyspell-duplicate">nl</span>-1])); if(kk==1){Z:=append(Z,simplifier(S[j]))}; - fpour + <span class="flyspell-duplicate">fpour</span> fsi; Z:=sort(Z); @@ -283,60 +293,60 @@ nz:=size(Z); si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=<span class="flyspell-duplicate">nz</span>-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; + si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=<span class="flyspell-duplicate">nz</span>-1; fsi; fpour; -nz:=size(Z); -l0:=" newLigneVariables(btex <span class="font-latex-math">$"+nomv+"$</span> etex);";lp:=" "; lf:=" ";lsp:=" "; +<span class="flyspell-duplicate">nz</span>:=size(Z); +l0:=" newLigneVariables(btex <span class="font-latex-math">$"+nomv+"$</span> etex);";lp:=" "; lf:=" ";<span class="flyspell-duplicate">lsp</span>:=" "; LI:=limite(f(x),x,Z[0],1); -LF:=limite(f(x),x,Z[nz-1],-1); +<span class="flyspell-duplicate">LF</span>:=limite(f(x),x,Z[nz-1],-1); <span class="flyspell-duplicate">LP</span>:=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]}; +if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,<span class="flyspell-duplicate">LF</span>]}; NL:=size(LL); -A:=NULL;aa:=1;kk:=0; +A:=NULL;aa:=1;<span class="flyspell-duplicate">kk</span>:=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(NL==nz){for(k:=0;k<nz-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(<span class="flyspell-duplicate">LL</span>[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0); if(TestS==0){A:=A,aa;l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[k])+"$</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;}else{l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[k])+"$</span> etex);"}} -l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[nz-1])+"$</span> etex);"}; +l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[nz-1])+"$</span> <span class="flyspell-duplicate">etex</span>);"}; -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(NL>nz){for(k:=0;k<NL-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(<span class="flyspell-duplicate">LL</span>[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0); +<span class="flyspell-duplicate">TestL</span>:=(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> etex);";aa:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[kk])+"$</span> etex);";kk:=<span class="flyspell-duplicate">kk</span>+1}} l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[nz-1])+"$</span> <span class="flyspell-duplicate">etex</span>); "}; -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); +<span class="flyspell-duplicate">TestS</span>:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(<span class="flyspell-duplicate">LL</span>[1]-<span class="flyspell-duplicate">ao</span>))==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[<span class="flyspell-duplicate">nz</span>-2],1)); -lsi:=" -newLigneSignes(btex <span class="font-latex-math">$\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$</span> 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(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<span class="font-latex-math">$ $</span> etex);"+ if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}<span class="flyspell-duplicate">else</span>{" "}; +<span class="flyspell-duplicate">lsi</span>:=" +<span class="flyspell-duplicate">newLigneSignes</span>(btex <span class="font-latex-math">$\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$</span> <span class="flyspell-duplicate">etex</span>);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}}else{if(member(Z[0],F)==0){ + if(sign(fp((Z[0]+10^(-10))))==1){"plus;"}else{"moins;"}}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"+ + if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"} }}+if(TestS==0){"valBarre(btex<span class="font-latex-math">$ $</span> etex);"+ if(sign(<span class="flyspell-duplicate">fp</span>(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}<span class="flyspell-duplicate">else</span>{" "}; -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); +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]-<span class="flyspell-duplicate">ao</span>))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-<span class="flyspell-duplicate">ao</span>))==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(<span class="flyspell-duplicate">TestS</span>==0){"valBarre(btex <span class="font-latex-math">$ $</span> etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "}; + lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+ + if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex <span class="font-latex-math">$ $</span> <span class="flyspell-duplicate">etex</span>);"}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); +<span class="flyspell-duplicate">else</span>{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 <span class="font-latex-math">$ $</span> etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} + if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+ + if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex <span class="font-latex-math">$ $</span> etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=<span class="flyspell-duplicate">rr</span>+1;} } else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+ if(kspp==1){"plus;"}else{"moins;"};rr:=<span class="flyspell-duplicate">rr</span>+1;} }} @@ -344,104 +354,115 @@ else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(eva -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; -TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-<span class="flyspell-duplicate">ao</span>))==0.0); +<span class="flyspell-duplicate">TestS</span>:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(<span class="flyspell-duplicate">LL</span>[1]-<span class="flyspell-duplicate">ao</span>))==0.0); 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); +<span class="flyspell-duplicate">newLigneVariations</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"> Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$</span> etex); "+ if(member(Z[0],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> <span class="flyspell-duplicate">etex</span>,"} - else{"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> etex,"}+ + else{"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> <span class="flyspell-duplicate">etex</span>,"}+ if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex <span class="font-latex-math">$ "+ao+" $</span> etex,0.5);"}<span class="flyspell-duplicate">else</span>{" "}; - 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); + if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(<span class="flyspell-duplicate">evalf</span>(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; + lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-<span class="flyspell-duplicate">infinity</span>; 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);"}<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);"}} + "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);"}<span class="flyspell-duplicate">else</span>{"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(<span class="flyspell-duplicate">TestS</span>==0){"valPos(btex - <span class="font-latex-math">$ "+ao+" $</span> etex,0.5);" + 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){"<span class="flyspell-duplicate">valPos</span>(<span class="flyspell-duplicate">btex</span> + <span class="font-latex-math">$ "+ao+" $</span> <span class="flyspell-duplicate">etex</span>,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]-<span class="flyspell-duplicate">ao</span>))==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])); +}else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(<span class="flyspell-duplicate">evalf</span>(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-<span class="flyspell-duplicate">ao</span>))==0.0); + krm:=evalf(limite(f(x),x=Z[rr-1],1))< evalf(limite(f(x),x=Z[<span class="flyspell-duplicate">rr</span>],-1)); + krp:=evalf(limite(f(x),x=Z[rr],1))> evalf(limite(f(x),x=Z[<span class="flyspell-duplicate">rr</span>+1],-1)) ; + lmrm:=limite(f(x),x=Z[rr],-1)==-infinity;lmrp:=limite(f(x),x=Z[rr],1)==-<span class="flyspell-duplicate">infinity</span>; 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 <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);"}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);"}<span class="flyspell-duplicate">else</span>{"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);"}}}+"valPos(btex - <span class="font-latex-math">$ "+ao+" $</span> etex,0.5); - ";rr:=<span class="flyspell-duplicate">rr</span>+1; -}// else testL==1 + 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(<span class="flyspell-duplicate">btex</span> + <span class="font-latex-math">$ "+ao+" $</span> <span class="flyspell-duplicate">etex</span>,0.5); + ";rr:=rr+1; +}// else <span class="flyspell-incorrect">testL</span>==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);"}} +<span class="flyspell-duplicate">else</span>{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);"}<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);"}<span class="flyspell-duplicate">else</span>{"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); + etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[<span class="flyspell-duplicate">rr</span>]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); "}}};rr:=<span class="flyspell-duplicate">rr</span>+1; -}//else testS==0 -}//for nz<NL -}// else nz<NL -//if nz=NL +}//else <span class="flyspell-duplicate">testS</span>==0 +}//for nz<<span class="flyspell-duplicate">NL</span> +}// else nz<<span class="flyspell-duplicate">NL</span> +//if nz=<span class="flyspell-duplicate">NL</span> };//if <span class="flyspell-duplicate">nz</span>>2 -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}else{"nonDefBarre;limGauche(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> <span class="flyspell-duplicate">etex</span>,"}+ - if(kz==1){"1);"}else{"0);"}; +<span class="flyspell-duplicate">lnz</span>:=limite(f(x),x=Z[nz-1],-1)==-<span class="flyspell-duplicate">infinity</span>; + lf:=if(member(Z[nz-1],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;limGauche(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}+ + if(kz==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}; -intro:=" +<span class="flyspell-duplicate">intro</span>:=" input tableauVariation; -<span class="flyspell-duplicate">verbatimtex</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> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>} <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span> - etex + <span class="flyspell-duplicate">etex</span> "; -<span class="flyspell-duplicate">MetaL</span>:= if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ +MetaL:= if(<span class="flyspell-duplicate">ftt</span>==2){if(nz>2){intro+"beginTableau("+nmr+")"+ + l0+lsi+lsp+<span class="flyspell-duplicate">lsf</span>+" +<span class="flyspell-duplicate">endTableau</span>; +<span class="flyspell-duplicate">end</span>";}<span class="flyspell-duplicate">else</span>{ +<span class="flyspell-duplicate">intro</span>+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+ + l0+ +lsi+<span class="flyspell-duplicate">lsf</span>+" +endTableau; +<span class="flyspell-duplicate">end</span>"; +} +}<span class="flyspell-duplicate">else</span>{ +if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ l0+ li+ -lp+ -lf +<span class="flyspell-duplicate">lp</span>+ +<span class="flyspell-duplicate">lf</span> +" <span class="flyspell-duplicate">endTableau</span>; end";}else{intro+"beginTableau("+nmr+")"+ l0+ li+ -lf +<span class="flyspell-duplicate">lf</span> +" <span class="flyspell-duplicate">endTableau</span>; end";}}else{ -if(nz>2){intro+"beginTableau("+nmr+")"+ +if(nz>2){intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+ l0+ -lsi+lsp+lsf+ +<span class="flyspell-duplicate">lsi</span>+lsp+<span class="flyspell-duplicate">lsf</span>+ li+ <span class="flyspell-duplicate">lp</span>+ lf +" -endTableau; -end";}else{intro+"beginTableau("+nmr+")"+ +<span class="flyspell-duplicate">endTableau</span>; +<span class="flyspell-duplicate">end</span>";}else{intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+ l0+ -<span class="flyspell-duplicate">lsi</span>+lsf+ +<span class="flyspell-duplicate">lsi</span>+<span class="flyspell-duplicate">lsf</span>+ li+ -lf +<span class="flyspell-duplicate">lf</span> +" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; <span class="flyspell-duplicate">end</span>";} -}; +}}; return(<span class="flyspell-duplicate">MetaL</span>); }:; @@ -459,72 +480,136 @@ return(<span class="flyspell-duplicate">MetaL</span>); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSignL.meta} -TS(L,nmr):={ +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSignL<span class="flyspell-duplicate">.cxx</span>} + + +<span class="flyspell-duplicate">TS</span>(L,D,nmr):={ L:=apply(f->unapply(f,x),L) n:=size(L); -Z:=<span class="flyspell-duplicate">NULL</span>; +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 - Z:=Z,simplifier(S[j]); + if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);} <span class="flyspell-duplicate">fpour</span>; fsi; -fpour; +<span class="flyspell-duplicate">fpour</span>; Z:=sort(Z); -nz:=size(Z); -pour u de 1 jusque nz-2 faire +<span class="flyspell-duplicate">nz</span>:=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:=<span class="flyspell-duplicate">nz</span>-1; fsi; -fpour; -nz:=size(Z); -l0:=" ";li:=" ";lr:=" "; -pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> etex); -";<span class="flyspell-duplicate">fpour</span>; +<span class="flyspell-duplicate">fpour</span>;}; +<span class="flyspell-duplicate">nz</span>:=size(Z); + +if(<span class="flyspell-duplicate">nz</span>==0){li:="";l0:="val(btex <span class="font-latex-math">$"+latex(D[0])+"$</span> etex);val(btex <span class="font-latex-math">$"+latex(D[1])+"$</span> <span class="flyspell-duplicate">etex</span>);"; + for(p:=0;p<=n-1;p++){li:=li+" +<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(L[p](x))+"}}$</span> etex);"+ +if(mini!=-infinity and L[p](mini)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}+ +if(L[p]((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}+if(maxi!=+infinity and L[p](maxi)==0){" + valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"}<span class="flyspell-duplicate">else</span>{" + "} + +} + lf:=if(product(L[s]((mini+maxi)*.5),s,0,n-1)>0){"plus;"}else{"moins;"}; + +MetaL:=" input <span class="flyspell-duplicate">tableauVariation</span>; + <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><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span> + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span> + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>} + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span> + <span class="flyspell-duplicate">etex</span> + <span class="flyspell-duplicate">beginTableau</span>("+nmr+") +<span class="flyspell-duplicate">newLigneVariables</span>(btex <span class="font-latex-math">$\\Mathbold{x}$</span> <span class="flyspell-duplicate">etex</span>); + "+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> <span class="flyspell-duplicate">etex</span>);"+ + if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}+ <span class="flyspell-duplicate">lf</span>+ + if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}+" +<span class="flyspell-duplicate">endTableau</span>; +<span class="flyspell-duplicate">end</span>" +; +}<span class="flyspell-duplicate">else</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> <span class="flyspell-duplicate">etex</span>);"+ - if(L[p](Z[0]-1.0)>0){"plus;"}else{"moins;"}+ +l0:="val(btex <span class="font-latex-math">$"+latex(D[0])+"$</span> etex);";li:=" ";<span class="flyspell-duplicate">lr</span>:=" "; +pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> <span class="flyspell-duplicate">etex</span>); +";fpour; +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+" +<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(L[p](x))+"}}$</span> <span class="flyspell-duplicate">etex</span>);"+ + if(mini!=-infinity and L[p](mini)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}+ + 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;"}}+ - if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ + 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](<span class="flyspell-duplicate">maxi</span>)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "} }; 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);" - <span class="flyspell-duplicate">fpour</span> + lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);" + fpour -MetaL:=" input tableauVariation; - verbatimtex +<span class="flyspell-duplicate">MetaL</span>:=" input <span class="flyspell-duplicate">tableauVariation</span>; + <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><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>} <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span> - etex + <span class="flyspell-duplicate">etex</span> beginTableau("+nmr+") -newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> <span class="flyspell-duplicate">etex</span>); - val(btex <span class="font-latex-math">$-\\infty$</span> etex);"+l0+"val(btex <span class="font-latex-math">$+\\infty$</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);"+ - if(product(L[s](Z[0]-1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"+ - lr+ - if(product(L[s](Z[nz-1]+1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+" -endTableau; + " + 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);"}<span class="flyspell-duplicate">else</span>{" + "}+ + if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"+ + <span class="flyspell-duplicate">lr</span>+ + 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);"}<span class="flyspell-duplicate">else</span>{" + "}+" +<span class="flyspell-duplicate">endTableau</span>; <span class="flyspell-duplicate">end</span>" -; -return(MetaL); +;} +<span class="flyspell-duplicate">return</span>(<span class="flyspell-duplicate">MetaL</span>); }:; + <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> @@ -535,102 +620,167 @@ return(MetaL); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSignQ.meta} -TSq(nomf,L,Fo,nmr):={ +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSignQ<span class="flyspell-duplicate">.cxx</span>} +<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); +<span class="flyspell-duplicate">Fo</span>:=<span class="flyspell-duplicate">apply</span>(f->unapply(f,x),Fo); L:=concat(L,Fo); n:=size(L); Z:=NULL; -m:=size(Fo); -F:=<span class="flyspell-duplicate">NULL</span>; - +m:=size(<span class="flyspell-duplicate">Fo</span>); +F:=<span class="flyspell-duplicate">NULL</span>;<span class="flyspell-duplicate">FF</span>:=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 - Z:=Z,simplifier(S[j]); + if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);} <span class="flyspell-duplicate">fpour</span>; fsi; -fpour; +<span class="flyspell-duplicate">fpour</span>; 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 - F:=F,simplifier(SF[j]); - fpour; + FF:=FF,simplifier(SF[j]); + if(SF[j]>mini and SF[j]<maxi){F:=F,simplifier(SF[j]);} + <span class="flyspell-duplicate">fpour</span>; fsi; <span class="flyspell-duplicate">fpour</span>; Z:=sort(Z); // on classe les zéros dans l'ordre croissant -nz:=size(Z); -pour u de 1 jusque nz-2 faire +<span class="flyspell-duplicate">nz</span>:=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; -nz:=size(Z); -l0:=" ";li:=" ";lr:=" "; +<span class="flyspell-duplicate">fpour</span>;} + + +Z:=sort(Z); +<span class="flyspell-duplicate">nz</span>:=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:=<span class="flyspell-duplicate">nz</span>-1; + fsi; +<span class="flyspell-duplicate">fpour</span>;}; +<span class="flyspell-duplicate">nz</span>:=size(Z); + +if(nz==0){li:="";l0:="val(btex <span class="font-latex-math">$"+latex(D[0])+"$</span> etex);val(btex <span class="font-latex-math">$"+latex(D[1])+"$</span> <span class="flyspell-duplicate">etex</span>);"; + for(p:=0;p<=n-1;p++){li:=li+" +<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(L[p](x))+"}}$</span> etex);"+ +if(mini!=-infinity and L[p](mini)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}+ +if(L[p]((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}+if(maxi!=+infinity and L[p](<span class="flyspell-duplicate">maxi</span>)==0){" + 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;"}; + +<span class="flyspell-duplicate">MetaL</span>:=" input <span class="flyspell-duplicate">tableauVariation</span>; + <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><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span> + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span> + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>} + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span> + <span class="flyspell-duplicate">etex</span> + +<span class="flyspell-duplicate">beginTableau</span>("+nmr+") +<span class="flyspell-duplicate">newLigneVariables</span>(btex <span class="font-latex-math">$\\Mathbold{x}$</span> <span class="flyspell-duplicate">etex</span>); + "+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> <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);"}<span class="flyspell-duplicate">else</span>{" + "}}else{"nonDefBarre;"}+ <span class="flyspell-duplicate">lf</span>+ + if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}}else{"nonDefBarre;"}+" +<span class="flyspell-duplicate">endTableau</span>; +<span class="flyspell-duplicate">end</span>" +; +}<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> <span class="flyspell-duplicate">etex</span>); ";fpour; +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:=" "; +for(p:=0;p<=n-1;p++){<span class="flyspell-duplicate">lp</span>:=""; li:=li+" -<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(L[p](x))+"}}$</span> etex);"+ - if(L[p](Z[0]-1.0)>0){"plus;"}else{"moins;"}+ +<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(L[p](x))+"}}$</span> <span class="flyspell-duplicate">etex</span>);"+ + if(mini!=-infinity and L[p](mini)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}+ + 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;"}}+ - 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; - "} + 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[<span class="flyspell-duplicate">nz</span>-1]))==0){"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"}else{"barre;"}+ + if(L[p](Z[<span class="flyspell-duplicate">nz</span>-1]+1.0)>0){"plus;"}<span class="flyspell-duplicate">else</span>{"moins; + "}+if(maxi!=+infinity and L[p](<span class="flyspell-duplicate">maxi</span>)==0){" + <span class="flyspell-duplicate">valBarre</span>(<span class="flyspell-duplicate">btex</span> 0 <span class="flyspell-duplicate">etex</span>);"}<span class="flyspell-duplicate">else</span>{" "} + }; 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],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"} - fpour + 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],<span class="flyspell-duplicate">FF</span>)==0){"valBarre(btex 0 etex);"}else{ "<span class="flyspell-duplicate">nonDefBarre</span>;"} + <span class="flyspell-duplicate">fpour</span> -MetaL:=" input tableauVariation; - <span class="flyspell-duplicate">verbatimtex</span> +<span class="flyspell-duplicate">MetaL</span>:=" input <span class="flyspell-duplicate">tableauVariation</span>; +<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><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>} <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span> - etex - beginTableau("+nmr+") -newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); - val(btex <span class="font-latex-math">$-\\infty$</span> etex);"+l0+"val(btex <span class="font-latex-math">$+\\infty$</span> etex);"+ + <span class="flyspell-duplicate">etex</span> + beginTableau("+<span class="flyspell-duplicate">nmr</span>+") +<span class="flyspell-duplicate">newLigneVariables</span>(btex <span class="font-latex-math">$\\Mathbold{x}$</span> <span class="flyspell-duplicate">etex</span>); + "+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 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(product(L[s](Z[0]-1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+if(member(Z[0],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - lr+ - if(product(L[s](Z[nz-1]+1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+" -endTableau; -end" -; -return(<span class="flyspell-duplicate">MetaL</span>); + " + 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,<span class="flyspell-duplicate">FF</span>)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" + valBarre(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}}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{ "<span class="flyspell-duplicate">nonDefBarre</span>;"}+ + <span class="flyspell-duplicate">lr</span>+ + if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ + if(member(maxi,<span class="flyspell-duplicate">FF</span>)==0){if(<span class="flyspell-duplicate">maxi</span>!=+<span class="flyspell-duplicate">infinity</span> and product(L[s](maxi),s,0,n-1)==0){" + <span class="flyspell-duplicate">valBarre</span>(btex 0 <span class="flyspell-duplicate">etex</span>);"}<span class="flyspell-duplicate">else</span>{" "}}<span class="flyspell-duplicate">else</span>{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+" +<span class="flyspell-duplicate">endTableau</span>; +<span class="flyspell-duplicate">end</span>" +;} +<span class="flyspell-duplicate">return</span>(<span class="flyspell-duplicate">MetaL</span>); }:; - <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">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSign.meta} -TSa(a,b,c,d,nmr):={ +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{<span class="flyspell-duplicate">XcasTabSign.cxx</span>} +<span class="flyspell-duplicate">TSa</span>(a,b,c,d,<span class="flyspell-duplicate">nmr</span>):={ <span class="flyspell-duplicate">zA</span>:=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; +<span class="flyspell-duplicate">zB</span>:=resoudre(c*x+d=0,x)[0]; +<span class="flyspell-duplicate">zmin</span>:=min(zA,<span class="flyspell-duplicate">zB</span>); +<span class="flyspell-duplicate">zmax</span>:=max(zA,<span class="flyspell-duplicate">zB</span>); + Meta:= " input <span class="flyspell-duplicate">tableauVariation</span>; <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> @@ -639,63 +789,173 @@ zmax:=max(zA,zB); <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>} <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span> etex - beginTableau("+nmr+") - newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex); + beginTableau("+<span class="flyspell-duplicate">nmr</span>+") + newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> <span class="flyspell-duplicate">etex</span>); val(btex <span class="font-latex-math">$-\\infty$</span> etex);val(btex <span class="font-latex-math">$"+latex(zmin)+"$</span> etex); val(btex <span class="font-latex-math">$"+latex(zmax)+"$</span>etex); val(btex <span class="font-latex-math">$+\\infty$</span> <span class="flyspell-duplicate">etex</span>); 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{"+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+"}}$</span> 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(zmin==zA){si a>0 alors "plus;"; sinon "moins;";<span class="flyspell-duplicate">fsi</span>} + else{si a>0 alors "moins;"; sinon "plus;"; <span class="flyspell-duplicate">fsi</span>}+ + if(zmin==zA){"barre;"}else{"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"}+ if(a>0){"plus;"}else{"moins;"} +" -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{"+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+"}}$</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{"+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+"}}$</span> <span class="flyspell-duplicate">etex</span>);" + 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} + if(zmin==zB){si c>0 alors "plus;"; sinon "moins;";<span class="flyspell-duplicate">fsi</span>} else{si c>0 alors "moins;"; sinon "plus;"; fsi}+ if(zmin==zB){"barre;"}else{"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"}+ if(c>0){"plus;"}else{"moins;"} +" -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{("+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+")}}$</span> <span class="flyspell-duplicate">etex</span>);" - + 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);"+ +<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{("+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+")}}$</span> etex);" + + si a*c>0 alors plus; sinon moins;<span class="flyspell-duplicate">fsi</span>+";"+ + "valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"+ + si a*c>0 alors moins; sinon plus;<span class="flyspell-duplicate">fsi</span>+";"+ + "valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"+ si a*c>0 alors plus; sinon moins;fsi+";"+" -endTableau; +<span class="flyspell-duplicate">endTableau</span>; <span class="flyspell-duplicate">end</span>" ; -return(Meta); +<span class="flyspell-duplicate">return</span>(<span class="flyspell-duplicate">Meta</span>); }:; <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">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCas.in} -maple_mode(0); -read("XcasTabSign.meta"); + + + + + + + + + + + +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{<span class="flyspell-incorrect">XcasTSc</span>.<span class="flyspell-duplicate">cxx</span>} +<span class="flyspell-duplicate">TSc</span>(g,D,nmr):={ +f:=unapply(g,x); +Z:=NULL; +mini:=D[0]; maxi:=D[1];<span class="flyspell-duplicate">lm</span>:=" "; +S:=resoudre(f(x),x); +if(size(S)==0){ +li:=if(f(0)>0){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}; +<span class="flyspell-duplicate">lm</span>:=" ";<span class="flyspell-duplicate">lf</span>:=" "; +} +else{pour j de 0 jusque size(S)-1 faire + if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j])}; + <span class="flyspell-duplicate">fpour</span>; + + +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:=<span class="flyspell-duplicate">nz</span>-1; + fsi; +<span class="flyspell-duplicate">fpour</span>;} +nz:=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);"}<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);"}<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); +"; +<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){" + <span class="flyspell-duplicate">valBarre</span>(btex 0 etex);"}<span class="flyspell-duplicate">else</span>{" + "}+ +if(f(Z[0]-0.01)>0){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}+if(simplifier(f(Z[0]))==0){"<span class="flyspell-duplicate">valBarre</span>(<span class="flyspell-duplicate">btex</span> 0 <span class="flyspell-duplicate">etex</span>);"}<span class="flyspell-duplicate">else</span>{"barre;"}; + +<span class="flyspell-duplicate">lm</span>:=if(<span class="flyspell-duplicate">nz</span>>=2){for(r:=0; r<=nz-2;r++){if(f((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}+ + if(simplifier(f(Z[r+1]))==0){"valBarre(btex 0 etex);"}else{"barre;"} + }}<span class="flyspell-duplicate">else</span>{" "}; + +<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);"}<span class="flyspell-duplicate">else</span>{" + "}; +}}; + + +MetaL:=" input <span class="flyspell-duplicate">tableauVariation</span>; + <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><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span> + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span> + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>} + <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span> + etex +<span class="flyspell-duplicate">beginTableau</span>("+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> <span class="flyspell-duplicate">etex</span>);"+ + li+<span class="flyspell-duplicate">lm</span>+lf + +" +<span class="flyspell-duplicate">endTableau</span>; +end" +; +return(<span class="flyspell-duplicate">MetaL</span>); + }:; +<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> + + + + + + + + + +<span class="comment-delimiter">%%% </span><span class="comment">les "</span><span class="comment"><span class="flyspell-duplicate">giac</span></span><span class="comment">" +</span> + + + + + + + + + + + + + + +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCas.giac} +<span class="flyspell-duplicate">maple</span>_mode(0); +<span class="flyspell-duplicate">read</span>("XcasTabSign.cxx"); Sortie:=fopen("XCasmp.mp"); -vect.xcas.out := read("XCas.out"); -vxo := vect.xcas.out; -dim.vxo := dim(vxo); -nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt); +<span class="flyspell-duplicate">vect</span>.xcas.user := read("XCas.user"); +vxo := vect.xcas.user; +<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo); +<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo; +<span class="flyspell-duplicate">Resultat</span>:=cat(" "); +rslt := vxo[0]; RslT:=cat(<span class="flyspell-duplicate">rslt</span>); <span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,RslT); -<span class="flyspell-duplicate">fprint</span>(Sortie,Unquoted,Resultat); -fclose(Sortie); +fprint(Sortie,Unquoted,Resultat); +<span class="flyspell-duplicate">fclose</span>(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">{</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>£µ]{XCas.out}} +{<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">\end</span></span><span class="function-name">{VerbatimOut}</span> - <span class="font-latex-sedate">\executGiacmp</span>{XCas.in} + <span class="font-latex-sedate">\executGiacmp</span>{XCas.giac} <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmp</span>} @@ -706,25 +966,25 @@ fclose(Sortie); } -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasQ.in} -maple_mode(0); -read("XcasTabSignQ.meta"); +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasQ.giac} +<span class="flyspell-duplicate">maple</span>_mode(0); +<span class="flyspell-duplicate">read</span>("XcasTabSignQ.cxx"); Sortie:=fopen("XCasmpQ.mp"); -<span class="flyspell-duplicate">vect</span>.xcas.out := read("XCasQ.out"); -<span class="flyspell-duplicate">vxo</span> := vect.xcas.out; -<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo); +vect.xcas.user := read("XCasQ.user"); +<span class="flyspell-duplicate">vxo</span> := vect.xcas.user; +dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); -<span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,RslT); +<span class="flyspell-duplicate">Resultat</span>:=cat(" "); +<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt); +Resultat:=cat(Resultat,RslT); <span class="flyspell-duplicate">fprint</span>(Sortie,Unquoted,Resultat); -<span class="flyspell-duplicate">fclose</span>(Sortie); +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">{</span><span class="function-name"><span class="flyspell-duplicate">TSq</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>£µ]{XCasQ.out}} +<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TSq}</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">\end</span></span><span class="function-name">{VerbatimOut}</span> - <span class="font-latex-sedate">\executGiacmp</span>{XCasQ.in} + <span class="font-latex-sedate">\executGiacmp</span>{XCasQ.giac} <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmpQ</span>} @@ -736,25 +996,25 @@ rslt := vxo[0]; RslT:=cat(rslt); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasL.in} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasL.giac} maple_mode(0); -read("XcasTabSignL.meta"); +<span class="flyspell-duplicate">read</span>("XcasTabSignL.cxx"); Sortie:=fopen("XCasmpL.mp"); -<span class="flyspell-duplicate">vect</span>.xcas.out := read("XCasL.out"); -<span class="flyspell-duplicate">vxo</span> := vect.xcas.out; -<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo); +<span class="flyspell-duplicate">vect</span>.xcas.user := read("XCasL.user"); +<span class="flyspell-duplicate">vxo</span> := vect.xcas.user; +dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; -Resultat:=cat(" "); -rslt := vxo[0]; RslT:=cat(rslt); +<span class="flyspell-duplicate">Resultat</span>:=cat(" "); +<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt); <span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,RslT); <span class="flyspell-duplicate">fprint</span>(Sortie,Unquoted,Resultat); -<span class="flyspell-duplicate">fclose</span>(Sortie); +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">{</span><span class="function-name"><span class="flyspell-duplicate">TS</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>£µ]{XCasL.out}} +{<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"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> - <span class="font-latex-sedate">\executGiacmp</span>{XCasL.in} + <span class="font-latex-sedate">\executGiacmp</span>{XCasL.giac} <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmpL</span>} @@ -764,31 +1024,59 @@ rslt := vxo[0]; RslT:=cat(rslt); <span class="font-latex-sedate">\stepcounter</span>{<span class="flyspell-duplicate">TVn</span>} } +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{<span class="flyspell-duplicate">XCasTSc</span>.giac} +<span class="flyspell-duplicate">maple</span>_mode(0); +read("<span class="flyspell-duplicate">XcasTSc.cxx</span>"); +Sortie:=<span class="flyspell-duplicate">fopen</span>("<span class="flyspell-duplicate">XCasmpTSc</span>.<span class="flyspell-duplicate">mp</span>"); +<span class="flyspell-duplicate">vect</span>.xcas.user := read("<span class="flyspell-duplicate">XCasTSc</span>.user"); +vxo := vect.xcas.user; +dim.vxo := dim(<span class="flyspell-duplicate">vxo</span>); +<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.<span class="flyspell-duplicate">vxo</span>; +Resultat:=<span class="flyspell-duplicate">cat</span>(" "); +rslt := vxo[0]; RslT:=cat(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> + +<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TSc</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>[<span class="flyspell-duplicate">commandchars</span>=<span class="font-latex-warning">\\</span>£µ]{<span class="flyspell-incorrect">XCasTSc</span>.user}} +{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span> + <span class="font-latex-sedate">\executGiacmp</span>{<span class="flyspell-duplicate">XCasTSc</span>.<span class="flyspell-duplicate">giac</span>} + <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="flyspell-duplicate">mpost</span> <span class="flyspell-duplicate">XCasmpTSc</span>} +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span> + <span class="font-latex-sedate">\includegraphics</span>{<span class="flyspell-duplicate">XCasmpTSc</span>.<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">\stepcounter</span>{<span class="flyspell-duplicate">TVn</span>} +} -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTV.in} + + + +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTV.giac} <span class="flyspell-duplicate">maple</span>_mode(0); -<span class="flyspell-duplicate">read</span>("XcasTV.meta"); +read("XcasTV.cxx"); Sortie:=fopen("XCasmpTV.mp"); -vect.xcas.out := read("XCasTV.out"); -vxo := vect.xcas.out; -dim.vxo := dim(vxo); +vect.xcas.user := read("XCasTV.user"); +vxo := vect.xcas.user; +<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo); <span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo; -<span class="flyspell-duplicate">Resultat</span>:=cat(" "); -<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt); +Resultat:=cat(" "); +rslt := vxo[0]; RslT:=cat(rslt); Resultat:=cat(Resultat,RslT); fprint(Sortie,Unquoted,Resultat); -fclose(Sortie); +<span class="flyspell-duplicate">fclose</span>(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.out}}<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"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span><span class="comment">% -</span> <span class="font-latex-sedate">\executGiacmp</span>{XCasTV.in} - <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmpTV</span>} +</span> <span class="font-latex-sedate">\executGiacmp</span>{XCasTV.giac} + <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost XCasmpTV} <span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span> <span class="font-latex-sedate">\includegraphics</span>{XCasmpTV.<span class="font-latex-sedate">\theTVn</span>} <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span> @@ -798,26 +1086,26 @@ fclose(Sortie); -<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTVI.in} -maple_mode(0); -<span class="flyspell-duplicate">read</span>("XcasTVI.meta"); +<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTVI.giac} +<span class="flyspell-duplicate">maple</span>_mode(0); +read("XcasTVI.<span class="flyspell-duplicate">cxx</span>"); Sortie:=fopen("XCasmpTVI.mp"); -<span class="flyspell-duplicate">vect</span>.xcas.out := read("XCasTVI.out"); -vxo := vect.xcas.out; -dim.vxo := dim(<span class="flyspell-duplicate">vxo</span>); -nbr.line.vxo := dim.<span class="flyspell-duplicate">vxo</span>; -Resultat:=<span class="flyspell-duplicate">cat</span>(" "); +<span class="flyspell-duplicate">vect</span>.xcas.user := read("XCasTVI.user"); +vxo := vect.xcas.user; +dim.vxo := dim(vxo); +<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo; +Resultat:=cat(" "); rslt := vxo[0]; RslT:=cat(rslt); -<span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,<span class="flyspell-duplicate">RslT</span>); -fprint(Sortie,Unquoted,<span class="flyspell-duplicate">Resultat</span>); -<span class="flyspell-duplicate">fclose</span>(Sortie); +<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> -<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TVI</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>[<span class="flyspell-duplicate">commandchars</span>=<span class="font-latex-warning">\\</span>£µ]{XCasTVI.out}}<span class="comment">% +<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="comment">% -</span> <span class="font-latex-sedate">\executGiacmp</span>{XCasTVI.in} - <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="flyspell-duplicate">mpost</span> XCasmpTVI} +</span> <span class="font-latex-sedate">\executGiacmp</span>{XCasTVI.<span class="flyspell-duplicate">giac</span>} + <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost XCasmpTVI} <span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span> <span class="font-latex-sedate">\includegraphics</span>{XCasmpTVI.<span class="font-latex-sedate">\theTVn</span>} <span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span> @@ -832,7 +1120,7 @@ fprint(Sortie,Unquoted,<span class="flyspell-duplicate">Resultat</span>); <span class="comment-delimiter">%%</span><span class="comment"> -</span><span class="comment-delimiter">%% </span><span class="comment">Zi </span><span class="comment"><span class="flyspell-duplicate">end</span></span><span class="comment"> +</span><span class="comment-delimiter">%% </span><span class="comment">Zi end </span></pre> </body> </html> diff --git a/Master/texmf-dist/doc/latex/tablor/tablor.pdf b/Master/texmf-dist/doc/latex/tablor/tablor.pdf Binary files differindex e97809a956e..42f6060520b 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 ca2fe635dbb..34cb3be545c 100644 --- a/Master/texmf-dist/doc/latex/tablor/tablor.tex +++ b/Master/texmf-dist/doc/latex/tablor/tablor.tex @@ -2,13 +2,10 @@ \usepackage[height=250mm,width=183mm]{geometry} \usepackage[upright]{fourier} \usepackage{tablor} -\usepackage{listings,amsmath,verbatim,graphicx,xcolor} +\usepackage{preambule} \usepackage[dvips,colorlinks=true]{hyperref} -\definecolor{0.8white}{rgb}{0.8,0.8,0.8} -\definecolor{0.2white}{rgb}{0.2,0.2,0.2} - \newcommand{\lat}{ \lstset{numbers=none,language=[LaTeX]{TeX},xleftmargin=10pt,% @@ -16,14 +13,17 @@ keywordstyle =\color{0.2white}\usefont{OT1}{cmtt}{b}{n},basicstyle=\ttfamily,com backgroundcolor=\color{0.8white},breaklines=true} } - +\renewcommand{\xcas}{\lstset{numbers=none,language=XCAS,xleftmargin=10pt,% +keywordstyle =\color{0.2white}\usefont{OT1}{cmtt}{b}{n},basicstyle=\ttfamily,commentstyle=\normalfont\scriptsize\slshape, + backgroundcolor=\color{0.8white},breaklines=true} +} \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}} -\date{21 janvier 2008 - Version 1.3} +\date{23 janvier 2008 - Version 1.4} \begin{document} @@ -33,32 +33,60 @@ keywordstyle =\color{0.2white}\usefont{OT1}{cmtt}{b}{n},basicstyle=\ttfamily,com \section{Ça sert à quoi~?} -Il s'agit d'obtenir rapidement un tableau de signes ou un tableau de variations en entrant un +Il s'agit d'obtenir rapidement un tableau de signe ou un tableau de variation en entrant un minimum de commandes. \section{Comment ça marche~?} -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 +\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 \texttt{tex}. +\subsection{Rentrons dans les détails} + +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 +\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}. +\item des fichiers d'extension \texttt{.giac} qui regroupent des instructions lues et exécutées par + \Prog{giac}. +Les lignes importantes sont~: + +\begin{lstlisting} +read("XcasTV.cxx"); // giac charge le programme +Sortie:=fopen("XCasmpTV.mp"); // la sortie portera l'extension metapost +vect.xcas.user := read("XCasTV.user"); // giac lit les paramètres rentrés dans le fichier tex +\end{lstlisting} + +\item des fichiers d'extension \texttt{.user} qui sont créés par \LaTeX{} grâce à l'environnement + \texttt{VerbatimOut} de l'extension \texttt{fancyvrb} : il s'agit en fait de la commande qui se + trouve par exemple entre \verb+\begin{TVI}+ et \verb+\end{TVI}+. + + +\ez + \section{De quoi a-t-on besoin~?} -\begin{itemize} +\bez -\item Il faut avoir installé \texttt{XCAS}, logiciel multi-plateforme de calcul et de programmation~: +\item Il faut avoir installé \Prog{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 \texttt{MetaPOST} +\item il faut avoir le fichier de macros \Prog{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 à \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 +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 \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{}. @@ -66,60 +94,81 @@ 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 \texttt{emacs}, on rajoute en - fin de fichier \verb+%%% mode: latex --shell-escape+; pour les autres éditeurs, il faut modifier + les sorties de la compilation \texttt{tex}. Pour \Prog{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}; \item il faut avoir à disposition l'extension \texttt{fancyvrb}; \item pour ceux qui compilent avec \texttt{pdf\LaTeX{}}, il faut avoir effectué les petits réglages - nécessaires à l'utilisation de figures produites par \texttt{MetaPOST}. Pour cela, il suffit de + nécessaires à l'utilisation de figures produites par \Prog{MetaPOST}; Pour cela, il suffit de rajouter dans le préambule~:\\ \verb+\DeclareGraphicsRule{*}{mps}{*}{}+ -\item il faut enfin installer le fichier \texttt{tablor.sty} dans son \texttt{texmf} personnel. +\item il faut installer le fichier \texttt{tablor.sty} dans son \texttt{texmf} personnel. -\end{itemize} +\ez -\bigskip - - Pour les utilisateurs de Microsoft Windows, remplacer - \verb+\immediate\write18{giac<#1 }+ par - \verb+\immediate\write18{giac #1 }+ dans le fichier \texttt{tablor.sty} - pour permettre le \texttt{shell-escape}\\ +\begin{figure} + \begin{DANGER} + Pour les utilisateurs de Microsoft Windows, remplacer \verb+\immediate\write18{giac<#1 }+ par \verb+\immediate\write18{giac #1 }+ +dans le fichier \texttt{tablor.sty} + pour permettre le \texttt{shell-escape} \smallskip 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"}.\\ -Sur TeXmaker, c'est \texttt{latex -enable-write18 --shell-escape -interaction=nonstopmode \%.tex}.\\ +Sur TeXmaker, c'est \texttt{latex -enable-write18 --shell-escape -interaction=nonstopmode \%.tex}. + + \smallskip -Pour faire comprendre à XP où trouver \texttt{giac}, vous pouvez modifier le \texttt{path} en suivant +Pour faire comprendre à 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.\\ Le séparateur est le point virgule. (Merci à Gaëtan et à Daniel). - -\bigskip + \end{DANGER} + \end{figure} - L'extension \verb+fancybox+ rentre en conflit avec \verb+fancyvrb+ qu'utilise + +\begin{figure} + \begin{DANGER} + 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} + \end{figure} -\bigskip -Quatre nouvelles commandes sont crées~:~\verb+\tv, \nettoyer, \bouger, \recup,\executGiacmp+. - Attention aux conflits si de tels noms exustent quelque part dans vos +\begin{figure} + \begin{DANGER} + Quatre nouvelles commandes sont crées~:~\verb+\tv, \nettoyer, \bouger, \recup,\executGiacmp+. + Attention aux conflits si de tels noms existent quelque part dans vos fichiers personnels. + \end{DANGER} + \end{figure} + + + + +\begin{figure} + \begin{DANGER} +Le fichier \texttt{tablor.sty} est codé en \texttt{latin-1}. Certains devront donc le convertir en +\texttt{utf-8}. + \end{DANGER} + \end{figure} + \section{Comment l'utiliser~?} \subsection{Préambule} -Les ECM donnés en exemple correspondent à une compilation \texttt{\LaTeX{}+dvi+dvips}. +Les ECM donnés en exemple correspondent à une compilation \texttt{\LaTeX{}+dvi+dvips}. Pour \texttt{pdf\LaTeX{}}, +rajouter \verb+\DeclareGraphicsRule{*}{mps}{*}{}+. Le préambule sera toujours~: @@ -132,56 +181,73 @@ Le préambule sera toujours~: \end{lstlisting} + +\begin{figure} + \begin{Idee} + Les fontes utilisées dans les tableaux sont \verb+[upright]{fourier}+. Il est tout à + fait possible d'utiliser d'autres fontes. Il suffit de modifier le fichier + \texttt{tablor.sty} en remplaçant partout où il apparaît \verb+[upright]{fourier}+ par \verb+lmodern+ ou ce + que vous voulez. Ce n'est pas très pratique, mais cela évite de le mettre en option à + chaque utilisation et on utilise souvent la même fonte dans ses documents. + \end{Idee} + \end{figure} + + \subsection{Tableaux des variations} L'environnement s'appelle \texttt{TV}. On utilise une commande au format \texttt{XCAS}~: -%\xcas +\xcas \begin{lstlisting} TV([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,\tv) \end{lstlisting} -\begin{itemize} +\bez \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$, $h$, etc. + qu'elle apparaisse : $f$, $g$, $\f$, 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 ici toujours $x$ pour désigner la variable; \item le paramètre \texttt{t} est à remplacer par 1 si vous voulez voir apparaître une ligne - avec le signe de la dérivée et par 0 si vous ne voulez pas de cette ligne. -\item on termine par \verb+\tv+, une commande permettant de numéroter les tableaux en interne. -\end{itemize} + avec le signe de la dérivée, par 0 si vous ne voulez pas de cette ligne et par 2 si vous ne voulez + 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 \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 ; 7]$. On entre~: +\item Le tableau de variation sans signe de la dérivée de la fonction $f~:~x\mapsto x^2$ sur $[-5\pv7]$. + + +On obtient~: - \begin{lstlisting} \begin{TV} -TV([-5,7],[],"f","x",x^2,0,\tv) +TV([-5,7],[],"f","x",x^2,0,\tv); \end{TV} - \end{lstlisting} -et on obtient~: +après avoir entré~: + +\begin{lstlisting} \begin{TV} TV([-5,7],[],"f","x",x^2,0,\tv) \end{TV} +\end{lstlisting} - -\item Si on veut la même fonction sur $]-\infty;+\infty[$ avec le signe de la dérivée~: +\item Si on veut la même fonction sur $\bbr$ avec le signe de la dérivée~: \begin{lstlisting} \begin{TV} @@ -193,7 +259,24 @@ TV([-infinity,+infinity],[],"f","x",x^2,1,\tv) TV([-infinity,+infinity],[],"f","x",x^2,1,\tv) \end{TV} -\item Voici ce que cela donne pour $g~:~t\mapsto \frac{t^2}{t^2-1}$ sur $[-10; +\infty[$~: +\item Avec la même fonction sur $\bbr$ avec uniquement le signe de la dérivée~: + + + + \begin{lstlisting} +\begin{TV} +TV([-infinity,+infinity],[],"f","x",x^2,2,\tv) +\end{TV} + \end{lstlisting} + +\begin{TV} +TV([-infinity,+infinity],[],"f","x",x^2,2,\tv) +\end{TV} + + + + +\item Voici ce que cela donne pour $g~:~t\mapsto \frac{t^2}{t^2-1}$ sur $[-10\pv +\infty[$~: \begin{lstlisting} \begin{TV} @@ -211,7 +294,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 \texttt{XCAS} ne saurait pas résoudre +\item Il y aura des problèmes pour des équations $f'(x)=0$ que \Prog{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 «~à @@ -227,9 +310,12 @@ Si l'on veut mettre en évidence les solutions de l'équation $f(x)=a$, on uti La syntaxe est~: \begin{lstlisting} -TVI([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,a,numero du tableau) +TVI([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,a,\tv) \end{lstlisting} +Les paramètres sont les mêmes que pour \texttt{TV} mais on ajoute la valeur \texttt{a} bien sûr. + + Par exemple, pour $f~:~x\mapsto \frac{x^2}{x^2-1}$ et l'équation $f(x)=10$ on entre~: \begin{lstlisting} @@ -269,7 +355,7 @@ TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,\tv) \subsubsection*{Cas du produit de deux facteurs affines} -Pour étudier le signe de $(-2x+3)(-x+5)$, on entre~: +Pour étudier le signe de $(-2x+3)(-x+5)$ sur $\bbr$, on entre~: \begin{lstlisting} \begin{TSa} @@ -284,44 +370,60 @@ On obtient~: TSa(-2,3,-1,5,\tv); \end{TSa} -\subsubsection*{Cas du produit d'un nombre quelconque de facteurs quelconques} +\subsubsection*{Cas du produit d'un nombre quelconque de facteurs quelconques sur un intervalle quelconque} Certains cas pathologiques ne vont pas fonctionner, mais sinon, pour étudier le signe de -\[(-2x+3)(x^2-1)(x^2+1)(x-1)(x^2-2)\] On entre cette fois les expressions sous cette forme~: +\[(-2x+3)(x^2-1)(x^2+1)(x-1)(x^2-2)\] on entre cette fois les expressions sous cette forme en +précisant l'intervalle d'étude~: \begin{lstlisting} \begin{TS} - TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],\tv); + TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],[-infinity,+infinity],\tv); \end{TS} \end{lstlisting} - On obtient~: +On obtient~: + + +\begin{TS} + TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],[-infinity,+infinity],\tv); +\end{TS} + + + +Ou bien, sur un intervalle borné~: + +\begin{lstlisting} +\begin{TS} +TS([x-10,x+10],[-15,10],\tv) +\end{TS} +\end{lstlisting} \begin{TS} - TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],\tv); +TS([x-10,x+10],[-15,10],\tv) \end{TS} + \subsubsection*{Signe d'un quotient} -On entre~: +On entre dans deux listes différentes les facteurs du numérateur et du dénominateur~: \begin{lstlisting} \begin{TSq} -TSq("nom du quotient",[liste des facteurs du numérateur],[liste des facteurs du -dénominateur],numéro du tableau dans le document) +TSq("nom du quotient",[liste des facteurs du numérateur],[liste des facteurs du dénominateur],[inf,sup]) \end{TSq} \end{lstlisting} -Par exemple, pour étudier le signe de $\dfrac{(-2x+3)(-4x+5)}{(x^2-16)(x-2)}$~: +Par exemple, pour étudier le signe de $\dfrac{(-2x+3)(-4x+5)}{(x^2-16)(x-2)}$ sur $\bbr$~: \begin{lstlisting} \begin{TSq} -TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],\tv) +TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[-infinity,+infinity],\tv) \end{TSq} \end{lstlisting} @@ -329,20 +431,62 @@ TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],\tv) \begin{TSq} -TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],\tv) +TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[-infinity,+infinity],\tv) \end{TSq} +Sur un intervalle borné~: + +\begin{lstlisting} +\begin{TSq} +TSq("Q",[x-10],[x+10],[-infinity,10],\tv) +\end{TSq} +\end{lstlisting} + + +\begin{TSq} +TSq("Q",[x-10],[x+10],[-infinity,10],\tv) +\end{TSq} + + + + +\subsubsection*{Signe d'une seule expression} + + +On utilise l'environnement \texttt{TSc} comme \emph{Tableau de Signe court} en précisant +l'expression étudiée et l'intervalle considéré~: + +\begin{lstlisting} +\begin{TSc} +TSc((x-10)*(x+5),[-10,10],\tv) +\end{TSc} +\end{lstlisting} + + + +\begin{TSc} +TSc((x-10)*(x+5),[-10,10],\tv) +\end{TSc} + + + + + + + \section{Nettoyage} 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 \texttt{MetaPOST} ayant une extension sous forme de numéro. +fichiers eps créés par \Prog{MetaPOST} ayant une extension sous forme de numéro. Il suffit de taper \verb+\nettoyer+ juste avant le \verb+\end{document}+ -\smallskip - -\fbox{ Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{rm} par \texttt{DEL}} +\begin{figure} + \begin{DANGER} + Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{rm} par \texttt{DEL} + \end{DANGER} + \end{figure} \smallskip @@ -359,24 +503,26 @@ On peut également stocker les tableaux dans un autre dossier \end{lstlisting} +\begin{figure} + \begin{DANGER} + Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{cp} par \texttt{XCOPY} + \end{DANGER} + \end{figure} -\fbox{ Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{cp} par \texttt{XCOPY}} - \section{Merci...} -\begin{itemize} +\bez \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 \texttt{XCAS}. - -\end{itemize} + \textsc{Parisse}} pour \Prog{XCAS}. +\ez \section{Galerie} @@ -494,12 +640,12 @@ TV([-1,+infinity],[-1],"f","x",ln(1+x)-(x-x^2/2+x^3/3),1,\tv) \begin{lstlisting} \begin{TS} -TS([-2*x+3,x-1,x+1,x^2+3*x+1],\tv); +TS([-2*x+3,x-1,x+1,x^2+3*x+1],[-10,+infinity],\tv); \end{TS} \end{lstlisting} \begin{TS} -TS([-2*x+3,x-1,x+1,x^2+3*x+1],\tv); +TS([-2*x+3,x-1,x+1,x^2+3*x+1],[-10,+infinity],\tv); \end{TS} \begin{lstlisting} @@ -566,10 +712,24 @@ TVI([0,+infinity],[0],"f","x",ln(x)-(ln(x))^2,1,-1,\tv) +\begin{lstlisting} +\begin{TSc} +TSc((x-10)*(x+10),[-10,10],\tv) +\end{TSc} +\end{lstlisting} + + + +\begin{TSc} +TSc((x-10)*(x+10),[-10,10],\tv) +\end{TSc} + + \nettoyer + %\bouger{/home/moi/Desktop/} \end{document} diff --git a/Master/texmf-dist/tex/latex/tablor/tablor.sty b/Master/texmf-dist/tex/latex/tablor/tablor.sty index 914fa524efa..19fe60c171b 100644 --- a/Master/texmf-dist/tex/latex/tablor/tablor.sty +++ b/Master/texmf-dist/tex/latex/tablor/tablor.sty @@ -1,7 +1,7 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{tablor} - [21/01/2008 v1.3 + [23/01/2008 v1.4 la machine à créer des tableaux de signes et variations] @@ -14,12 +14,12 @@ % %%%%%% 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],\tv); +% 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],\tv) +%TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[a,b],\tv) %%\end{TSq} % un tableau de variation : % @@ -36,8 +36,8 @@ \newcommand{\nettoyer}{ -\immediate\write18{rm XCasmp.mp* XCasmp.log XCasmp?.mp* XCasmp?.log XCasmpTV.mp* XCasmpTV.log *.out XCasmpTVI.mp* XCasmpTVI.log - *.in *.meta *mpx* *~}} +\immediate\write18{rm XCasmp.mp* XCasmp.log XCasmp?.mp* XCasmp?.log XCasmpTV.mp* XCasmpTV.log *.user XCasmpTVI.mp* XCasmpTVI.log + *.giac *.cxx *mpx* *~}} \newcommand{\bouger}[1]{ \immediate\write18{cp XCas* #1}} @@ -61,7 +61,7 @@ \makeatother -\begin{VerbatimOut}{XcasTV.meta} +\begin{VerbatimOut}{XcasTV.cxx} TV(L,F,nom,nomv,f,ftt,nmr):={ nl:=size(L); f:=unapply(f,x); @@ -140,7 +140,17 @@ intro:="input tableauVariation; " -MetaL:= if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ +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+ @@ -170,7 +180,7 @@ lf +" endTableau; end";} -} +}} return(MetaL); }:; @@ -179,7 +189,7 @@ return(MetaL); \end{VerbatimOut} -\begin{VerbatimOut}{XcasTVI.meta} +\begin{VerbatimOut}{XcasTVI.cxx} TVI(L,F,nom,nomv,f,ftt,ao,nmr):={ @@ -327,7 +337,18 @@ verbatimtex "; -MetaL:= if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+ +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+ @@ -357,7 +378,7 @@ lf +" endTableau; end";} -}; +}}; return(MetaL); }:; @@ -375,42 +396,98 @@ return(MetaL); -\begin{VerbatimOut}{XcasTabSignL.meta} -TS(L,nmr):={ +\begin{VerbatimOut}{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 - Z:=Z,simplifier(S[j]); + if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);} fpour; fsi; fpour; Z:=sort(Z); nz:=size(Z); -pour u de 1 jusque nz-2 faire +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; +fpour;}; nz:=size(Z); -l0:=" ";li:=" ";lr:=" "; + +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} + \\usepackage[upright]{fourier} + \\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" +; +}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(L[p](Z[0]-1.0)>0){"plus;"}else{"moins;"}+ +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;"}}+ - if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ + 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{" + "} }; @@ -429,18 +506,26 @@ MetaL:=" input tableauVariation; etex beginTableau("+nmr+") newLigneVariables(btex $\\Mathbold{x}$ etex); - val(btex $-\\infty$ etex);"+l0+"val(btex $+\\infty$ etex);"+ + "+l0+ li + - " newLigneSignes(btex $\\hbox{\\bf Signe du }\\atop{{\\bf produit}}$ etex);"+ - if(product(L[s](Z[0]-1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"+ + " + 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]+1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+" + 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" -; +;} return(MetaL); }:; + \end{VerbatimOut} @@ -451,22 +536,22 @@ return(MetaL); -\begin{VerbatimOut}{XcasTabSignQ.meta} -TSq(nomf,L,Fo,nmr):={ +\begin{VerbatimOut}{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; - +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 - Z:=Z,simplifier(S[j]); + if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);} fpour; fsi; fpour; @@ -475,7 +560,8 @@ 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 - F:=F,simplifier(SF[j]); + FF:=FF,simplifier(SF[j]); + if(SF[j]>mini and SF[j]<maxi){F:=F,simplifier(SF[j]);} fpour; fsi; fpour; @@ -484,37 +570,95 @@ fpour; Z:=sort(Z); // on classe les zéros dans l'ordre croissant nz:=size(Z); -pour u de 1 jusque nz-2 faire +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; +fpour;} + + +Z:=sort(Z); nz:=size(Z); -l0:=" ";li:=" ";lr:=" "; +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} + \\usepackage[upright]{fourier} + \\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" +; +}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:=" "; +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(L[p](Z[0]-1.0)>0){"plus;"}else{"moins;"}+ + 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;"}}+ - if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ + 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],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"} + 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 +verbatimtex %&latex \\documentclass{article} \\usepackage[upright]{fourier} @@ -524,23 +668,29 @@ MetaL:=" input tableauVariation; etex beginTableau("+nmr+") newLigneVariables(btex $\\Mathbold{x}$ etex); - val(btex $-\\infty$ etex);"+l0+"val(btex $+\\infty$ etex);"+ + "+l0+ li + - " newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\bf "+nomf+"(x) }$ etex);"+ - if(product(L[s](Z[0]-1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+if(member(Z[0],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ - lr+ - if(product(L[s](Z[nz-1]+1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+" + " + 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;"}+ + 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" -; +;} return(MetaL); }:; - \end{VerbatimOut} -\begin{VerbatimOut}{XcasTabSign.meta} +\begin{VerbatimOut}{XcasTabSign.cxx} TSa(a,b,c,d,nmr):={ zA:=resoudre(a*x+b=0,x)[0]; zB:=resoudre(c*x+d=0,x)[0]; @@ -593,12 +743,122 @@ return(Meta); -\begin{VerbatimOut}{XCas.in} + + + + + + + + + + + +\begin{VerbatimOut}{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){ +li:=if(f(0)>0){"plus;"}else{"moins;"}; +lm:=" ";lf:=" "; +} +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;"}+if(simplifier(f(Z[0]))==0){"valBarre(btex 0 etex);"}else{"barre;"}; + +lm:=if(nz>=2){for(r:=0; r<=nz-2;r++){if(f((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}+ + if(simplifier(f(Z[r+1]))==0){"valBarre(btex 0 etex);"}else{"barre;"} + }}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} + \\usepackage[upright]{fourier} + \\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" +; +return(MetaL); + }:; +\end{VerbatimOut} + + + + + + + + + +%%% les "giac" + + + + + + + + + + + + + + + +\begin{VerbatimOut}{XCas.giac} maple_mode(0); -read("XcasTabSign.meta"); +read("XcasTabSign.cxx"); Sortie:=fopen("XCasmp.mp"); -vect.xcas.out := read("XCas.out"); -vxo := vect.xcas.out; +vect.xcas.user := read("XCas.user"); +vxo := vect.xcas.user; dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; Resultat:=cat(" "); @@ -609,9 +869,9 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TSa} -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCas.out}} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCas.user}} {\end{VerbatimOut} - \executGiacmp{XCas.in} + \executGiacmp{XCas.giac} \immediate\write18{mpost XCasmp} @@ -622,12 +882,12 @@ fclose(Sortie); } -\begin{VerbatimOut}{XCasQ.in} +\begin{VerbatimOut}{XCasQ.giac} maple_mode(0); -read("XcasTabSignQ.meta"); +read("XcasTabSignQ.cxx"); Sortie:=fopen("XCasmpQ.mp"); -vect.xcas.out := read("XCasQ.out"); -vxo := vect.xcas.out; +vect.xcas.user := read("XCasQ.user"); +vxo := vect.xcas.user; dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; Resultat:=cat(" "); @@ -638,9 +898,9 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TSq} -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasQ.out}} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasQ.user}} {\end{VerbatimOut} - \executGiacmp{XCasQ.in} + \executGiacmp{XCasQ.giac} \immediate\write18{mpost XCasmpQ} @@ -652,12 +912,12 @@ fclose(Sortie); -\begin{VerbatimOut}{XCasL.in} +\begin{VerbatimOut}{XCasL.giac} maple_mode(0); -read("XcasTabSignL.meta"); +read("XcasTabSignL.cxx"); Sortie:=fopen("XCasmpL.mp"); -vect.xcas.out := read("XCasL.out"); -vxo := vect.xcas.out; +vect.xcas.user := read("XCasL.user"); +vxo := vect.xcas.user; dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; Resultat:=cat(" "); @@ -668,9 +928,9 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TS} -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasL.out}} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasL.user}} {\end{VerbatimOut} - \executGiacmp{XCasL.in} + \executGiacmp{XCasL.giac} \immediate\write18{mpost XCasmpL} @@ -680,17 +940,45 @@ fclose(Sortie); \stepcounter{TVn} } +\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} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTSc.user}} +{\end{VerbatimOut} + \executGiacmp{XCasTSc.giac} + + \immediate\write18{mpost XCasmpTSc} + +\begin{center} + \includegraphics{XCasmpTSc.\theTVn} +\end{center} +\stepcounter{TVn} +} + -\begin{VerbatimOut}{XCasTV.in} +\begin{VerbatimOut}{XCasTV.giac} maple_mode(0); -read("XcasTV.meta"); +read("XcasTV.cxx"); Sortie:=fopen("XCasmpTV.mp"); -vect.xcas.out := read("XCasTV.out"); -vxo := vect.xcas.out; +vect.xcas.user := read("XCasTV.user"); +vxo := vect.xcas.user; dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; Resultat:=cat(" "); @@ -701,9 +989,9 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TV}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTV.out}}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTV.user}}% {\end{VerbatimOut}% - \executGiacmp{XCasTV.in} + \executGiacmp{XCasTV.giac} \immediate\write18{mpost XCasmpTV} \begin{center} \includegraphics{XCasmpTV.\theTVn} @@ -714,12 +1002,12 @@ fclose(Sortie); -\begin{VerbatimOut}{XCasTVI.in} +\begin{VerbatimOut}{XCasTVI.giac} maple_mode(0); -read("XcasTVI.meta"); +read("XcasTVI.cxx"); Sortie:=fopen("XCasmpTVI.mp"); -vect.xcas.out := read("XCasTVI.out"); -vxo := vect.xcas.out; +vect.xcas.user := read("XCasTVI.user"); +vxo := vect.xcas.user; dim.vxo := dim(vxo); nbr.line.vxo := dim.vxo; Resultat:=cat(" "); @@ -730,9 +1018,9 @@ fclose(Sortie); \end{VerbatimOut} \newenvironment{TVI}% -{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVI.out}}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\£µ]{XCasTVI.user}}% {\end{VerbatimOut}% - \executGiacmp{XCasTVI.in} + \executGiacmp{XCasTVI.giac} \immediate\write18{mpost XCasmpTVI} \begin{center} \includegraphics{XCasmpTVI.\theTVn} |