Un programme qui bugue apres une mise à jour

Utilisation de Xcas

Modérateur : xcasadmin

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Un programme qui bugue apres une mise à jour

Message par alb » sam. nov. 09, 2013 10:51 am

je commence par ce qui marche:

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))
}
:;
TangenteAnimee((3*x-9)/(x^2-5*x+7),-5,10,0.1) ok (cliquer sur la figure pour accelerer)

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));
}
:;
je verifie ma fonction Tangente:
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

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Un programme qui bugue apres une mise à jour

Message par parisse » sam. nov. 09, 2013 1:42 pm

C'est animation qui pose probleme, curieusement l'animation marche si on l'execute en-dehors de la fonction. Ca devra attendre la semaine prochaine...

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Un programme qui bugue apres une mise à jour

Message par parisse » sam. nov. 09, 2013 2:36 pm

bon, c'est tres probablement la simplification automatique qui est en cause, il suffit de la desactiver en attendant que je corrige...

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: Un programme qui bugue apres une mise à jour

Message par alb » sam. nov. 09, 2013 3:10 pm

ok c'est vu.

Répondre