A qui se fier ?

Utilisation de Xcas

Modérateur : xcasadmin

Répondre
alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

A qui se fier ?

Message par alb » sam. oct. 03, 2009 2:47 pm

Pour avoir une idée de la courbe de la fonction définie par:
f(x):=(2-sqrt(3*x-2))/(sqrt(2*x+5)-3)
doit-on faire:
plot(f(x))
ou
plot(f(x),x=2/3..2.5)

question ouverte posée à des élèves de terminale qui devrait générer pas mal de questions:
validité de f(x)
limite en 2
existence d'une expression qui aurait le même signe que la dérivée.
etc...

luc briel

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

Re: A qui se fier ?

Message par parisse » dim. oct. 04, 2009 4:11 pm

alb a écrit :Pour avoir une idée de la courbe de la fonction définie par:
f(x):=(2-sqrt(3*x-2))/(sqrt(2*x+5)-3)
doit-on faire:
plot(f(x))
ou
plot(f(x),x=2/3..2.5)
Les deux vont fonctionner sauf si les paramètres graphiques par défaut ont été modifiés, le 2ème est plus précis. Il faut toutefois prendre garde au réglage automatique de la fenetre graphique et faire quelques changements (par ex. zoom out) pour voir ce qui se passe en 2/3.
question ouverte posée à des élèves de terminale qui devrait générer pas mal de questions:
validité de f(x)
limite en 2
existence d'une expression qui aurait le même signe que la dérivée.
Pour la dérivée, je suppose que vous voulez dire expression rationnelle? Ca risque d'etre difficile avec xcas, on ne peut simplifier qu'avec ratnormal sinon des rootof apparaissent. On peut commencer avec
a:=diff(f(x));
puis en observant la forme de la dérivée
b:=ratnormal((getNum(a[1])*getDenom(a[1])+getNum(a[2]))*(3x-2)*(2x+5)
mais il faut deja bien connaitre xcas et le calcul n'est pas fini!
Ici, il est plus simple d'étudier séparément le numérateur et le dénominateur (mais ce serait évidemment faux en général!)

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

Re: A qui se fier ?

Message par alb » dim. oct. 04, 2009 6:47 pm

Merci pour tous ces conseils.

En fait mon pb était en 2:
la commande simple plot(f(x)) (sans spécifier l'intervalle) me donne une aberration en 2.La courbe présente un pic.
Ce qui n'est pas le cas avec l'intervalle 2/3..5

J'ai une autre question:
Je cherche une solution approchée de x/(3+2*sin(x))=40 la plus proche de 200
En faisant
fsolve(x/(3+2*sin(x))=40,x,196.6..196.7) j'obtiens undef
En ajoutant bisection_solver xcas plante

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

Re: A qui se fier ?

Message par alb » lun. oct. 05, 2009 5:40 am

Complément au message précédent:
pour f(x):=(2-sqrt(3x-2))/(sqrt(2x+5)-3) je veux vérifier que le signe de la dérivée est celui de
-38+18*sqrt(2x+5)-8*sqrt(3x-2)

Avec g(x):=si (x=2) alors -9/4;sinon (2-sqrt(3x-2))/(sqrt(2x+5)-3);fsi
j'ai pour plot(g(x)) toujours le pic en 2.

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

Re: A qui se fier ?

Message par parisse » lun. oct. 05, 2009 6:09 am

alb a écrit :Merci pour tous ces conseils.

En fait mon pb était en 2:
la commande simple plot(f(x)) (sans spécifier l'intervalle) me donne une aberration en 2.La courbe présente un pic.
Ce qui n'est pas le cas avec l'intervalle 2/3..5
ca depend de l'intervalle parce que xcas échantillone la fonction en 300 points par défaut si ma mémoire est bonne, si jamais il est très proche de 2 (par ex. 2+1e-17) les erreurs de compensation font que la valeur calculée sera très imprécise et ça peut donner un pic. Il me faudrait votre config (~/.xcasrc ou xcas.rc sous windows) pour tester avec les mêmes paramètres que vous.
J'ai une autre question:
Je cherche une solution approchée de x/(3+2*sin(x))=40 la plus proche de 200
En faisant
fsolve(x/(3+2*sin(x))=40,x,196.6..196.7) j'obtiens undef
En ajoutant bisection_solver xcas plante
Je vais regarder ça.

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

Re: A qui se fier ?

Message par parisse » lun. oct. 05, 2009 6:36 am

fsolve(x/(3+2*sin(x))=40,x=196.5..197,bisection_solver)
me renvoie [196.640376091,196.640376106]
et fsolve(x/(3+2*sin(x))=40,x=196.0..196.5,bisection_solver)
renvoie [196.033316866,196.03331688]
Comme on est près d'un minimum (2 racines proches), Newton ne marche pas. Votre intervalle de départ avec bisection_solver me donne [196.640376094,196.640376097] je n'ai pas de undef ni de crash.

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

Re: A qui se fier ?

Message par parisse » lun. oct. 05, 2009 6:41 am

alb a écrit :Complément au message précédent:
pour f(x):=(2-sqrt(3x-2))/(sqrt(2x+5)-3) je veux vérifier que le signe de la dérivée est celui de
-38+18*sqrt(2x+5)-8*sqrt(3x-2)
Comment faites-vous les calculs à la main? j'ai essayé avec l'éditeur d'équations de xcas, j'ai du me gourer, je trouve -12*x+9*sqrt(2*x+5)+4*sqrt(3*x-2)-11. Et on ne peut pas faire séparément numérateur et dénominateur contrairement à ce que je croyais à cause des signes:-(
Avec g(x):=si (x=2) alors -9/4;sinon (2-sqrt(3x-2))/(sqrt(2x+5)-3);fsi
j'ai pour plot(g(x)) toujours le pic en 2.
Oui, car l'échantillonage pour tracer g ne passe pas exactement en x=2 mais probablement en x=2+1e-17 ou x=2-1e-17 donc l'erreur d'arrondi donnant le pic persiste.

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

Re: A qui se fier ?

Message par parisse » lun. oct. 05, 2009 7:03 am

Bon, j'ai réussi! Je fais f:=(2-sqrt(3x-2))/(sqrt(2x+5)-3); puis a:=diff(f) puis
b:=ratnormal(expand((getNum(a[1])*getDenom(a[1])+getNum(a[2]))*sqrt(3x-2)*sqrt(2x+5)))

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

Re: A qui se fier ?

Message par alb » lun. oct. 05, 2009 8:30 pm

le crash persiste pour resoudre_numerique(x/(3+2*sin(x))=40,x,196..197,bisection_solver) ainsi que pour d'autres variantes syntaxiques, aussi bien sur ma version (juillet) que sur celle du lycée (novembre 2008).
En revanche resoudre_numerique(cos(x)=x,x,-1..1,bisection_solver) renvoie bien [0.7390850782,0.7390851378].

J'ai tenté de joindre le fichier xcasrc sans succès apparemment.

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

Re: A qui se fier ?

Message par parisse » mar. oct. 06, 2009 6:22 am

J'ai retesté sous linux avec la dernière version, ça marche bien. Je testerai sous windows lors de la prochaine mise à jour.
Je vous invite de toutes façons à mettre à jour au moins la version de xcas de 2008, il y a eu un gros paquet de corrections de bugs depuis.

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

Re: A qui se fier ?

Message par parisse » mar. oct. 06, 2009 6:33 am

P.S.: pour xcasrc, le mieux est de faire un copier-coller depuis un éditeur, comme il ne prend que 3 lignes de texte.

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

Re: A qui se fier ?

Message par parisse » mar. oct. 06, 2009 9:18 am

En effet, ca crashe sous windows mais pas sous linux! Le responsable semble etre l'intervalle, il faut un intervalle ou il y a changement de signe pour que bisection_solver fonctionne, sinon la Gnu Scientific Library renvoie un signal d'erreur... qui n'est pas intercepte comme sous linux pour une raison que j'ignore et fait donc crasher. Je rajoute donc un test de changement de signe (pour tous les solver sauf newton)

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

Re: A qui se fier ?

Message par alb » mar. oct. 06, 2009 5:33 pm

xcasrc:

widget_size(20,267,56,735,557,0,1,0);maple_mode(0);
xyztrange(-4.2,4.2,-3.4,1.1,-10.0,10.0,-1.0,6.0,-4.2,4.2,-1.4,1.1,1,0.0,1.0);

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

Re: A qui se fier ?

Message par parisse » mar. oct. 06, 2009 6:41 pm

il manque la ligne importante avec cas_setup(), mais c'est inutile ici puisque le bug est en principe corrigé.

Répondre