Matrices

> with(linalg):

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

Exercice 9

> A:=matrix([[1,1],[1,-1]]);

A := matrix([[1, 1], [1, -1]])

> rank(A);

2

> inverse(A);

matrix([[1/2, 1/2], [1/2, -1/2]])

Exercice 10

> B:=matrix([[1,1,1],[0,-1,1],[1,0,1]]);

B := matrix([[1, 1, 1], [0, -1, 1], [1, 0, 1]])

> rank(B);

3

> inv_B:=inverse(B);

inv_B := matrix([[-1, -1, 2], [1, 0, -1], [1, 1, -1...

> proj:=matrix([[1,0,0],[0,1,0],[0,0,0]]);

proj := matrix([[1, 0, 0], [0, 1, 0], [0, 0, 0]])

C'est la matrice de la projection dans la base (v1,v2,v3)

> res:=evalm(B&*proj&*inv_B );

res := matrix([[0, -1, 1], [-1, 0, 1], [-1, -1, 2]]...

Exercice 14

> A:=matrix([[0,1,0],[0,0,1],[1,0,0]]);

A := matrix([[0, 1, 0], [0, 0, 1], [1, 0, 0]])

> rank(A);

3

> inverse(A);

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

> B:=matrix([[1,0,1],[2,-1,2],[-1,-1,-1]]);

B := matrix([[1, 0, 1], [2, -1, 2], [-1, -1, -1]])

> rank(B);

2

> C:=matrix([[1,1,1,2],[1,1,1,2],[1,1,1,2]]);

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

> rank(C);

1

> E:=matrix([[-1,1,2,3,0],[1,2,3,4,1],[3,2,1,0,1]]);

E := matrix([[-1, 1, 2, 3, 0], [1, 2, 3, 4, 1], [3,...

> rank(E);

3

> F:=matrix([[0,1,1],[1,0,1],[1,1,0]]);

F := matrix([[0, 1, 1], [1, 0, 1], [1, 1, 0]])

> rank(F);

3

> inverse(F);

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

> G:=matrix([[1,a,b],[b,1,a],[a,b,1]]);

G := matrix([[1, a, b], [b, 1, a], [a, b, 1]])

> rank(G);

3

Attention, ce n'est pas si simple ...

> inverse(G);

matrix([[-(-1+a*b)/(1-3*a*b+b^3+a^3), -(a-b^2)/(1-3...

Peut-être a-t-on besoin d'un dénominateur non nul, non ? On n'échappe pas à une étude à la main, comme dans l'exemple suivant :

> H:=matrix([[a,b],[c,d]]);

H := matrix([[a, b], [c, d]])

> rank(H);

2

> inverse(H);

matrix([[d/(d*a-b*c), -b/(d*a-b*c)], [-c/(d*a-b*c),...

Exercice 15

> mat_n:=proc(n)
local v,i,j;
v:=array(1..n,1..n);
for i to n do
for j to n do
if i=j then v[i,j]:=0
else v[i,j]:=1 fi
od;
od;
RETURN(evalm(v));
end;

mat_n := proc (n) local v, i, j; v := array(1 .. n,...
mat_n := proc (n) local v, i, j; v := array(1 .. n,...
mat_n := proc (n) local v, i, j; v := array(1 .. n,...
mat_n := proc (n) local v, i, j; v := array(1 .. n,...

> M_3:=mat_n(3);

M_3 := matrix([[0, 1, 1], [1, 0, 1], [1, 1, 0]])

> M_3i:=inverse(M_3);

M_3i := matrix([[-1/2, 1/2, 1/2], [1/2, -1/2, 1/2],...

> multiply(M_3i,M_3);

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

> M_4:=mat_n(4),inverse(M_4);

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

On voit bien ce que doit être le résultat général ...

Exercice 16

> A:=matrix([[0,-1,1],[2,-0,1],[3,1,0]]);

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

> inverse(A);

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

Exercice 23

> A:=matrix([[2,a,b],[0,2,c],[0,0,2]]);

A := matrix([[2, a, b], [0, 2, c], [0, 0, 2]])

> seq(evalm(A^n),n=2..5);

matrix([[4, 4*a, 4*b+a*c], [0, 4, 4*c], [0, 0, 4]])...

> N:=matrix([[0,a,b],[0,0,c],[0,0,0]]);

N := matrix([[0, a, b], [0, 0, c], [0, 0, 0]])

> evalm(N^2),evalm(N^3);

matrix([[0, 0, a*c], [0, 0, 0], [0, 0, 0]]), matrix...

Exercice 24

> que_des_uns:=n-> matrix(n,n,(i,j)->1);

que_des_uns := proc (n) options operator, arrow; ma...

> que_des_uns(3);

matrix([[1, 1, 1], [1, 1, 1], [1, 1, 1]])

> seq(evalm(que_des_uns(2)^n),n=2..6);

matrix([[2, 2], [2, 2]]), matrix([[4, 4], [4, 4]]),...

> seq(evalm(que_des_uns(3)^n),n=2..6);

matrix([[3, 3, 3], [3, 3, 3], [3, 3, 3]]), matrix([...

On peut en déduire une formule générale ...

> que_des_uns_triangle:=n-> matrix(n,n,(i,j)->if i<j+1 then 1 else 0 fi);

que_des_uns_triangle := proc (n) options operator, ...

> que_des_uns_triangle(3);

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

> seq(evalm(que_des_uns_triangle(2)^n),n=2..6);

matrix([[1, 2], [0, 1]]), matrix([[1, 3], [0, 1]]),...

> seq(evalm(que_des_uns_triangle(3)^n),n=2..6);

matrix([[1, 2, 3], [0, 1, 2], [0, 0, 1]]), matrix([...

> seq(evalm(que_des_uns_triangle(4)^n),n=2..6);

matrix([[1, 2, 3, 4], [0, 1, 2, 3], [0, 0, 1, 2], [...

Formule ?

Exercice 25

> M:=matrix([[2,3],[0,-1]]);

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

> I_2:=matrix([[1,0],[0,1]]);

I_2 := matrix([[1, 0], [0, 1]])

> evalm(M^2-M-2*I_2);

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

> seq(evalm(M^n),n=2..10);

matrix([[4, 3], [0, 1]]), matrix([[8, 9], [0, -1]])...

> N:=matrix([[2,-1],[1,0]]);

N := matrix([[2, -1], [1, 0]])

> charpoly(N,lambda);

lambda^2-2*lambda+1

> evalm(N^2-2*N+I_2);

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

> seq(evalm(N^n),n=2..10);

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

Exercice 26

> B:=1/2*matrix([[3,-1,1],[2,0,-2],[3,-3,1]]);

B := 1/2*matrix([[3, -1, 1], [2, 0, -2], [3, -3, 1]...

> Pass:=matrix([[1,1,0],[1,0,1],[0,1,1]]);

Pass := matrix([[1, 1, 0], [1, 0, 1], [0, 1, 1]])

> inv_pass:=inverse(Pass);

inv_pass := matrix([[1/2, 1/2, -1/2], [1/2, -1/2, 1...

> A:=evalm(inv_pass&*B&*Pass);

A := matrix([[1, 0, 0], [0, 2, 0], [0, 0, -1]])

Evidemment, on ne fait pascomme ça ...

> evalm(B&*vector([1,1,0]));

vector([1, 1, 0])

Ce qui signifie B.f1=f1 ...

> evalm(B&*vector([1,0,1]));

vector([2, 0, 2])

B.f2=2f2

> evalm(B&*vector([0,1,1]));

vector([0, -1, -1])

B.f3=-f3 . On obtient bien la même matrice diagonale .

> seq(evalm(Pass&*A^n&*inv_pass),n=2..5);

matrix([[5/2, -3/2, 3/2], [0, 1, 0], [3/2, -3/2, 5/...

Vérifions ...

> seq(evalm(B^n),n=2..5);

matrix([[5/2, -3/2, 3/2], [0, 1, 0], [3/2, -3/2, 5/...