équation complexe

Utilisation de Xcas

Modérateur : xcasadmin

Cheval
Messages : 66
Inscription : mar. sept. 24, 2013 7:51 pm

équation complexe

Message par Cheval » ven. nov. 08, 2013 7:43 am

Bonjour,

j'ai tenté l'exercice suivant :

Code : Tout sélectionner

f(z):=(1-z)/(conj(z)-1)
csolve (f(z)=1,z)
la réponse est :
[ ]

Pour contourner le problème, je transforme mon équation :

Code : Tout sélectionner

solve((1-a-i*b)/(a-i*b-1)=1,[a,b])
Cette fois ci, pas de soucis, j'ai le bon résultat :
[[1,b]]

J'ai tenté ces deux syntaxes sans succès :

Code : Tout sélectionner

solve(subst(f(z)=1,z=a+i*b),[a,b])
solve(subst(f(z)-1,z=a+i*b)=0,[a,b])
la solution renvoyée est [ ]

alors que quand je tape :

Code : Tout sélectionner

subst(f(z)=1,z=a+i*b)
j'obtiens bien :
(-a+(-i)*b+1)/(a+(i)*b-1)=1

Qu'est-ce qui coince dans ma syntaxe ?

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

Re: équation complexe

Message par parisse » ven. nov. 08, 2013 7:44 pm

Il doit y avoir un bug, csolve((-z+1)=(conj(z)-1),z) marche mais pas csolve((-z+1)/(conj(z)-1)=1,z). Je regarderai la semaine prochaine...

Cheval
Messages : 66
Inscription : mar. sept. 24, 2013 7:51 pm

Re: équation complexe

Message par Cheval » dim. nov. 10, 2013 1:42 pm

Le fait que csolve((-z+1)=(conj(z)-1),z) ne marche pas ne me choque pas plus que ça. C'est sûr, c'est mieux si ça marche, l'écriture est plus simple. Je pensais que c'était le conjugué qui coinçait, je n'ai pas pensé à mettre l'équation "à plat".
Ce qui me chagrine plus, c'est le fait que subst ne fonctionne pas, alors que la même équation avec la substitution rentrée manuellement donne la bonne solution. Bug ou mauvaise utilisation de ma part ?

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

Re: équation complexe

Message par alb » dim. nov. 10, 2013 4:06 pm

Wolfram a aussi des difficultes avec cette equation

Cheval
Messages : 66
Inscription : mar. sept. 24, 2013 7:51 pm

Re: équation complexe

Message par Cheval » dim. nov. 10, 2013 6:53 pm

Wolfram a aussi des difficultes avec cette equation
Oui, enfin, c'est pire que ça !
Xcas répond soit rien (c'est pas super, mais c'est pas n'importe quoi non plus !), soit la bonne réponse.

J'ai tenté cette formulation : http://www.wolframalpha.com/input/?i=so ... %2Cb%5D%29 : ça marche (comme Xcas)

Vous qui maîtrisez bien la bête, j'ai fait une mauvaise utilisation de subst ?

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

Re: équation complexe

Message par alb » dim. nov. 10, 2013 7:39 pm

ce qui ne marche pas :
f(z):=(1-z)/(conj(z)-1);
f(z); // renvoie (-z+1)/(z-1) ce qui semble normal (z reel)

malheureusement ce n'est pas mieux avec:
z:=DOM_COMPLEX;
f(z):=(1-z)/(conj(z)-1);
f(z); // renvoie -1

ce qui marche:
z:=a+i*b;
f(z):=(1-z)/(conj(z)-1);
f(z); // ok
solve(f(z)=1,[a,b]); renvoie [[1,b]]

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

Re: équation complexe

Message par parisse » lun. nov. 11, 2013 8:21 am

Il faut faire assume(z,complex) pour supposer que z est complexe, pas z:=complex qui affecte a z la valeur du type complexe.

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

Re: équation complexe

Message par alb » lun. nov. 11, 2013 1:06 pm

oui, enorme erreur ! comme le resultat etait -1 j'ai pense que c'etait (1-z)/(z-1) simplifie !
alors que z valait 4 je pense (DOM_COMPLEX==4 renvoie vrai)

Cheval
Messages : 66
Inscription : mar. sept. 24, 2013 7:51 pm

Re: équation complexe

Message par Cheval » lun. nov. 11, 2013 9:08 pm

ce qui ne marche pas :
f(z):=(1-z)/(conj(z)-1);
f(z); // renvoie (-z+1)/(z-1) ce qui semble normal (z reel)
Chez moi, ça marche, la preuve :

Image

[Edit] : version 1.1.0-22
Pas de déclaration de z complexe ou quoi que ce soit avant la définition de la fonction

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

Re: équation complexe

Message par alb » lun. nov. 11, 2013 9:27 pm

avec la version 1.1.0-24
avec assume(z,complex) c'est pareil
f(z):=(1-z)/(conj(z)-1);
simplifier(f(z)); // renvoie -1

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

Re: équation complexe

Message par parisse » mar. nov. 12, 2013 7:28 am

Je pense que l'hypothese z complexe n'est pas prise en compte dans la fonction, parce que la variable z est masquee par la variable locale z qui definit la fonction.
assume(y,complex) suivi de f(y) a l'air de marcher.

Cheval
Messages : 66
Inscription : mar. sept. 24, 2013 7:51 pm

Re: équation complexe

Message par Cheval » mar. nov. 12, 2013 8:08 am

@ alb : en effet, c'est complètement bizarre. Si je fais comme vous, simplifier (f(z)), j'ai bien -1 aussi !
Mais d'un autre côté, la fonction marche comme il faut, cf l'exemple ci-dessus.
Si on rentre un complexe comme argument de la fonction, conj(z) est bien interprété, par contre, la fonction simplifier simplifie comme si z était réel : ce n'est pas de là que vient le pb ?
J'ai fait aussi divers tests avec assume (z, complex), rien ne change dans ma session.

@ parisse : pour le coup de la variable locale, je suis franchement étonné, le but de déclarer en local n'est-il pas de cloisonner les différents environnement de variables ?

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

Re: équation complexe

Message par parisse » mar. nov. 12, 2013 7:22 pm

Ce n'est helas pas facile a faire... car z est une variable locale affectee a une variable globale a valeur symbolique identique mais avec une hypothese dessus. Autrement dit quand conj(z) est evalue, z variable locale est evaluee, sa valeur est z, puis conj est applique dessus, mais le systeme considere alors que z est le z local qui n'a pas d'hypothese. Trop difficile a gerer. Pour contourner le probleme, il faut declarer la variable locale implicite z comme complexe.
f(z):={ assume(z,complex); return (1-z)/(conj(z)-1); }

Cheval
Messages : 66
Inscription : mar. sept. 24, 2013 7:51 pm

Re: équation complexe

Message par Cheval » mar. nov. 12, 2013 8:47 pm

J'ai essayé avec votre définition de fonction, voilà ce que ça donne :

Image

=> je préfère ma première formulation, au moins la fonction marche ! Ici en 3, la fonction ne sait pas me calculer une simple image, alors que la formulation de base le faisait. Certes, la formulation de l'éq avec subst marche (en 5).
C'est vraiment très casse tête le calcul formel (cf les pb de variables locales => 2 dolipranes avant d'aller au lit !)
Si j'ai bien compris, le pb de subst qui ne donne pas le résultat escompté vient de cette histoire de variable localo-globale ?
M'enfin, de toutes façons, on arrive à résoudre les problèmes, quitte à utiliser des formulations détournées : pour moi, un tel logiciel n'est pas là pour répondre parfaitement à une question posée de la manière la plus triviale possible, mais pour donner une assistance, quitte à faire preuve d'un peu d'astuce pour déclencher et interpréter cette assistance. C'est comme avec tous les logiciels de CAO en fait, il faut souvent ruser pour y trouver son compte, et ce n'est pas forcément désagréable, au contraire !

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

Re: équation complexe

Message par parisse » mer. nov. 13, 2013 5:58 am

En effet, pour que f marche il faut la modifier comme suit
f(z):={ si z=='z' alors supposons(z,complex); fsi; return (1-z)/(conj(z)-1); }
Ca reste un peu du bricolage, je regarderai quand même si je ne peux pas faire mieux.

Répondre