message d'erreur

Utilisation à l'épreuve de modélisation de l'agrégation de mathématiques

Modérateur : xcasadmin

Denizou
Messages : 61
Inscription : mer. juin 13, 2012 7:23 am

message d'erreur

Message par Denizou » 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]])

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

Re: message d'erreur

Message par parisse » mar. sept. 18, 2012 6:13 pm

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.

Denizou
Messages : 61
Inscription : mer. juin 13, 2012 7:23 am

Re: message d'erreur

Message par Denizou » mer. sept. 19, 2012 7:45 am

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);

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

Re: message d'erreur

Message par frederic han » mer. sept. 19, 2012 8:12 am

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

Répondre