Page 1 sur 1

complexe et linsolve

Publié : mer. févr. 25, 2009 5:49 pm
par loic
Je viens de tester de résoudre un système avec nombres complexes. J'ai coché la case ad hoc dans le menu Cfg de CAS

Code : Tout sélectionner

a:=exp(i*t)
linsolve([x+a*y+a^2*z=0,conj(a)*x+y+a*z=0,(conj(a))^2*x+conj(a)*y+z=0],[x,y,z])
En théorie, le système doit être indéterminé pour cette valeur de a.
Pourtant, XCAS rend le couple (0,0,0) comme unique solution.

Est-ce moi qui me trompe?

Publié : mer. févr. 25, 2009 10:03 pm
par frederic han
A priori si Cmplx_var est cochee, il faut supposer t reel avec
assume(t,real)
(si j'ai bien compris vous vouliez que les conjugues soient les inverses?)

Le probleme, c'est que meme en faisant ca, cela persiste pour moi aussi:

il doit manquer des simplifications:
A:=[[1,exp((i)*t),exp((i)*t)^2],[exp((-i)*t),1,exp((i)*t)],[exp((-i)*t)^2,exp((-i)*t),1]]

det(A) n'est pas simplifié.
simplify(det(A)) me donne bien 0,

mais
rank(A) donne 3.

Fred

Publié : jeu. févr. 26, 2009 7:59 am
par parisse
Oui, toutes les routines faisant appel a la reduction de Gauss de matrice supposent que les variables utilisees sont algebriquement independantes. Il faut donc presenter le systeme comme tel, donc ici reecrire les exp(-i*t) en 1/exp(i*t) ou les conj(a) en 1/a. Le meme probleme apparait avec les sin/cos, on peut alors utiliser halftan. Ici par exemple, on peut faire (en mode reel sans avoir besoin de faire assume):

Code : Tout sélectionner

a:=exp(i*t);
linsolve(halftan(exp2trig([x+a*y+a^2*z=0,conj(a)*x+y+a*z=0,(conj(a))^2*x+conj(a)*y+z=0])),[x,y,z])
ou alors remplacer conj(a) par 1/a (par exemple avec subst)

Publié : jeu. févr. 26, 2009 8:17 am
par frederic han
Ha OK,

NB: maple fait pareil:
> rank(A);
Warning, unable to find a provably non-zero pivot
3

Publié : jeu. févr. 26, 2009 8:20 am
par parisse
ca vaudrait peut-etre le coup de rajouter un tsimplify sur les variables, histoire d'eviter a l'utilisateur de le faire explicitement, il faut que j'y reflechisse.

Publié : jeu. févr. 26, 2009 3:33 pm
par loic
Oups, je n'ai pas tout compris :D

Bon, je pense néanmoins en effet que le logiciel devrait signaler le système indéterminé lorsque a:=exp(i*t) avec pour solution

[-a*y-a^2*z,y,z)]

N'est-ce pas votre avis aussi?

Publié : ven. févr. 27, 2009 2:28 pm
par parisse
Voila, j'ai modifie xcas_root/user, ca renvoie maintenant [-y*exp((i)*t)-z*exp((i)*t)^2,y,z]. Les autres suivront a la prochaine compile.
J'espere que ca n'introduira pas de problemes par ailleurs...