• Aucun résultat trouvé

O PÉRATIONS SUR LES MATRICES

N/A
N/A
Protected

Academic year: 2021

Partager "O PÉRATIONS SUR LES MATRICES "

Copied!
3
0
0

Texte intégral

(1)

O PÉRATIONS SUR LES MATRICES

T P 5 - SIM-NUM-4

1 Objectif

OBJECTIF :

L’objectif de ce tp est d’effectuer les opéra- tions de bases de l’algèbre linéaire :

• comment effectuer le produit de deux matrices ?

• comment inverser une matrice ?

• comment résoudre un système de Cramer ?

• comment calculer un déterminant ?

Nous verrons que ces opérations de bases, simples à programmer, ont des temps d’exécution longs par rapport aux commandes implantées dans les bibliothèques.

Il s’agit ici:

d’écrire sous Python , le programme permettant d’effectuer le produit de deux matrices

d’écrire sous Python , le programme permettant d’inverser une matrice

de découvrir Scilab en écrivant les deux programmes précédant sous Scilab

2 Syntaxe Python et Scilab

A retrouverici.

2.1 Vecteurs

Description Python Scilab

Vecteur ligne v=array([1, 2, 3]) v=[1, 2, 3] ou [1 2 3]

Vecteur colonne v=array([[1],[2],[3]])

v=array([1, 2, 3])[:,newaxis] v=[1 ; 2 ; 3]

Tableau à 2 dimensions M=array([[1,2,3],[4,5,6]]) M=[1, 2, 3 ; 4, 5, 6]

Accéder à un élément v[0], M[0,1] v(1), M(1,2)

Accéder au dernier élément, et l’avant dernier v[-1], v[-2] v($), v($-1)

Dimensions d’un tableau M.shape size(M)

Extraire la 2ème ligne ou 2ème colonne M[1,:] ou M[:,1] M(2,:) ou M(:,2) Extraire une portion de tableau (2 premières colonnes) M[:,0:2] M(:,1:2) Extraire des éléments d’un tableau par leurs indices M[0,(2,1)] M([1],[3,2])

Séquence équirépartie d’entiers range(1,11) 1:10

Séquence équirépartie quelconque arange(0,10.1,0.1) 0:0.1:10

Tableau de zéros zeros((2,3),float) zeros(2,3)

Tableau de uns ones((2,3),float) ones(2,3)

Matrice identité eye(3,3) eye(3,3)

Copier un tableau dans une autre variable w=v.copy() w=v

Multiplication élément par élément v*w v.*w

Maximum et minimum d’un tableau v.max(0), v.min(0) max(v), min(v)

Indice i du maximum v.argmax(0) [m,i] = max(v)

LYCÉECARNOT(DIJON) 1/3 INFO-MPSI-1 - TP 5 - SIM-NUM-4

(2)

2.2 Matrices

Description Python Scilab

Produit matriciel dot(v,w) v*w

Transposée M.transpose() M’

Résolution de système matriciel M.X=Y linalg.solve(M,Y) X=MY

Produit scalaire de deux vecteurs vdot(v,w) v’*w

Produit vectoriel cross(v,w) cross(v,w)

Déterminant linalg.det(M) det(M)

Inverse linalg.inv(M) inv(M)

Valeurs propres linalg.eig(M)[0] spec(M)

Vecteurs propres linalg.eig(M)[1] [v,l] = spec

3 Opérations sur les matrices

3.1 Produit matriciel

Soient un couple de deux matrices (A,B) ∈ Mm,n(R)× Mn,o(R). On note P∈ Mm,o(R) le résultat du produit à droite de A par B (P= A.B).

RAPPELLe coefficient pi,jde la matrice P est donné par la formule suivante : [P]i,j = pi,j =

n

X

k=1

ai,k.bk,j (1)

Q - 1 : A partir de la formule (1), construire le programme Prodmat ayant pour argument deux matrices A et B et comme résultat, le produit A.B .

REMARQUE: On récupérera la taille des matrices grâce à la commande .shape et on veillera à leur compatibilité vis-à-vis du produit.

Q - 2 : Tester votre programme avec la matrice triangulaire supérieure suivante A et son inverse B :

A=













1 2 3

0 4 5

0 0 6













, de déterminant 24, donc inversible

REMARQUE:Pour obtenir B rapidement, on utilisera la commande np.linalg.inv . 3.2 Calcul de l’inverse d’une matrice (inversible. . .)

En effectuant sur une matrice n×n A et la matrice identité In, les mêmes opérations élémentaires sur les lignes et les colonnes telles que

LYCÉECARNOT(DIJON) 2/3 INFO-MPSI-1 - TP 5 - SIM-NUM-4

(3)

• on multiplie tous les termes d’une ligne ou d’une colonne par une constantenon nulle: Li ←λ.Li ou Ci←λ.Ci avec λ,0

• on ajoute à une ligne (resp. une colonne), une autre ligne (resp. colonne) de la matrice : LiLi+λ.Lj ou CiCi+λ.Cj

afin de rendre la première matrice A égale à la matrice identité, on obtient à partir de la matrice identité de départ, la matrice inverse de A.

Entrées : A copier la matrice MA

déterminer la taille n,m de M vérifier que la matrice est carrée construire la matrice identité In pour i de 1 à n faire

Rechercher le pivot k sous le coefficient Mi,i

si Mk,i=0 alors

stop, la matrice n’est pas inversible si k,i alors

inverser ligne i et ligne k

éliminer les coefficients sous le coefficient Mi,i pour k de i+1 à n faire

LkLkMk,i Mi,i.Li

imposer Mi,i=1 pour i de 1 à n faire

Li =Li/Mi,i

éliminer tous les coefficients au dessus de Mi,i pour i de n à 2 faire

pour k de 1 à i1 faire LkLkMk,i.Li

Sorties : In

Q - 3 : Mettre alors en place un programme permettant d’obtenir la matrice inverse de A par opérations élémentaires sur les lignes, avec permutations de colonnes pour rechercher le pivots de plus grand poids.

Q - 4 : Tester votre programme avec les deux programmes précédents sur les matrices suivantes :













2. −4. 4.

2. 0. 1.

4. 1. 1.











 et



















1. 2. 3. 4.

0. 5. 6. 7.

0. 0. 8. 9.

−10. 0. 0. 10.

















 REMARQUE:Ne pas oublier les points en entrant les valeurs. . .

3.3 Résolution d’un système de Carmer

La résolution d’un système de Cramer a été programmée avec Scilab . Q - 5 : Traduire en Python le programme Scilab .

Q - 6 : A partir des tableaux de la partie 2, traduire les programmes des parties 3.1 et 3.2 dans Scilab .

LYCÉECARNOT(DIJON) 3/3 INFO-MPSI-1 - TP 5 - SIM-NUM-4

Références

Documents relatifs

(Même question possible avec d’autres petites matrices carrées explicites).

[r]

Ordre minimum des boucles de Moufang commutatives de classe 2 (Resp.. Toute utilisation commerciale ou impression sys- tématique est constitutive d’une

Dans un premier temps, nous traitons le cas d'une matrice non inversible, et dans un deuxième temps, nous proposons une manière de perturber une matrice afin d'améliorer

Calculer le d´ eterminant de A, puis conclure quant ` a son inversibilit´

Le rang d’une matrice A ∈ M n,p ( K ) est le plus grand entier r tel qu’il existe un mineur d’ordre r extrait de A

La place consacrée au calcul mental et au calcul en ligne dans les temps d’apprentissage et d’entraînement est plus importante que celle accordée au calcul posé.. Les

Pour déterminer une base orthonormée d’un sous-espace vectoriel muni du produit scalaire euclidien il suffit d’utiliser la fonction QR , accessible dans le sous-menu Avancé du