Réduction des matrices carrées
Cours complet · mathématiques (ECT 2e année), chapitre 6 · prépa ECT, 2e année
Travailler ce chapitre sur Adloun Exercices corrigés de ce chapitre
Élever une matrice à la puissance à la main est vite impossible : trois produits pour , et bien davantage pour . Or c'est exactement ce que réclament les situations de gestion où l'on répète une même transformation — la répartition d'une clientèle entre deux agences mois après mois, ou une suite définie par ses deux termes précédents. L'idée de ce chapitre est de changer de point de vue : trouver des directions que la matrice se contente d'étirer, sans les tourner. Dans ces directions, multiplier par revient à multiplier par un nombre, et élever à la puissance devient immédiat. Ces directions sont les vecteurs propres, et les nombres les valeurs propres.
Trois phrases délimitent strictement ce chapitre.
- « La notation pourra être utilisée, mais elle sera limitée au cas des matrices carrées d'ordre . La notion de déterminant est hors-programme. »
- « La notion de polynôme minimal, la résolution générale des systèmes (avec paramètre quelconque) et toute théorie sur la réduction sont hors programme. »
- « On évitera les méthodes trop calculatoires … En particulier, la résolution de systèmes à paramètres est à proscrire. »
Les valeurs propres se chercheront donc par un polynôme annulateur, jamais autrement, et l'on travaillera sur des matrices d'ordre inférieur ou égal à .
6.1 Polynôme d'une matrice
Soit une matrice carrée d'ordre et un polynôme. On pose
où est la matrice identité d'ordre . C'est encore une matrice carrée d'ordre .
C'est la seule difficulté de la définition, et c'est une faute classique : on ne peut pas ajouter un nombre à une matrice. Le terme constant se lit donc , une matrice diagonale et non un scalaire. Écrire « » n'a aucun sens ; on écrit .
Prenons et . On calcule d'abord , puis
Le résultat est la matrice nulle : ce n'est pas un hasard, et la section suivante explique pourquoi.
6.2 Polynôme annulateur
Un polynôme est un polynôme annulateur de la matrice carrée lorsque , la matrice nulle.
Soit . Le polynôme
est un polynôme annulateur de .
Démonstration
Un calcul direct donne et . Les termes hors diagonale disparaissent par soustraction et il reste
c'est-à-dire .
Les deux coefficients de se lisent sans calcul : la somme des coefficients diagonaux , et le nombre que l'on note — celui-là même qui décide de l'inversibilité d'une matrice d'ordre .
Le programme est catégorique : « La notation pourra être utilisée, mais elle sera limitée au cas des matrices carrées d'ordre . La notion de déterminant est hors-programme. »
Pour une matrice d'ordre , il n'y a donc aucun déterminant à calculer : un polynôme annulateur vous sera toujours donné, ou se lira sur une relation du type que l'énoncé vous fera vérifier.
Une banque possède deux agences. Chaque mois, des clients de l'agence A y restent et passent à B ; des clients de B passent à A et y restent. La matrice de transfert est
Ici et , donc annule . Ses racines sont et , car .
6.3 L'inverse par un polynôme annulateur
Supposons avec . Alors est inversible et
Démonstration
De on tire , puis, en divisant par , . Le même calcul à gauche donne l'autre égalité : est inversible, d'inverse .
Soit . On lit et , donc . Comme :
Contrôle. : on retrouve la formule d'inversion d'ordre du chapitre 1.
Si le terme constant du polynôme annulateur est nul, la méthode ne dit rien — et pour cause : peut alors ne pas être inversible. Ainsi vérifie , et cette matrice n'est pas inversible.
Python : Vérifier un polynôme annulateur
import numpy as np
A = np.array([[3, 1], [2, 2]])
t = A[0, 0] + A[1, 1]
d = A[0, 0]*A[1, 1] - A[0, 1]*A[1, 0]
print(t, d)
print(A @ A - t*A + d*np.eye(2, dtype=int))
Sortie : 5 4, puis une matrice dont les quatre coefficients valent 0. Le signe @ est le produit matriciel de Python ; avec * on obtiendrait un produit terme à terme, qui ne veut rien dire ici.
6.4 Valeurs propres et vecteurs propres
Soit une matrice carrée d'ordre . Un réel est une valeur propre de s'il existe une matrice colonne non nulle telle que
Une telle colonne est alors appelée vecteur propre de associé à .
Sans lui, serait n'importe quel nombre, puisque toujours. Retenons donc : un vecteur propre n'est jamais nul, alors qu'une valeur propre peut très bien valoir .
Soit . Pour , on trouve : est vecteur propre associé à la valeur propre .
Pour , on trouve : est vecteur propre associé à la valeur propre . En revanche, pour , , qui n'est proportionnel à aucun multiple de .
Si est valeur propre de , alors n'est pas inversible.
Démonstration
Il existe avec . Si était inversible, on multiplierait à gauche par et l'on obtiendrait , ce qui contredit .
6.5 Chercher les valeurs propres
Si est un polynôme annulateur de , alors toute valeur propre de est racine de .
Le théorème se lit dans un seul sens : les racines de forment une liste de candidats, aucune autre valeur ne pouvant être valeur propre — mais certains candidats peuvent ne pas en être. La marche à suivre est donc en deux temps : (1) on trouve un polynôme annulateur et l'on calcule ses racines ; (2) pour chaque racine , on cherche une colonne vérifiant .
Reprenons , dont est annulateur. Les candidats sont donc et .
Pour . L'équation s'écrit , c'est-à-dire , soit . La colonne convient, et elle est non nulle : est bien valeur propre.
Pour . L'équation s'écrit , soit , soit . La colonne convient.
Les deux candidats sont donc des valeurs propres, avec les vecteurs propres et .
Si est triangulaire, ses valeurs propres sont à chercher parmi ses coefficients diagonaux.
Démonstration
Soit qui n'est aucun des coefficients diagonaux de . La matrice est encore triangulaire, et ses coefficients diagonaux sont tous non nuls : par le critère d'inversibilité des matrices triangulaires, elle est inversible. Alors donne , puis : aucun vecteur propre, donc n'est pas valeur propre.
Le programme proscrit « la résolution de systèmes à paramètres » et écarte « toute théorie sur la réduction ». On ne cherche donc jamais les valeurs propres en résolvant avec inconnu : on part toujours d'un polynôme annulateur, dont les racines sont des nombres, et l'on résout autant de systèmes numériques qu'il y a de racines.
6.6 Matrices diagonalisables
Une matrice carrée est diagonalisable s'il existe une matrice diagonale et une matrice carrée inversible telles que
La matrice est construite en rangeant en colonnes des vecteurs propres de , et porte sur sa diagonale les valeurs propres correspondantes, dans le même ordre : échanger deux colonnes de oblige à échanger les deux coefficients de . Le programme précise que « leur construction n'est pas exigible » — et vous seront souvent fournies, à charge de vérifier l'égalité.
Reprenons , annulée par . Les candidats sont et .
Pour , l'équation donne , soit : convient.
Pour , l'équation donne , soit : convient.
On pose donc et . Comme , est inversible et . On vérifie que .
Le programme le dit sans ambiguïté : « La recherche de vecteurs propres ne pourra être demandée que dans le cas de valeurs propres de multiplicité . Dans les autres cas, les vecteurs propres devront être donnés. »
Quand une même valeur propre revient deux fois sur la diagonale de , l'énoncé vous fournit donc les deux colonnes ; votre travail se limite à vérifier .
Soit . Un calcul donne , donc annule .
On a déjà vu que est valeur propre, de vecteur propre , et que l'est aussi, de vecteur propre . Le programme demande de donner le second vecteur associé à : c'est , et l'on vérifie bien . En rangeant ces trois colonnes,
et .
6.7 Puissances d'une matrice
Si , alors pour tout entier : . De plus, si est diagonale de coefficients , alors est diagonale de coefficients .
Démonstration
Par récurrence. Au rang c'est l'hypothèse. Si , alors
puisque . La propriété est héréditaire, donc vraie pour tout .
Avec comme ci-dessus,
Contrôles. Pour : . Pour : . Deux vérifications valent mieux qu'une.
Python : Les puissances par la diagonalisation
import numpy as np
P = np.array([[1.0, 1.0], [1.0, -2.0]])
Q = np.linalg.inv(P)
for n in [1, 2, 5]:
D = np.array([[4.0**n, 0.0], [0.0, 1.0]])
print(n, np.round(P @ D @ Q, 6).tolist())
Sortie : 1 [[3.0, 1.0], [2.0, 2.0]], puis 2 [[11.0, 5.0], [10.0, 6.0]], puis 5 [[683.0, 341.0], [682.0, 342.0]]. La formule exacte donne pour : et . Les deux coïncident.
6.8 Suites récurrentes et systèmes de suites
Notons et les parts de clientèle des agences A et B au bout de mois, avec et (tous les clients sont initialement en A). Les règles de transfert s'écrivent
On en tire , et la diagonalisation de donne, avec les vecteurs propres et trouvés plus haut,
Contrôles. Pour : et . Pour : et , ce que donne aussi . Pour : .
Le long terme. Comme tend vers , les parts tendent vers et : la répartition se stabilise à / . C'est le vecteur propre associé à la valeur propre , normalisé pour que ses termes somment à .
Python : La convergence, au clavier
import numpy as np
M = np.array([[0.8, 0.3], [0.2, 0.7]])
x = np.array([1.0, 0.0])
for n in range(1, 7):
x = M @ x
print(n, round(x[0], 6), round(x[1], 6))
Sortie : 1 0.8 0.2, 2 0.7 0.3, 3 0.65 0.35, 4 0.625 0.375, 5 0.6125 0.3875, 6 0.60625 0.39375. Chaque ligne coïncide avec la formule : la machine corrobore, le calcul matriciel démontre.
Soit définie par , et . Posons : alors avec .
Ici et , donc annule : les valeurs propres sont et . La suite s'écrit alors , et les conditions initiales donnent et , d'où et :
Contrôles. , , ; et la récurrence donne . De même et .
Le programme ferme la porte à toute systématisation : « La méthode générale de résolution est hors-programme. » Un énoncé vous guidera donc pas à pas — matrice , polynôme annulateur, valeurs propres, forme de , conditions initiales. On ne vous demandera jamais de retrouver seul cette marche.