complexe et linsolve

Utilisation de Xcas

Modérateur : xcasadmin

loic
Messages : 168
Inscription : ven. mars 14, 2008 7:20 pm

complexe et linsolve

Message par loic » mer. févr. 25, 2009 5:49 pm

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?

frederic han
Messages : 1139
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Message par frederic han » mer. févr. 25, 2009 10:03 pm

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

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

Message par parisse » jeu. févr. 26, 2009 7:59 am

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)

frederic han
Messages : 1139
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Message par frederic han » jeu. févr. 26, 2009 8:17 am

Ha OK,

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

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

Message par parisse » jeu. févr. 26, 2009 8:20 am

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.

loic
Messages : 168
Inscription : ven. mars 14, 2008 7:20 pm

Message par loic » jeu. févr. 26, 2009 3:33 pm

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?

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

Message par parisse » ven. févr. 27, 2009 2:28 pm

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

Répondre