Colle XIII

>

Exercice XIII.1

> restart;with(linalg):

Warning, the protected names norm and 
trace have been redefined and unprotected

> A:=matrix(3,3,[a,1,b,1,c,d,e,f,-1]);

A := 
matrix([[a, 1, b], [1, c, d], [e, f, -1]])

> u:=vector([1,1,0]);v:=vector([1,2,1]);w:=vector([1,1,2]);

u := 
vector([1, 1, 0])

v := 
vector([1, 2, 1])

w := 
vector([1, 1, 2])

> P:=concat(u,v,w);

P := 
matrix([[1, 1, 1], [1, 2, 1], [0, 1, 2]])

> det(P);

2

Le déterminant de la famille (u,v,w) est non nul, donc la famille est libre dans R3, donc est une base de R3

> B:=evalm(multiply(P^(-1),A,P));

B := 
matrix([[3/2*a+1-1/2*e-1/2*c-1/2*f, 3/2*a+3-1/...

B est la matrice de f dans la nouvelle base. Cette matrice est diagonale si et ssi tous les coefficients non diagonaux sont non nuls.

> syst:={seq(seq(B[i,j],i=1..3),j=1..3)} minus {seq(B[i,i],i=1..3)};

syst := 
{-a+c-2*b+2*d, 1/2*a+1/2*e-1/2*c+1/2*f, 3/2...
syst := 
{-a+c-2*b+2*d, 1/2*a+1/2*e-1/2*c+1/2*f, 3/2...

> incs:={a,b,c,d,e,f};

incs := {a, 
b, c, f, d, e}

> solve(syst,incs);

{e = -4, d = 
-3, c = 4, f = 4, b = -3, a = 4}

> assign(%);

> map(eval,B);

matrix([[5, 
0, 0], [0, 3, 0], [0, 0, -1]])

> map(eval,A);

matrix([[4, 
1, -3], [1, 4, -3], [-4, 4, -1]])

>

Exercice XIII.2

> restart;with(linalg):

Warning, the protected names norm and 
trace have been redefined and unprotected

> crochet:=proc(A::matrix,B::matrix)
evalm(A&*B-B&*A)
end;

crochet := 
proc (A::matrix, B::matrix) evalm(`&*`(A...

> A:=matrix(3,3);B:=matrix(3,3);C:=matrix(3,3);

A := array(1 
.. 3,1 .. 3,[])

B := array(1 
.. 3,1 .. 3,[])

C := array(1 
.. 3,1 .. 3,[])

> M1:=crochet(A,crochet(B,C)):

> M2:=crochet(B,crochet(C,A)):

> M3:=crochet(C,crochet(A,B)):

> map(simplify,evalm(M1+M2+M3));

matrix([[0, 
0, 0], [0, 0, 0], [0, 0, 0]])

>

Exercice XIII.3

> restart:with(linalg):

Warning, the protected names norm and 
trace have been redefined and unprotected

> A:=matrix(5,5,1):
for i to 5 do A[i,i]:=2 od:
evalm(A);

matrix([[2, 
1, 1, 1, 1], [1, 2, 1, 1, 1], [1, 1, 2,...

> evalm(A^n);

matrix([[2, 
1, 1, 1, 1], [1, 2, 1, 1, 1], [1, 1, 2,...

Bien-sûr, ça ne marche pas directement... Trois pistes se présentent :

Réservons la troisième méthode pour plus tard.

1ère méthode

> for i from 2 to 4 do evalm(A^i) od;

matrix([[8, 
7, 7, 7, 7], [7, 8, 7, 7, 7], [7, 7, 8,...

matrix([[44, 43, 43, 43, 43], [43, 44, 43, 43, 43],...

matrix([[260, 259, 259, 259, 259], [259, 260, 259, ...

Bof bof. Bon, les termes diagonaux semblent les mêmes, et les autres ce terme diagonal -1

Notons an ce terme diagonal pour A^n. Notre hypothèse de récurrence s'écrit alors

> I5:=diag(1,1,1,1,1);

I5 := 
matrix([[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0,...

> An:=evalm(matrix(5,5,(i,j)->an-1)+I5);

An := 
matrix([[an, an-1, an-1, an-1, an-1], [an-1, ...

> evalm(An&*A);

matrix([[6*an-4, 6*an-5, 6*an-5, 6*an-5, 6*an-5], [...

Ainsi, la matrice est bien de la forme proposée (initialisé + hérédité), et sont terme diagonal an satisfait la relation de récurrence a(n+1)=6a(n)-4. Il suit que la suite b(n)=(a(n)-4/5) satisfait la relation de récurrence b(n+1)=6b(n) donc est géométrique. Donc b(n)=6^(n-1)*b(1)=6^(n-1)*(2-4/5)=6^(n)/5. Et donc a(n)=(6^n+4)/5

> an:=(6^n+4)/5;

an := 
1/5*6^n+4/5

> map(eval,An);

matrix([[1/5*6^n+4/5, 1/5*6^n-1/5, 1/5*6^n-1/5, 1/5...

2ème méthode.

> C:=evalm(A-I5);

C := 
matrix([[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, ...

Il est [très] facile de montrer par récurrence que C^k=5^(k-1)C. On applique la formule du binôme de Newton à C et I5 qui commutent.

> An:=evalm(I5+sum(5^(k-1)*binomial(n,k),k=1..n)*C);

An := 
matrix([[1/5*6^n+4/5, 1/5*6^n-1/5, 1/5*6^n-1/...

Troisième méthode.

On la développera plus tard, en donnant des indications.

>

>

Exercice XIII.4

> restart;with(linalg):

Warning, the protected names norm and 
trace have been redefined and unprotected

Construisons une nouvelle base de R^3, dans laquelle les deux premiers vecteurs sont base de P et le troisième base de D.

> ppp:=matrix(1,3,[1,1,1]);

ppp := 
matrix([[1, 1, 1]])

> linsolve(ppp,[0]);

vector([-_t[1]-_t[2], _t[1], _t[2]])

Ainsi une base de P est donnée par

> e1:=vector([-1,1,0]);e2:=vector([-1,0,1]);

e1 := 
vector([-1, 1, 0])

e2 := 
vector([-1, 0, 1])

> e3:=vector([1,2,3]);

e3 := 
vector([1, 2, 3])

> Pass:=concat(e1,e2,e3);

Pass := 
matrix([[-1, -1, 1], [1, 0, 2], [0, 1, 3]])...

> det(Pass);

6

Les trois vecteurs proposés forment donc une base de R^3. Dire qu'une matrice laisse globalement invariant P et D, c'est dire que l'endomorphisme sous-jacent envoit e3 sur D , e1 et e2 sur P, donc que sa matrice dans la base (e1,e2,e3) est de la forme :

> B:=matrix(3,3,[a,b,0,c,d,0,0,0,e]);

B := 
matrix([[a, b, 0], [c, d, 0], [0, 0, e]])

La matrice de tels endomorphismes, exprimée dans la base canonique, s''écrivent donc :

> A:=multiply(Pass,B,Pass^(-1));

A := 
matrix([[1/3*a+1/3*c+1/2*b+1/2*d+1/6*e, -2/3*a...

>

>

Exercice XIII.5

> restart;with(linalg):

Warning, the protected names norm and 
trace have been redefined and unprotected

> n:=6;

n := 6

Il est clair que la matrice de f dans la base considérée est de la forme :

> A:=matrix(n,n,(i,j)->if j=n then a||i elif i=j+1 then 1 else 0 fi);

A := 
matrix([[0, 0, 0, 0, 0, a1], [1, 0, 0, 0, 0, a...

On cherche maintenant les matrices qui commutent à A

> B:=matrix(n,n);

B := array(1 
.. 6,1 .. 6,[])

> C:=evalm(A&*B-B&*A):

> syst:={seq(seq(C[i,j],j=1..n),i=1..n)}:

> incs:={seq(seq(B[i,j],j=1..n),i=1..n)}:

> sol:=solve(syst,incs):

> assign(sol);

> map(eval,B);

matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...
matrix([[-a5*B[6,4]-a2*B[6,1]-a3*B[6,2]-a4*B[6,3]-a...

On repère dans l'expression ci-dessus les coefficients de B en fonctions desquels sont exprimés les autres. Ici, ce sont B[2,2], B[4,1], B[4,2], B[4,3], B[5,1] et B[6,1], mais cela dépend de la session Maple (choix des inconnues principales du système). En tous cas, il y en a 6, donc l'espace des matrices qui commutent à A est de dimension 6. Donc l'espace des endomorphismes qui commutent à f est de dimension 6.

Or (Id, f, f^2, f^3, f^4, f^5) est manifestement une famille d'endomorphismes qui commutent avec f. Montrons que c'est une famille libre :

> testlibre:=evalm(add(beta||i*A^i,i=0..n-1)):

> eqs:={seq(seq(testlibre[i,j],j=1..n),i=1..n)}:

> incs:={seq(beta||i,i=0..n-1)}:

> solve(eqs,incs);

{beta2 = 0, 
beta0 = 0, beta1 = 0, beta5 = 0, beta3 ...

La famille des f^i est donc une famille libre à 6 éléments dans un espace de dimension 6. C'est donc une base de l'e.v. des endomorphismes commutant avec f.