• Aucun résultat trouvé

Modélisation - Calcul matriciel

N/A
N/A
Protected

Academic year: 2022

Partager "Modélisation - Calcul matriciel"

Copied!
37
0
0

Texte intégral

(1)

Mathématiques appliquées à l’informatique 6 – Modélisation – Calcul matriciel

Bertrand LIAUDET

SOMMAIRE

SOMMAIRE 1

MODELISATION – MATRICE 3

Objectifs 3

TP : une société, 2 départements, 3 types de produit, 2 fournisseurs 3

Etape 1 => cours : 1-1 à 1-3 3

Etape 2 3

Etape 3 => cours : 1-4 et 1-6 3

Etape 4 3

Etape 5 => cours : 1-7 et 1-8 4

Etape 6 4

1 - Matrices - Bases et premières opérations 5

1 - Rappels de formalisme et de vocabulaire mathématique 5

2 - Définitions 5

3 - Concrètement 6

4 - Transposition 7

5 - Matrices notables 8

6 – Matrices notables : les vecteurs : matrices à une dimension. 10

7 - Calcul de base 11

Exercices de base 12

2 - Matrices - Multiplication de matrices – Vecteur et vecteur somme. 13

1 - Multiplication de matrices 13

2 – Les vecteurs somme 17

Exercices de multiplication 17

TP : Programmation et applications 19

1 - Programmation python 19

2 - Programmation numpy 20

3 - TP 2 21

4 - TP3 : variante 22

3 - Résolution d’un système d’équations par la méthode du pivot de Gauss 23

(2)

Théorème n°1 : AX=B 23 Résolution d’un système d’équations : méthode du pivot de Gauss – ici – ici 23

Exercices 24

3 - Résolution d’un système d’équations par l’inversion d’une matrice 25

Théorème n°2 : X = A-1 × B 25

Inverse d’une matrice, forcément carrée 25

Propriétés 26

Formule générale de l’inverse d’une matrice 28

Calcul de l’inverse d’une matrice quelconque : méthode du pivot de Gauss 29

Exercices : gammes d’inversion avec ou sans python 32

Exercices : programmation 34

Exercices : gammes de systèmes d’équations sous forme matricielle 36

Exercices appliqués 36

Références 37

Livres 37

MOOC 37

Dernière édition : juin 2017

(3)

MODELISATION – MATRICE

Objectifs

1. Remplissage des tableaux à 2 dimensions.

2. Calculs sur des tableaux à 2 dimensions : Addition, Multiplication par un réel, Multiplication de matrice.

3. Résolution de système d’équations par l’utilisation de matrice inverse : inversion de matrice.

4. Utilisation de bibliothèques : numpy.

5. Manipulation d’algorithmes : multiplication et inversion de matrice.

TP : une société, 2 départements, 3 types de produit, 2 fournisseurs

Etape 1 => cours : 1-1 à 1-3

Une société possède 2 départements qui utilisent 3 types de produits : des portables, des tablettes et des mobiles.

Dans le premier département, on a 15 portables, 10 tablettes et 20 mobiles. Dans le second respectivement 20, 12 et 22.

Ø Associer la situation à une matrice A.

Etape 2

La société veut augmenter ses équipements à raison de +5 portables, +13 tablettes et +2 mobiles pour le premier département. Et dans le second respectivement +7, +5 et +3.

Ø Associer cette augmentation à une autre matrice B.

Nota bene : on s’intéresse à l’augmentation, pas à son résultat.

Etape 3 => cours : 1-4 et 1-6

On veut connaître le nouveau nombre de produits par département.

Ø Quelles opérations faut-il faire ?

Associer le résultat final à une matrice C.

Etape 4

Pour acheter les produits, portables, tablettes et mobiles, on a le choix entre deux fournisseurs.

Le premier vend les produits à 600, 180 et 60 euros. Le second à 550, 220 et 50.

(4)

Etape 5 => cours : 1-7 et 1-8

On veut savoir quel est le fournisseur le plus intéressant (le moins cher) pour l’augmentation d’équipement envisagée, et cela pour chaque département.

Ø Quelles opérations faut-il faire ? Associer la situation à une matrice E.

Etape 6

On décide de ne travailler qu’avec un seul fournisseur.

On choisit le moins cher. Lequel est-ce et combien cela va-t-il nous coûter ? Il faut produire un tableau avec la somme des dépenses par fournisseur.

(5)

1 - Matrices - Bases et premières opérations

1 - Rappels de formalisme et de vocabulaire mathématique Un ensemble se représente ainsi : E = {e1, e2, e3}

Un n-uplet ou « tuple » se représente ainsi : T = (e1, e2, e3)

La différence est que les éléments sont ordonnés dans le tuple et pas dans l’ensemble : (e1, e2, e3) != (e3, e2, e1)

{e1, e2, e3} = {e3, e2, e1}

On peut mettre des « , » ou des « ; » entre deux éléments.

Un tuple à 2 éléments est un couple, à 3 éléments un triplet, à 4 un quadruplet, etc.

Un ensemble à 2 éléments est une paire, à 3 éléments un trio, à 4 un quartet, etc.

2 - Définitions Matrices

Une matrice est un tableau de valeurs à n lignes et p colonnes.

C’est un tableau rectangulaire c’est-à-dire un tableau à 2 dimensions.

Le couple (n, p) s’appelle la taille de la matrice, plus précisément, n×p est la taille de la matrice, c’est-à-dire le nombre d’éléments.

On note M n, p l’ensemble des matrices de taille n×p.

A ∈ M n, p veut dire que A est une matrice de taille n×p.

On note la matrice « A » ou « An, p » selon le besoin ou non de préciser la taille.

Coefficient ou élément de la matrice

Les éléments s’appellent aussi « coefficients » (on n’utilisera pas ce terme).

On note les éléments de la matrice « ai,j » avec i de 1 à n et j de 1 à p : a1,1 , a3,2 , etc.

ai,j désigne le coefficient (ou l’élément) de la ième ligne et jième colonne.

On écrit : An, p = (ai,j) ou encore A=(ai,j)

Chaque ligne est un tuple. Ligne 3 : (a3,1, a3,2, … , a3,p-1, a3,p).

Chaque colonne est un tuple. Colonne 3 : (a1,3, a2,3, … , an-1,3, an,3).

colonne 1 colonne j colonne p p colonnes

An,p =

𝑎1,1 ⋯ 𝑎1, 𝑗 ⋯ 𝑎1, 𝑝

⋮ ⋮ ⋮

𝑎𝑖, 1 ⋯ 𝑎𝑖, 𝑗 ⋯ 𝑎𝑖, 𝑝

⋮ ⋮ ⋮

𝑎𝑛, 1 ⋯ 𝑎𝑛, 𝑗 ⋯ 𝑎𝑛, 𝑝

< − − − − 𝑙𝑖𝑔𝑛𝑒 1

< − − − − − 𝑙𝑖𝑔𝑛𝑒 𝑖

< − − − − − 𝑙𝑖𝑔𝑛𝑒 𝑛

(6)

Usages

Les matrices sont utilisées pour résoudre des problèmes d’algèbres linéaires, particulièrement les systèmes linéaires. On verra ça un peu plus bas.

Elles sont aussi la base du modèle relationnel qui intervient en base de données.

Représentation en 2 dimensions

Graphiquement, on peut représenter les valeurs de la matrice en 2 dimensions : A =

1 2 3 4 5 6

Représentation en 1 dimension

Graphiquement, on peut représenter les valeurs de la matrice en 1 dimension : A = ( (1, 2), (3, 4), (5, 6) )

Notation et valeur des éléments a1,1 = 1

a3,2 = 6 3 - Concrètement

Une matrice, c’est un tableau à 2 dimensions : lignes et colonnes.

On peut interpréter le tableau en considérant chaque ligne comme un objet d’un ensemble et chaque colonne comme une caractéristique pour cette objet.

Par exemple : on se dote d’un tableau d’élèves avec leurs notes en math, python, C, SQL.

Math Python C SQL

Elève 1 12 10 12 15

Elève 2 10 9 0 14

Elève 3 9 13 15 18

Elève 4 13 12 10 8

Elève 5 8 12 14 11

Chaque ligne est un élève, un élément de l’ensemble des élèves.

Ce tableau peut se ranger dans une matrice (5x4) : A5,4

A5,4 =

12 10 12 15 10 9 0 14

9 13

8 13 12 12

15 18 10 8 14 11

Chaque ligne de la matrice, la 3ème par exemple : (9, 13, 15, 18), correspond à un élève avec ses notes. Ici l’élève 3.

Chaque colonne de la matrice, la 2ème par exemple : (10, 9, 13, 12, 12), corresponds à la liste des notes pour une matière donnée. Ici le python.

(7)

4 - Transposition

Transposer d'une matrice, c’est faire la faire pivoter à 90° de telle sorte que les lignes deviennent les colonnes et réciproquement

La transposée de An, p = (ai,j) c’est la matrice Bp,,n = (aj,i) On la note tA = t(ai,j) = (aj,i)

A3,2= 1 2 3 4

5 6 transposée : tA2,3= 1 3 5 2 4 6 B2,2= 1 2

3 4 transposée : tB2,2= 1 3 2 4

Concrètement

En reprenant le tableau des élèves, pour lequel chaque ligne est un élève :

Math Python C SQL

Elève 1 12 10 12 15

Elève 2 10 9 0 14

Elève 3 9 13 15 18

Elève 4 13 12 10 8

Elève 5 8 12 14 11

si on le transpose, on obtient :

Elève 1 Elève 2 Elève 3 Elève 4 Elève 5

Math 12 10 9 13 8

Python 10 9 13 12 12

C 9 0 15 10 14

SQL 13 14 18 8 11

Chaque ligne est désormais une matière avec sa liste de notes Ce tableau peut se ranger dans une matrice (4x5)

tA5,4 = A4,5 =

12 10 9 13 8 10 9 13 12 12

9 13 0

14 15 18 10

8 14 11

(8)

5 - Matrices notables Les matrices nulles

Soit An, p = (ai,j). Si pour tout i et j, ai,j = 0, alors A est une matrice nulle. On la note On, p.

O3,2 = 0 0 0 0 0 0

Les matrices carrées

Si n = p, on parle de matrice carrée d’ordre n (ou de taille n). An, n = An = (ai, j).

A2 = 1 2 0 −1

Dans une matrice carrée, la diagonale correspond à tous les éléments ai,i

Les matrice identité

Une matrice identité d’ordre n est une matrice carrée d’ordre n dont tous les éléments valent 0 sauf ceux de la diagonale qui valent 1. On la note In

On peut définir toutes les matrices identité ainsi : I = (ai,j ← i=j ?1 :0) I3 =

1 0 0 0 1 0 0 0 1 Les matrices diagonales

Une matrice diagonale d’ordre n est une matrice carrée d’ordre n dont tous les éléments valent 0 sauf ceux de la diagonale qui peuvent prendre n’importe quelle valeur.

On peut définir toutes les matrices diagonales ainsi : M = (ai,j ← i=j ? !=0 : 0).

Exemple : M =

4 0 0 0 −1 0 0 0 2

La matrice identité est une matrice diagonale.

Les matrices nulles carrées sont des matrices diagonales.

Les matrices triangulaire inférieure

Une matrice triangulaire inférieure est une matrice carrée dont tous les éléments au dessus de la diagonale valent 0.

On peut définir toutes les matrices triangulaires inférieures ainsi : M = (ai,j ← i<j ? 0 : !0) Exemple : M =

4 0 0

1 −1 0

−2 1 2

(9)

Les matrice triangulaire supérieure

Une matrice triangulaire supérieure est une matrice carrée dont tous les éléments au dessous de la diagonale valent 0.

On peut définir toutes les matrices triangulaires supérieures ainsi : M = (ai,j ← i>j ? 0 : !=0) Exemple : M =

4 1 −2 0 −1 1

0 0 2

Les matrices creuses

Une matrice creuse est une matrice qui ne contient que des 0 et des 1.

Une matrice creuse peut correspondre à un ensemble de caractéristique de colonnes qui soit des booléens.

Ou alors elle traduit l’existence ou non d’une relation entre des objets de deux ensembles, les uns étant mis en lignes et les autres en colonnes.

A4,5 =

1 0 0 0 1 0 1 1 0 1 1

1 0 1

1 1

0 0 1

1

Ø Exemple

On a 5 modèles de voiture et pour chaque modèle, des options, de 1 à 4, peuvent être présentes ou pas.

Option 1 Option 2 Option 3 Option 4

Modèle 1 1 1 1 1

Modèle 2 1 1 0 1

Modèle 3 0 1 0 1

Modèle 4 0 1 0 0

Modèle 5 0 1 0 1

(10)

6 – Matrices notables : les vecteurs : matrices à une dimension.

Les vecteurs ligne

Si n = 1, on parle de matrice ligne ou de vecteur ligne. A1, p = (a1, j).

A1, 3 = 1 −1 0

Un vecteur ligne est un tuple, ou tuple ligne.

Vecteur ligne d’une matrice à deux dimension Par exemple :

A5,4 =

12 10 12 15 10 9 0 14

9 13

8 13 12 12

15 18 10 8 14 11

La 2ème ligne de la matrice A5,4 peut se noter : Ai=2, 4 = (10 ; 9 ; 0 ;14 ) C’est un vecteur ligne, autrement dit un tuple.

Les vecteurs colonne

Si p = 1, on parle de matrice colonne ou de vecteur colonne. An, 1 = (ai, 1).

A3, 1 = 1

−1 0

Un vecteur colonne est un tuple, ou tuple colonne.

La 2ème colonne d’une matrice A3,2 peut se noter : A3, j=2

C’est un vecteur colonne, autrement dit un tuple Vecteur colonne d’une matrice à deux dimensions

Par exemple :

A5,4 =

12 10 12 15 10 9 0 14

9 13

8 13 12 12

15 18 10 8 14 11

La 3ème colonne de la matrice A5,4 peut se noter :

A5, j=3 = 12 150 10 14

C’est un vecteur colonne, autrement dit un tuple.

(11)

7 - Calcul de base Egalité

On ne peut comparer que les matrices de même taille : A, B ∈ M n, p

(A= B) ó pour tout i et j, ai,j = bi,j

Addition

On ne peut additionner ou soustraire que des matrices de même taille : A, B, C ∈ M n, p (A + B = C) ó pour tout i et j, ci,j = ai,j + bi,j

Opposé

-A est l’opposé de A

B=-A ó pour tout i et j, ai,j = - bi,j B=-A ó A+B=O

Soustraction A-B = A+(-B) Produit par un réel

On peut multiplier une matrice par un réel A = n*B ó pour tout i et j, ai,j = n * bi,j

Propriétés

A + O = A : élément neutre A+B = B+A : commutativité (A+B)+C = A+(B+C) : associativité

kA = Ak : commutativité de la multiplication d’un réel par une matrice

k(A+B) = kA+kB : distributivité de la multiplication d’un réel sur l’addition de matrices (k+l)A = kA + lA : distributivité de l’addition de réels sur la multiplication avec une matrice Ø exercice

Démontrez la dernière propriété.

(12)

Exercices de base Remplir les matrices

Ø 1 : Ecrire les matrices suivantes sous la forme d’un tableau de nombres : A= (ai, j) avec ai, j = i et A ∈ M 3, 3

B= (bi, j) avec bi, j = i-j et B ∈ M 3, 3

C= (ci, j) avec ci, j = max(i,j) et C ∈ M 3,4

D= (di, j) avec di, j = i * j et D ∈ M 4,3 Opérations élémentaires

Ø 2 : Soit A= 𝟏 𝟐 𝟑 −𝟏 Calculer A+A, -A, 3A

Déterminer la matrice B tel que A+B=I ?

Ø 3 : Soit A= −𝟏 𝟐 𝟑 𝟎

𝟓 −𝟔 et B=

𝟕 −𝟏

−𝟓 𝟐 𝟎 𝟒 Calculer A+B, 2A-B

Déterminer C et D tel que C + D = A et C – D = B : le plus simple est de trouver une formule générale pour chaque c1, j et chaque d1, j

Ø 4 : Matrices, définition, addition : ici

(13)

2 - Matrices - Multiplication de matrices – Vecteur et vecteur somme.

1 - Multiplication de matrices Définition

A × B est défini (ou possible) si le nombre de colonnes de A est égale au nombre de lignes de B Cn,p = An, q × Bq, p

On écrit aussi : C = AB CA,B = GDHIAA,D × 𝐵D,B

CA,B = Ai1B1j + Ai2B2j + … + AikBkj + … + AiqBqi

B j p

q

A q C p i

n n Cij, c’est le produit scalaire des vecteurs Ai=i, q et Bq, j=j

Sur le schéma, c’est la multiplication des éléments croisés avec les diagonales en pointillées.

Exemples

3*2 + 4*4 = 22 3*3 + 1*1 + 2*2 = 14 × B2,2= 1 2

3 4 × B3,4=

1 2 3 4 4 2 1 3 3 4 2 1 A3,2=

1 2 3 4 5 6

= C3,2=

7 10 15 22 23 34

A2,3= 1 2 3

3 1 2 = C2,4= 18 18 11 13 13 16 14 17

(14)

Propriétés intuitives

(AB)C = A(BC) : associativité de la multiplication

A(B+C) = AB + AC : distributivité de la multiplication sur l’addition (B+C)A = BA + CA : distributivité de la multiplication sur l’addition

k(AB) = (kA)B : associativité de la multiplication d’un réel et de la multiplication de 2 matrices A × O = O × A = O : élément nul

Elément neutre An, p × I p = An, p I n × An, p = An, p Ø exercice

Démontrez que An, p × I p = An, p

Somme des lignes : vecteur unité en colonne

Quand on multiplie une matrice par un « vecteur unité » en colonne on obtient la somme des lignes da la matrice. Un vecteur unité ne contient que des 1.

An, q × Nq, 1 = SLn, 1 × N= 1

1 A3,2=

1 2 3 4 5 6 =

3 7 11

Somme des colonnes : vecteur unité en ligne

Quand on multiplie un « vecteur unité » en ligne par une matrice, on obtient la somme des colonnes da la matrice.

N1, q × Aq, p = SC 1, p × A3,2=

1 2 3 4 5 6

N=(1, 1, 1) = (9 12)

Puissance d’une matrice carrée : An A × A = A2

A × A × A = A3 A × A × …. × A = An Par définition, A0 = I

(15)

Propriétés contre intuitives !!!

Ø A × B != B × A

Cas où AB existe mais pas BA

Par définition, Si AB existe, on a : An, q × Bq, p = Cn,p

Donc, le nombre de colonnes de A est égal au nombre de lignes de B : ici, c’est q.

Pour que Bq, p × An, q existe, il faut que p = n. Si p != n alors BA n’existe pas

Cas des matrices non carrées pour lesquelles AB et BA existent Si n=p, alors BA existe.

Par exemple : AB existe, avec An, q × Bq, n = Cn,n

Dans ce cas, BA = Bq, n × An, q = Dq,q Donc si n !=q alors C !=D

Cas des matrices carrées

Si n=q, A et B sont des matrices carrées.

On peut vérifier sur un exemple que AB != BA × 2 3

1 4 × 1 2 3 4 1 2

3 4 = 4 11

10 25 2 3

1 4 = 11 16 13 18

Ø Si A × B = O Alors A ou B ne sont pas forcément égales à O × 2 3

0 0 Par exemple : 0 1

0 2 = 0 0 0 0

(16)

Ø Si A × C = B × C alors A = B n’est pas forcément vrai.

Montrons d’abord que que si AC = BC alors A et B ont la même taille Par définition, Si AC existe, on a : Aa, q × Cq, c = Da,c

Par définition, Si BC existe, on a : Bb, q × Cq, c = Eb,c Si Da,c = Eb,c alors a = b donc A et B ont la même taille.

Contre exemple montrant que AC = BC et A != B L’exemple suivant montre que AC = BC et A != B × C= 2 3

0 0 × C= 2 3 0 0 A= 0 1

0 2 = 0 0

0 0 et B= 0 0

0 2 = 0 0 0 0

Remarque

On aura A = B si C est inversible ce qui sous-entend que C est une matrice carrée et donc que A et B sont des matrices carrées. On y reviendra.

Dans notre exemple, C n’est pas inversible car elle contient à tuple ligne à 0. On y reviendra.

(17)

2 – Les vecteurs somme Définition

Les vecteurs, ligne ou colonnes, remplis de 1 sont appelés vecteurs somme.

N3, 1 = 1 1

1 N1, 3 = 1 1 1

Les vecteurs somme sont utilisés pour calculer la somme des lignes ou des colonnes d’une matrice. On verra ça avec la multiplication de matrice.

Utilité

Les premier, N3, 1 est un « vecteur colonne somme par ligne ».

Les deuxième, N1, 3 est un « vecteur ligne somme par colonne».

Exercices de multiplication

1 : multiplications et observations des résultats Soit A= −𝟏 𝟐

𝟑 𝟎 𝟓 −𝟔

et B= 𝟎 𝟏 𝟐 𝟑

Calculer A×B, A×2B, 2(A×B). Que constatez-vous ? Calculer B×A

2 : multiplications C= 𝟑

𝟏

Calculer tous les produits de matrice possibles avec A, B et C (A et B de l’exercice précédent) 3 : multiplications

Soit A= −𝟏 𝟐 𝟑 𝟎

𝟓 −𝟔 B =

−𝟏 𝟐 𝟎

−𝟑 𝟎 −𝟐

𝟐 𝟏 𝟒 C = 𝟐 𝟑 𝟏 Calculer tous les produits de matrice possibles avec A, B et C.

série 4 : multiplication de matrices, propriété, matrice identité, puissance : ici – 19’37

(18)
(19)

TP : Programmation et applications

1 - Programmation python

Codage python : multiplication d’une matrice par un réel et addition de matrices Exemple python pour déclarer une matrice et afficher son contenu :

mat=[[1,2],[3,4],[5,6]]

nl=len(mat) nc=len(mat[0]) i=0

while(i<nl):

j=0;

while(j<nc):

print('[', mat[i][j], ']', end=' ') # le end pour éviter le passage à la ligne j+=1

print() # on passe à la ligne en fin de ligne ! i+=1

Codage python : multiplication de matrices

Le principe est que les matrices fournies en entrée des fonctions ne doivent pas être modifiées par la fonction.

Ø Coder en python une fonction d’affichage d’une matrice (celle ci-dessus).

Ø Coder en python une fonction de multiplication d’une matrice par un réel.

Ø Coder en python une fonction d’addition de matrices.

Ø Coder en python une fonction de transposition d’une matrice.

Ø Coder en python une fonction de multiplication de matrices.

Application : le TP du début du cours

Refaire tout le TP en utilisant les fonctions codées.

(20)

2 - Programmation numpy

Codage numpy : bibliothèque python

Tester les étapes de l’exercice 1 (exercice « à la main) avec les fonctions numpy.

Numpy permet de déclarer des tableaux à deux dimensions.

from numpy import * A=array([

[10, 20], [30, 40]

], float); # le float permet de fixer le type, il est facultative print(A);

A partir de là, numpy propose des fonctions « add » et « dot » qui font l’addition et la multiplication de matrice

C=add(A,B); # addition de matrices ! print(C);

C=dot(A,B); # multiplication de matrices ! print(C);

Quelques sources numpy : ici et là Application : le TP du début du cours

Refaire tout le TP en utilisant les fonctions codées.

(21)

3 - TP 2

Un fabriquant de matériel électronique fabrique 4 types d’objet : O1, O2, O3 et O4.

Chaque objet est constitué avec 3 composants C1, C2 et C3 à raison de :

• 2 C1 et 4 C3 pour O1,

• 6 C1, 2 C2 et 6 C3 pour O2,

• 3 C1, 6 C2 et 3 C3 pour O3,

• 3 C2 et 5 C3 pour O4.

1) Définir et remplir la matrice A correspondant à la situation, les lignes correspondant aux types d’objet.

2) Définir la matrice B tel qu’un produit de matrice à définir entre A et B donne le nombre total de composants par objet.

Les masses et prix unitaires des composants sont données dans le tableau suivant :

C1 C2 C3

Masse (en g) 1 0,8 0,9

Prix (en €) 15 5 3

On note C la matrice correspondante.

3) Définir et remplir la matrice C.

4) Calculer C×A. Qu’en pensez-vous ?

5) Transposer A et calculer D = C × tA. Que représentent les lignes de D ? 6) Transposer D. Que représentent alors les lignes de tD ?

On peut faire les exercices à la main ou avec les fonctions python qu’on a codé ou avec les fonction numpy.

(22)

4 - TP3 : variante

Un constructeur de voitures produits 4 types de voitures V1, V2, V3 et V4 dans 3 usines U1, U2 et U3.

En milliers, U1 produit par mois 3 V1, 2 V2, 5 V3, 3 V4, U2 et U3 respectivement (5, 4, 15, 5) et (12, 3, 3, 6)

1) Définir et remplir la matrice A correspondant à la situation, les lignes correspondant au usines.

2) Définir la matrice B tel qu’un produit de matrice à définir entre A et B donne le nombre total de voitures produites chaque mois par chaque usine.

Les masses et prix unitaires des véhicules sont données dans le tableau suivant :

V1 V2 V3 V4

Masse (en tonne) 1 0,8 0,9 1,2

Prix (en k€) 16 20 25 22

On note C la matrice correspondante.

3) Définir et remplir la matrice C.

4) Calculer C×A. Qu’en pensez-vous ?

5) Transposer A et calculer D = C × tA. Que représentent les lignes de D ? 6) Transposer D. Que représentent alors les lignes de tD ?

On peut faire les exercices à la main ou avec les fonctions python qu’on a codé ou avec les fonction numpy.

(23)

3 - Résolution d’un système d’équations par la méthode du pivot de Gauss

Matrice et système d’équations : un exemple Soit le système d’équations suivant : 2x + 3y = 15

3x + 4y = 12

Il peut s’écrire sous forme matricielle : A × X = B Avec A = 2 3

3 4 X = 𝑥

𝑦 B = 15 12 A × X = B peut donc s’écrire :

On a donc : × X= 𝑥 𝑦 A = 2 3

3 4 = 2𝑥 + 3𝑦

3𝑥 + 4𝑦 = B = 15

12 c’est-à-dire : Théorème n°1 : AX=B

Un système de n équations à n inconnus peut s’écrire sous la forme matricielle AX=B.

Ø X est un vecteur colonne contenant toutes les n inconnus de l’équation.

Ø A est une matrice carrée d’ordre n. Elle contient les coefficients des n équations.

Ø B est un vecteur colonne contenant les n résultats des n équations.

Résolution d’un système d’équations : méthode du pivot de Gauss – ici – ici Principes de la méthode

Pour résoudre le système, on peut utiliser la méthode du « pivot » de Gauss : l’objectif est d’obtenir un système avec une matrice triangulaire supérieure.

Ø Exemple avec un système à 3 équations :

On numérote les 3 équations : L1, L2 et L3 (L pour « ligne », correspondant aux lignes des matrices) :

L1 : x + 3y + 4z = 50 L2 : 3x + 5y - 4z = 2 L3 : 4x + 7y – 2z = 31

Ø L’objectif est d’obtenir un système avec une matrice triangulaire supérieure : L1 : x + a2y + a3z = a

L2 : 0x + y + b3z = b L3 : 0x + 0y + c3z = c Une fois cela atteint, on connaît z.

Ensuite on remonte vers y, puis vers x.

(24)

Etapes de la méthode

Ø On commence par la colonne des x.

L’objectif est d’avoir 1 x en première ligne (sur la diagonale), et 0 partout en dessous.

On ramène la première ligne à 1 seule x : on divise l’équation par le nombre de x.

Pour chaque ligne sous la diagonale, on fait une combinaison linéaire avec la ligne de la diagonale pour supprimer le x.

L1 ß L1 / 1 L2 ß L2 – 3L1 L3 ß L3 – 4L1 Ce qui donne :

L1 : x + 3y + 4z = 50

L2 : 3x-3x +5y-9y - 4z-12z = 2-150 ó 0x - 4y - 16z = -148 L3 : 4x-4x + 7y-12y – 2z-16z = 31-200 ó 0x - 5y - 18z = -169 Ø On continue avec les autres colonnes, en partant de la diagonale

L2 ß L2 / -4 L3 ß L3 + 5L2 Ce qui donne :

L1 : x + 3y + 4z = 50

L2 : 0x - 4y /-4 - 16z/-4 = -148/-4 ó 0x + y + 4z = 37 L3 : 0x - 5y+5y - 18z+20z = -169+185 ó 0x + 0y + 2z = 16 Ø A partir de là, on a un système trivial à résoudre :

L3 : z = 8 L2 : y = 5 L1 : x = 3 Ø Vérification :

L1 : 3 + 3*5 + 4*8 = 50 L2 : 3*3 + 5*5 – 4*8 = 2 L3 : 4*3 + 7*5 – 2*8 = 31 Exercices

Résoudre les 4 systèmes suivants en appliquant la méthode du pivot de Gauss :

1 : 2 : 3 : 4 :

2x -3y = 5 7x + 16y = 31 5x – 3z = 4 -4x +y + 0,1z = -1

-3x + 5y = -2 5x + 12y = 25 3x + 4y + z = 2 11x -3y -0,2z = 1

x – y – z = 3 -6x + 2y + 0,1z = 4

(25)

3 - Résolution d’un système d’équations par l’inversion d’une matrice

Théorème n°2 : X = A-1× B

On vient de voir que (théorème n°1) :

Un système de n équations à n inconnus peut s’écrire sous la forme matricielle AX=B.

Ø X est un vecteur colonne contenant toutes les n inconnus de l’équation.

Ø A est une matrice carrée d’ordre n. Elle contient les coefficients des n équations.

Ø B est un vecteur colonne contenant les n résultats des n équations.

Si A est inversible, alors ce système possède une solution unique : X = A-1 × B

A-1 c’est l’inverse de A.

Pour résoudre le système, il faut donc calculer l’inverse de A Inverse d’une matrice, forcément carrée

Définition

L’inverse d’une matrice A est noté : A-1 Par définition : A × A-1 = A-1 × A = I

A est forcément une matrice carrée ainsi que A-1

On note MI n l’ensemble des matrices inversibles d’ordre n.

Ø Démonstration graphique du fait que A est forcément carrée :

A-1 j n

q

A q I n i

n n

(26)

Exemple

Ø Matrice inversible Soit A= 1 2

3 0 et A-1= a b c d On a A A-1 = I = a + 2c b + 2d

3a 3b Donc :

a + 2c = 1 b + 2d = 0

3a = 0 3b = 1

ó

c = 1/2 d = −1/6

a = 0 b = 1/3

=> A-1= 0 1/3 1/2 −1/6

On vérifie que A × A-1 = I

× A-1= 0 1/3 1/2 −1/6 A= 1 2

3 0 = 0 + 2 ∗UV= 1 1 ∗UW+ 2 ∗ −UX= 0 3 ∗ 0 + 0 ∗UV = 0 3 ∗UW+ 0 ∗ −UX= 1 Ø Matrice non inversible

Soit A= 1 0

3 0 et A-1= a b c d On a A A-1 = I = a b

3a 3b Donc :

a = 1 b = 0 3a = 0 3b = 1

ó a = 0

a = 1 => impossible

Propriétés

Propriétés fondamentales

• A-1 est unique s’il existe.

• Une matrice n’a pas toujours de matrice inverse.

Ø exercice

Démontrez que A-1 est unique. On partira de l’hypothèse de deux inverses possibles, B1 et B2.

Propriétés intuitives

• (A-1)-1 = A

• I = I-1

• O-1 n’existe pas. En effet O × O-1 = O et pas un I.

Propriétés contre-intuitives

• Soit A, B ∈ MI n alors : (AB)-1 = B-1 × A-1 . Attention : l’ordre des termes est inversé.

(27)

Ø exercice

Démontrez que (AB)-1 = B-1 × A-1 Retour à une propriété intuitive

• On avait : si C ∈ Mn alors, si A × C = B × C alors A n’est pas forcément égale à B.

• On a maintenant, si C ∈ MI n alors, si A × C = B × C alors A = B Ø exercice

Démontrez cette propriété.

Propriété d’inversibilité Ø Diagonale non nulle

Une matrice triangulaire est inversible si ses éléments diagonaux sont tous non nuls et réciproquement.

Propriété de non inversibilité Ø Pas de ligne à 0

Si une ligne de A vaut 0, la matrice ne sera pas inversible car A × B contiendra toujours un 0 sur la diagonale.

Par exemple, avec des 1 partout dans la première matrice pour simplifier le calcul :

B =

𝑎 𝑏 𝑐 𝑑 𝑒 𝑓 𝑔 ℎ 𝑖

A = 1 1 1 1 1 1 0 0 0

× =

𝑎 + 𝑑 + 𝑔 𝑏 + 𝑒 + ℎ 𝑐 + 𝑓 + 𝑖 𝑎 + 𝑑 + 𝑔 𝑏 + 𝑒 + ℎ 𝑐 + 𝑓 + 𝑖

0 0 0

= A × B != I Quel que soit B, A × B ne peut pas valoir I.

Ø Pas de colonne à 0

Etant donné que A × A-1 = A-1 × A, si une colonne de A vaut 0, une colonne de A-1 × A vaudra 0 Par exemple, avec des 1 partout dans la première matrice pour simplifier le calcul :

A = 0 1 1

0 1 1 0 1 1

B =

𝑎 𝑏 𝑐 𝑑 𝑒 𝑓 𝑔 ℎ 𝑖 × =

0 𝑎 + 𝑏 + 𝑐 𝑎 + 𝑏 + 𝑐 0 𝑑 + 𝑒 + 𝑓 𝑑 + 𝑒 + 𝑓

0 𝑔 + ℎ + 𝑖 𝑔 + ℎ + 𝑖 = B × A != I Quel que soit B, B × A ne peut pas valoir I.

(28)

Interprétation des propriétés dans un système d’équation : Ø Diagonale non nulle

Si la diagonale est non nulle, c’est que chaque variable est présente au moins une fois et qu’aucune ligne ni colonne n’est complètement nulle.

Ø Pas de ligne à 0

Si une ligne est complètement nulle, c’est qu’il y moins d’équations que de variables : le système n’aura une infinité de solutions.

Par exemple : x+y=0

M= 1 1

0 0

C’est une équation de droite : on a une infinité de solutions Ø Pas de colonne à 0

Si une colonne est complètement nulle, c’est qu’il y plus d’équations que de variables. Dans ce cas, le système n’aura aucune solution.

Par exemple : x-y=0

x+y=2 x+2y=1

A = 1 −1 0 1 1 0 1 2 0

Le système n’a pas de solution :

Avec les 2 premières équations : x=y=1 Avec la troisième, ça ne marche pas.

Formule générale de l’inverse d’une matrice Matrice 2 × 2

Soit A = a b c d

Si ad = bc, A-1 n’existe pas

Si ad != bc, A-1 = 1/(ad-bc) d −b

−c a Matrice 3 × 3, matrice N × N

Pour les matrices 3 × 3 jusqu’aux matrice N × N, la formule est plus complexe.

Elle est de la forme : A-1 = (1/detA) × Mat

detA est le déterminant de A : il est fonction des coefficients de A.

Si detA = 0, alors A n’est pas inversible.

(29)

Calcul de l’inverse d’une matrice quelconque : méthode du pivot de Gauss Principe général de la méthode

On retrouve la méthode du pivot de Gauss.

L’objectif est d’abord d’obtenir un système avec une matrice triangulaire supérieure.

Puis d’obtenir un système avec une matrice triangulaire supérieure, donc à ce stade une matrice identité.

Méthode

Faire des opérations élémentaires sur les lignes de A jusqu’à transformer A en I.

On part de : A × A-1 = I

On applique des opérations à A : on a donc (Opérations*A) × A-1 = Opérations * I

Le but est d’arriver à Opérations*A = I. On a donc : I × A-1 = Opérations * I

Et donc : A-1 = Opérations * I

Opérations élémentaires maintenant l’égalité

Quand on a A = B, on peut faire les opérations suivantes de part et d’autres de l’égalité en maintenant l’égalité :

Li ß kLi : on peut multiplier une ligne par un réel non nul : k !=0

Li ß Li + kLj : on peut ajouter un multiple d’une autre ligne à une ligne Li ßà Lj : on peut échanger 2 lignes

Algorithme de Gauss

Ø Ordre du parcours dans la matrice

Une difficulté de l’algorithme est l’ordre de parcours de la matrice.

Un exemple est donné ci-dessous sur un matrice d’ordre 4.

e1 e7 ↑

↓ e2 e6 ↑

↓ e3 e5

↓ e4

L’algorithme aura donc deux parties : la première de e1 à e4 une grosse moitié (la partie non nulle d’une matrice triangulaire inférieure).

La deuxième de e5 à e7 pour le reste (la partie nulle d’une matrice triangulaire inférieure).

Résultat après l’étape 1 de la première partie : 1 e7 ↑

0 e2 e6 ↑

0 e3 e5

(30)

Résultat après l’étape 2 de la première partie : 1 e7 ↑

0 1 e6 ↑ 0 0 e3 e5 0 0 ↓ e4

Résultat après l’étape 1 de la deuxième partie : 1 e7 ↑ 0

0 1 e6 0 0 0 1 0 0 0 0 1 Etc.

Ø Etape 1 : on travaille sur partie non nulle de la matrice triangulaire inférieure

On parcourt tous les éléments, de la première colonne à la dernière, en commençant par la diagonale : donc on ne parcourt qu’un peu plus de la moitié de la matrice.

Pour j de 1 à n (on parcourt les colonnes) // les j sont les colonnes

Pour i de j à n (on parcourt les lignes à partir des diagonales) // les i sont les lignes // Lj c’est la ligne de la diagonale : celle du pivot

Si on est sur la diagonale : i=j, l’objectif est de passer à 1 Méthode 1

Si la valeur ai,j = 1, on ne fait rien

Si la valeur ai,j = 0, on inverse avec la première valeur k suivante de la colonne différente de 0 (ce terme s’appelle « le pivot » qui correspond à la diagonale). L’inversion se fait pout toute la ligne : Lj <- Lk. Si toutes les valeurs valent 0 l’algorithme est bloqué.

Si la valeur ai,j != 0 et != 1, on applique la formule Li <- Li / ai,j (ai,j est fixe, on fait varier tous les Li).

Si on n’est pas sur la diagonale : i >j, l’objectif est de passer à 0 Méthode 2

Si la valeur ai,j = 0, on ne fait rien

Si la valeur ai,j != 0, on applique la formule Li <- Li - ai,j * Lj. Lj vaut 1 pour la colonne (résultat des étapes précédentes)

Ø Etape 2 : on travaille sur la petite moitié de matrice restant à traiter.

On part de la colonne de gauche, celle qui a le plus d’élément à traiter. On traite toute la colonne, en partant de la diagonale (tout en bas) et en remontant vers la première ligne. Et on passe toute les colonnes en revue jusqu’à la 2ème.

Pour j de n à 2 (on parcourt les colonnes)

Pour i de j-1 à 1 (on parcourt les lignes de bas en haut à partir des diagonales) On applique la Méthode 2

(31)

Exemple

Ø Situation de départ : A d’un côté, I de l’autre : A = 1 2 1

4 0 −1

−1 2 2

I = 1 0 0 0 1 0 0 0 1

Ø Etape 1.1 : a1.1 = 1, on applique la méthode 1 : L1← L1 et on ne fait rien Ø Etape 1.2 : a2.1 = 4, on applique la méthode 2 : L2← L2 – 4*L1 :

A = 1 2 1 0 −8 −5

−1 2 2

I = 1 0 0

−4 1 0 0 0 1

Ø Etape 1.3 : a3.1 = -1, on applique la méthode 2 : L3← L3 + L1 : A = 1 2 1

0 −8 −5

0 4 3

I = 1 0 0

−4 1 0 1 0 1

Ø Etape 1.4 : a2.2 = -8, on applique la méthode 1 : L2← -1/8 * L2 : A = 1 2 1

0 1 5/8 0 4 3

I = 1 0 0

1/2 −1/8 0

1 0 1

Ø Etape 1.5 : a3.2 = 4, on applique la méthode 2 : L3← L3 – 4*L2 : A =

1 2 1 0 1 5/8

0 0 1/2 I =

1 0 0

1/2 −1/8 0

−1 1/2 1

Ø Etape 1.6 : a3.3 = 1/2, on applique la méthode 1 : L3← 2*L3 : A = 1 2 1

0 1 5/8 0 0 1

I = 1 0 0

1/2 −1/8 0

−2 1 2

Ø Etape 1.7 : a3.2 = 5/8, on applique la méthode 2 : L2← L2 - 5/8*L3 : A = 1 2 1

0 1 0 0 0 1

I = 1 0 0

7/4 −3/4 −5/4

−2 1 2

Ø Etape 1.8 : a3.1 = 1, on applique la méthode 2 : L1← L1 - L3 : A = 1 2 0

0 1 0 0 0 1

I = 3 −1 −2

7/4 −3/4 −5/4

−2 1 2

Ø Etape 1.9 : a2.1 = 2, on applique la méthode 2 : L1← L1 - 2L2 : A = 1 0 0

0 1 0 0 0 1

I = −0,5 0,5 0,5 7/4 −3/4 −5/4

−2 1 2

(32)

Exercices : gammes d’inversion avec ou sans python Série 1

v Prouvez que A = 1 2

0 3 n’est pas inversible.

Série 2

Pour les couples de matrices A et B suivants, calculer AB, BA. En déduire A-1

• A=array([ [2, 5], [1, 3] ]); B=array([ [3, -5], [-1, 2] ]);

• A=array([ [2, 0, 1], [0, -1, 2], [9, 1, 0] ]); B=array([ [-0.4, 0.2, 0.2], [3.6, -1.8, -0.8], [1.8, -0.4, -0.4] ]);

• A=array([ [0, 1, -1], [-3, 4, -3], [-1, 1, 0] ]); B=array([ [3, -1, 1], [3, -1, 3], [1, -1, 3] ]);

• A=array([ [7, 5], [-4, -2] ]); B=array([ [-1, -2.5], [2, 3.5] ]);

Série 3

Reprenez l’exercice ci-dessus en utilisant les fonctions numpy de multiplication de matrice : dot(A,B) et d’inversion de matrice : linalg.inv(A). Pour utiliser ces fonctions on commence par : from numpy import *

Série 4

A=array([ [3, 1], [1, 1] ]); Calculez A2 –4A. En déduire A-1 A=array([ [-2, -3], [5, 7] ]); Calculez A2 –5A. En déduire A-1 A=array([ [13, -5], [-6, 2] ]); Calculez A2 –15A. En déduire A-1

On peut faire les opérations élémentaires (addition et multiplication) à la main, en utilisant les fonctions codées ou en utilisant les fonctions numpy.

Par contre on n’utilisera la fonction d’inversion que pour vérifier.

Série 5

Pour les couples de matrices A et B suivant :

En utilisant les fonctions dot(A,B) de numpy et la fonction printMat(A) réalisée en TP : Calculez AB et BA en fonction de X.

En déduire X pour que B vaille A-1

• A=array([ [5, 1, 4], [2, 1, -3], [-3, -1, 1] ]); B=array([ [X, -5, -7], [7, 17, 23], [1, 2, 3] ]);

• A=array([ [2, 1, 3], [2, 0, -1], [1, 1, 5] ]); B=array([ [-1, 2, 1], [11, X, -8], [-2, 1, 2] ]);

(33)

Série 6

(34)

Exercices : programmation

Coder une fonction python qui calcule l’inverse d’une matrice en appliquant la méthode de Gauss.

L’algorithme général est le suivant

# en entrée : la matrice

# en sortie : la matrice inversée

# on ne modifie pas la matrice en entrée.

def invMat(matrice) : n=len(matrice)

mat=dupliquer(matrice) inv=creerMatriceIdentite(n)

# on parcourt le triangle bas-gauche de mat, par colonne

# diagonale comprise

pour j de 1 à n # toutes les colonnes

pour i de j à n # triangle bas gauche avec diagonale si i=j : traitementDiagonale (mat, inv, i)

sinon : traitementNonDiagonale (mat, inv, i, j)

# on parcourt le triangle bas-gauche de mat, par colonne

# diagonale non comprise

pour j de n à 2 # toutes les colonnes, sauf la 1ere déjà ok pour i de j-1 à 1 # triangle haut droit sans diagonale traitementNonDiagonale (mat, inv, i, j)

return inv

# en entrée : les matrices, nl, nc. nc c’est la diagonale def traitementNonDiagonale (mat, inv, nl, nc) :

x=mat[nl][nc]

# cas particulier : rien à faire si x==0: return;

# cas général : il faut passer à 0 : L=L+coeff*Ldiag coeff=-x

addLigneMatCoeff(mat, nl, nc, coeff) addLigneMatCoeff(inv, nl, nc, coeff)

# en entrée : les matrices, nl. nl, c’est la diagonale def traitementDiagonale(mat, inv, nl):

x=mat[nl][nl]

# si c’est déjà 1, rien à faire si x==1: return ok;

# si c’est !=0, on ramème à 0 si x!=0: return ok;

kLigneMat(inv, nl, 1/x) kLigneMat(mat, nl, 1/x) return ok;

# si c’est égale à 0 : on cherche un non nul et on inverse pour i de nl+1 à n

if mat[i][nl] != 0:

inverser2LignesMat(mat, nl, i) inverser2LignesMat(inv, nl, i)

# après l’inversion, la diagonale est non nulle : # on rappelle la fonction passer la diagonale à 1

(35)

return traitementDiagonale(mat, inv, nl) return nok # nok si que des 0 dans la colonne

# inversion de 2 lignes dans une matrice def inverser2LignesMat(mat, nl1, nl2)

# multiplier toute une ligne par k dans une matrice def kLigneMat(inv, nl, k)

(36)

Exercices : gammes de systèmes d’équations sous forme matricielle

Résoudre les systèmes suivants en écrivant le système sous la forme AX = B.

On fera les calculs en python.

• 2x -3y = 5 et -3x + 5y = -2

• 7x + 16y = 31 et 5x + 12y = 25

• 5x – 3z = 4 et 3x + 4y + z = 2 et x – y – z = 3

• -4x +y + 0,1z = -1 et 11x -3y -0,2z = 1 et -6x + 2y + 0,1z = 4

• x + y + z = 23 et 2x + 3y –z = 27 et –x + y + 4z = 27

• 6x + y + 3z = 5 et 2x + z = 0 et –x + 3y –z = 16 Exercices appliqués

Restaurant

Au restaurant, 4 sandwichs, 2 desserts et 3 boissons coutent 21,40 euros. 1 sandwich, 1 dessert et 5 boissons coûtent 15,60 euros et 2 sandwichs, 1 desserts et 4 boissons coûtent 16,20 euros.

Combien coûtent chaque produit ? On traitera ça en python.

Composants

Pour la fabrication d’un objet O1, on utilise 3 types de composants : C1, C2 et C3 à raison de x C1, y C2 et z C3 par objet. C1 coûte 1 euro et pèse 2,5 grammes. C2 : 1,5 euros et 2 grammes.

C3 : 0,5 euros et 1 gramme.

Calculez N, nombre total de pièces employés et M poids total des pièces et C le coût total des pièces pour x=20, y=30 et z=35.

Calculez le nombre de pièces de chaque type pour un objet constitué de 140 pièces pesant 275 grammes en tout et coûtant 135 euros en tout.

Préférences

On a demandé à 215 étudiants leur préférence de langage parmi le Python, le Xcas le Java et le C. 1 seule réponse était possible. 163 étudiants préfèrent Python ou Xcas, 65 Xcas ou C. 158 Python ou C.

Calculez les préférences pour chaque langage. On se dotera d’un système de 4 équations.

Parabole

Dans un plan, on a 3 points : A(-3 ;-23), B(2 ;12) et C(4 ;-2) On cherche s’il existe une parabole passant par ces trois points.

Une parabole est définie par l’équation : y = ax2 + bx + c

Calculez l’équation de la parabole, donc a, b et c. Pour cela, on se dotera d’un système d’équations avec a, b et c comme inconnus en considérant que, par hypothèse, A, B et C appartiennent à la parabole.

(37)

Références

Livres

• Mathématique pour l’informatique – BTS SIO – Dunod – 2015 : Chapitre 3, pp. 61-86.

• Méthodes mathématiques pour l’informatique – IUT-Licence-Ecole d’ingénieurs-CNAM – Dunond 2013.

MOOC

• 3-Inverse d’une matrice, définition, propriétés : ici – 9’48

• 4-Inverse d’une matrice : méthode de Gauss ici – 9’01

• 5-Inverse d’une matrice : systèmes linéaires et matrices élémentaires et échelonnées ici – 19’54

• 6-Matrices triangulaires, diagonales, symétriques, transposition ici – 12’09

• Matrice et applications linéaires : ici

Références

Documents relatifs

On utilise la méthode pour inverser des matrices carrées (la notion d’inverse de matrice ne marche que pour les matrices carrées).. On se ramène tout d’abord à une

´ Ecrire un programme permettant ` a un utilisateur de saisir une matrice carr´ee et un vecteur de la taille de cette matrice.. L’utilisateur devra dans un premier temps dire la

Les transformations suivantes fournissent un système équivalent à un système donné : Multiplier les deux membres d'une ligne par le même réel non nul. Remplacer une ligne par la

Sa non-application peut conduire à

Nous en proposons ici deux : élimination de l’une des inconnues et utilisation

Documents autorisés : OUI NON Polycopiés de l’UE,

Documents autorisés : OUI NON Polycopiés de l’UE,

Je vais d’abord mettre L1’ au même coefficient