Matrices
> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
Exercice 9
> A:=matrix([[1,1],[1,-1]]);
> rank(A);
> inverse(A);
Exercice 10
> B:=matrix([[1,1,1],[0,-1,1],[1,0,1]]);
> rank(B);
> inv_B:=inverse(B);
> 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 );
Exercice 14
> A:=matrix([[0,1,0],[0,0,1],[1,0,0]]);
> rank(A);
> inverse(A);
> B:=matrix([[1,0,1],[2,-1,2],[-1,-1,-1]]);
> rank(B);
> C:=matrix([[1,1,1,2],[1,1,1,2],[1,1,1,2]]);
> rank(C);
> E:=matrix([[-1,1,2,3,0],[1,2,3,4,1],[3,2,1,0,1]]);
> rank(E);
> F:=matrix([[0,1,1],[1,0,1],[1,1,0]]);
> rank(F);
> inverse(F);
> G:=matrix([[1,a,b],[b,1,a],[a,b,1]]);
> rank(G);
Attention, ce n'est pas si simple ...
> inverse(G);
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]]);
> rank(H);
> inverse(H);
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;
> M_3:=mat_n(3);
> M_3i:=inverse(M_3);
> multiply(M_3i,M_3);
> M_4:=mat_n(4),inverse(M_4);
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]]);
> inverse(A);
Exercice 23
> A:=matrix([[2,a,b],[0,2,c],[0,0,2]]);
> seq(evalm(A^n),n=2..5);
> N:=matrix([[0,a,b],[0,0,c],[0,0,0]]);
> evalm(N^2),evalm(N^3);
Exercice 24
> que_des_uns:=n-> matrix(n,n,(i,j)->1);
> que_des_uns(3);
> seq(evalm(que_des_uns(2)^n),n=2..6);
> seq(evalm(que_des_uns(3)^n),n=2..6);
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(3);
> seq(evalm(que_des_uns_triangle(2)^n),n=2..6);
> seq(evalm(que_des_uns_triangle(3)^n),n=2..6);
> seq(evalm(que_des_uns_triangle(4)^n),n=2..6);
Formule ?
Exercice 25
> M:=matrix([[2,3],[0,-1]]);
> I_2:=matrix([[1,0],[0,1]]);
> evalm(M^2-M-2*I_2);
> seq(evalm(M^n),n=2..10);
> N:=matrix([[2,-1],[1,0]]);
> charpoly(N,lambda);
> evalm(N^2-2*N+I_2);
> seq(evalm(N^n),n=2..10);
Exercice 26
> B:=1/2*matrix([[3,-1,1],[2,0,-2],[3,-3,1]]);
> Pass:=matrix([[1,1,0],[1,0,1],[0,1,1]]);
> inv_pass:=inverse(Pass);
> A:=evalm(inv_pass&*B&*Pass);
Evidemment, on ne fait pascomme ça ...
> evalm(B&*vector([1,1,0]));
Ce qui signifie B.f1=f1 ...
> evalm(B&*vector([1,0,1]));
B.f2=2f2
> evalm(B&*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);
Vérifions ...
> seq(evalm(B^n),n=2..5);