Page 1 sur 1

arret intempestif

Publié : lun. juin 23, 2008 4:46 pm
par Paulm
Bonjour.

La séquence suivante (copiée-collée)
f(x,y):=(x-y)^2+(ln(x)-ln(y)^2)^2
fx(x,y):=deriver(f(x,y),x)
fy(x,y):=deriver(f(x,y),y)
resoudre([fx(x,y)==0,fy(x,y)==0],[x,y])
retourne [[x,y]] (ce qui est peut-être normal).
Mais si on remplace == dans le "resoudre" par = (ce qui est peut-être idiot), on a un arrêt brutal...

Publié : mar. juin 24, 2008 6:48 am
par parisse
oui avec == la reponse est normale, car c'est le test etre egal a qui renvoie 0 et donc l'equation est consideree comme resolue pour tout x,y. En remplacant par =, j'obtiens
[x,ln(x)] is not rational w.r.t. x Error: Bad Argument Value
Encore un test qu'il me faudra faire sous windows donc...
Au passage, il ne faut pas definir fx et fy de cette facon, car par exemple dans
fx(x,y):=deriver(f(x,y),x)
la variable x a 2 sens: c'est la variable formelle de derivation et c'est aussi une des 2 variables muettes de definition de fx et il n'est pas impossible que ce soit la raison du plantage. Il faudrait donc ecrire
fx:=unapply(deriver(f(x,y),x),x,y)
Je vous conseille plutot de travailler avec des expressions
f:=(x-y)^2+(ln(x)-ln(y)^2)^2;
fx:=deriver(f,x);
fy:=deriver(f,y);
resoudre([fx=0,fy=0],[x,y])
Dans ce cas Xcas ne sait pas resoudre, en fait il ne sait en gros que traiter les systemes polynomiaux en calcul exact. En general, on peut utiliser fsolve pour trouver une solution isolee par un algorithme numerique iteratif a partir d'une valeur initiale, mais ici ca ne marchera pas forcement car x=y est solution.

Publié : mar. juin 24, 2008 6:59 am
par Paulm
Merci.
Ma question ne concernait que le plantage windesque.
A part cela
xy:=fsolve([fx(x,y),fy(x,y)],[x,y],[2,2],dnewton_solver)
marche très bien (x=y n'est pas solution, il y a un ln², sauf (1,1) et (e,e))

Publié : mar. juin 24, 2008 7:09 am
par parisse
oups, en effet, je n'avais pas vu le carre!

Publié : mar. juin 24, 2008 1:16 pm
par parisse
j'ai pu reproduire le pb sous windows, mais mon debuggueur gdb ne veut plus debugguer xcas donc impossible de savoir pourquoi, je pense qu'il faudra que je reinstalle completement mon environnement cygwin, ca va prendre du temps....

Publié : lun. juin 30, 2008 12:35 pm
par parisse
Je viens de mettre en ligne une mise a niveau windows qui corrige partiellement le probleme, en renvoyant une liste contenant le message d'erreur au lieu de faire afficher le message d'erreur, c'est la generation d'une erreur qui provoque le plantage sous windows, sans que je puisse determiner pourquoi. Ce qui est plutot genant, car je ne sais pas si d'autres generations d'erreurs du meme type ne provoqueront pas aussi des plantage sous windows alors qu'ailleurs tout va bien...