j'ai écrit un algorithme naïf permettant de déterminer le polynôme minimal d'une matrice. L'idée est de résoudre les n^2 équations à k-1 inconnues suivantes : X[0]*A^0+X[1]*A^1+...+X[k-1]*A^{k-1}+A^k en faisant varier k entre 1 et n^2.
Je teste mon programme sur I_2 qui me renvoie -1+x, lorsque je le teste sur des matrices aléatoires de dimension 4, le programme marche et donne bien le polynôme minimal.
Mais, lorsque je le teste avec I_4 ou I_5 Xcas s'arrête net au moment de résoudre le système d'équations...
Pourquoi ?
En testant avec des matrices creuse, le programme fonctionne correctement. Que se passe - t - il avec l'identité de dimension supérieure à 3 ?
Merci
François
Mon programme :
Code : Tout sélectionner
polmin(A):={
local n,s,X,k,Q,j,Eq,l,Inc,P;
n:=rowdim(A);
while((s==0) or (size(s)==0) )
{
purge(X);
k:=k+1;
Q:=eval(add(X[j]*A^j,j=0..k-1)+A^k);
Eq:=eval(seq(seq(Q[j,l],j=0..n-1),l=0..n-1));
Eq:=[Eq];
Inc:=[seq(X[j],j=0..k-1)];
s:=linsolve(Eq,Inc);
}
P:=add(s[j]*x^j,j=0..k-1)+x^k;
return P;
}:;