From 2b0d1a47ccbd53571b1637c01f48e150ae5f471f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 26 Oct 2008 15:41:28 +0000 Subject: tablor 4.0.2 (22oct08) git-svn-id: svn://tug.org/texlive/trunk@11062 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/tablor/tablor-xetex.sty | 2836 ++++++++++++++++++++ Master/texmf-dist/tex/latex/tablor/tablor.sty | 724 +++-- 2 files changed, 3345 insertions(+), 215 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/tablor/tablor-xetex.sty (limited to 'Master/texmf-dist/tex/latex/tablor') diff --git a/Master/texmf-dist/tex/latex/tablor/tablor-xetex.sty b/Master/texmf-dist/tex/latex/tablor/tablor-xetex.sty new file mode 100644 index 00000000000..21605a4d10b --- /dev/null +++ b/Master/texmf-dist/tex/latex/tablor/tablor-xetex.sty @@ -0,0 +1,2836 @@ +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{tablor-xetex}[24/10/2008 v4.02 la machine a creer des +tableaux de signes et variations compatible xetex] + +% \copyleft Connan le Barbare (aka Guillaume Connan) \copyright +% This work may be distributed and/or mofified under the conditions +% or the LaTeX Project Public Licence, either v1.3 or (at your option) +% any later version. The latest version is in +% http://www.latex-project.org/lppl/ +% This work consists of the files tablor.sty, tablor-xetex.sty, tablor.cfg, tablor.tex, +% tablor.pdf and tablor.html + + +%% Cree 16 environnements : +%% tableau de signes de 2 facteurs affines +% \begin{TSa} +% TSa(-2,3,-1,5,\tv); +% \end{TSa} +% %%%%%% Pour des tableaux de plus de 2 facteurs +% +% \begin{TS} +% TS("P",[-2*x+3,x^2-1,x^2+1,x-1,x^2-2],[a,b],n,\tv); +% \end{TS} +% +% pour les tableaux de signes avec quotient +%\begin{TSq} +%TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[a,b],n,\tv) +%%\end{TSq} +% un tableau de variation : +% +% pour les tableaux de signes à une seule ligne +% \begin{TSc} +% TSc((x+10)/((x-5)*(x-2)),[-10,5],[2,5],n,0) +% \end{TSc} +% +% +% \begin{TV} +% TV([0,+infinity],[0],"h","x",ln(x)-(ln(x))^2,1,n,\tv) +% \end{TV} +% +% tableau de variation avec zones interdites +% +% \begin{TVZ} +% TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",sqrt(x^2-1),1,n,\tv) +% \end{TVZ} +% +% +% tableau avec valeurs intermediares +%\begin{TVI} +%TVI([-1,+infinity],[-1],"f","x",x2/sqrt(x+1)-1,1,2,n,\tv) +%\end{TVI} +%%% +% tableau de variations avec f' sans zero formel +%\begin{TVapp} +% TVapp([0,+infinity],[0],"g","x",ln(x)-x*exp(2-x),1,\tv) +% \end{TVapp} +% +% +% tableau de variations avec f' sans zero formel +%\begin{TVIapp} +% TVIapp([0,+infinity],[0],"g","x",ln(x)-x*exp(2-x),1,0,\tv) +% \end{TVIapp} +% +% +%%% +% et leurs pendants etoiles qui permettent l'affichage intermediaire du +% fichier metapost pour le modifier +% +% +% Courbes parametrees +% \begin{TVP} +% TVP([-infinity,+infinity],[[-1,2],[-1]],["x","y"],"t",[t^2/((t+1)*(t-2)),t^2*(t+2)/(t+1)],1,n,\tv) +% \end{TVP} +% +% +% \begin{TVP} +% TVP([0,pi/2],[[],[]],["x","y"],"t",[2*cos(t),sin(2*t)],1,t,\tv) +% \end{TVP} +% % +% % +% Fonctions prolongeables par continuité +% TVPC([intervalles d'étude],[valeurs prolongeables],[valeurs interdites pour f'],"g","t",e^(-1/x^2),1,n,\tv); +% \begin{TVPC} +% TVPC([-infinity,+infinity],[0],[0],"g","t",e^(-1/x^2),1,n,\tv); +% \end{TVPC} + + + + +%% extensions requises +%% Il faudra rajouter dans le preambule \usepackage{graphicx} si vous +%% ne l'avez pas de base + + +\RequirePackage{filecontents} +\RequirePackage{ifthen} +\RequirePackage{fancyvrb} +\RequirePackage{ifpdf} +\RequirePackage{ifxetex} +\fvset{gobble=0} + +% option xcas present + + +\newboolean{xcas}\setboolean{xcas}{false} +\DeclareOption{xcas}{\setboolean{xcas}{true}} + + +\ProcessOptions\relax + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% pour xelatex (ne marche que sur unix....) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\ifxetex + +\begin{filecontents*}{convert-mp-pdf.sh} +#!/bin/sh +mpost -interaction nonstopmode $1 ; + +cat>$1.tex<> + + +\immediate\write18{chmod 775 ./convert-mp-pdf.sh} + +\fi + +%% Initialisation du choix d'OS +\newboolean{windows}\setboolean{windows}{false} + + + +%% on configure tablor dans un fichier exterieur pour la plateforme +%% et l'editeur + +\IfFileExists{tablor.cfg}{\input{tablor.cfg}}%\typeout{pas de fichier tablor.cfg}} + + +%% Definit des commandes disque selon l'OS utilise +\ifthenelse{\boolean{windows}}% + {\newcommand{\rem}{DEL } \newcommand{\cat}{TYPE } + \newcommand{\cp}{COPY }}% + {\newcommand{\rem}{rm }\newcommand{\cat}{cat } + \newcommand{\cp}{cp }} + + + + + + + +%% pour ceux compilant via pdflatex + +\ifpdf +\DeclareGraphicsRule{*}{mps}{*}{} +\fi + +%% pour nettoyer les fichiers auxiliaires + +\AtEndDocument{\immediate\write18{\rem *.user XCas* Xcas* *.mpx} + } + + + + +%% Pour clore les fichiers metapost + + + \begin{VerbatimOut}{queue.mp} + + end + + \end{VerbatimOut} + + + +%% Nettoie les fichiers log dont le nom depend du choix de l'utilisateur +%% Par defaut, c'est le nom du fichier tex courant (\jobname) +%% Clôt le fichier metapost contenant le recapitulatif de tous les tableaux + + + +\newcommand{\nettoyer}[1][\jobname]% +{\immediate\write18{\rem #1.Tab.log queue.mp enteteMP.cfg session.tex config.cxx} +} + + + + +%% Donne comme prefixe aux tableaux le prefixe courant +%% Peut-être modifie par \initablor + +\newcommand{\nomtravail}{\jobname} + +%% initialise les compteurs + +\newcounter{TVn} +\newcommand{\tv}{\theTVn} + +\newcounter{TVnbis} +\newcommand{\tvbis}{\theTVnbis} + + + +%% permet de donner un prefixe aux tableaux produits (\jobname par defaut) +%% effectue quelques verifications : + + +\newcommand{\initablor}[1][\jobname]{% +\renewcommand{\nomtravail}{#1}% Arret du nom des tableaux +\setcounter{TVn}{0}% Initialisation du compteur de tableaux. +\ifthenelse{\boolean{xcas}}% Avec l'option XCas +{\IfFileExists{\nomtravail.Tab.mp}% Si Tableaux.mp est present... + {\immediate\write18{\rem \nomtravail.Tab.mp}}% le detruire + {}% + \immediate\write18{\cp enteteMP.cfg \nomtravail.Tab.mp}% Reconstituer l'entête de Tableaux.mp +} +{\IfFileExists{\nomtravail.Tab.mp}% Sans l'option XCas, si + % Tableaux.mp existe +{\immediate\write18{mpost -interaction=batchmode \nomtravail.Tab}}% l'executer pour reconstituer les figures +{\PackageWarning{tablor}{Pas de source metapost pour creer les tableaux.}}% sinon message d'erreur + % (mais pas d'arret car les tableaux + % peuvent être presents ) +}}% + + + +%% commande pour lancer giac selon l'OS + +\makeatletter +\newcommand{\executGiacmp}[1]{% +\ifthenelse{\boolean{windows}}% +{\immediate\write18{giac #1 }}% +{\immediate\write18{giac <#1 }}} +\makeatother + + + + +%%% +% +%%% LES SCRIPTS GIAC/XCAS +% +%%% + + + + + + +%% +%% Code giac/Xcas pour les Tableaux de Variations +%% + + +\begin{VerbatimOut}{XcasTV.cxx} +TV(L,F,nom,nomv,f,ftt,trigo,nmr):={ +nl:=size(L); +f:=unapply(f,x); +fp:=function_diff(f); +Z:=concat(L,F); +S:=[]; + + +if(trigo==t){ +all_trig_solutions:=1; +reset_solve_counter(-1,-1); +SS:=solve(factor(simplify(fp(x))),x); +ns:=size(SS); +for(k:=0;k=L[0]){ +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; +} +} +}else{ +S:=solve(fp(x),x); +} + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + qq:=member(simplify(S[j]),Z)==0; + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){if(qq==1){Z:=append(Z,simplify(S[j]))}}; + fpour + fsi; +Z:=sort(Z); +nz:=size(Z); + + + tantque evalf(Z[0])==evalf(Z[1]) faire Z:=Z[1..nz-1];nz:=size(Z); + ftantque; + + + + + + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){Z:=append(Z,simplify(S[j]))}; + fpour + fsi; + +Z:=sort(Z); +nz:=size(Z); + si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; + fsi; +pour u de 1 jusque nz-2 faire + si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; + fsi; +fpour; +nz:=size(Z); +l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; +pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); +";fpour; + + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); + +lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ + if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ + if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ + if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.1))>0; + lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"} + }; } + +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre; +"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; + li:=lvic+nom+"}$ etex);"+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(k0==1){"1"}else{"0"}+ + ");"; + + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; + lp:=lp+if(member(Z[r],F)){ + "limGauche(btex + $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ + etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ + etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); +"}}} + }; } + +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + + + +MetaLfc:=if(ftt==2){if(nz>2){" + +beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; + +";}else{ +intro+"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+" +endTableau; + +"; +} +}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li+ +lf ++" +endTableau; + +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi+lsp+lsf+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+ +li+ +lf ++" +endTableau; + +";} +}} + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + + }:; + +\end{VerbatimOut} + + + +% +% +% TVPC : pour les fonctions prolongeables par continuité. +%% +%% + + + + +\begin{VerbatimOut}{XcasTVPC.cxx} +TVPC(L,F,FP,nom,nomv,f,ftt,trigo,nmr):={ +nl:=size(L); +f:=unapply(f,x); +fp:=function_diff(f); +Z:=concat(L,F); +Z:=concat(Z,FP); +S:=[]; + + +if(trigo==t){ +all_trig_solutions:=1; +reset_solve_counter(-1,-1); +SS:=solve(factor(simplify(fp(x))),x); +ns:=size(SS); +for(k:=0;k=L[0]){ +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; +} +} +}else{ +S:=solve(fp(x),x); +} + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + qq:=member(simplify(S[j]),Z)==0; + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){if(qq==1){Z:=append(Z,simplify(S[j]))}}; + fpour + fsi; +Z:=sort(Z); +nz:=size(Z); + + + tantque evalf(Z[0])==evalf(Z[1]) faire Z:=Z[1..nz-1];nz:=size(Z); + ftantque; + + + + + + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){Z:=append(Z,simplify(S[j]))}; + fpour + fsi; + +Z:=sort(Z); +nz:=size(Z); + si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; + fsi; +pour u de 1 jusque nz-2 faire + si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; + fsi; +fpour; +nz:=size(Z); +l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; +pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); +";fpour; + + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); + +lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],FP)==0){ + if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ + if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ + if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.1))>0; + lsp:=lsp+if(member(Z[r],FP)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"} + }; } + +lsf:=if(member(Z[nz-1],FP)==0){""}else{"nonDefBarre; +"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; + li:=lvic+nom+"}$ etex);"+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(k0==1){"1"}else{"0"}+ + ");"; + + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; + lp:=lp+if(member(Z[r],F)){ + "valPos(btex + $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ + etex,"+if(krm==1){"1);"}else{"0);"} } + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ + etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); +"}}} + }; } + +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}}; + + + + + +MetaLfc:=if(ftt==2){if(nz>2){" + +beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; + +";}else{ +intro+"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+" +endTableau; + +"; +} +}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li+ +lf ++" +endTableau; + +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi+lsp+lsf+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+ +li+ +lf ++" +endTableau; + +";} +}} + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + + }:; + +\end{VerbatimOut} + + + + + + + + + + + + + + + + + +%% +%% +%% TV avec une zone interdite : on rajoute comme argument la liste des intervalles interdits +%% par exemple, pour sqrt(x^2-1) : TVZ([-infinity,100],[],[[-1,1]],"f","x",sqrt(x^2-1),1,1) +%% + +\begin{VerbatimOut}{XcasTVZ.cxx} + + +TVZ(L,F,FF,nom,nomv,f,ftt,trigo,nmr):={ +nl:=size(L); +nf:=size(FF); + Ff:=NULL;IMIN:=NULL;IMAX:=NULL; +for(k:=0;kL[0]){Imin[k]:=FF[k][0];LL:=L}else{Imin[k]:=L[0];LL:=[L[1]]}; +if(FF[k][1]=L[0]){ +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; +} +} +}else{ +S:=solve(fp(x),x); +} + + + + + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + for(k:=0;k=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + kK:=(evalf(S[j])evalf(Imax[k])); + Kk:=(kk) and kK; + if(Kk==1){Z:=append(Z,simplify(S[j]))}; + } + fpour + fsi; + +Z:=sort(Z); +nz:=size(Z); + + + + si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; + fsi; +pour u de 1 jusque nz-2 faire + si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; + fsi; +fpour; +nz:=size(Z); + +for(j:=0;jImin[j])and(Z[k] evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); + +lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ +if(member(Z[0],IMIN)!=0){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ + if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ + if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ + if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}} + + + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; + lsp:=lsp+if(member(Z[r],IMIN)!=0){"debutNonDef;"}else{ + if(member(Z[r],IMAX)!=0){"finNonDef;"+ + if(ksp==1){"plus;"}else{"moins;"}}else{ + if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"} + }}}}; + + + +lsf:=if(member(Z[0],IMAX)!=0){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nonDefBarre; +"}} + + +lm0:=limit(f(x),x=Z[0],1)==-infinity; + li:=lvic +nom+"}$ etex);"+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(k0==1){"1"}else{"0"}+ + ");"; + +if(nz>2){ + for(r:=1; r<=nz-2;r++){ + krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; + + lp:=lp+if(member(Z[r],IMIN)!=0){"limGauche(btex $"+if(lmrm==1){ + "-\\infty"}else{ + latex(simplify(limit(f(x),x=Z[r],-1)))} + +"$ etex,"+if(krm==1){ + "1);"}else{"0);"} + +"debutNonDef;" + }//fsi Zr=Imin + else{ + if (member(Z[r],IMAX)!=0) {"finNonDef;limDroite(btex $"+if(lmrp==1){ + "-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))} + +"$ etex,"+if(krp==1){ + "1);"}else{"0);"} + } + else { + if(member(Z[r],F)){ + "limGauche(btex $"+if(lmrm==1){ + "-\\infty"}else{ + latex(simplify(limit(f(x),x=Z[r],-1)))} + +"$ etex,"+if(krm==1){ + "1);"}else{"0);"} + +"nonDefBarre;limDroite(btex $"+if(lmrp==1){ + "-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))} + +"$ etex,"+if(krp==1){ + "1);"}else{"0);"} + }//fsi (member Zr F) + else{"valPos(btex$"+latex(simplify(f(Z[r])))+"$etex,"+ + if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){ + "0.5);"}else{ + if(krp==1){ + "1);"}else{"0);"}//felse(krp) + }//felse(valpos) + }//felse(member Zr F) + } //felse(Zr=Imax) + }//felse(Zr=Imin) + };//ffor + }//fsi nz + +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + + + +MetaLfc:=if(ftt==2){if(nz>2){" + +beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; + +";}else{ +intro+"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+" +endTableau; + +"; +} +}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li+ +lf ++" +endTableau; + +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi+lsp+lsf+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+ +li+ +lf ++" +endTableau; + +";} +}} + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + } +:; + + +\end{VerbatimOut} + + +%% +%% +%% Quand les solutions formelles de f'(x)=0 ne sont pas calculables +%% + + + +\begin{VerbatimOut}{XcasTVapp.cxx} + + + + + + + +TVapp(L,F,nom,nomv,f,ftt,nmr):={ + + +nl:=size(L); +f:=unapply(f,x); +fp:=function_diff(f); +z0:=concat(L,F);z:=sort(z0); +nz:=size(z); + + + + + + +S:=NULL; +if(L==[-infinity,+infinity]){j:=[seq(-100+k,k=0..200)]minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for} +else{if(L[0]==-infinity){j:=[seq(k,k=100..floor(L[1]))] minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for} +else{if(L[1]==+infinity){j:=[seq(k,k=floor(L[0])..100)] minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for;} +else{ j:=[seq(k,k=floor(z[0])..floor(z[nz-1]))] minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for; }}}; + + + + + +si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]); + if(kk==1){if(kok==1){z:=append(z,simplify(S[j]))}}; + fpour; +fsi; + + +S:=NULL; +S:=S,z[0]; +for(j:=1;j1e-15 or z[j]==0)){ + S:=S,z[j]}; +} +z:=[S]; + +Z:=sort(z); +nz:=size(Z); + +S:=NULL; +S:=S,Z[0]; +for(j:=1;j evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); + +lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ + if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ + if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ + if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; + lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"} + }; } + +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre; +"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; + li:=lvic+nom+"}$ etex);"+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(k0==1){"1"}else{"0"}+ + ");"; + + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; + lp:=lp+if(member(Z[r],F)){ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ + etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); +"}}} + }; } + +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + +MetaLfc:=if(ftt==2){if(nz>2){" + +beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; + +";}else{ +intro+"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+" +endTableau; + +"; +} +}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li+ +lf ++" +endTableau; + +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi+lsp+lsf+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+ +li+ +lf ++" +endTableau; + +";} +}} + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + + }:; + + + + + + + +\end{VerbatimOut} + + + + + + + +%% +%% Code giac/Xcas pour les Tableaux de Variations avec +%% Valeurs intermediaires +%% + + + + + +\begin{VerbatimOut}{XcasTVI.cxx} + + +TVI(L,F,nom,nomv,f,ftt,ao,trigo,nmr):={ +nl:=size(L); +f:=unapply(f,x); +fp:=function_diff(f); +Z:=concat(L,F); +S:=[]; + + +if(trigo==t){ +all_trig_solutions:=1; +reset_solve_counter(-1,-1); +SS:=solve(factor(simplify(fp(x))),x); +ns:=size(SS); +for(k:=0;k=L[0]){ +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; +} +} +}else{ +S:=solve(fp(x),x); +} + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){Z:=append(Z,simplify(S[j]))}; + fpour + fsi; + +Z:=sort(Z); +nz:=size(Z); + si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; + fsi; +pour u de 1 jusque nz-2 faire + si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; + fsi; +fpour; +nz:=size(Z); +l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; + + + +LI:=limit(f(x),x,Z[0],1); +LF:=limit(f(x),x,Z[nz-1],-1); +LP:=NULL; +if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limit(f(x),x,Z[r],-1),limit(f(x),x,Z[r],1)}else{f(Z[r])}}}; +if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]}; + +NL:=size(LL); +A:=NULL;aa:=1;kk:=0; + +if(NL==nz){for(k:=0;knz){for(k:=0;k evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); + +lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ + if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ + if(sign(fp((Z[0]+10^(-10))))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ + if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"} }}+if(TestS==0){"valBarre(btex$ $ etex);"+ if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}else{" "}; + + + + + +if(nz>2){rr:=1; if(nz==NL){for(r:=1; r<=NL-2;r++){ TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + ksp:=evalf(fp(Z[r]+0.01))>0; + TestL:=(abs(LL[r])==abs(LL[r+1])); + lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex $ $ etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "}; + }} +else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + TestL:=(abs(LL[r])==abs(LL[r+1])); + if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex $ $ etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} + } else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} +}} + }; + + + +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre;"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; + +TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); + + li:=lvic+nom+"}$ etex); +"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "}; + + + if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; + lp:=lp+if(member(Z[r],F)) { + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ + etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex + $ "+ao+" $ etex,0.5);" + }else{" "}; +};//for +}else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + krm:=evalf(limit(f(x),x=Z[rr-1],1))< evalf(limit(f(x),x=Z[rr],-1)); + krp:=evalf(limit(f(x),x=Z[rr],1))> evalf(limit(f(x),x=Z[rr+1],-1)) ; + lmrm:=limit(f(x),x=Z[rr],-1)==-infinity;lmrp:=limit(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); +if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) { + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ + etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex + $ "+ao+" $ etex,0.5); + ";rr:=rr+1; +}// else testL==1 +}//testS==0 +else{lp:=lp+if(member(Z[rr],F)){ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ + etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); + "}}};rr:=rr+1; +}//else testS==0 +}//for nz2 + + +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + + +MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; + +";}else{ +"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+" +endTableau; + +"; +} +}else{ +if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li+ +lf ++" +endTableau; +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi+lsp+lsf+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+ +li+ +lf ++" +endTableau; + +";} +}}; + + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + + }:; + + + +\end{VerbatimOut} + + + + + + + +%% +%% +%% Quand les solutions de f'(x)=0 ne sont pas formellement calculables +%% + + + + +\begin{VerbatimOut}{XcasTVIapp.cxx} + + +TVIapp(L,F,nom,nomv,f,ftt,ao,nmr):={ + + +nl:=size(L); +f:=unapply(f,x); +fp:=function_diff(f); +z0:=concat(L,F);z:=sort(z0); +nz:=size(z); + + + + + +S:=NULL; +if(L==[-infinity,+infinity]){j:=[seq(-100+k,k=0..200)]minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for} +else{if(L[0]==-infinity){j:=[seq(k,k=100..floor(L[1]))] minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for} +else{if(L[1]==+infinity){j:=[seq(k,k=floor(L[0])..100)] minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for;} +else{ j:=[seq(k,k=floor(z[0])..floor(z[nz-1]))] minus F;for k in j do S:=S,fsolve(fp(x),x,k/10,newton_solver);end_for; }}}; + + + + + + + + +si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]); + if(kk==1){if(kok==1){z:=append(z,simplify(S[j]))}}; + fpour; +fsi; + + +S:=NULL; +S:=S,z[0]; +for(j:=1;j1e-15 or z[j]==0)){ + S:=S,z[j]}; +} +z:=[S]; + + + +Z:=sort(z); +nz:=size(Z); + +S:=NULL; +S:=S,Z[0]; +for(j:=1;j2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limit(f(x),x,Z[r],-1),limit(f(x),x,Z[r],1)}else{f(Z[r])}}}; +if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]}; + +NL:=size(LL); +A:=NULL;aa:=1;kk:=0; + +if(NL==nz){for(k:=0;knz){for(k:=0;k evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); + +lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ + if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ + if(sign(fp((Z[0]+10^(-10))))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ + if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"} }}+if(TestS==0){"valBarre(btex$ $ etex);"+ if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}else{" "}; + + + + + +if(nz>2){rr:=1; if(nz==NL){for(r:=1; r<=NL-2;r++){ TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + ksp:=evalf(fp(Z[r]+0.01))>0; + TestL:=(abs(LL[r])==abs(LL[r+1])); + lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex $ $ etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "}; + }} +else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + TestL:=(abs(LL[r])==abs(LL[r+1])); + if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex $ $ etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} + } else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;} +}} + }; + + + +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre;"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; + +TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); + + li:=lvic+nom+"}$ etex); +"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "}; + + + if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; + lp:=lp+if(member(Z[r],F)) { + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ + etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex + $ "+ao+" $ etex,0.5);" + }else{" "}; +};//for +}else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); + krm:=evalf(limit(f(x),x=Z[rr-1],1))< evalf(limit(f(x),x=Z[rr],-1)); + krp:=evalf(limit(f(x),x=Z[rr],1))> evalf(limit(f(x),x=Z[rr+1],-1)) ; + lmrm:=limit(f(x),x=Z[rr],-1)==-infinity;lmrp:=limit(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); +if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) { + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ + etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex + $ "+ao+" $ etex,0.5); + ";rr:=rr+1; +}// else testL==1 +}//testS==0 +else{lp:=lp+if(member(Z[rr],F)){ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ + etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); + "}}};rr:=rr+1; +}//else testS==0 +}//for nz2 + + +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + + + + + +MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; + +";}else{ +"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+" +endTableau; + +"; +} +}else{ +if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li+ +lf ++" +endTableau; +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi+lsp+lsf+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+ +li+ +lf ++" +endTableau; + +";} +}}; + + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + + }:; + + + +\end{VerbatimOut} + + + + + + + + +%% +%% Code giac/Xcas pour les Tableaux de variations de courbes parametrees +%% + + + + + + + +\begin{VerbatimOut}{XcasTVP.cxx} +TVP(L,F,nom,nomv,ff,ftt,trigo,nmr):={ +//local Z,LLL,FFF,nl,fp,f,S,d,t,ns,k,m,x,j,kk,nz,u,l0; +nl:=size(L); +fp:=[]; +S:=[]; +f:=ff; +Z:=[]; +LLL:=[]; + + +all_trig_solutions:=1; +reset_solve_counter(-1,-1); + +for(d:=0;d<=1;d++){ +f:=subst(f,f[d]=unapply(f[d],t)); +fp:=append(fp,function_diff(f[d])); +LLL:=concat(L,F[d]); +Z:=LLL union Z; +SS:=solve(factor(simplify(fp[d](t))),t); +ns:=size(SS); + +for(k:=0;k=L[0]){ + +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; + +} +}else{ +S:=concat(S,SS); +} +} + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + qq:=member(simplify(S[j]),Z)==0; + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){if(qq==1){Z:=append(Z,simplify(S[j]))}}; + fpour + fsi; +Z:=sort(Z); +nz:=size(Z); + + + tantque evalf(Z[0])==evalf(Z[1]) faire Z:=Z[1..nz-1];nz:=size(Z); + ftantque; + + + + +nz:=size(Z); +u:=1; + tantque (u2) faire + tantque evalf(Z[u])==evalf(Z[u+1]) faire + Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=size(Z); + ftantque; + u:=u+1; + ftantque; + + + }; + +Z:=sort(Z); +nz:=size(Z); + + + + l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:="",""; lf:="","";lsp:="",""; +pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); +";fpour; + + lsi:="",""; + +FFF:=[[],[]]; + +for(d:=0;d<=1;d++){ +FFF[d]:=concat(F[d],[-infinity,+infinity]); + k0:= evalf(limit(f[d](x),x=Z[0],1))> evalf(limit(f[d](x),x=Z[1],-1)); + kz:=evalf(limit(f[d](x),x=Z[nz-1],-1))> evalf(limit(f[d](x),x=Z[nz-2],1)); +//} +//$ + lsi[d]:=lsic+nom[d]+"'("+nomv+")}$ etex);"+if(member(Z[0],FFF[d])==0){"valBarre(btex $"+latex(simplify(fp[d](Z[0])))+"$ etex);"}else{if(Z[0]==-infinity){" "}else{"nonDefBarre; +"}}+ + if(Z[0]==-infinity){if(sign(evalf(fp[d](if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F[d])==0){ + if(sign(fp[d](Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{ + if(sign(fp[d]((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp[d](Z[r]+0.01))>0; + lsp[d]:=lsp[d]+if(member(Z[r],F[d])==0){"valBarre(btex $"+latex(simplify(fp[d](Z[r])))+"$ etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"} + }; } + +lsf[d]:=if(member(Z[nz-1],FFF[d])==0){"valBarre(btex $"+latex(simplify(fp[d](Z[nz-1])))+"$ etex);"}else{if(Z[nz-1]==+infinity){" "}else{"nonDefBarre;"}} + + + + + } + + + + + + + + + + + + lm0:=1,2; li:=1,2; krm:=1,2; krp:=1,2; lmrm:=1,2; lmrp:=1,2; lp:="",""; lnz:=1,2; lf:=1,2; Kz:=1,2;K0:=1,2; + + +for(d:=0;d<=1;d++){ + K0[d]:= evalf(limit(f[d](x),x=Z[0],1))> evalf(limit(f[d](x),x=Z[1],-1)); + Kz[d]:=evalf(limit(f[d](x),x,Z[nz-1],-1))> evalf(limit(f[d](x),x,Z[nz-2],1)); +//{ +//$ +lm0[d]:=limit(f[d](x),x,Z[0],1)==-infinity; + li[d]:=lvic+nom[d]+"}$ etex);"+ + if(member(Z[0],F[d])==0){"valPos(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[0],1)))}+"$ etex,"}+ + if(K0[d]==1){"1"}else{"0"}+ + ");"; + + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm[d]:=evalf(limit(f[d](x),x=Z[r-1],1))< evalf(limit(f[d](x),x=Z[r],-1)); + krp[d]:=evalf(limit(f[d](x),x=Z[r],1))> evalf(limit(f[d](x),x,Z[r+1],-1)) ; + lmrm[d]:=limit(f[d](x),x,Z[r],-1)==-infinity;lmrp[d]:=limit(f[d](x),x,Z[r],1)==-infinity; + lp[d]:=lp[d]+if(member(Z[r],F[d])){ + "limGauche(btex + $"+if(lmrm[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[r],-1)))}+"$ + etex,"+if(krm[d]==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[r],1)))}+"$ etex,"+if(krp[d]==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f[d](Z[r])))+"$ + etex,"+if(sign(evalf(fp[d](Z[r]-0.001)))==sign(evalf((fp[d](Z[r]+0.001))) )){"0.5);"}else{if(krp[d]==1){"1);"}else{"0); +"}}} + }; } + +lnz[d]:=limit(f[d](x),x=Z[nz-1],-1)==-infinity; + + +lf[d]:=if(member(Z[nz-1],F[d])==0){"valPos(btex $"+ + if(lnz[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(Kz[d]==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(Kz[d]==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + + + + +} + + + + + + + + +MetaLfc:=if(ftt==2){if(nz>2){" + +beginTableau("+nmr+")"+ + l0+lsi[0]+lsp[0]+lsf[0]+lsi[1]+lsp[1]+lsf[1]+" +endTableau; + +";}else{ +intro+"beginTableau("+nmr+")"+ + l0+ +lsi[0]+lsf[0]+lsi[1]+lsf[1]+" +endTableau; + +"; +} +}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li[0]+ +lp[0]+ +lf[0]+ +li[1]+ +lp[1]+ +lf[1] ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li[0]+ +lf[0]+ +li[1]+ +lf[1] ++" +endTableau; + +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi[0]+lsp[0]+lsf[0]+ +li[0]+ +lp[0]+ +lf[0]+ +lsi[1]+lsp[1]+lsf[1]+ +li[1]+ +lp[1]+ +lf[1] ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi[0]+lsf[0]+ +li[0]+ +lf[0]+ +lsi[1]+lsf[1]+ +li[1]+ +lf[1] ++" +endTableau; + +";} +} +} + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + +}:; +\end{VerbatimOut} + + + + +%% +%% Code giac/Xcas pour les Tableaux de signes de produits +%% + + + + +\begin{VerbatimOut}{XcasTabSignL.cxx} + + +TS(nomf,L,D,trigo,nmr):={ +L:=apply(f->unapply(f,x),L) +n:=size(L); +Z:=NULL; +nl:=size(L); +S:=[]; +mini:=D[0]; maxi:=D[1]; + +pour k de 0 jusque n-1 faire + + + + +if(trigo==t){ +all_trig_solutions:=1; +reset_solve_counter(-1,-1); +SS:=solve(factor(simplify(L[k](x))),x); +ns:=size(SS); +for(j:=0;j=evalf(mini)){ +S:=concat(S,simplify(subst(SS[j],n_1=m)));m:=m-1; +} +} + +}else{ +S:=solve(L[k](x),x); +} + + + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + if(S[j]>mini and S[j]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+lsic+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;"}; + + +MetaLfc:=" beginTableau("+nmr+") +newLigneVariables(btex $ {x}$ etex); + "+l0+li+ lsic+nomf+"(x)}$ etex);"+ + if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" + "}+ lf+ + if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" + "}+" +endTableau; +" +; + +}else{ + +l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" ";lr:=" "; +pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); +";fpour; +l0:=l0+"val(btex $"+latex(D[1])+"$ etex);"; + + +for(p:=0;p<=n-1;p++){lp:=""; + li:=li+lsic+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(simplify(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(simplify(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ + if(L[p](Z[nz-1]+1.0)>0){"plus;"}else{"moins; + "}+if(maxi!=+infinity and L[p](maxi)==0){" + valBarre(btex 0 etex);"}else{" + "} + }; + + +pour t de 0 jusque nz-2 faire + lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);" + fpour + +MetaLfc:=" beginTableau("+nmr+") +newLigneVariables(btex $ {x}$ etex); + "+l0+ + li + + lsic+nomf+"(x)}$ etex);"+ + if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" + "}+ + if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"+ + lr+ + if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ + if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" + "}+" +endTableau; + + "; +} +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + }:; + +\end{VerbatimOut} + + + + +%% +%% Code giac/Xcas pour les Tableaux de signes de quotients +%% + + + +\begin{VerbatimOut}{XcasTabSignQ.cxx} +TSq(nomf,L,Fo,D,trigo,nmr):={ +L:=apply(f->unapply(f,x),L); +Fo:=apply(f->unapply(f,x),Fo); +L:=concat(L,Fo); +n:=size(L); +Z:=NULL; +m:=size(Fo); +F:=NULL;FF:=NULL; +mini:=D[0]; maxi:=D[1]; +S:=[]; +SF:=[]; + +pour k de 0 jusque n-1 faire + + + +if(trigo==t){ +all_trig_solutions:=1; +reset_solve_counter(-1,-1); +SS:=solve(factor(simplify(L[k](x))),x); +ns:=size(SS); +for(j:=0;j=evalf(mini)){ +S:=concat(S,simplify(subst(SS[j],n_1=mm)));mm:=mm-1; +} +} + +}else{ +S:=solve(L[k](x),x); +} + + + + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + if(S[j]>mini and S[j]=evalf(mini)){ +SF:=concat(SF,simplify(subst(SSF[j],n_1=mm)));mm:=mm-1; +} +} + +}else{ +SF:=solve(Fo[j](x),x); +} + + si size(SF)>0 alors pour j de 0 jusque size(SF)-1 faire + FF:=FF,simplify(SF[j]); + if(SF[j]>mini and SF[j]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 zeros en double + fsi; +fpour;} + + +Z:=sort(Z); +nz:=size(Z); +if(nz>2){pour u de 1 jusque nz-2 faire + si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1; + fsi; +fpour;}; +nz:=size(Z); + +if(nz==0){li:="";l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; + for(p:=0;p<=n-1;p++){li:=li+lsic+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;"}; + + + + +MetaLfc:=" +beginTableau("+nmr+") +newLigneVariables(btex $ {x}$ etex); + "+l0+li+ + lsic+nomf+"(x)}$ etex);"+ + if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" + "}}else{"nonDefBarre;"}+ lf+ + if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" + "}}else{"nonDefBarre;"}+" +endTableau; + +" +; + + + + +}else{ + + +l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" ";lr:=" "; +pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); +";fpour; +l0:=l0+"val(btex $"+latex(D[1])+"$ etex);"; + + +for(p:=0;p<=n-1;p++){lp:=""; + li:=li+lsic+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(simplify(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(simplify(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+ + if(L[p](Z[nz-1]+1.0)>0){"plus;"}else{"moins; + "}+if(maxi!=+infinity and L[p](maxi)==0){" + valBarre(btex 0 etex);"}else{" "} + + }; + + +pour t de 0 jusque nz-2 faire + lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+ + if(member(Z[t+1],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"} + fpour + + + + +MetaLfc:=" +beginTableau("+nmr+") +newLigneVariables(btex $ {x}$ etex); + "+l0+ + li + + + lsic+nomf+"(x)}$ etex);"+ + if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" + "}}else{"nonDefBarre;"}+ + if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ + if(member(Z[0],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"}+ + lr+ + if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+ + if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){" + valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+" +endTableau; + +" + + +} + + + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + + + + + }:; + +\end{VerbatimOut} + + + + +%% Code giac/Xcas pour les Tableaux de signes du produit +%% de 2 facteurs affines +%% + + + + +\begin{VerbatimOut}{XcasTabSigna.cxx} +TSa(a,b,c,d,nmr):={ +zA:=solve(a*x+b=0,x)[0]; +zB:=solve(c*x+d=0,x)[0]; +zmin:=min(zA,zB); +zmax:=max(zA,zB); + Meta:= " + beginTableau("+nmr+") + newLigneVariables(btex $ {x}$ etex); + val(btex $-\\infty$ etex);val(btex $"+latex(zmin)+"$ etex); +val(btex $"+latex(zmax)+"$etex); +val(btex $+\\infty$ etex); + "+lsic+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+"}$ etex);" + + if(a>0){"moins;"}else{"plus;"}+ + if(zmin==zA){"valBarre(btex 0 etex);"}else{"barre;"}+ + if(zmin==zA){si a>0 alors "plus;"; sinon "moins;";fsi} + else{si a>0 alors "moins;"; sinon "plus;"; fsi}+ + if(zmin==zA){"barre;"}else{"valBarre(btex 0 etex);"}+ + if(a>0){"plus;"}else{"moins;"} + +lsic+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+"}$ etex);" + + if(c>0){"moins"}else{"plus"}+";"+ + if(zmin==zB){"valBarre(btex 0 etex);"}else{"barre;"}+ + if(zmin==zB){si c>0 alors "plus;"; sinon "moins;";fsi} + else{si c>0 alors "moins;"; sinon "plus;"; fsi}+ + if(zmin==zB){"barre;"}else{"valBarre(btex 0 etex);"}+ + if(c>0){"plus;"}else{"moins;"} + + +lsic+"{("+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+")("+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+")}}$ etex);" + + si a*c>0 alors plus; sinon moins;fsi+";"+ + "valBarre(btex 0 etex);"+ + si a*c>0 alors moins; sinon plus;fsi+";"+ + "valBarre(btex 0 etex);"+ + si a*c>0 alors plus; sinon moins;fsi+";"+" +endTableau; +" +; + + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,Meta); +fclose(sortie); + + + }:; +\end{VerbatimOut} + + + + + + +%%$ +%% Code giac/Xcas pour les Tableaux de Signes d'expression ne contenant +%% qu'un seul terme + + + + +\begin{VerbatimOut}{XcasTSc.cxx} +TSc(g,D,F,trigo,nmr):={ +f:=unapply(g,x); +mini:=D[0]; maxi:=D[1];lm:=" "; +Z:=mini,maxi; +S:=[]; + + + +if(trigo==t){ +all_trig_solutions:=1; +reset_solve_counter(-1,-1); +SS:=solve(factor(simplify(f(x))),x); +ns:=size(SS); +for(j:=0;j=evalf(mini)){ +S:=concat(S,simplify(subst(SS[j],n_1=m)));m:=m-1; +} +} + +}else{ +S:=solve(f(x),x); +} + + + + + +if(size(S)==0){ +l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; +li:=if(member(mini,F)!=0){"nonDefBarre;"}else{if(mini!=-infinity and f(mini)==0){" + valBarre(btex 0 etex);"}else{" + "}}+ +if(mini!=-infinity or maxi!=+infinity){if(f((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}}else{if(f(0)>0){"plus;"}else{"moins;"}}; +lf:=if(member(maxi,F)!=0){"nonDefBarre;"}else{if(maxi!=+infinity and f(maxi)==0){" + valBarre(btex 0 etex);"}else{" + "}}; +} +else{pour j de 0 jusque size(S)-1 faire + if(S[j]>mini and S[j]2){pour u de 1 jusque nz-2 faire + si Z[u]==Z[u+1] alors Z:=concat(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; + fsi; +fpour;} + +if(Z[0]==Z[1]){Z:=Z[1..nz-1];nz:=nz-1;} +if(Z[nz-2]==Z[nz-1]){Z:=Z[0..nz-2];nz:=nz-1;} + +nz:=size(Z); +l0:=" ";li:=" ";lr:=" "; +if(nz==2){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(member(mini,F)==0){" + "}else{"nonDefBarre;"}}+ +if(f((mini+maxi)*0.5)>0){"plus;"}else{"moins;"}; +lf:=if(maxi!=+infinity and f(maxi)==0){" + valBarre(btex 0 etex);"}else{if(member(maxi,F)==0){" + "}else{"nonDefBarre;"} + }; + +}else{ +l0:="val(btex $"+latex(Z[0])+"$ etex);";li:=" "; +pour m de 1 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); +"; +fpour; + + +li:= if(mini!=-infinity and f(mini)==0){" + valBarre(btex 0 etex);"}else{if(member(mini,F)==0){" + "}else{"nonDefBarre;"} + } + +lm:=if(nz>2){for(r:=0; r0){"plus;"}else{"moins;"}+ + if(member(Z[r+1],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"} + }}else{" "}; + +lf:=if(f(Z[nz-2]+0.1)>0){"plus;"}else{"moins;"}+if(maxi!=+infinity and f(maxi)==0){"valBarre(btex 0 etex);"}else{if(member(maxi,F)==0){" + "}else{"nonDefBarre;"} + }; +}}; + + + + +MetaLfc:=" + +beginTableau("+nmr+") +newLigneVariables(btex $\\displaystyle {x}$ etex); + "+l0+lsic+latex(f(x))+"}$ etex);"+ + li+lm+lf + +" +endTableau; + +" +; + + + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + }:; +\end{VerbatimOut} + + + + + + + +%%$ + + + + + + + + +%%$ +%% +%% traitement des fichiers produits par giac/xcas +%% +%% + +% pour l'échelle des tableaux taper \ech{facteur de réduction} + +\newcommand\echelle{1} +\newcommand\ech[1]{\renewcommand\echelle{#1}} + + +\newcommand{\dresse}[1]{% + + + +\ifxetex + + + +\ifthenelse{\boolean{xcas}}{% Avec l'option "XCas present" + \executGiacmp{XCas#1.giac}% reconstituer le tableau + % exporter le source mp + % puis lancer metapost pour creer + % l'image du tableau + \immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab.mp} + \immediate\write18{\cat enteteMP.cfg >> \nomtravail.Tab#1.mp} + \immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab#1.mp} + \immediate\write18{\cat queue.mp >> \nomtravail.Tab#1.mp} + \immediate\write18{./convert-mp-pdf.sh \nomtravail.Tab#1 \theTVn} + \immediate\write18{\cp \nomtravail.Tab#1.pdf \nomtravail_Tab\theTVn.pdf} + \immediate\write18{\rem \nomtravail.Tab#1.mp} + }% + {% sinon, si le tableau est absent, alerte. + \IfFileExists{\nomtravail.Tab.\theTVn}{}{% + \PackageError{tablor}{Tableau absent non + reconstituable.}{Pour compiler il faut, soit les fichiers de + tableaux, soit le fichier \nomtravail.Tab.mp, soit disposer de + XCas.}}} + +\begin{center} + \includegraphics[scale=\echelle]{\nomtravail_Tab\theTVn.pdf} +\end{center} +\stepcounter{TVn} + + + +\else + +\ifthenelse{\boolean{xcas}}{% Avec l'option "XCas present" + \executGiacmp{XCas#1.giac}% reconstituer le tableau + % exporter le source mp + % puis lancer metapost pour creer + % l'image du tableau + \immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab.mp} + \immediate\write18{\cat enteteMP.cfg >> \nomtravail.Tab#1.mp} + \immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab#1.mp} + \immediate\write18{\cat queue.mp >> \nomtravail.Tab#1.mp} + \immediate\write18{mpost -jobname=\nomtravail.Tab \nomtravail.Tab#1.mp} + \immediate\write18{\rem \nomtravail.Tab#1.mp} + }% + {% sinon, si le tableau est absent, alerte. + \IfFileExists{\nomtravail.Tab.\theTVn}{}{% + \PackageError{tablor}{Tableau absent non + reconstituable.}{Pour compiler il faut, soit les fichiers de + tableaux, soit le fichier \nomtravail.Tab.mp, soit disposer de + XCas.}}} + +\begin{center} + \includegraphics[scale=\echelle]{\nomtravail.Tab.\theTVn} +\end{center} +\stepcounter{TVn} + +\fi + +} + + +%% +%% traitement des fichiers produits par giac/xcas avec possibilite +%% de modifier le fichier metapost (environnement etoile)) +%% + + + +\newcommand{\dressetoile}[1]{% + + + +\ifxetex + +\IfFileExists{\nomtravail.Tab.\theTVn}{% Test sur l'existence du tableau +% Si oui, inclusion du fichier source de sauvegarde mp dans Tableaux +\immediate\write18{\cat TSav-\theTVn.mp >> \nomtravail.Tab.mp}} +% Si non, lancement des operations de fabrication +{\executGiacmp{XCas#1.giac}% +\immediate\write18{\editeur XCasmpfc.mp } + + % Modification avec l'editeur choisi +\immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab.mp} +\immediate\write18{\cp XCasmpfc.mp TSav-\theTVn.mp} % Sauvegarde du + % source mp sur le disque pour une + % inclusion ulterieure dans Tableaux.mp. +\immediate\write18{\cat enteteMP.cfg >> \nomtravail.Tab#1.mp} +\immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab#1.mp}} % Inclusion du + % source dans le + % fichier + % Tableaux +\immediate\write18{\cat queue.mp >> \nomtravail.Tab#1.mp} + \immediate\write18{./convert-mp-pdf.sh \nomtravail.Tab#1 \theTVn} + \immediate\write18{\cp \nomtravail.Tab#1.pdf \nomtravail_Tab\theTVn.pdf}% Reconstitution des tableaux + % et creation du dernier. L'option + % pallie l'absence de end en fin de + % fichier +\immediate\write18{\rem \nomtravail.Tab#1.mp} + +\begin{center} + \includegraphics[scale=\echelle]{\nomtravail_Tab\theTVn.pdf} +\end{center} +\ech{1} +\setcounter{TVn}{\theTVnbis} % Restauration du compteur TVn + + +\else + + +\IfFileExists{\nomtravail.Tab.\theTVn}{% Test sur l'existence du tableau +% Si oui, inclusion du fichier source de sauvegarde mp dans Tableaux +\immediate\write18{\cat TSav-\theTVn.mp >> \nomtravail.Tab.mp}} +% Si non, lancement des operations de fabrication +{\executGiacmp{XCas#1.giac}% +\immediate\write18{\editeur XCasmpfc.mp } + + % Modification avec l'editeur choisi +\immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab.mp} +\immediate\write18{\cp XCasmpfc.mp TSav-\theTVn.mp} % Sauvegarde du + % source mp sur le disque pour une + % inclusion ulterieure dans Tableaux.mp. +\immediate\write18{\cat enteteMP.cfg >> \nomtravail.Tab#1.mp} +\immediate\write18{\cat XCasmpfc.mp >> \nomtravail.Tab#1.mp}} % Inclusion du + % source dans le + % fichier + % Tableaux +\immediate\write18{\cat queue.mp >> \nomtravail.Tab#1.mp} +\immediate\write18{mpost -jobname=\nomtravail.Tab \nomtravail.Tab#1.mp}% Reconstitution des tableaux + % et creation du dernier. L'option + % pallie l'absence de end en fin de + % fichier +\immediate\write18{\rem \nomtravail.Tab#1.mp} + +\begin{center} + \includegraphics[scale=\echelle]{\nomtravail.Tab.\theTVn} +\end{center} +\ech{1} +\setcounter{TVn}{\theTVnbis} % Restauration du compteur TVn + +\fi + +} + + + + + + + +%% +%% +%%% +%%% +%%% les "giac" qui permettent d'executer la commande rentree dans le fichier tex +%%% suivis des environnements qui permettront la saisie du code giac/xcas +%%% Les versions etoilees permettent de modifier le code metapost produit initialement +%%% + + + + +\begin{VerbatimOut}{XCasa.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTabSigna.cxx"); +read("XCasa.user"); +\end{VerbatimOut} + +\newenvironment{TSa} +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasa.user}} +{\end{VerbatimOut} + \dresse{a} +} + + + + + + + + + +\begin{VerbatimOut}{XCasQ.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTabSignQ.cxx"); +read("XCasQ.user"); +\end{VerbatimOut} + +\newenvironment{TSq}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasQ.user}} +{\end{VerbatimOut}\dresse{Q}} + + + +\newenvironment{TSq*}[1]% +{\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasQ.user}} +{\end{VerbatimOut}\dressetoile{Q}} + + +\begin{VerbatimOut}{XCasL.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTabSignL.cxx"); +read("XCasL.user"); +\end{VerbatimOut} + +\newenvironment{TS}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasL.user}} +{\end{VerbatimOut}\dresse{L}} + + +\newenvironment{TS*}[1] +{\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasL.user}} +{\end{VerbatimOut}\dressetoile{L}} + + +\begin{VerbatimOut}{XCasTSc.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTSc.cxx"); +read("XCasTSc.user"); +\end{VerbatimOut} + + + + +\newenvironment{TSc*}[1]% +{\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTSc.user}} +{\end{VerbatimOut}\dressetoile{TSc}} + + +\newenvironment{TSc}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTSc.user}} +{\end{VerbatimOut}\dresse{TSc}} + + +\begin{VerbatimOut}{XCasTV.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTV.cxx"); +read("XCasTV.user"); +\end{VerbatimOut} + +\newenvironment{TV}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTV.user}}% +{\end{VerbatimOut} +\dresse{TV}} + +\newenvironment{TV*}[1]{% +\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTV.user}}% +{\end{VerbatimOut}\dressetoile{TV}} + + + + + + + +\begin{VerbatimOut}{XCasTVP.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTVP.cxx"); +read("XCasTVP.user"); +\end{VerbatimOut} + +\newenvironment{TVP}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVP.user}}% +{\end{VerbatimOut} +\dresse{TVP}} + +\newenvironment{TVP*}[1]{% +\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVP.user}}% +{\end{VerbatimOut}\dressetoile{TVP}} + + + + + + + + + + +\begin{VerbatimOut}{XCasTVZ.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTVZ.cxx"); +read("XCasTVZ.user"); +\end{VerbatimOut} + +\newenvironment{TVZ}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVZ.user}}% +{\end{VerbatimOut} +\dresse{TVZ}} + +\newenvironment{TVZ*}[1]{% +\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVZ.user}}% +{\end{VerbatimOut}\dressetoile{TVZ}} + + + + + + + + + + +\begin{VerbatimOut}{XCasTVapp.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTVapp.cxx"); +read("XCasTVapp.user"); +\end{VerbatimOut} + +\newenvironment{TVapp}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVapp.user}}% +{\end{VerbatimOut} +\dresse{TVapp}} + +\newenvironment{TVapp*}[1]{% +\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVapp.user}}% +{\end{VerbatimOut}\dressetoile{TVapp}} + + + + + + + + + + + +\begin{VerbatimOut}{XCasTVI.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTVI.cxx"); +read("XCasTVI.user"); +\end{VerbatimOut} + +\newenvironment{TVI}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVI.user}}% +{\end{VerbatimOut}\dresse{TVI}} + + +\newenvironment{TVI*}[1]% +{\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVI.user}}% +{\end{VerbatimOut}\dressetoile{TVI}} + + + + + + +\begin{VerbatimOut}{XCasTVIapp.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTVIapp.cxx"); +read("XCasTVIapp.user"); +\end{VerbatimOut} + +\newenvironment{TVIapp}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVIapp.user}}% +{\end{VerbatimOut}\dresse{TVIapp}} + + +\newenvironment{TVIapp*}[1]% +{\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVIapp.user}}% +{\end{VerbatimOut}\dressetoile{TVIapp}} + + + +\begin{VerbatimOut}{XCasTVPC.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTVPC.cxx"); +read("XCasTVPC.user"); +\end{VerbatimOut} + +\newenvironment{TVPC}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVPC.user}}% +{\end{VerbatimOut} +\dresse{TVPC}} + +\newenvironment{TVPC*}[1]{% +\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVPC.user}}% +{\end{VerbatimOut}\dressetoile{TVPC}} + + + + +%% pour nettoyer les fichiers auxiliaires + +\AtEndDocument{\immediate\write18{\cat queue.mp >> \nomtravail.Tab.mp} + } + + + + +%% +%% Zi end -> enjoy :) diff --git a/Master/texmf-dist/tex/latex/tablor/tablor.sty b/Master/texmf-dist/tex/latex/tablor/tablor.sty index b759961e1a3..bbcc38c8837 100644 --- a/Master/texmf-dist/tex/latex/tablor/tablor.sty +++ b/Master/texmf-dist/tex/latex/tablor/tablor.sty @@ -1,12 +1,12 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{tablor}[08/10/2008 v4.00 la machine a creer des tableaux de signes et variations] +\ProvidesPackage{tablor}[21/10/2008 v4.02 la machine a creer des tableaux de signes et variations] % \copyleft Connan le Barbare (aka Guillaume Connan) \copyright % This work may be distributed and/or mofified under the conditions % or the LaTeX Project Public Licence, either v1.3 or (at your option) % any later version. The latest version is in % http://www.latex-project.org/lppl/ -% This work consists of the files tablor.sty, tablor.cfg, tablor.tex, +% This work consists of the files tablor.sty, tablor-xetex.sty, tablor.cfg, tablor.tex, % tablor.pdf and tablor.html @@ -27,6 +27,12 @@ %%\end{TSq} % un tableau de variation : % +% pour les tableaux de signes à une seule ligne +% \begin{TSc} +% TSc((x+10)/((x-5)*(x-2)),[-10,5],[2,5],n,0) +% \end{TSc} +% +% % \begin{TV} % TV([0,+infinity],[0],"h","x",ln(x)-(ln(x))^2,1,n,\tv) % \end{TV} @@ -71,6 +77,15 @@ % \end{TVP} % % +% Fonctions prolongeables par continuité +% TVPC([intervalles d'étude],[valeurs prolongeables],[valeurs interdites pour f'],"g","t",e^(-1/x^2),1,n,\tv); + + +% \begin{TVPC} +% TVPC([-infinity,+infinity],[0],[0],"g","t",e^(-1/x^2),1,n,\tv); +% \end{TVPC} + + @@ -228,7 +243,7 @@ TV(L,F,nom,nomv,f,ftt,trigo,nmr):={ nl:=size(L); f:=unapply(f,x); -fp:=fonction_derivee(f); +fp:=function_diff(f); Z:=concat(L,F); S:=[]; @@ -236,26 +251,26 @@ S:=[]; if(trigo==t){ all_trig_solutions:=1; reset_solve_counter(-1,-1); -SS:=resoudre(factor(simplifier(fp(x))),x); +SS:=solve(factor(simplify(fp(x))),x); ns:=size(SS); for(k:=0;k=L[0]){ -S:=concat(S,simplifier(subst(SS[k],n_1=m)));m:=m-1; +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; } } }else{ -S:=resoudre(fp(x),x); +S:=solve(fp(x),x); } si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - qq:=member(simplifier(S[j]),Z)==0; + qq:=member(simplify(S[j]),Z)==0; kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - if(kk==1){if(qq==1){Z:=append(Z,simplifier(S[j]))}}; + if(kk==1){if(qq==1){Z:=append(Z,simplify(S[j]))}}; fpour fsi; Z:=sort(Z); @@ -273,7 +288,7 @@ nz:=size(Z); si size(S)>0 alors pour j de 0 jusque size(S)-1 faire kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - if(kk==1){Z:=append(Z,simplifier(S[j]))}; + if(kk==1){Z:=append(Z,simplify(S[j]))}; fpour fsi; @@ -290,8 +305,8 @@ l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); ";fpour; - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ @@ -299,38 +314,47 @@ lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} -if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.1))>0; lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ if(ksp==1){"plus;"}else{"moins;"} }; } -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre; "} -lm0:=limite(f(x),x=Z[0],1)==-infinity; +lm0:=limit(f(x),x=Z[0],1)==-infinity; li:=lvic+nom+"}$ etex);"+ - if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ if(k0==1){"1"}else{"0"}+ ");"; - if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; lp:=lp+if(member(Z[r],F)){ "limGauche(btex - $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ - etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ + $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ + etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); "}}} }; } -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0); -"}; +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + MetaLfc:=if(ftt==2){if(nz>2){" beginTableau("+nmr+")"+ @@ -392,6 +416,210 @@ fclose(sortie); \end{VerbatimOut} + + + + +%%%% + + +% +% +% TVPC : pour les fonctions prolongeables par continuité. +%% +%% + + + + +\begin{VerbatimOut}{XcasTVPC.cxx} +TVPC(L,F,FP,nom,nomv,f,ftt,trigo,nmr):={ +nl:=size(L); +f:=unapply(f,x); +fp:=function_diff(f); +Z:=concat(L,F); +Z:=concat(Z,FP); +S:=[]; + + +if(trigo==t){ +all_trig_solutions:=1; +reset_solve_counter(-1,-1); +SS:=solve(factor(simplify(fp(x))),x); +ns:=size(SS); +for(k:=0;k=L[0]){ +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; +} +} +}else{ +S:=solve(fp(x),x); +} + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + qq:=member(simplify(S[j]),Z)==0; + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){if(qq==1){Z:=append(Z,simplify(S[j]))}}; + fpour + fsi; +Z:=sort(Z); +nz:=size(Z); + + + tantque evalf(Z[0])==evalf(Z[1]) faire Z:=Z[1..nz-1];nz:=size(Z); + ftantque; + + + + + + + + si size(S)>0 alors pour j de 0 jusque size(S)-1 faire + kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); + if(kk==1){Z:=append(Z,simplify(S[j]))}; + fpour + fsi; + +Z:=sort(Z); +nz:=size(Z); + si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1; + fsi; +pour u de 1 jusque nz-2 faire + si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; + fsi; +fpour; +nz:=size(Z); +l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; +pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); +";fpour; + + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); + +lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ + if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],FP)==0){ + if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+ + if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+ + if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} + +if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.1))>0; + lsp:=lsp+if(member(Z[r],FP)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+ + if(ksp==1){"plus;"}else{"moins;"} + }; } + +lsf:=if(member(Z[nz-1],FP)==0){""}else{"nonDefBarre; +"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; + li:=lvic+nom+"}$ etex);"+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(k0==1){"1"}else{"0"}+ + ");"; + + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; + lp:=lp+if(member(Z[r],F)){ + "valPos(btex + $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ + etex,"+if(krm==1){"1);"}else{"0);"} } + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ + etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); +"}}} + }; } + +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}}; + + + + + +MetaLfc:=if(ftt==2){if(nz>2){" + +beginTableau("+nmr+")"+ + l0+lsi+lsp+lsf+" +endTableau; + +";}else{ +intro+"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+" +endTableau; + +"; +} +}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+ + l0+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +li+ +lf ++" +endTableau; + +";}}else{ +if(nz>2){"beginTableau("+nmr+")"+ + l0+ +lsi+lsp+lsf+ +li+ +lp+ +lf ++" +endTableau; + +";}else{"beginTableau("+nmr+")"+ + l0+ +lsi+lsf+ +li+ +lf ++" +endTableau; + +";} +}} + + +sortie:=fopen("XCasmpfc.mp"); +fprint(sortie,Unquoted,MetaLfc); +fclose(sortie); + + + }:; + +\end{VerbatimOut} + + + + + + + + + + + + %% %% %% TV avec une zone interdite : on rajoute comme argument la liste des intervalles interdits @@ -416,7 +644,7 @@ if(FF[k][1]=L[0]){ -S:=concat(S,simplifier(subst(SS[k],n_1=m)));m:=m-1; +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; } } }else{ -S:=resoudre(fp(x),x); +S:=solve(fp(x),x); } @@ -454,7 +682,7 @@ S:=resoudre(fp(x),x); kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); kK:=(evalf(S[j])evalf(Imax[k])); Kk:=(kk) and kK; - if(Kk==1){Z:=append(Z,simplifier(S[j]))}; + if(Kk==1){Z:=append(Z,simplify(S[j]))}; } fpour fsi; @@ -484,8 +712,8 @@ l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); ";fpour; - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ if(member(Z[0],IMIN)!=0){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ @@ -505,33 +733,33 @@ if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0; -lsf:=if(member(Z[0],IMAX)!=0){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nomDefBarre; +lsf:=if(member(Z[0],IMAX)!=0){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nonDefBarre; "}} -lm0:=limite(f(x),x=Z[0],1)==-infinity; +lm0:=limit(f(x),x=Z[0],1)==-infinity; li:=lvic +nom+"}$ etex);"+ - if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ if(k0==1){"1"}else{"0"}+ ");"; if(nz>2){ for(r:=1; r<=nz-2;r++){ - krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; + krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; lp:=lp+if(member(Z[r],IMIN)!=0){"limGauche(btex $"+if(lmrm==1){ "-\\infty"}else{ - latex(simplifier(limite(f(x),x=Z[r],-1)))} + latex(simplify(limit(f(x),x=Z[r],-1)))} +"$ etex,"+if(krm==1){ "1);"}else{"0);"} +"debutNonDef;" }//fsi Zr=Imin else{ if (member(Z[r],IMAX)!=0) {"finNonDef;limDroite(btex $"+if(lmrp==1){ - "-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))} + "-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))} +"$ etex,"+if(krp==1){ "1);"}else{"0);"} } @@ -539,15 +767,15 @@ if(nz>2){ if(member(Z[r],F)){ "limGauche(btex $"+if(lmrm==1){ "-\\infty"}else{ - latex(simplifier(limite(f(x),x=Z[r],-1)))} + latex(simplify(limit(f(x),x=Z[r],-1)))} +"$ etex,"+if(krm==1){ "1);"}else{"0);"} +"nonDefBarre;limDroite(btex $"+if(lmrp==1){ - "-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))} + "-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))} +"$ etex,"+if(krp==1){ "1);"}else{"0);"} }//fsi (member Zr F) - else{"valPos(btex$"+latex(simplifier(f(Z[r])))+"$etex,"+ + else{"valPos(btex$"+latex(simplify(f(Z[r])))+"$etex,"+ if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){ "0.5);"}else{ if(krp==1){ @@ -559,10 +787,19 @@ if(nz>2){ };//ffor }//fsi nz -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0); -"}; +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + MetaLfc:=if(ftt==2){if(nz>2){" @@ -647,7 +884,7 @@ TVapp(L,F,nom,nomv,f,ftt,nmr):={ nl:=size(L); f:=unapply(f,x); -fp:=fonction_derivee(f); +fp:=function_diff(f); z0:=concat(L,F);z:=sort(z0); nz:=size(z); @@ -668,7 +905,7 @@ else{ j:=[seq(k,k=floor(z[0])..floor(z[nz-1]))] minus F;for k in j do S:=S,fsolv si size(S)>0 alors pour j de 0 jusque size(S)-1 faire kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]); - if(kk==1){if(kok==1){z:=append(z,simplifier(S[j]))}}; + if(kk==1){if(kok==1){z:=append(z,simplify(S[j]))}}; fpour; fsi; @@ -698,8 +935,8 @@ l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); ";fpour; - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ @@ -712,32 +949,35 @@ 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; +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre; "} -lm0:=limite(f(x),x=Z[0],1)==-infinity; +lm0:=limit(f(x),x=Z[0],1)==-infinity; li:=lvic+nom+"}$ etex);"+ - if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ + if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ if(k0==1){"1"}else{"0"}+ ");"; - if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; lp:=lp+if(member(Z[r],F)){ - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); "}}} }; } -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0); -"}; - - +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + MetaLfc:=if(ftt==2){if(nz>2){" @@ -827,7 +1067,7 @@ fclose(sortie); TVI(L,F,nom,nomv,f,ftt,ao,trigo,nmr):={ nl:=size(L); f:=unapply(f,x); -fp:=fonction_derivee(f); +fp:=function_diff(f); Z:=concat(L,F); S:=[]; @@ -835,24 +1075,24 @@ S:=[]; if(trigo==t){ all_trig_solutions:=1; reset_solve_counter(-1,-1); -SS:=resoudre(factor(simplifier(fp(x))),x); +SS:=solve(factor(simplify(fp(x))),x); ns:=size(SS); for(k:=0;k=L[0]){ -S:=concat(S,simplifier(subst(SS[k],n_1=m)));m:=m-1; +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; } } }else{ -S:=resoudre(fp(x),x); +S:=solve(fp(x),x); } si size(S)>0 alors pour j de 0 jusque size(S)-1 faire kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - if(kk==1){Z:=append(Z,simplifier(S[j]))}; + if(kk==1){Z:=append(Z,simplify(S[j]))}; fpour fsi; @@ -869,10 +1109,10 @@ l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; -LI:=limite(f(x),x,Z[0],1); -LF:=limite(f(x),x,Z[nz-1],-1); +LI:=limit(f(x),x,Z[0],1); +LF:=limit(f(x),x,Z[nz-1],-1); LP:=NULL; -if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limite(f(x),x,Z[r],-1),limite(f(x),x,Z[r],1)}else{f(Z[r])}}}; +if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limit(f(x),x,Z[r],-1),limit(f(x),x,Z[r],1)}else{f(Z[r])}}}; if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]}; NL:=size(LL); @@ -892,8 +1132,8 @@ l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex); TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ @@ -922,43 +1162,43 @@ else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[ -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;"} -lm0:=limite(f(x),x=Z[0],1)==-infinity; +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre;"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); li:=lvic+nom+"}$ etex); -"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ +"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "}; if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; + krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; lp:=lp+if(member(Z[r],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);" }else{" "}; };//for }else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[rr-1],1))< evalf(limite(f(x),x=Z[rr],-1)); - krp:=evalf(limite(f(x),x=Z[rr],1))> evalf(limite(f(x),x=Z[rr+1],-1)) ; - lmrm:=limite(f(x),x=Z[rr],-1)==-infinity;lmrp:=limite(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); + krm:=evalf(limit(f(x),x=Z[rr-1],1))< evalf(limit(f(x),x=Z[rr],-1)); + krp:=evalf(limit(f(x),x=Z[rr],1))> evalf(limit(f(x),x=Z[rr+1],-1)) ; + lmrm:=limit(f(x),x=Z[rr],-1)==-infinity;lmrp:=limit(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex $ "+ao+" $ etex,0.5); ";rr:=rr+1; }// else testL==1 }//testS==0 else{lp:=lp+if(member(Z[rr],F)){ - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); "}}};rr:=rr+1; }//else testS==0 @@ -968,9 +1208,15 @@ else{lp:=lp+if(member(Z[rr],F)){ };//if nz>2 -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0);"}; +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; @@ -1058,7 +1304,7 @@ TVIapp(L,F,nom,nomv,f,ftt,ao,nmr):={ nl:=size(L); f:=unapply(f,x); -fp:=fonction_derivee(f); +fp:=function_diff(f); z0:=concat(L,F);z:=sort(z0); nz:=size(z); @@ -1081,7 +1327,7 @@ else{ j:=[seq(k,k=floor(z[0])..floor(z[nz-1]))] minus F;for k in j do S:=S,fsolv si size(S)>0 alors pour j de 0 jusque size(S)-1 faire kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]); - if(kk==1){if(kok==1){z:=append(z,simplifier(S[j]))}}; + if(kk==1){if(kok==1){z:=append(z,simplify(S[j]))}}; fpour; fsi; @@ -1113,10 +1359,10 @@ l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" "; -LI:=limite(f(x),x,Z[0],1); -LF:=limite(f(x),x,Z[nz-1],-1); +LI:=limit(f(x),x,Z[0],1); +LF:=limit(f(x),x,Z[nz-1],-1); LP:=NULL; -if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limite(f(x),x,Z[r],-1),limite(f(x),x,Z[r],1)}else{f(Z[r])}}}; +if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limit(f(x),x,Z[r],-1),limit(f(x),x,Z[r],1)}else{f(Z[r])}}}; if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]}; NL:=size(LL); @@ -1136,8 +1382,8 @@ l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex); TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); - k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1)); - kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1)); + k0:= evalf(limit(f(x),x=Z[0],1))> evalf(limit(f(x),x=Z[1],-1)); + kz:=evalf(limit(f(x),x=Z[nz-1],-1))> evalf(limit(f(x),x=Z[nz-2],1)); lsi:=lsic+nom+"'("+nomv+")}$ etex);"+ if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){ @@ -1166,43 +1412,43 @@ else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[ -lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;"} -lm0:=limite(f(x),x=Z[0],1)==-infinity; +lsf:=if(member(Z[nz-1],F)==0){""}else{"nonDefBarre;"} +lm0:=limit(f(x),x=Z[0],1)==-infinity; TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0); li:=lvic+nom+"}$ etex); -"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+ +"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[0],1)))}+"$ etex,"}+ if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "}; if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1)); - krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ; - lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity; + krm:=evalf(limit(f(x),x=Z[r-1],1))< evalf(limit(f(x),x=Z[r],-1)); + krp:=evalf(limit(f(x),x=Z[r],1))> evalf(limit(f(x),x=Z[r+1],-1)) ; + lmrm:=limit(f(x),x=Z[r],-1)==-infinity;lmrp:=limit(f(x),x=Z[r],1)==-infinity; lp:=lp+if(member(Z[r],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[r])))+"$ etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);" }else{" "}; };//for }else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0); - krm:=evalf(limite(f(x),x=Z[rr-1],1))< evalf(limite(f(x),x=Z[rr],-1)); - krp:=evalf(limite(f(x),x=Z[rr],1))> evalf(limite(f(x),x=Z[rr+1],-1)) ; - lmrm:=limite(f(x),x=Z[rr],-1)==-infinity;lmrp:=limite(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); + krm:=evalf(limit(f(x),x=Z[rr-1],1))< evalf(limit(f(x),x=Z[rr],-1)); + krp:=evalf(limit(f(x),x=Z[rr],1))> evalf(limit(f(x),x=Z[rr+1],-1)) ; + lmrm:=limit(f(x),x=Z[rr],-1)==-infinity;lmrp:=limit(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1])); if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) { - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex $ "+ao+" $ etex,0.5); ";rr:=rr+1; }// else testL==1 }//testS==0 else{lp:=lp+if(member(Z[rr],F)){ - "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$ + "limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f(Z[rr])))+"$ etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0); "}}};rr:=rr+1; }//else testS==0 @@ -1212,13 +1458,23 @@ else{lp:=lp+if(member(Z[rr],F)){ };//if nz>2 -lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity; - lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+ - if(kz==1){"1);"}else{"0);"}; +lnz:=limit(f(x),x=Z[nz-1],-1)==-infinity; + + + +lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz==1){"-\\infty"}else{latex(simplify(limit(f(x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(kz==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + + + MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+ l0+lsi+lsp+lsf+" endTableau; @@ -1313,23 +1569,23 @@ reset_solve_counter(-1,-1); for(d:=0;d<=1;d++){ f:=subst(f,f[d]=unapply(f[d],t)); -fp:=append(fp,fonction_derivee(f[d])); +fp:=append(fp,function_diff(f[d])); LLL:=concat(L,F[d]); Z:=LLL union Z; -SS:=resoudre(factor(simplifier(fp[d](t))),t); +SS:=solve(factor(simplify(fp[d](t))),t); ns:=size(SS); for(k:=0;k=L[0]){ -S:=concat(S,simplifier(subst(SS[k],n_1=m)));m:=m-1; +S:=concat(S,simplify(subst(SS[k],n_1=m)));m:=m-1; } }else{ @@ -1339,9 +1595,9 @@ S:=concat(S,SS); si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - qq:=member(simplifier(S[j]),Z)==0; + qq:=member(simplify(S[j]),Z)==0; kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1])); - if(kk==1){if(qq==1){Z:=append(Z,simplifier(S[j]))}}; + if(kk==1){if(qq==1){Z:=append(Z,simplify(S[j]))}}; fpour fsi; Z:=sort(Z); @@ -1381,22 +1637,22 @@ FFF:=[[],[]]; for(d:=0;d<=1;d++){ FFF[d]:=concat(F[d],[-infinity,+infinity]); - k0:= evalf(limite(f[d](x),x=Z[0],1))> evalf(limite(f[d](x),x=Z[1],-1)); - kz:=evalf(limite(f[d](x),x=Z[nz-1],-1))> evalf(limite(f[d](x),x=Z[nz-2],1)); + k0:= evalf(limit(f[d](x),x=Z[0],1))> evalf(limit(f[d](x),x=Z[1],-1)); + kz:=evalf(limit(f[d](x),x=Z[nz-1],-1))> evalf(limit(f[d](x),x=Z[nz-2],1)); //} //$ - lsi[d]:=lsic+nom[d]+"'("+nomv+")}$ etex);"+if(member(Z[0],FFF[d])==0){"valBarre(btex $"+latex(simplifier(fp[d](Z[0])))+"$ etex);"}else{if(Z[0]==-infinity){" "}else{"nonDefBarre; + lsi[d]:=lsic+nom[d]+"'("+nomv+")}$ etex);"+if(member(Z[0],FFF[d])==0){"valBarre(btex $"+latex(simplify(fp[d](Z[0])))+"$ etex);"}else{if(Z[0]==-infinity){" "}else{"nonDefBarre; "}}+ if(Z[0]==-infinity){if(sign(evalf(fp[d](if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F[d])==0){ if(sign(fp[d](Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{ if(sign(fp[d]((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }} if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp[d](Z[r]+0.01))>0; - lsp[d]:=lsp[d]+if(member(Z[r],F[d])==0){"valBarre(btex $"+latex(simplifier(fp[d](Z[r])))+"$ etex);"}else{"nonDefBarre;"}+ + lsp[d]:=lsp[d]+if(member(Z[r],F[d])==0){"valBarre(btex $"+latex(simplify(fp[d](Z[r])))+"$ etex);"}else{"nonDefBarre;"}+ if(ksp==1){"plus;"}else{"moins;"} }; } -lsf[d]:=if(member(Z[nz-1],FFF[d])==0){"valBarre(btex $"+latex(simplifier(fp[d](Z[nz-1])))+"$ etex);"}else{if(Z[nz-1]==+infinity){" "}else{"nonDefBarre;"}} +lsf[d]:=if(member(Z[nz-1],FFF[d])==0){"valBarre(btex $"+latex(simplify(fp[d](Z[nz-1])))+"$ etex);"}else{if(Z[nz-1]==+infinity){" "}else{"nonDefBarre;"}} @@ -1417,33 +1673,39 @@ lsf[d]:=if(member(Z[nz-1],FFF[d])==0){"valBarre(btex $"+latex(simplifier(fp[d](Z for(d:=0;d<=1;d++){ - K0[d]:= evalf(limite(f[d](x),x=Z[0],1))> evalf(limite(f[d](x),x=Z[1],-1)); - Kz[d]:=evalf(limite(f[d](x),x,Z[nz-1],-1))> evalf(limite(f[d](x),x,Z[nz-2],1)); + K0[d]:= evalf(limit(f[d](x),x=Z[0],1))> evalf(limit(f[d](x),x=Z[1],-1)); + Kz[d]:=evalf(limit(f[d](x),x,Z[nz-1],-1))> evalf(limit(f[d](x),x,Z[nz-2],1)); //{ //$ -lm0[d]:=limite(f[d](x),x,Z[0],1)==-infinity; +lm0[d]:=limit(f[d](x),x,Z[0],1)==-infinity; li[d]:=lvic+nom[d]+"}$ etex);"+ - if(member(Z[0],F[d])==0){"valPos(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[0],1)))}+"$ etex,"} - else{"nonDefBarre;limDroite(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[0],1)))}+"$ etex,"}+ + if(member(Z[0],F[d])==0){"valPos(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[0],1)))}+"$ etex,"} + else{"nonDefBarre;limDroite(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[0],1)))}+"$ etex,"}+ if(K0[d]==1){"1"}else{"0"}+ ");"; - if(nz>2){ for(r:=1; r<=nz-2;r++){ krm[d]:=evalf(limite(f[d](x),x=Z[r-1],1))< evalf(limite(f[d](x),x=Z[r],-1)); - krp[d]:=evalf(limite(f[d](x),x=Z[r],1))> evalf(limite(f[d](x),x,Z[r+1],-1)) ; - lmrm[d]:=limite(f[d](x),x,Z[r],-1)==-infinity;lmrp[d]:=limite(f[d](x),x,Z[r],1)==-infinity; + if(nz>2){ for(r:=1; r<=nz-2;r++){ krm[d]:=evalf(limit(f[d](x),x=Z[r-1],1))< evalf(limit(f[d](x),x=Z[r],-1)); + krp[d]:=evalf(limit(f[d](x),x=Z[r],1))> evalf(limit(f[d](x),x,Z[r+1],-1)) ; + lmrm[d]:=limit(f[d](x),x,Z[r],-1)==-infinity;lmrp[d]:=limit(f[d](x),x,Z[r],1)==-infinity; lp[d]:=lp[d]+if(member(Z[r],F[d])){ "limGauche(btex - $"+if(lmrm[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[r],-1)))}+"$ - etex,"+if(krm[d]==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[r],1)))}+"$ etex,"+if(krp[d]==1){"1);"}else{"0);"}} - else{"valPos(btex $"+latex(simplifier(f[d](Z[r])))+"$ + $"+if(lmrm[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[r],-1)))}+"$ + etex,"+if(krm[d]==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x,Z[r],1)))}+"$ etex,"+if(krp[d]==1){"1);"}else{"0);"}} + else{"valPos(btex $"+latex(simplify(f[d](Z[r])))+"$ etex,"+if(sign(evalf(fp[d](Z[r]-0.001)))==sign(evalf((fp[d](Z[r]+0.001))) )){"0.5);"}else{if(krp[d]==1){"1);"}else{"0); "}}} }; } -lnz[d]:=limite(f[d](x),x=Z[nz-1],-1)==-infinity; - lf[d]:=if(member(Z[nz-1],F[d])==0){"valPos(btex $"+if(lnz[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[nz-1],-1)))}+"$ etex,"}+ - if(Kz[d]==1){"1);"}else{"0); -"}; +lnz[d]:=limit(f[d](x),x=Z[nz-1],-1)==-infinity; + + +lf[d]:=if(member(Z[nz-1],F[d])==0){"valPos(btex $"+ + if(lnz[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(Kz[d]==1){"1);"}else{"0);"}} + else{"limGauche(btex $"+ + if(lnz[d]==1){"-\\infty"}else{latex(simplify(limit(f[d](x),x=Z[nz-1],-1)))}+"$ etex,"+ + if(Kz[d]==1){"1);nonDefBarre;"}else{"0);nonDefBarre;"}}; + @@ -1557,27 +1819,27 @@ pour k de 0 jusque n-1 faire if(trigo==t){ all_trig_solutions:=1; reset_solve_counter(-1,-1); -SS:=resoudre(factor(simplifier(L[k](x))),x); +SS:=solve(factor(simplify(L[k](x))),x); ns:=size(SS); for(j:=0;j=evalf(mini)){ -S:=concat(S,simplifier(subst(SS[j],n_1=m)));m:=m-1; +S:=concat(S,simplify(subst(SS[j],n_1=m)));m:=m-1; } } }else{ -S:=resoudre(L[k](x),x); +S:=solve(L[k](x),x); } si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - if(S[j]>mini and S[j]mini and S[j]0){"plus;"}else{"moins;"}; for(r:=0; r<=nz-2;r++){ - lp:=lp+if(simplifier(L[p](Z[r]))==0){" + lp:=lp+if(simplify(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;"}+ + li:=li+lp+ if(simplify(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{" @@ -1713,20 +1975,20 @@ pour k de 0 jusque n-1 faire if(trigo==t){ all_trig_solutions:=1; reset_solve_counter(-1,-1); -SS:=resoudre(factor(simplifier(L[k](x))),x); +SS:=solve(factor(simplify(L[k](x))),x); ns:=size(SS); for(j:=0;j=evalf(mini)){ -S:=concat(S,simplifier(subst(SS[j],n_1=mm)));mm:=mm-1; +S:=concat(S,simplify(subst(SS[j],n_1=mm)));mm:=mm-1; } } }else{ -S:=resoudre(L[k](x),x); +S:=solve(L[k](x),x); } @@ -1734,7 +1996,7 @@ S:=resoudre(L[k](x),x); si size(S)>0 alors pour j de 0 jusque size(S)-1 faire - if(S[j]>mini and S[j]mini and S[j]=evalf(mini)){ -SF:=concat(SF,simplifier(subst(SSF[j],n_1=mm)));mm:=mm-1; +SF:=concat(SF,simplify(subst(SSF[j],n_1=mm)));mm:=mm-1; } } }else{ -SF:=resoudre(Fo[j](x),x); +SF:=solve(Fo[j](x),x); } si size(SF)>0 alors pour j de 0 jusque size(SF)-1 faire - FF:=FF,simplifier(SF[j]); - if(SF[j]>mini and SF[j]mini and SF[j]0){"plus;"}else{"moins;"}; for(r:=0; r<=nz-2;r++){ - lp:=lp+if(simplifier(L[p](Z[r]))==0){" + lp:=lp+if(simplify(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;"}+ + li:=li+lp+ if(simplify(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{" "} @@ -1910,8 +2172,8 @@ fclose(sortie); \begin{VerbatimOut}{XcasTabSigna.cxx} TSa(a,b,c,d,nmr):={ -zA:=resoudre(a*x+b=0,x)[0]; -zB:=resoudre(c*x+d=0,x)[0]; +zA:=solve(a*x+b=0,x)[0]; +zB:=solve(c*x+d=0,x)[0]; zmin:=min(zA,zB); zmax:=max(zA,zB); Meta:= " @@ -1968,11 +2230,10 @@ fclose(sortie); \begin{VerbatimOut}{XcasTSc.cxx} -TSc(g,D,trigo,nmr):={ +TSc(g,D,F,trigo,nmr):={ f:=unapply(g,x); -Z:=NULL; mini:=D[0]; maxi:=D[1];lm:=" "; - +Z:=mini,maxi; S:=[]; @@ -1980,20 +2241,20 @@ S:=[]; if(trigo==t){ all_trig_solutions:=1; reset_solve_counter(-1,-1); -SS:=resoudre(factor(simplifier(f(x))),x); +SS:=solve(factor(simplify(f(x))),x); ns:=size(SS); for(j:=0;j=evalf(mini)){ -S:=concat(S,simplifier(subst(SS[j],n_1=m)));m:=m-1; +S:=concat(S,simplify(subst(SS[j],n_1=m)));m:=m-1; } } }else{ -S:=resoudre(f(x),x); +S:=solve(f(x),x); } @@ -2002,56 +2263,60 @@ S:=resoudre(f(x),x); if(size(S)==0){ l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; -li:=if(mini!=-infinity and f(mini)==0){" +li:=if(member(mini,F)!=0){"nonDefBarre;"}else{if(mini!=-infinity and f(mini)==0){" valBarre(btex 0 etex);"}else{" - "}+ + "}}+ if(mini!=-infinity or maxi!=+infinity){if(f((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}}else{if(f(0)>0){"plus;"}else{"moins;"}}; -lf:=if(maxi!=+infinity and f(maxi)==0){" +lf:=if(member(maxi,F)!=0){"nonDefBarre;"}else{if(maxi!=+infinity and f(maxi)==0){" valBarre(btex 0 etex);"}else{" - "}; + "}}; } else{pour j de 0 jusque size(S)-1 faire - if(S[j]>mini and S[j]mini and S[j]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; + si Z[u]==Z[u+1] alors Z:=concat(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1; fsi; fpour;} +if(Z[0]==Z[1]){Z:=Z[1..nz-1];nz:=nz-1;} +if(Z[nz-2]==Z[nz-1]){Z:=Z[0..nz-2];nz:=nz-1;} nz:=size(Z); l0:=" ";li:=" ";lr:=" "; -if(nz==0){l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);"; +if(nz==2){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;"}; + valBarre(btex 0 etex);"}else{if(member(mini,F)==0){" + "}else{"nonDefBarre;"}}+ +if(f((mini+maxi)*0.5)>0){"plus;"}else{"moins;"}; lf:=if(maxi!=+infinity and f(maxi)==0){" - valBarre(btex 0 etex);"}else{" - "}; + valBarre(btex 0 etex);"}else{if(member(maxi,F)==0){" + "}else{"nonDefBarre;"} + }; }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); +l0:="val(btex $"+latex(Z[0])+"$ etex);";li:=" "; +pour m de 1 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex); "; fpour; -l0:=l0+"val(btex $"+latex(D[1])+"$ etex);"; + li:= if(mini!=-infinity and f(mini)==0){" - valBarre(btex 0 etex);"}else{" - "}+ -if(f(Z[0]-0.01)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"; + valBarre(btex 0 etex);"}else{if(member(mini,F)==0){" + "}else{"nonDefBarre;"} + } -lm:=if(nz>=2){for(r:=0; r<=nz-2;r++){lm:=lm+if(f((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}+ - "valBarre(btex 0 etex);" +lm:=if(nz>2){for(r:=0; r0){"plus;"}else{"moins;"}+ + if(member(Z[r+1],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"} }}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{" - "}; +lf:=if(f(Z[nz-2]+0.1)>0){"plus;"}else{"moins;"}+if(maxi!=+infinity and f(maxi)==0){"valBarre(btex 0 etex);"}else{if(member(maxi,F)==0){" + "}else{"nonDefBarre;"} + }; }}; @@ -2076,8 +2341,6 @@ sortie:=fopen("XCasmpfc.mp"); fprint(sortie,Unquoted,MetaLfc); fclose(sortie); - - }:; \end{VerbatimOut} @@ -2414,6 +2677,37 @@ read("XCasTVIapp.user"); + + +\begin{VerbatimOut}{XCasTVPC.giac} +maple_mode(0); +read("config.cxx"); +read("XcasTVPC.cxx"); +read("XCasTVPC.user"); +\end{VerbatimOut} + +\newenvironment{TVPC}% +{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVPC.user}}% +{\end{VerbatimOut} +\dresse{TVPC}} + +\newenvironment{TVPC*}[1]{% +\setcounter{TVnbis}{\theTVn} +\setcounter{TVn}{#1} +\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVPC.user}}% +{\end{VerbatimOut}\dressetoile{TVPC}} + + + + + + + + + + + + %% pour nettoyer les fichiers auxiliaires \AtEndDocument{\immediate\write18{\cat queue.mp >> \nomtravail.Tab.mp} -- cgit v1.2.3