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]])
message d'erreur
Modérateur : xcasadmin
Re: message d'erreur
Ce sont surement les declarations locales qui posent problème. Ainsi X[k] génère une erreur parce que X a été declarée comme locale et donc initialisée à 0. Il suffit de purger X après la déclaration ou la déclarer en global ou ne pas la déclarer (et ignorer le warning). La même chose s'applique pour k.
Re: message d'erreur
Bonjour,
Merci de votre réponse
Je viens d'écrire le programme avec X et k en variable globale :
1) j'obtiens le message suivant : "[[[1,0,0],[0,1,0],[0,0,1]],[[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]]] size() != [P,B] Erreur: Valeur Argument Incorrecte"
2) lorsque je remets X et k en variables locales, ce même message apparaît
3) il ne se passe rien quand j'exécute "debug"
Visiblement, il y a une subtilité sur le statut des variables qui m'échappe. En cherchant dans l'aide ou le tutoriel je n'ai pas réussi à comprendre ce qui n'allait pas.... et je ne comprends toujours pas pourquoi lorsque je tape dans la ligne de commande ce qui suit tout va bien !!
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);
Merci de votre réponse
Je viens d'écrire le programme avec X et k en variable globale :
1) j'obtiens le message suivant : "[[[1,0,0],[0,1,0],[0,0,1]],[[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]]] size() != [P,B] Erreur: Valeur Argument Incorrecte"
2) lorsque je remets X et k en variables locales, ce même message apparaît
3) il ne se passe rien quand j'exécute "debug"
Visiblement, il y a une subtilité sur le statut des variables qui m'échappe. En cherchant dans l'aide ou le tutoriel je n'ai pas réussi à comprendre ce qui n'allait pas.... et je ne comprends toujours pas pourquoi lorsque je tape dans la ligne de commande ce qui suit tout va bien !!
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);
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: message d'erreur
Bonjour,
J'ai enleve le X du local X
et
votre fonction attend 2 arguments: P et B, si vous faites:
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]])
decompose(P,B) recoit 4 arguments.
il faut donc faire:
decompose(P,[B])
la ca fait quelque chose. (NB: je n'ai pas regarde ce que ca faisait)
Cordialement
F.Han
J'ai enleve le X du local X
et
votre fonction attend 2 arguments: P et B, si vous faites:
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]])
decompose(P,B) recoit 4 arguments.
il faut donc faire:
decompose(P,[B])
la ca fait quelque chose. (NB: je n'ai pas regarde ce que ca faisait)
Cordialement
F.Han