[email protected]) TP6 : Algèbre linéaire - lpsm.paris · (3) (4) (5) (2) (1) Pensez à...

13
(1) (1) CF2- Calcul Formel / 2010-2011 [email protected] (TP rédigé d'après C. Armana [email protected]) TP6 : Algèbre linéaire Rappel : les documents de TP, sujets et corrections de devoir sont disponibles sur : http://www.proba. jussieu.fr/pageperso/eric But du TP6 : Nous allons utiliser Maple pour faire de l'algèbre linéaire dans : vecteurs, bases, matrices, systèmes linéaires,... Et surtout, n'oubliez pas de vous (et de me) poser des questions ! La plupart des commandes de Maple qui permettent de faire de l'algèbre linéaire se trouvent dans la librairie LinearAlgebra : Remarque : il existe aussi la librairie linalg, utilisée dans les versions précédentes de Maple, mais qui est obsolète dans cette version (bien qu'existant toujours). restart: with(LinearAlgebra);

Transcript of [email protected]) TP6 : Algèbre linéaire - lpsm.paris · (3) (4) (5) (2) (1) Pensez à...

(1)(1)

CF2- Calcul Formel / 2010-2011

[email protected]

(TP rédigé d'après C. [email protected])

TP6 : Algèbre linéaire

Rappel : les documents de TP, sujets et corrections de devoir sont disponibles sur : http://www.proba.jussieu.fr/pageperso/eric

But du TP6 :Nous allons utiliser Maple pour faire de l'algèbre linéaire dans : vecteurs, bases, matrices, systèmes linéaires,...

Et surtout, n'oubliez pas de vous (et de me) poser des questions !

La plupart des commandes de Maple qui permettent de faire de l'algèbre linéaire se trouvent dans la librairie LinearAlgebra :

Remarque : il existe aussi la librairie linalg, utilisée dans les versions précédentes de Maple, mais qui est obsolète dans cette version (bien qu'existant toujours).

restart: with(LinearAlgebra);

(3)(3)

(4)(4)

(5)(5)

(2)(2)

(1)(1)

Pensez à recharger la librairie après chaque !

1. Les vecteurs

1.1 Construction d'un vecteurLa commande permet de créer un vecteur. Voici quelques exemples :

Vector([1,4,6]);whattype(%);Vector[row]([5,6,7]);

whattype(%);

Vector

Vector

Vector(5,i->i^2);

RandomVector(4);

Afficher le contenu d'un vecteur :v:=Vector([7,8,9,10]);

(9)(9)

(7)(7)

(5)(5)

(6)(6)

(8)(8)

(1)(1)

v;

Extraire un coefficient d'un vecteur :v[2]; # deuxième coefficient

8

Modifier le contenu d'un vecteurPar affectation des coefficients :

v[1]:=0;v;

Copier un vecteurDe subtiles règles d'évaluation dans Maple amènent le problème suivant lorsqu'on souhaite copier un vecteur dans une autre variable :

w:=v;

v[1]:=2;v;w;

(9)(9)

(12)(12)

(5)(5)

(10)(10)

(11)(11)

(1)(1)

Toute modification de v entraine une modification de sa copie w ! Pour y remédier, on utilise la commande copy :

w:=Copy(v);

v[1]:=3;v;w;

1.2 Quelques opérations sur les vecteursSomme de deux vecteurs :

u:=Vector([-7,4,7,3]);

u+v;

(14)(14)

(16)(16)

(1)(1)

(13)(13)

(9)(9)

(5)(5)

(17)(17)

(15)(15)

(19)(19)

(18)(18)

Multiplication d'un vecteur par un scalaire (réel) :v*Pi;

Taille d'un vecteur (nombre de composantes) :Dimension(u);

4

Tester une égalité de deux vecteurs :Equal(u,v);

false

Produit scalaire de deux vecteurs :Vector([1,1]).Vector([2,1]);

3

Ou bien :DotProduct(Vector([1,1]),Vector([2,1]));

3

Produit vectoriel de deux vecteurs :CrossProduct(Vector([1,1,0]),Vector([1,0,1]));

1.3 Opérations avancéesTrouver une base du sous-espace vectoriel engendré par un ensemble de vecteurs :

u:=Vector([1,0,0]);

v:=Vector([1,1,0]);

w:=Vector([1,0,1]);

t:=Vector([0,0,2]);

(9)(9)

(20)(20)

(21)(21)

(5)(5)

(22)(22)

(23)(23)

(1)(1)

(19)(19)

(24)(24)

Basis( { u,v,w,t } );

2. Les matrices

2.1 Construction d'une matriceLa commande permet de créer une matrice. Voici quelques exemples :

Matrix([[1,2,3],[4,5,6],[7,8,9]]);

whattype(%);

Matrix

Matrix(3,3,[1,2,3,4,5,6,7,8,9]);

Matrix(5,3,(i,j)->i+j);

A:=RandomMatrix(2,3);

(27)(27)

(1)(1)

(26)(26)

(25)(25)

(9)(9)

(28)(28)

(5)(5)

(19)(19)

(29)(29)

Il existe beaucoup d'autres fonctions permettant de créer des matrices. Consultez les commandes fournies dans LinearAlgebra pour en savoir plus : par exemple DiagonalMatrix, BandMatrix,...Afficher le contenu d'une matrice

A;

Extraire un coefficient d'une matriceA[2,3]; # deuxième ligne, troisième colonne

Modifier d'une matricePar affectation des coefficients :

A[1,1]:=Pi;A;

Copier une matriceDe subtiles règles d'évaluation dans Maple amènent le problème suivant lorsqu'on souhaite copier une matrice dans une autre variable :

B:=A;

A[1,1]:=1;A;B;

Toute modification de A entraine une modification de sa copie B ! Pour y remédier, on utilise la commande Copy :

B:=Copy(A);

A[1,1]:=999;A;B;

(35)(35)

(31)(31)

(1)(1)

(36)(36)

(9)(9)

(34)(34)

(5)(5)

(33)(33)

(19)(19)

(30)(30)

(29)(29)

(32)(32)

2.2 Quelques opérations sur les matricesSomme de deux matrices :

B:=Matrix(2,3,[1$6]);

A+B;

Multiplication d'une matrice par un scalaire (réel) :A*x;

Multiplication de deux matrices (produit matriciel) :M:=Matrix(2,2,[a1,b1,c1,d1]);

N:=Matrix(2,2,[a2,b2,c2,d2]);

M.N;

Multiplication d'une matrice par un vecteur :A.Vector([1,0,0]);

Taille d'une matrice : nombre de lignes, nombres de colonnesRowDimension(A) ; ColumnDimension(A);

2

(9)(9)

(36)(36)

(5)(5)

(42)(42)

(37)(37)

(39)(39)

(40)(40)

(1)(1)

(19)(19)

(29)(29)

(38)(38)

(41)(41)

3

Tester une égalité de deux matrices :Equal(A,B);

false

A := RandomMatrix(4, 4);DeleteRow(A, 1);

DeleteColumn(A, 2 .. 3);

ColumnOperation(A, [1, 2]);

RowOperation(A, [3, 4]);

A := Matrix(3, 3, [1, 2, 3, 4, 5, 6, 7, 8, 9]);

RowOperation(A, [1, 2], 1);

(45)(45)

(44)(44)

(49)(49)

(42)(42)

(1)(1)

(36)(36)

(9)(9)

(48)(48)

(47)(47)

(46)(46)

(5)(5)

(19)(19)

(29)(29)

(43)(43)

RowOperation(A, [1, 2], -2);

ColumnOperation(A, [1, 3], -2);

RowOperation(A, 2, -1);

ColumnOperation(A, 1, 1/100);

2.3 Opérations avancéesTrace d'une matrice (somme des coefficients de la première diagonale) :

Trace(M);

Transposée d'une matrice :Transpose(A);

Calcul de l'inverse d'une matrice (carrée inversible) :A:=Matrix(3,3,[7/10,3/5,1/10,-3/5,11/5,1/5,-3/10,3/5,11/10]):

(49)(49)

(55)(55)

(42)(42)

(51)(51)

(1)(1)

(50)(50)

(53)(53)

(36)(36)

(9)(9)

(54)(54)

(5)(5)

(19)(19)

(52)(52)

(29)(29)

MatrixInverse(A);

B := 1/A;

Calcul des valeurs propres d'une matrice carrée : Eigenvalues(A);

Calcul des vecteurs propres d'une matrice carrée :Eigenvectors(A);

Maple renvoie ici un premier vecteur constitué des valeurs propres de A, suivi d'une matrice dont les vecteurs colonnes sont les vecteurs propres correspondants.Trouver une base du noyau de l'application linéaire associée à une matrice :

NullSpace(A);

B:=Matrix(2,2,[1,2,1/2,1]);

NullSpace(B);

(60)(60)

(56)(56)

(49)(49)

(58)(58)

(55)(55)

(42)(42)

(61)(61)

(1)(1)

(59)(59)

(36)(36)

(9)(9)

(57)(57)

(5)(5)

(19)(19)

(29)(29)

Que signifient les réponses de Maple ?Trouver une base de l'image de l'application linéaire associée à une matrice :( = une base du sous-espace vectoriel engendré par les vecteurs colonnes de la matrice)

ColumnSpace(B);

Rang de la matrice (= dimension de l'image)Rank(B);

1

Déterminant d'une matrice carrée (on rappelle qu'une matrice carrée est inversible si et seulement si sondéterminant est non nul) :

Determinant(A);2

3. Les systèmes linéaires

3.1 Systèmes linéaires donnés par des équationsOn utilise . Par exemple, pour le système : | | |

solve( {x+y+z=3 , x+2*y-z=-1 , -x+y+2*z=0} , {x,y,z} );

3.2 Systèmes linéaires donnés par une matriceOn utilise . Par exemple, le système précédent correspond à A.X=B, où A est la matrice :

A:=Matrix( [ [1,1,1], [1,2,-1], [-1,1,2] ] );

et B le vecteur colonne :B:=Vector([3,-1,0]);

(9)(9)

(36)(36)

(64)(64)

(5)(5)

(63)(63)

(65)(65)

(49)(49)

(62)(62)

(55)(55)

(42)(42)

(1)(1)

(19)(19)

(29)(29)

On résout le système par :LinearSolve(A,B);

3.3 Le pivot de GaussMaple peut effectuer le pivot de Gauss sur une matrice avec la commande GaussianElimination. Le résultat est une matrice échelonnée mais non réduite.

C:=Matrix(A);

C:=GaussianElimination(A);

Enfin, la commande , appliquée à la matrice échelonnée, permet de trouver le(s) solution(s) :

with(Student[NumericalAnalysis]):BackSubstitution(C,B);

On a ici besoin d'une autre librairie servant au calcul numérique matriciel .