restart;maple_mode(0);cas_setup(0,0,0,1,0,1e-10,10,[1,50,0,25],0,0,0); //radians,pas de cmplx, pas de Sqrt // fltk N4xcas23Comment_Multiline_InputE 20 599 916 28 12 -------------------------------------------Jordan, Dunford-------------------------------------- // fltk N4xcas23Comment_Multiline_InputE 20 599 916 42 12 La decomposition d'une matrice reelle est reelle: par conjugaison et unicite£ de la decomp de Dunford C1:=companion((X^3-8)^2,X); C2:=companion((X^2-4)^3,X); A:=diag(C1,C2); cas_setup(0,0,1,1,0,1e-10,10,[1,50,0,25],0,1,0); //mode complexe est racines carrees. rat_jordan(A); rat_jordan(companion((x^3-2)^2,x)); J:=jordan(A,'Q');Q; f:=(i0,j0)->if i0=j0 then J[i0,j0] else 0 fi; dia:=matrix(op(dim(J)),f); S:=normal(Q*dia*Q^(-1));N:=A-S; //on remarque que les coeff sont dans le meme corps que ceux de A normal(S*N-N*S); // verification: u:=x^2;p:=x^2+1; f:=x->eval(diff(p,x)); f(x); f(u); //ca ne convient donc pas. mieux vaut faire unapply. f:=unapply(diff(p,x),x); f(x);f(u); d:=gcdex(x^2+2,x,'s','t');normal((x^2+2)*s+t*x); // attention on trouve d et non 1 // fltk N4xcas23Comment_Multiline_InputE 20 599 916 71 12 L'instruction precedente fonctionne mais a la syntaxe utilisee dans£ le logiciel maple. Elle est equivalente a l'instruction suivante£ que l'on trouve dans la documentation d'xcas:£ [s,t,d]:=gcdex(x^2+2,x); // fltk N4xcas23Comment_Multiline_InputE 20 599 916 57 12 n_u est dans l'ideal N car c'est la somme des u_n-u_{n+1} qui sont tous dans N, donc n_u est nilpotent. £ Pour tout polynome r, r(u) est somme de r(s_u) et d'un element de N, donc r(s_u)=0 implique£ que r(u) est dans N et donc que p divise r par definition de p. donc p est le pol min de s // fltk N4xcas23Comment_Multiline_InputE 20 599 916 57 12 Pour que l'algorithme fasse au moins 2 iterations, on met un facteur a la£puissance 5 dans le polynome minimal. Pour etre sur du resultat on prend une£matrice diagonale par blocs de type compagnon A:=diag([companion((x^3-2)^5,x),companion(x^5-2*x^2,x)]); // fltk 7Fl_Tile 27 324 909 217 12 [ // fltk N4xcas7EditeurE 27 324 909 216 12 344 , Dunford:=proc(A) m:=pcar(A,x,lagrange); p:=unapply(normal(m/(gcd(m,diff(m,x)))),x); dp:=unapply(normal(diff(p(x),x)),x); u:=x; //on itere while (rem(p(u),m,x) <> 0 ) { [s,t,d]:=gcdex(m,dp(u),x); invdp:=quo(t,d,x); //abcuv permet d'avoir l'inverse plus facilement u:=rem(u-p(u)*invdp,m,x); }; horner(u,A); end proc; // fltk N4xcas23Comment_Multiline_InputE 20 599 916 57 12 Pour avoir au moins deux it{\'e}rations, il faut un facteur de degre au moins 4£ dans le polynome minimal, ce que l'on obtient par exemple avec£companion((x^3-2)^5,x) S:=Dunford(A); N:=A-S; N*S-S*N; // S et N commutent bien mu:=pmin(S,x); gcd(mu,diff(mu,x)); //S est bien diagonalisable // fltk N4xcas23Comment_Multiline_InputE 20 599 916 57 12 p = m/D ou D est le pgcd de m et m'£ NB:en caract q K=F_q(T), m=X^q-T, alors m'=0, mais p n'est pas 1 car£ l'algebre n'a pas de nilpotents. // fltk N4xcas23Comment_Multiline_InputE 20 599 916 28 12 1/(e(1+n/e)) se developpe en somme finie, et c'est l'inverse de e+n