Code : Tout sélectionner
TangenteAnimee(E,m,M,h):={
gl_animate=2.0,
plot(E,x=m..M),
animation(seq(tangente(plot(E),a,couleur=rouge),a,m,M,h))
}
:;
Mon programme qui marchait:
Code : Tout sélectionner
Tangente(E,a):={
local b,d,d2,eq,aff,eveq;
a:=simplifier(a);
b:=subst(E,x=a);
d:=simplifier(subst(diff(E),x=a));
d2:=evalf(subst(diff(diff(E)),x=a),10);
//d2:=simplifier(subst(diff(diff(E)),x=a));
eq:=normal(d*(x-a)+b);
eveq:=evalf(d,4)*x-evalf(d*a-b,4);
si d2==0 alors
aff:="f''("+a+")=0";
f(x):=piecewise(x>0,"f'("+a+")>0",x=0,"f'("+a+")=0","f'("+a+")<0");
fsi;
si d2>0 alors
aff:="f''("+a+")>0";
f(x):=piecewise(x>0,"f'("+a+")>0, f' est croissante",x=0,"f'("+a+")=0, f' est croissante","f'("+a+")<0, f' est croissante");
fsi;
si d2<0 alors
aff:="f''("+a+")<0";
f(x):=piecewise(x>0,"f'("+a+")>0, f' est décroissante",x=0,"f'("+a+")=0, f' est décroissante","f'("+a+")<0, f' est décroissante");
fsi;
legende(point(a,b),"M"),
point([a,b],affichage=epaisseur_point_3+point_point),
plot(E,x=a-10..a+10),
segment(point(a,0),point(a,b),affichage=ligne_tiret),
legende(point(a,0),a,quadrant4),
legende(milieu([a,b],[a-2,subst(eq,x=a-2)]),f(d)),
legende(milieu([a,b],[a+2,subst(eq,x=a+2)]),aff),
vecteur(point([a,b]),point([a+2,subst(eq,x=a+2)]),affichage=rouge),
vecteur(point([a,b]),point([a-2,subst(eq,x=a-2)]),affichage=rouge),
legende([10,50],"l'équation réduite de la tangente au point M d'abscisse "+a+" est: "),
legende([10,70],"y="+eq),
legende([10,90],"ou approximativement: "),
legende([10,110],"y="+eveq),
legende([10,150],"f' (dé)croissante signifie f' (dé)croissante sur un intervalle ouvert non vide de centre "+a);
}
:;
TangenteAnimee(E,m,M,h):={
gl_animate=2.0,
plot([E,diff(E),diff(diff(E))],x=m..M,legende=["f","f'","f''"],affichage=[noir+epaisseur_ligne_3,bleu,vert]),
animation(seq(Tangente(E,a),a,m,M,h));
}
:;
Tangente((3*x-9)/(x^2-5*x+7),-1) ok
Je fais:
TangenteAnimee((3*x-9)/(x^2-5*x+7),-5,10,0.1) Erreur: Valeur Argument Incorrect