arret intempestif

Bugs

Modérateur : xcasadmin

Paulm
Messages : 27
Inscription : jeu. mai 29, 2008 6:06 am
Localisation : Epinal Vosges France

arret intempestif

Message par Paulm » lun. juin 23, 2008 4:46 pm

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...

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

Message par parisse » mar. juin 24, 2008 6:48 am

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.

Paulm
Messages : 27
Inscription : jeu. mai 29, 2008 6:06 am
Localisation : Epinal Vosges France

Message par Paulm » mar. juin 24, 2008 6:59 am

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))

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

Message par parisse » mar. juin 24, 2008 7:09 am

oups, en effet, je n'avais pas vu le carre!

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

Message par parisse » mar. juin 24, 2008 1:16 pm

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....

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

Message par parisse » lun. juin 30, 2008 12:35 pm

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...

Répondre