message d'erreur
Publié : mar. sept. 18, 2012 4:13 pm
Bonjour,
J'ai écrit ce programme et lorsque je le teste ligne de commande par ligne de commande (en variable globale donc) tout fonctionne correctement, et j'obtiens les coordonnées d'une matrice P sur une base de matrice B :
decompose(P,B):={
local I,Q,n,d,sys,X,k,l,s;
n:=coldim(P);d:=size(B);
Q:=evalm(P-add(X[k]*B[k],k=0..(d-1)));
sys:=seq(seq(Q[k,l],l=0..(n-1)),k=0..(n-1));
I:=seq(X[k],k=0..(d-1));
s:=linsolve(sys,I);
if (s==[]) then afficher("erreur") else return s end}
:;
Lorsque je lance mon programme, Xcas calcule n et d sans problème mais bloque sur le calcul de Q (qu'il sait effectuer pourtant !) et me retourne ce message d'erreur :
"Gen [int] Erreur: Type Argument Incorrect"
Je n'arrive pas à comprendre ce qui change entre les commandes ligne par ligne et le programme.
Quelqu'un pourrait - il au moins m'expliquer ce qui change, ou ce que je n'ai pas vu dans mon programme.
Merci
François
PS : j'ai testé le programme avec P:=idn(3) et B:=([[1,-1,-1],[-1,1,-1],[-1,-1,1]],[[1,-1,0],[0,1,-1],[-1,0,1]],[[1,0,-1],[-1,1,0],[0,-1,1]])
J'ai écrit ce programme et lorsque je le teste ligne de commande par ligne de commande (en variable globale donc) tout fonctionne correctement, et j'obtiens les coordonnées d'une matrice P sur une base de matrice B :
decompose(P,B):={
local I,Q,n,d,sys,X,k,l,s;
n:=coldim(P);d:=size(B);
Q:=evalm(P-add(X[k]*B[k],k=0..(d-1)));
sys:=seq(seq(Q[k,l],l=0..(n-1)),k=0..(n-1));
I:=seq(X[k],k=0..(d-1));
s:=linsolve(sys,I);
if (s==[]) then afficher("erreur") else return s end}
:;
Lorsque je lance mon programme, Xcas calcule n et d sans problème mais bloque sur le calcul de Q (qu'il sait effectuer pourtant !) et me retourne ce message d'erreur :
"Gen [int] Erreur: Type Argument Incorrect"
Je n'arrive pas à comprendre ce qui change entre les commandes ligne par ligne et le programme.
Quelqu'un pourrait - il au moins m'expliquer ce qui change, ou ce que je n'ai pas vu dans mon programme.
Merci
François
PS : j'ai testé le programme avec P:=idn(3) et B:=([[1,-1,-1],[-1,1,-1],[-1,-1,1]],[[1,-1,0],[0,1,-1],[-1,0,1]],[[1,0,-1],[-1,1,0],[0,-1,1]])