Notedecours MAT2742
Notedecours MAT2742
Notedecours MAT2742
UNIVERSITÉ D’OTTAWA
ALISTAIR SAVAGE
Note aux étudiants : Si vous remarquez une erreur dans ces notes (même les petites fautes
de frappe), s’il vous plaı̂t informer le professeur. Cela aide lui, ainsi que vos collègues étudiants.
Remerciements : Ces notes sont basées sur les notes de Michael Newman.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 5
Que veut dire “la situation éventuelle” ? C’est que éventuellement la situation stabilise et on
a donc xk+1 ≈ xk . Ceci donne que
xk ≈ xk+1 = Axk .
Donc, on veut résoudre l’équation matricielle x = Ax. C’est une relation de valeur et vecteur
propre.
1.2. Définitions.
Définition 1.1 (valeur et vecteur propre). Soit A une matrice (carré) de taille n × n. Soit
x 6= 0 un vecteur de taille n et λ un chiffre (nombre réel ou complexe). Si
Ax = λx
alors on dit que λ et un valeur propre (en anglais, eigenvalue) de A et que x est un vecteur
propre (en anglais, eigenvector ) correspondant.
Remarque. C’est important que x soit non-nul. Si x = 0, alors A0 = 0 = λ0 pour toute
valeur λ, qui n’est pas une situation intéressante.
Étant donné une matrice et un vecteur, on peut déterminer directement si c’est un vecteur
propre en multipliant.
6 ALISTAIR SAVAGE
1 2 1
Exemple 1.2. Est-ce que x = est vecteur propre de A = ?
1 3 4
On calcul
2 1 1 3
Ax = = .
3 4 1 7
Si Ax = λx on voit que 3 = λ1 (qui implique que λ = 3) et 7 = λ1 (qui implique que λ = 7),
ce qui est impossible ! Donc x n’est pas vecteur propre de A.
Exercice 1.3. Déterminer si les vecteurs suivants sont vecteurs propres de la matrice A
d’Exemple 1.2 :
3 0 1 −5
, , , .
4 1 −1 5
Si oui, donner la valeur propre correspondante.
On peut aussi déterminer si une valeur est valeur propre d’une matrice.
2 1
Exemple 1.4. Est-ce que λ = 2 est valeur propre de A = ?
3 4
Si oui, ce devrait être possible de trouver un vecteur propre correspondant. On note que
Ax = λx ⇐⇒ Ax − λx = 0 ⇐⇒ (A − λ)x = 0.
C’est une système d’équations linéaires (en forme matricielle). On peut résoudre à l’aide de la
méthode de Gauss-Jordan (la réduction par rapport aux lignes) ce que vous avez vu dans MAT
1702 ou 1741.
0 1 0 R1 ↔R2 3 2 0 R1 → 13 R1 1 23 0 R1 →R1 − 32 R2 1 0 0
−−−−→ −−−−−→ −−−−−−−−→
3 2 0 0 1 0 0 1 0 0 1 0
(La prochaine fois, on ne va pas écrire la dernière colonne de zéros.) Si on maintenant change
à la forme d’équation, on a
x1 = 0,
x2 = 0.
Donc la seule solution est que x = 0. Mais un vecteur propre n’est jamais zéro. Donc λ = 2
n’est pas valeur propre.
Exercice 1.5. Est-ce que λ = 1 est valeur propre de la matrice A dans Exemple 1.4 ?
1.3. Méthode générale. Chaque vecteur propre correspond à une seule valeur propre, mais
chaque valeur propre possède plusieurs vecteurs propres (vous devriez avoir vu ceci dans Exer-
cice 1.3).
Définition 1.6 (noyau, espace nul). Si B est une matrice, alors
ker B := {x | Bx = 0}
est le noyau, ou l’espace nul (en anglais, kernel ), de B.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 7
Puisque
Ax = λx ⇐⇒ (A − λI)x = 0,
les vecteurs propres de A correspondant à λ sont les éléments non-nuls de ker(A − λI). À
l’Exemple 1.4 on n’a pas pu trouver des solutions non-nulles : autrement dit on avait trouvé
que ker(A − 2I) = {0}. Pour que 2 soit valeur propre, il aurait fallu avoir ker(A − 2I) 6= {0}.
Le déterminant d’une matrice se calcul par cofacteurs (voir la section 3.1 du manuel de cours).
On fera donc le calcul de det(A − λI). C’est le polynôme caractéristique de la matrice A. Les
racines de ce polynôme sont exactement les valeurs propres.
Exemple 1.8. On calcule toutes les valeurs propres et vecteurs propres de la matrice
0 −1 4
A = −2 1 4 .
0 0 2
On fera une expansion par la deuxième rangée.
0 − λ −1 4
det(A − λI) = det −2 1 − λ 4
0 0 2−λ
−λ −1
= (2 − λ) det
−2 1 − λ
= (2 − λ) (−λ)(1 − λ) − (−1)(−2)
= (2 − λ)(λ2 − λ − 2)
= −(λ − 2)(λ − 2)(λ + 1).
Donc les valeurs propres sont λ = −1 de multiplicité 1 et λ = 2 de multiplicité 2.
Note que ce n’est pas utile de tout multiplier toute de suite. C’est meilleur de tenter de sortir
un facteur commun (le (λ − 2) ici) avant de multiplier.
Sachant les valeurs propres, on calcule les vecteurs propres. C’est la même idée qu’à l’Exemple 1.4,
sauf que maintenant on sait déjà que c’est une bonne valeur propre.
8 ALISTAIR SAVAGE
1.4. Diagonalisabilité. Rappelez-vous que la dimension d’un espace vectoriel est exactement
le nombre de vecteurs dans une base pour cette espace. Notez que la base pour l’espace propre
de A correspondant à la valeur propre λ est une base pour le noyau de la matrice A − λI.
La multiplicité d’une valeur propre est le nombre de fois qu’elle apparaı̂t comme racine dans
le polynôme caractéristique. Chaque multiplicité est toujours égale ou inférieure à 1. Si A est
n × n, alors le somme des multiplicités est égal à n.
Théorème 1.10. La dimension de chaque espace propre est toujours au plus la multiplicité de
la valeur propre correspondante.
Dans Exemple 1.8, les dimensions sont chacune égale aux multiplicités correspondantes. C’est
un cas à la fois spécial et très utile (on verra bientôt une application).
Théorème 1.11 (Diagonalisation). Soit A une matrice telle que la dimension de chaque espace
propre est égale à la multiplicité correspondante. Alors on a A = P DP −1 , où les colonnes de
la matrice P sont les éléments des bases pour chaque espace propre, et D est une matrice
diagonale formée des valeurs propres (dans l’ordre qui correspond à l’ordre des colonnes de P ).
(Une partie du théorème et que P est inversible.)
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 9
2. Systèmes dynamiques
– Il semble que xk converge, c’est-à-dire, que lorsque k devient grand les populations se
stabilisent (c’est plus évident si on continuer à calculer).
– Il semble avoir une oscillation.
On découvra que la théorie des valeurs et vecteurs propres est très pertinent ici.
0, 5 −0, 25
Exercice 2.1. Montrer que v1 = , v2 = sont vecteurs propres de A avec valeurs
1 1
propres λ1 = 1, λ2 = −0, 5 (respectivement). Quelles sont les multiplicités ?
Après avoir complété Exercice 2.1, on sait que A est diagonalisable, et A = P DP −1 où
0, 5 −0, 25 1 0
P = , D= .
1 1 0 −0, 5
On observe que les populations au temps k peuvent se calculer avec une puissance matricielle :
xk = Ak x0 . En appliquant la théorie de diagonalisation on obtient
xk = Ak x0 = (P DP −1 )k x0 = P Dk P −1 x0
k −1
0, 5 −0, 25 1 0 0, 5 −0, 25
= x0
1 1 0 −0, 5 1 1
−1
0, 5 −0, 25 1k 0 0, 5 −0, 25
= x0
1 1 0 (−0, 5)k 1 1
On pourrait calculer le vecteur [ αβ ] comme P −1 x0 . Mais l’important est que si k est “grand”
alors xk est une constante (α) fois un vecteur propre. Ceci explique la convergence numérique.
Puisque A est diagonalisable, l’ensemble {v1 , v2 } forme une base pour tout l’espace R2 .
Autrement dit on peut exprimer n’importe quel vecteur en termes de cette base. Par exemple,
on sait que
(2.1) x 0 = c1 v 1 + c2 v 2
pour quelques c1 , c2 ∈ R.
Exercice 2.2. Montrer que c1 = α et c2 = β.
L’exemple ci-haut est un système dynamique (discret), c’est-à-dire, une système ou l’état xk
au temps k du système est décrit par une équation de récurrence de la forme xk+1 = Axk où A
est une matrice (la matrice de transition). Pour décrire la situation éventuelle, il faut trouver
les valeurs et vecteur propres.
2.2. Proie-prédateur. Le même format peut servir de modéliser la prédation entre deux
espèces, e.g., chouettes et souris. Ici Ck mesure le nombre de chouettes et Sk mesure le nombre
de rats en milliers.
Ck+1 = 0, 5Ck + 0, 4Sk
Sk+1 = −0, 104Ck + 1, 1Sk
Le 0, 5 et le 1, 1 indique la croissance des espèces en isolation. Les chouettes disparaissent sans
nourriture tandis que les souris augmentent sans prédateurs. Les deux autres chiffres mesurent
la conséquence de la prédation : positif pour les chouettes et négatif pour les souris. On a donc
la matrice de transition (ou matrice d’étape)
0, 5 0, 4
A= .
−0, 104 1, 1
On obtient, comme on a fait à l’équation (2.2), une formule pour le vecteur des populations :
Ck k 10 k 5
(2.3) xk = = c1 (1, 02) + c2 (0, 58) .
Sk 13 1
Les chiffres c1 et c2 dépendent des populations initiales. Plus précisément, sachant x0 on les
obtient en solutionnant le système :
10 5
x 0 = c1 v 1 + c2 v 2 = c1 + c2 .
13 1
Par contre, sans savoir les populations initiales, on peut décrire la tendance éventuelle.
Si c1 6= 0 dans l’équation (2.3), alors le premier terme domine éventuellement, car le (0, 58)k
tend vers zéro. Donc dans ce cas, on aura éventuellement une croissance des deux espèces, avec
un rapport d’environ 10 chouettes pour 13 souris.
Si c1 = 0 alors le premier terme est zéro. La tendance éventuelle sera donné par le deuxième
terme, qui diminue vers zéro à cause du (0, 58)k . Donc les deux espèces disparaı̂tront. Mais ce
cas est vraiment improbable. Avoir c1 = 0 veut dire que le vecteur des populations initiales est
un multiple de v2 : donc exactement 5 chouettes pour 1 souris.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 13
2.3. Trajectoire. On voit que la tendance éventuelle qualitative dépend des valeurs propres.
Posons λ1 la plus grande valeur propre (en valeur absolue). Présumons que la multiplicité de
λ1 est 1 et que tout autre valeur propre est strictement inférieure à λ1 en valeur absolue. Alors
en générale on aura
(2.4) xk = c1 (λ1 )k v1 + c1 (λ2 )k v2 + · · · + cn (λn )k vn
(2.5) ≈ c1 (λ1 )k v1 (pour k grand).
On a une formule exacte et une approximation simple. L’approximation est valide car en élevant
les valeurs propres à des grandes puissances, le premier domine.
Exercice 2.4. Que change dans l’équation (2.5) si la multiplicité de λ1 est plus que 1 ? Qu’arrive
s’il existe des autres valeurs propres qui sont égales en valeur absolue à λ1 (par exemple, λ1 = 1.2
et λ2 = −1.2) ?
Le trajectoire est la suite des vecteurs {x0 , x1 , x2 , . . .}, où chaque vecteur est obtenu en
multipliant son prédécesseur par la matrice de transition A. En deux dimensions (c’est-à-dire
un modèle qui décrit deux populations) on peut représenter cette suite graphiquement. (Voir
aussi la section 5.6 du manuel de cours). On verra ceci en détail au tableau en classe.
Exemple 2.5. Soit un système dynamique modélisant deux populations, avec valeurs propres
λ1 > λ2 > 1.
La valeur propre dominante est plus grande que 1, donc les populations augmentent toujours.
L’origine est un point de répulsion. Les deux valeurs propres sont positives, donc il n’y aura
aucune oscillation.
Exemple 2.6. Soit un système dynamique modélisant deux populations, avec valeurs propres
λ1 = 1 et −1 < λ2 < 0.
La valeur propre dominante est égale à un, donc les populations se stabiliseront éventuellement.
La deuxième valeur propre est négative, qui donnera une oscillation, mais une oscillation qui
diminuera car elle est inférieure à un en valeur absolue.
Exemple 2.7. Soit un système dynamique modélisant deux populations, avec valeurs propres
0 < λ2 < λ1 < 1.
Toutes les valeurs propres sont inférieures à un, donc les populations diminueront vers zéro
peut importe les populations initiales. L’origine est un point d’attraction.
Exemple 2.8. Soit un système dynamique modélisant deux populations, avec valeurs propres
0 < λ2 < 1 < λ1 .
Dans la direction du vecteur propre v1 l’origine paraı̂t être un point de répulsion, car λ1 > 1.
Dans la direction du vecteur propre v2 l’origine paraı̂t être un point d’attraction, car λ2 < 1. On
dit que l’origine est un point de selle. Note que dans n’importe quelle autre direction, l’origine
ressemble plutôt à un point de répulsion, car c’est la plus grande valeur propre qui domine.
Donc un point de selle se comporte plus comme point de répulsion.
14 ALISTAIR SAVAGE
3. Chaı̂nes de Markov
3.1. Exemple de motivation. Une chaı̂ne de Markov est un cas particulier d’un système
dynamique où on considère plusieurs états d’une seule population. La distinction essentielle
est que la population totale est constante. Comme exemple on peut considérer une modèle
d’une maladie contagieuse (voir la section 1.1). Le modèle le plus simple considère deux cas
seulement : malade et bonne santé.
Exemple 3.1. Chaque mois une personne en bonne santé a une chance de 3% de tomber
malade, et une personne malade a une chance de 5% de se guérir. Au départ, personne n’est
malade.
0, 97 0, 05
On a une matrice de transition (ou matrice d’étape) de A = . Les colonnes
0, 03 0, 95
correspondent au deux états au présent et les rangées correspondent au deux états à l’étape
suivante.
Note que c’est un modèle à 2 états (malade et non-malade), qui mène à une matrice de taille
2 × 2 et des vecteurs d’état de taille 2. En général, ayant n états on a une matrice de taille
n × n et des vecteurs d’état de taille n.
La matrice de transition d’une chaı̂ne de Markov est stochastique (et toute matrice stochas-
tique représente une chaı̂ne de Markov).
On se rappelle que les valeurs propres d’une matrice sont les racines de det(A − λI). C’est
utile de considérer deux théorèmes.
Théorème 3.3. Les valeurs propres de A sont exactement les mêmes que les valeurs propres
de AT (mais les vecteurs propres sont typiquement différents).
16 ALISTAIR SAVAGE
Théorème 3.4. Si la somme de chaque rangée d’une matrice est égale à r (donc, constante)
alors le vecteur 1 = (1, 1, . . . , 1) est vecteur propre avec valeur propre λ = r.
On applique. Soit A une matrice stochastique. Alors les rangées de AT ont chacune une
somme de 1 (pourquoi ?). Donc le théorème 3.4 nous assure que 1 est vecteur propre de AT et
que 1 est valeur propre de AT . Donc, par le théorème 3.3, on sait que 1 est valeur propre de A
(mais on ne connaı̂t pas le vecteur propre correspondant de A).
Résultat : toute matrice stochastique a 1 comme valeur propre. Donc il existe un vecteur
non-nul q tel que Aq = q. On peut choisir q pour que la somme des composantes donne 1
(parce que tous les multiples non-nuls de q sont des vecteurs propres correspondants à la même
valeur propre), donc on a une distribution d’équilibre, souvent dit vecteur d’état stationnaire.
On a donc le suivant.
Théorème 3.5. Toute chaı̂ne de Markov possède un vecteur d’état stationnaire.
3.3. Équilibre et tendance. Un vecteur d’état stationnaire se trouve comme tout autre vec-
teur propre.
Exemple 3.6. On détermine le vecteur d’état stationnaire de l’exemple 3.1. On cherche les
vecteurs propres correspondant à λ = 1, donc on solutionne A − I = 0.
0, 97 0, 05 −0, 03 0, 05 1 −5/3
−I = →
0, 03 0, 95 0, 03 −0, 05 0 0
Ceci donne la solution
5/3
q=t , t ∈ R.
1
On choisit la valeur de t pour que q représente des proportions : c’est-à-dire on choisit t pour
avoir la somme des composantes de q égale à 1. Donc t = 3/8 ou
5/8 0, 625
q= = .
3/8 0, 375
On interprète : la situation d’avoir 62, 5% de la population non-malade et 37, 5% malade est
stable.
C’est déjà une différence entre les chaı̂nes de Markov et les systèmes dynamiques en générale :
ici l’extinction est impossible.
Exercice 3.8. Montrer que ce n’est jamais le cas que xk augmente sans cesse (“converge
vers l’infini”). (Indice : montrer que la somme des composantes de xk est égale à 1 pour k =
1, 2, 3, . . ..)
Par contre ce n’est pas le cas que pour tout vecteur d’état x0 et toute matrice stochastique
A, xk = Ak x0 converge vers un seul vecteur q.
3.4. Chaı̂nes de Markov et valeurs propres. Souvent une chaı̂ne de Markov possède les
deux propriétés suivantes.
– Il n’existe qu’un seul vecteur d’état stationnaire.
– Peu importe le vecteur d’état initial x0 , les vecteurs xk convergent vers q.
Afin de mieux comprendre ceci, voyons quelques exemples où ce n’est pas le cas.
Exemple 3.9. Supposons qu’une chaı̂ne de Markov possède comme matrice de transition
0 1
A= .
1 0
0, 2
En addition, supposons que l’état initial est x0 = . Alors,
0, 8
0, 8 0, 2
x1 = Ax0 = , x2 = Ax1 = , ....
0, 2 0, 8
0, 5
On voit que les vecteurs de convergent pas. Cependant, il existe un état stationnaire x = .
0, 5
0, 5
Les vecteurs convergent si et seulement si l’état initial est x0 = .
0, 5
Ce serait utile de considérer les graphes qui correspondent à ces matrices. Pour une chaı̂ne
de Markov on construit le graphe en mettant un sommet pour chaque état et une flèche pour
chaque transition possible. Voici les graphes correspondants.
18 ALISTAIR SAVAGE
0, 8
1 2
0, 2 1 2 0, 1 0, 8 0, 9
0, 9
0, 3 0, 2 0, 6 0, 1
0, 7
0, 3 3 4 0, 6 0, 7 0, 4
0, 4 3 4
La démonstration de ce théorème est déjà faite : c’est l’équation (2.5). En principe il ne faut
que calculer les valeurs propres de A et vérifier que la multiplicité de λ = 1 est un et que
les autres sont tous inférieures à 1 en valeur absolue. En pratique ce n’est si facile : trouver
directement les valeurs propres est difficile (parfois impossible ?) pour une grande matrice. De
plus, il existe des matrices stochastiques qui ne sont pas diagonalisables.
Qu’est-ce qui se passe dans l’exercice 3.10 ? Pour la première matrice, la multiplicité de λ = 1
est 2 (exercice !). Le vecteur d’état stationnaire n’est pas unique. Pour la deuxième, on voit que
λ = 1 et λ = −1 sont valeurs propres. Donc l’équation (2.4) est valide mais il faut modifier
l’équation (2.5) (voir l’exercice 2.4). Donc on voit que, dans les deux exemples de l’exercice 3.10,
le théorème 3.11 ne s’applique pas.
3.5. Chaı̂nes de Markov régulières. Il y a une autre approche. On a un théorème qui ga-
rantit la convergence désirée, sans devoir calculer les valeurs propres. Une matrice stochastique
A est régulière s’il existe un entier ` tel que toute composante de A` est positive.
Théorème 3.12. Soit A une matrice stochastique régulière. Alors il existe un seul vecteur d’état
stationnaire q. De plus pour tout vecteur d’état initial x0 les vecteurs d’état xk convergent vers
q.
Alors
0, 64 0, 3 0, 15
A2 = 0, 1 0, 29 0, 35 .
0, 26 0, 41 0, 5
Donc A est régulière (on prends ` = 2 dans la définition) et on sait qu’il existe un seul vecteur
d’état stationnaire et pour tout vecteur d’état initial, les vecteurs d’état convergent vers ce
vecteur d’état stationnaire.
Exercice 3.14. Montrer que la chaı̂ne de Markov de l’exemple 3.1 converge toujours vers
le même vecteur d’état stationnaire. (indice : il faut simplement trouver une valeur de ` tel
que. . . )
Par contre le théorème 3.12 ne permet pas de conclure qu’il y a plus qu’un vecteur d’état
stationnaire. Ce théorème ne s’applique tout simplement pas, car il s’applique seulement dans
les cas ou un ` existe.
Mais ce n’est pas toujours pratique. C’est vrai que ` = 1 ne suffit pas pour les matrices de
l’exercice 3.10, mais peut-être que ` = 437 suffit ? ou ` = 142857 ? Le problème c’est qu’on ne
connaı̂t pas la valeur de `.
Considérons un graphe (par exemple, le graphe d’une matrice stochastique). Si c’est possible
de trouver un chemin de n’importe quel état à n’importe quel autre état, alors on dit que le
graphe est fortement connexe. Un chemin, dans ce sens, doit suivre les flèches dans la “bonne”
direction. Un cycle est un chemin qui aboutit à son point de départ. La longueur d’un chemin
ou d’un cycle est le nombre de flèches dans le chemin ou cycle (on peut traverser une flèche
plus qu’une fois et, dans cette situation, on la compte plus qu’une fois dans la calcule de la
longueur). Si les longueurs de tous les cycles dans un graphe ont un facteur en commun, on
dit que le graphes est périodique (le plus grand facteur commun est la période). Sinon il est
apériodique.
3.6. Puissances. Posons A une matrice stochastique régulière (peut-être qu’on a vérifié que
le graphe est fortement connexe et apériodique). Posons q pour le vecteur d’état stationnaire.
Il reste une observation qui est parfois très utile.
On sait que Ak x0 ≈ q si k est “grand”, peu importe le vecteur initial x0 . Pour faciliter la
présentation, imaginons un modèle à n = 3 états, donc A est de taille 3 × 3. On peut choisir
x0 comme on veut, donc par exemple :
1 0 0
Ak 0 ≈ q, Ak 1 ≈ q, Ak 0 ≈ q, (pour k grand).
0 0 1
Exercice 3.17. Que représente les trois produits matriciels ? Comme conséquence, que peut-on
dire au sujet de Ak ? (Indice : considérer les colonnes de Ak )
3.7. Attention. Un avertissement s’impose. On n’a pas du tout complété l’analyse de la théorie
des chaı̂nes de Markov. En particulier, c’est possible d’avoir une chaı̂ne de Markov qui converge
toujours vers un vecteur d’état stationnaire, mais n’est pas régulière.
0 0
Exercice 3.18. Montrer que la matrice A = n’est pas régulière mais on a encore que
1 1
pour tout vecteur d’état initial x0 , les vecteurs xk = Ax0 convergent vers un vecteur d’état
stationnaire unique q. Déterminer aussi q.
4. Équations de récurrence
4.1. Introduction. Une équation de récurrence est un peu comme un système dynamique.
Mais au lieu d’avoir plusieurs variables qui dépendent de leurs valeurs à une étape précédente,
on a une variable qui dépend de plusieurs étapes précédentes.
On pose deux questions : Comment calculer f1000000 directement, c’est-à-dire sans devoir
calculer toutes les valeurs intermédiaires ? Plus généralement, est-ce qu’on peut trouver une
expression explicite (c.-à.-d. directe) pour fk en termes de k (et pas en termes les valeurs de fj
pour j < k). Que peut-on dire sur la tendance éventuelle de fn ?
La solution est essentiellement la même que ce qu’on a fait pour un système dynamique, mais
il faut reformuler le problème. On pose
fk
xk =
fk−1
et on cherche une matrice A telle que xk = Axk−1 (c’est la même chose que xk+1 = Axk , mais
la forme présente sera plus claire ici).
(
fk a11 a12 fk−1 fk = a11 fk−1 + a12 fk−2
xk = Axk−1 ⇐⇒ = ⇐⇒
fk−1 a21 a22 fk−2 fk−1 = a21 fk−1 + a22 fk−2
La première équation suggère de prendre a11 = 1 et a12 = 1 pour donner fk = fk−1 + fk−2 . Que
faire de la deuxième ? Afin d’avoir xk = Axk−1 il faut que cette deuxième équation soit valide,
mais on a déjà la récurrence, donc il nous faut rien de plus. La solution c’est d’ajouter une
équation vraie mais redondante : fk−1 = fk−1 , ce qui s’accompli en mettant a21 = 1 et a22 = 0.
Donc
1 1
xk = x .
1 0 k−1
Comme système algébrique, c’est exactement pareil à un système dynamique avec deux va-
riables. La seule différence est l’interprétation du vecteur des “populations”. On le résout de la
même manière, en calculant les valeurs et vecteurs propres.
√ √
1 1
Exercice 4.3. Monter que les valeurs propres de A = sont λ1 = 1+2 5 et λ2 = 1−2 5 ,
1 0
√ √
1+ 5 1− 5
avec vecteurs propres v1 = 2 et v2 = 2 .
1 1
1 √1 v1 √1 v2 .
Exercice 4.4. Montrer que le vecteur x1 = peut s’écrire comme x1 = −
0 5 5
22 ALISTAIR SAVAGE
xk = Ak−1 x1
k−1 1 1
=A √ v1 − √ v 2
5 5
1 1
= √ (λ1 )k−1 v1 − √ (λ2 )k−1 v2 .
5 5
En termes des nombres fk on obtient
√ !k−1 √ √ !k−1 √
fk 1 1+ 5 1+ 5 1 1− 5 1− 5
=√ 2 −√ 2
fk−1 5 2 1 5 2 1
√ k−1 √ √ k−1 √
fk = √1 1+ 5 1+ 5
5 2 2
− 5 1−2 5
√1 1− 5
2
⇐⇒ √ k−1 √ k−1
fk−1 = √ 1 1+ 5
− √51 1− 5
5 2 2
√ k √ k
fk = √1 1+ 5 − √1 1− 5
5 2 2
⇐⇒ √ k−1 5 √ k−1
fk−1 = √1 1+2 5 − √1 1− 5
5 5 2
On obtient deux fois la même relation. Ce n’est pas surprenant, car fk−1 et fk ne sont pas
deux populations différentes, mais la même population à deux intervalles successifs. Aussi, on
a construit l’équation matricielle en ajoutant une équation redondante : on n’est pas surpris
d’en recevoir dans la réponse une équation redondante aussi.
On a donc une formule exacte pour fk , sans devoir calculer les valeurs intermédiaires. On
se rappelle que fk est√toujours un entier positif. Ceci n’est pas évident dans la formule exacte.
Pourtant, toutes les 5 s’annulent dans le calcul de fk . Même si on ne cherche à calculer que
des suites d’entiers, on entraı̂ne des nombres irrationnels. Parfois, on entraı̂ne même le calcul
avec des nombres complexes (par exemple, si la matrice possède des valeurs propres complexes).
Ceci se produit pour des applications très concrets et réelles.
On a aussi une approximation de la tendance éventuelle, car une des valeurs propres est plus
grande que l’autre (λ1 ≈ 1, 618 et λ2 ≈ −0, 618). Donc pour k “grand” on a
√ !k
1 1+ 5
fk ≈ ek := √ .
5 2
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 23
On mentionne un résultat théorique utile ici. La matrice A a une forme spéciale : la première
rangée contient la récurrence, et en bas on a une matrice identité et une colonne de zéros. On
peut montrer que le polynôme caractéristique de A est
det(xI − A) = xn − α1 xn−1 − α2 xn−2 − · · · − αn x0 .
A B
S’il y aurait une équipe qui avait gagné contre toutes les autres, on pourrait facilement l’identifier
comme la meilleure. Mais ce n’est pas le cas (et en générale ce ne serait pas le cas). Comment
choisir ?
Exemple 5.2. Un internet comprend trois pages web : A, B et C (c’est un exemple simplifié. . . ).
Les liens sont indiqués dans le graphe suivant, où X → Y indique que la page X fait un lien
vers la page Y.
A B
Déterminer la page web “le plus important” ; mieux, donner un ordre aux pages. (On va voir
que ce n’est pas le même problème, même si les graphes sont les mêmes.)
5.2. Équipes. Au lieu de déterminer la meilleure, identifions plutôt un “score” pour chaque
équipe. L’ordre des équipes correspondra à l’ordre des scores. La meilleure équipe sera celle
avec la plus grande score, la deuxième équipe sera celle avec la deuxième score, etc. Comment
déterminer les scores ?
On pose wA , wB et wC les trois scores. Chaque victoire devrait avancé le score, mais de
combien ? On pourra simplement dire que le score est le nombre de victoires de l’équipe qui
donnera wA = 2, wB = 1 et wC = 1. Même sur ce petit exemple, on voit déjà des difficultés : on
aura que A est meilleur et que B et C sont égales, pourtant C a gagné contre la meilleure équipe
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 25
et B n’a pas. Les équipes B et C sont classées comme égales, mais la victoire de C était “plus
importante que celle de B”. On pose donc plutôt que le score devrait être égale à la somme
des scores de toutes les équipes qui ont été défaites. Pour des raisons techniques, on permet un
facteur multiplicatif, donc on pose
(5.1) wX = α (somme de toutes les wY où Y a perdu contre X) .
Le graphe de la ligue de l’exemple 5.1 peut s’écrire en termes de matrice, òu Aij = 1 si j → i,
c’est-à-dire si l’équipe j a perdu contre i. On peut aussi mettre les scores en vecteur. Pour
l’exemple 5.1 on obtient alors
0 0 1 wA
A = 1 0 0 , w = wB .
1 1 0 wC
Alors la condition (5.1) s’écrit comme w = αAw. En autres mots, on a une équation de valeur et
vecteur propre Aw = α1 w avec valeur propre α1 et vecteur propre w. Les scores sont exactement
les composantes du vecteur propre.
Comment choisir le vecteur propre ? Il y a peut-être plusieurs. On s’inspire des idées des
chaı̂nes de Markov.
Exercice 5.3. Est-ce que la matrice A ci-haut est la matrice de transition d’une chaı̂ne de
Markov ?
Bien que la réponse à l’exercice précédent est “non”, on a encore un espoir n’est pas perdu,
car le théorème 3.16 reste encore valide.
Théorème 5.4. Soit A une matrice avec toutes les composantes non-négatives. Si le graphe
correspondante est fortement connexe et apériodique alors la valeur propre dominante λ1 est
positive et de multiplicité un, toute autre valeur propre λj satisfait |λj | < λ1 , et toute composante
du vecteur propre correspondant à λ1 est positif.
Le théorème 3.16 est le cas spécial de celui-ci où la valeur propre dominante est égale à 1.
Donc pour résoudre la question de l’exemple 5.1, on devrait calculer le vecteur propre domi-
nante, et c’est exactement l’ordre d’importance des équipes.
On détermine avec un peu de calcul que la valeur et vecteur propre dominante sont
1
λ1 ≈ 1, 32 , v1 ≈ 0, 75 .
1, 32
Donc l’équipe C est la meilleure, suivie de A, suivie de B.
On se rappelle que calculer toutes les valeurs et vecteurs propres est une tâche onéreuse,
surtout pour des grandes matrices. Par contre, on ne cherche qu’une seule chose : le vecteur
propre dominante (on pourrait presque dire vecteur d’état stationnaire sauf que. . . ).
26 ALISTAIR SAVAGE
On s’inspire donc d’une technique qu’on a vu pour les chaı̂nes de Markov : on considère les
puissances de A. Si on prend k suffisamment grande, alors les colonnes de Ak seront toutes
des multiples de ce vecteur propre dominante (approximativement). On se rappelle que pour
une matrice stochastique régulière P , les colonnes de P k sont approximativement toutes égales,
et égales au vecteur d’état stationnaire (pour k suffisamment grand). Ici, la matrice n’est pas
stochastique qui donne qu’on aura des multiples du vecteur propre dominante.
5.3. Pages web. On voit que l’exemple 5.2 est essentiellement la même que l’exemple 5.1.
Une “perte” est maintenant un “lien vers”, mais dans un sens c’est la même chose. Dans les
deux exemples, les flèches indiquent la progression : soit vers la meilleure équipe, soit vers la
prochaine page.
Il y a une différence technique. Dans la ligue, chaque jeux a une certaine influence : l’infor-
mation totale est le nombre de jeux. Mais sur l’internet, un page qui fait plusieurs liens donne
moins d’importance à chacun. La solution c’est de créer une chaı̂ne de Markov. Dans chaque
page, on accorde une probabilité égales à chacun des liens. Ceci est équivalent à diviser chaque
colonne de A par sa somme.
0 0 1 0/2 0/1 1/1 0 0 1
A = 1 0 0 −→ P = 1/2 0/1 0/1 = 0.5 0 0
1 1 0 1/2 1/1 0/1 0.5 1 0
La matrice P représente la matrice de transition du “surfeur aléatoire” : à chaque page web, il
choisit par hasard un des liens et le suit. Au long terme, les surfeurs aléatoires seront décrits
par le vecteur d’état stationnaire.
On cherche donc le vecteur d’état stationnaire de P (pour une matrice stochastique, le vecteur
d’état stationnaire et le vecteur propre dominante sont exactement la même chose). Quelques
calculs donnent la valeur et vecteur propre dominante :
0, 4
λ1 = 1, v1 = 0, 2 .
0, 4
On a ici que les pages A et C sont d’importance égale, et que B est moins importante. Note que
ce n’est pas la même chose que la ligue. C’est raisonnable que les deux approches donnerait pas
exactement la même importance. Dans la ligue, si C aurait perdu contre A 15 fois, on aurait
peut-être changé notre opinion sur l’ordre des équipes. Mais qu’une page web fait 15 liens vers
une autre page ne devrait pas compter 15 fois.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 27
Exercice 5.6. Comment saviez-vous sans calcul que la valeur propre dominante est 1 ?
On pourra aussi calculer des puissances de P afin de voir le vecteur d’état stationnaire dans
les colonnes.
0, 40625 0, 4375 0, 37500 0, 3994140625 0, 400390625 0, 4003906250
P 10 = 0, 18750 0, 1875 0, 21875 , P 20 = 0, 2001953125 0, 199218750 0, 2001953125
0, 40625 0, 3750 0, 40625 0, 4003906250 0, 400390625 0, 3994140625
Exercice 5.7. Est-ce que k = 10 est “grand” ? C’est-à-dire, est-ce que toutes les colonnes de
P 10 sont à peu près égales ? Et k = 20 ? En vous fiant aux puissances données, donner une
approximation du vecteur d’état stationnaire et la comparer au vecteur exact ci-haut.
On peut faire mieux, en introduisant un peu de paresse : à chaque page web, on se permet
l’option de ne rien faire, c’est-à-dire de rester sur la page présente. Posons que la probabilité
de se déplacer est d. Cette probabilité se divise également entre les liens de la page, et le 1 − d
restant s’attache à la page présente. Voici le graphe et la matrice de transition Q.
1−d 1−d
d/2
A B
d/2 1−d 0 d
d Q = 0, 5d 1 − d 0
d 0, 5d d 1−d
1−d
Les deux matrices de transition, P et Q, sont fortement reliés.
Exercice 5.8. Montrer que Q = dP + (1 − d)I, où I représente la matrice d’identité.
Exercice 5.9. Montrer que P et Q possèdent exactement les mêmes vecteurs propres (indice :
calculer Iv où v est vecteur propre de P ). Quelles sont les valeurs propres de Q, en termes
de celles de P ? En particulier, montrer que si v est vecteur propre de P avec valeur propre 1,
alors v est aussi vecteur propre de Q avec valeur propre 1. qed
La conséquence est que le vecteur d’état stationnaire de P est exactement la même que le
vecteur d’état stationnaire de Q. On pourra utiliser l’une ou l’autre matrice. La distinction,
28 ALISTAIR SAVAGE
c’est que la paresse est plus rapide : une puissance de Q converge typiquement plus rapidement
vers le vecteur d’état stationnaire qu’une puissance de P . Par exemple, si d = 0, 5, on a
0, 399994 0, 399963 0, 400024
Q10 ≈ 0, 200012 0, 200012 0, 199982 .
0, 399994 0, 400024 0, 399994
On voit clairement le vecteur d’état stationnaire, à quatre décimales. À comparer avec P 10 .
Il reste une autre optimisation (qui s’applique également aux chaı̂nes de Markov et même au
systèmes dynamiques).
Principe. Soit A une matrice. Les colonnes de Ak sont toutes approximativement multiples
d’un même vecteur v si et seulement si Ak x0 est approximativement multiple de v pour tout
vecteur x0 .
Donc au lieu de calculer Ak , ou aurait pu calculer Ak x0 pour n’importe quel vecteur de départ
x0 . L’avantage c’est au plan technique : calculer Ak entraı̂ne multiplier matrice par matrice k
fois, tandis que Ak x0 ne requiert que multiplier matrice par vecteur k fois.
h i
0.5
Exercice 5.10. Soit x0 = 0.5 . Calculer P 10 x0 , P 20 x0 et Q10 x0 pour les matrices P et Q
0
ci-haut, avec d = 0, 5 (en utilisant les calculs de puissances déjà donnée). Vérifier qu’on obtient
des approximations des vecteurs dominantes. Choisir d’autres vecteurs de départ et refaire.
6. Programmes linéaires
6.1. Introduction.
Exemple 6.1. Une usine fabrique deux sortes de vélos, X et Y. La main-d’oeuvre est distribuée
parmi trois usines, A, B, et C. Les vélos de type X nécessitent 2 heures de travail dans l’usine A,
1 heure dans B et 1 heure dans C. Les vélos de type Y nécessitent 1 heure de travail dans l’usine
A, 1 heure dans B et 3 heures dans C. Chaque vélo X remporte $40 de profit et chaque vélo Y
remporte $60. Le temps disponible chaque semaine pour fabriquer des vélos est 70 heures dans
l’usine A, 40 heures dans B et 90 heures dans C. Combien de vélos de chaque type devrait-on
fabriquer afin de maximiser le profit ?
Bien que les chiffres sont peut-être artificiels dans cet exemple, on peut voir un problème
général. On cherche à optimiser une certaine fonction (ici, maximiser le profit total). En principe,
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 29
c’est simple : on augmente la production. Mais on a aussi des contraintes sur les ressources
disponibles (ici, des limites sur le nombre d’heures au total).
Avant de passer aux détails, on observe que dans l’exemple 6.1, il y a deux variables : le
nombre de vélos de type X et le nombre de type Y. Il y a aussi trois contraintes : chacune des
trois usines a une limite sur le nombre d’heures disponible. Si on considère que chaque variable
doit être positive, on a deux autres contraintes. On pourrait facilement imaginer une situation
avec beaucoup plus de variables, et beaucoup plus de contraintes. Donc on ne cherche pas
seulement une réponse à l’exemple 6.1, mais une réponse qu’on pourrait généraliser et même
automatiser.
Dans l’exemple 6.1, on identifie deux paramètres qu’on peut modifier : le nombre de vélos de
chaque type. Ce sont les variables. Notons x1 pour le nombre de vélos de type X et x2 pour le
nombre de type Y. Étant donné des valeurs pour x1 et x2 , le profit est
40x1 + 60x2
On dit que c’est la fonction objective, ou parfois l’objectif .
Il y a aussi trois limites sur les ressources ; autrement dit, trois raisons pourquoi on ne peut
pas simplement fabriquer une infinité de vélos (pour un profit infini). Ce sont les contraintes
du problème.
2x1 + 1x2 ≤ 70
1x1 + 1x2 ≤ 40
1x1 + 3x2 ≤ 90
Exercice 6.2. Vérifier que ces matrices donnent vraiment l’objectif et les contraintes de
l’exemple 6.1.
On dit programme linéaire pour un problème qui cherche à optimiser une fonction linéaire
sujet à une contrainte linéaire. Donc l’objectif est soit max cT x ou min cT x. Les contraintes
peuvent êtres une combinaison de Ax ≤ b, Ax ≥ b, x ≥ 0, x ≤ 0 ou x libre. On dit qu’un
programme linéaire de la forme précise de l’équation (6.1) est en forme canonique.
Exemple 6.3. Voici quelques exemples de programmes linéaires.
1 1 0 10
min 2 3 −1 x s.c. x≤ , x≥0
0 1 −1 10
1 2 0
max 2 3 x s.c. x≤ , x≥0
2 1 1
−1 1 1
max 1 1 x s.c. 1 −2 x ≤ 1 , x ≥ 0
2 2 10
Exercice 6.4. Pour chaque programme linéaire ci-haut, identifier le nombre de variables ; c’est-
à-dire, la taille du vecteur x dans chaque cas. Aussi identifier le nombre de contraintes, et écrire
explicitement la fonction objective et chacune des contraintes.
Bien que l’application serait en forme de maximiser ou minimiser, il n’y a pas de différence
fondamental. On peut transformer un programme linéaire pour donner un système équivalent.
Exemple 6.5. Soit le programme linéaire min 2x1 − x2 s.c. x1 − x2 ≥ 3, x1 + x2 ≤ 4.
Minimiser 2x1 −x2 équivaut à maximiser la négative, c’est-à-dire maximiser −2x1 +x2 . Aussi,
exiger que x1 −x2 ≥ 3 équivaut à exiger que −x1 +x2 ≤ −3. Donc les deux programmes suivants
sont équivalents :
(
x1 − x2 ≥ 3 −1 1 −3
min 2 −1 x s.c. max −2 1 x s.c. x≤
x1 + x2 ≤ 4 1 1 4
6.3. Région faisable : solution graphique. Étant donné un programme linéaire, l’ensemble
de toutes les valeurs permissibles des variables donne la région faisable. Formellement, pour un
programme linéaire de la forme (6.1), la région faisable est l’ensemble de tout x avec Ax ≤ b
et x ≥ 0. C’est un sous-ensemble de Rn , donc on peut imaginer une représentation graphique
RÉGION FAISABLE:
INTRODUCTION SOLUTION
À L’ALGÈBRE GRAPHIQUE
LINÉAIRE APPLIQUÉE 31
— duÉtant
moins pour n = 2 ! Un point dans la région faisable est dit solution faisable. C’est une
donné un programme linéaire, l’ensemble de toutes les valeurs permissibles des vari-
solution au programme linéaire
ables donne la région qui n’est
faisable. peut-être pas
Formellement, optimale,
pour mais dulinéaire
un programme moins delégal
la !forme
équation (6.1), la région faisable est l’ensemble de tout x avec Ax ≤ b. C’est un sous-ensemble
Reprenons l’exemple
de Rn , donc on peut 6.1. Pour chaque
imaginer contrainte, on
une représentation obtient une
graphique — dudroite
moinsen pour
remplaçant
n = 2! chaque
Un
inégalité
pointpar une
dans la égalité. L’inégalité
région faisable est ditcorrespond
solution àfaisable.
l’une ou C’est
l’autreune
côté de la au
solution droite : c’est un
programme
demi-plan.
linéaireLa
quirégion faisable correspond
n’est peut-être pas optimale,à l’intersection
mais du moinsde toutes les demi-plans.
légal!
Reprenons l’exemple 6.1. Pour chaque contrainte, on obtient une droite en remplaçant chaque
Pour l’exemple
inégalité 6.1,égalité.
par une il y aL’inégalité
cinq contraintes : on
correspond compte
à l’une 1 ≥de0 laetdroite:
aussi xcôté
ou l’autre x2 ≥ c’est
0 comme
un
contraintes.
demi-plan. La région faisable correspond à l’intersection de toutes les demi-plans.
Pour l’exemple 6.1, il y a cinq contraintes:
2x1 + 1x2on≤ compte
70 aussi x1 ≥ 0 et x2 ≥ 0 comme
contraintes.
1x1 + 1x2 ≤ 40
1 + 1x2 ≤ 70
1x2x
1 + 3x2 ≤ 90
1x1 + 1x2 ≤ 40
x1 ≥ 0
1x1 + 3x2 ≤ 90
x2 ≥ 0
x1 ≥ 0
Donc afin de déterminer la région faisable on aurait
x2 ≥cinq
0 droites. Les contraintes sont numérotés
dans Donc
l’ordreafin
donnée. La régionlafaisable
de déterminer région est indiquée
faisable en gris.
on aurait cinq droites. Les contraintes sont
numérotés dans l’ordre donnée. La région faisable est indiquée en gris.
1
2
4 3
Exercice 6.6. Déterminer les points d’intersection de chaque pair de droites. Note qu’afin
Exercice 6.6. Déterminer les points d’intersection de chaque pair de droites. Note qu’afin
de faire un graphique précis, c’est souvent utile de calculer les interceptes: ce sont les points
de faire un graphique
d’intersection d’uneprécis, c’est souvent
des “vraies” utilexde=calculer
droites avec les0.interceptes : ce sont les points
0 ou x2 =
1
d’intersection d’une des “vraies” droites avec x1 = 0 ou x2 = 0.
Pour chaque point dans le plan, on pourrait calculer un profit. Par exemple, si x1 = −100
et x2 = 20 on obtient un profit de 40x1 + 60x2 = −$3880. Mais ce calcul est illusoire, car
Pourlechaque point 20)
point (−100, dansn’est
le plan, on pourrait
pas faisable. calculer
On peut un profit.
voir que ce n’estPar
pas exemple,
faisable desideux −100 et
x1 =façons:
x2 = soit en obtient
20 on le plaçant
unsur le graphique,
profit de 40x1 +ou60x 2 = −$3880.
mieux, en calculant
Mais Ax
ce et comparant
calcul est à b.
illusoire, car le point
(−100, 20) n’est
Exercice pasPour
6.7. faisable.
chaqueOnpoint
peutdonné,
voir que ce n’estlepas
déterminer faisable
profit de deux façons
correspondant. : soit
Lesquelles en le
sont
plaçant sur le graphique, ou mieux, en calculant Ax et comparant à b.
des solutions faisables? En comparant les profits à chaque point, déterminé lesquels ne sont
pas optimales.
Exercice 6.7. Pour chaque point donné, déterminer le profit correspondant. Lesquelles sont
des solutions(−20,
Points: 100),?(0,
faisables En0), (10, 10), (15,
comparant les 15), (30,à0),
profits (0, 25).point, déterminé lesquels ne sont pas
chaque
optimales.
On peut solutionner un programme linéaire graphiquement, en suivant la tendance de la fonc-
tion objective
Points sur la(0,région
: (−20, 100), faisable.
0), (10, On15),
10), (15, identifie
(30, les
0), surfaces
(0, 25). de valeur constant de l’objectif.
24
32 ALISTAIR SAVAGE
P P
On trouve que la solution optimale se trouve au point P = (15, 25). On y retrouve un profit
de 40(15)
On trouve que+ 60(25) = $2100.
la solution optimale se trouve au point P = (15, 25). On y retrouve un profit de
40(15) + 60(25) = $2100.
Exercice 6.9. Pour chaque programme linéaire de l’exemple 6.3, faire un graphique de la
région 6.9.
Exercice faisable.
PourDéterminer la direction
chaque programme de croissance
linéaire de la6.3,
de l’exemple fonction objective.
faire un graphiqueTenter
de la de
région
solutionner en suivant la direction de croissance de la fonction objective. Que remarquez-vous
faisable. Déterminer la direction de croissance de la fonction objective. Tenter de solutionner
pour chaque
en suivant programme?
la direction de croissance de la fonction objective. Que remarquez-vous pour chaque
programme ?
Leçon
La solution graphique de l’exemple 6.1 est raisonnable. La difficulté est 8que
: 3leoctobre 2011
nombre de
dimensions est en générale égale au nombre de variables.
Une contrainte linéaire donne en général un hyperplan: une surface de n−1 dimensions. Donc
en R2 , on a des droites comme on a vu. En R3 les contraintes donnent des plans. De même
6.4. Solution analytique : sommets. La solution graphique de l’exemple3 6.1 est raisonnable.
avec les surfaces d’objectif constant: on a une série de plans parallèles en R .
La difficulté est que le nombre de dimensions est en générale égale au nombre de variables.
L’idée de la solution graphique reste valide, donc on s’inspire pour développer quelques idées.
Une
On contrainte
observe quelinéaire en noptimale
la solution variables donne
s’est en général
produit un hyperplan
à un sommet, : une
c’est-à-dire surface dede
l’intersection n−1
dimensions. DoncEn
deux droites. R , on aundes
2
engénérale, droitesestcomme
sommet on a vu.
l’intersection de En R les contraintes
3
n hyperplans en R : donc
n donnent
deux des
droites
plans. en Rn ,avec
De même trois les
plans
surfaces etc1
en R3 ,d’objectif constant : on a une série de plans parallèles en R3 .
Proposition 6.10. Si un programme linéaire possède une solution optimale, alors, parmi
L’idée de la solution graphique reste valide, donc on s’inspire pour développer quelques idées.
toutes les solutions optimales d’un programme linéaire, on peut trouver une solution optimale
à un sommet.
1 On exige de plus que les hyperplans sont en position générale, ou autrement dit, indépendants. Donc on
ne considère pas l’intersection de deux droites parallèles, ni de trois plans qui partageant une droite, etc.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 33
F’
F
On conclut que les points intérieurs ne sont jamais optimales. En allant vers F 0 on atteint
une des contraintes. Dans cet exemple, la contrainte atteinte n’est pas parallèle aux droites
0
On de
conclut
valeurque les points
constant intérieurs
de l’objectif, doncne on
sont jamais
peut optimales.
continuer En allant
à augmenter vers F
jusqu’au on atteint
sommet P . Si une
des la
contraintes.
contrainte Dans
auraitcet
étéexemple,
parallèle,laoncontrainte
aurait pu atteinte
continuern’est pas parallèle
à gauche auxen
ou à droite droites de valeur
conservant
l’objectif,
constant donc on aurait
de l’objectif, donc on trouvé
peutuncontinuer
sommet ayant la mêmejusqu’au
à augmenter valeur objective
sommetque P . FSi0 .la contrainte
aurait été parallèle, on aurait pu continuer à gauche ou à droite en conservant l’objectif, donc
On a donc
on aurait l’algorithme
trouvé un sommetsuivant
ayantpour solutionner
la même valeurunobjective
programmequelinéaire.
F 0.
Algorithme 6.11. Soit un programme linéaire qui possède une solution optimale. On peut
la trouver comme suit.
On a donc l’algorithme suivant pour solutionner un programme linéaire.
1. Déterminer tous les sommets.
Algorithme 6.11. Soit un programme linéaire qui possède une solution optimale. On peut la
2. Évaluer la fonction objective à chaque sommet.
trouver comme suit.
3. Choisir une des sommets qui donne la valeur optimale.
(a) Déterminer tous les sommets.
(b) R2 , un sommet
En Évaluer est l’intersection
la fonction objective à de deux droites
chaque sommetqui
deest
la aussi
régionunfaisable.
point faisable. Donc on
calcule l’intersection de chaque paire de droites et on élimine les points non-faisables.
(c) Choisir une des sommets qui donne la valeur optimale.
Exemple 6.12. On retourne à l’exemple 6.1. On identifie les sommets: P , Q, R et S.
Le point Z est l’intersection de deux contraintes, mais ce n’est pas un sommet car ce n’est
pasRfaisable.
2
En , un sommet est l’intersection
On calcul de deux
l’objectif à chaque droites
sommet, et qui est aussi
on voit que Punestpoint faisable.
optimale parmiDonc
les on
calcule l’intersection
sommets, deune
donc c’est chaque paire
solution de droites
optimale et on élimine
du programme les points non-faisables.
linéaire.
1. On exige de plus que les hyperplans sont en position générale, ou autrement dit, indépendants. Donc on
point
ne considère pasRl’intersection de deux droites parallèles, ni de coord.
trois plans quiobjectif
partageant une droite, etc.
P
Z P (15, 25) $2100
Q (30, 10) $1800
R (0, 30) $1800
Q S (35, 0) $1400
O (0, 0) $0
Algorithme 6.11. Soit un programme linéaire qui possède une solution optimale. On peut
la trouver comme suit.
1. Déterminer tous les sommets.
2. Évaluer la fonction objective à chaque sommet.
34 3. Choisir une des sommets quiALISTAIR
donne laSAVAGE
valeur optimale.
Exemple
En R26.12. On retourne
, un sommet à l’exemple
est l’intersection 6.1. droites
de deux On identifie
qui estles sommets
aussi un point: faisable.
P , Q, RDonc
et S.onLe
point calcule
Z est l’intersection
l’intersection de chaque paire de droites et on élimine les points non-faisables. calcule
de deux contraintes, mais ce n’est pas un sommet faisable. On
l’objectif à chaque sommet, et on voit que P est optimale parmi les sommets, donc c’est une
Exemple
solution optimale6.12. On retournelinéaire.
du programme à l’exemple 6.1. On identifie les sommets: P , Q, R et S.
Le point Z est l’intersection de deux contraintes, mais ce n’est pas un sommet car ce n’est
pas faisable. On calcul l’objectif à chaque sommet, et on voit que P est optimale parmi les
sommets, donc c’est une solution optimale du programme linéaire.
26
Exercice 6.14. Solutionner chaque programme linéaire de l’exemple 6.3 en utilisant l’algo-
rithme 6.11. Comparer avec vos résultats de l’exercice 6.9. Que remarquez-vous pour chaque
programme ?
6.5. Difficultés. Solutionner un programme linéaire en suivant algorithme 6.11 est meilleur
que faire un graphique, mais il reste encore des difficultés. En R2 , on voit que la région faisable
est un polygone, donc il y a au plus p sommets, où p représente le nombre de contraintes. En
Rn , le nombre de sommets peut être exponentiel : même faire une liste est quasi-impossible.
Il nous faut une méthode qui ne considère pas chaque sommet, mais plutôt une méthode qui
choisit un sommet optimale.
Il y a une autre difficulté : afin d’appliquer l’algorithme 6.11, il faut savoir qu’il y a une
solution optimale. Il faudrait donc détecter ceci.
Vous avez déjà vu un exemple d’un programme linéaire qui n’a pas de solution optimale
parmi l’exemple 6.3. Cette situation correspond à une région faisable qui n’est pas borné dans
la direction de croissance de l’objective.
Vous avez aussi vu un exemple d’un programme linéaire qui n’a pas de solution unique. En
générale, l’ensemble des solutions optimales est soit un point (unique !), un segment de droite,
un segment d’un plan, etc.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 35
7. Méthode simplex
7.1. Introduction. On cherche un algorithme qui pourra trouver un sommet optimal, sans
devoir tester chaque sommet. C’est parce que un programme linéaire peut avoir un nombre
énorme de sommets : on trouve aisément des programmes linéaires dont la région faisable
possède plus de sommets que le nombre d’électrons dans l’univers.
max cT x s.c. Ax ≤ b, x ≥ 0.
Donc on présume que chaque inégalité est écrit du forme “variables au plus petite ou égale à
constante”. On dénote par n le nombre de variables et p le nombre de contraintes (pas incluant
les contraintes x ≥ 0). Donc A est de taille n × p.
De plus, on suppose que le vecteur b est complètement non-négatif, c’est-à-dire que chaque
constante à droite est non-négative. C’est une restriction technique : on verra bientôt comment
traiter les autres cas.
On introduit une autre variable M pour l’objectif. Ce n’est pas une variable “libre”, car on
connaı̂t que M = cT x. En forme standard, on écrit M − cT x = 0.
7.3. Sommets et pivots : trouver l’optimum. Observons que le tableau de simplex est en
forme échelonnée, pourvu qu’on se permet de permuter les colonnes. Les pivots de l’équation (7.2)
sont des les colonnes 1, 4, 5 et 6. Donc les variables libres sont x1 et x2 . Il y a exactement n = 2
variables libres. De façon générale, il y aurait toujours exactement n variables libres.
On cherche une solution qui correspond à un sommet, autrement dit, une solution qui cor-
respond à avoir une égalité dans n des contraintes : soit les p contraintes du problème ou les n
contraintes de la forme xj ≥ 0. Mais une égalité dans une des contraintes originales correspond
exactement à avoir une des variables auxiliaires égale à zéro. On a le résultat important suivant :
Proposition 7.2. Un sommet de la région faisable est exactement une solution du tableau de
simplex avec n des variables (réelles ou auxiliaires) égales à zéro.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 37
Donc on interprète le tableau de simplex comme suit. Les pivots indiquent les variables de
base, et les variables libres (les n variables libres) seront zéro. Dans le tableau actuel, on lit la
solution suivante :
x1 = x2 = 0
M = 0, y1 = 70, y2 = 40, y3 = 90
C’est une solution faisable : fabriquer rien du tout pour un profit nul. Mais ce n’est pas optimal.
Comment l’améliorer ?
On cherche une solution parmi les sommets, donc parmi les solutions ayant n variables
nulles. L’idée c’est de changer les pivots pour permettre un meilleur choix. Autrement dit, on
doit choisir une des variables libres, et modifier le tableau pour que sa colonne possède un
pivot. Autrement dit, on doit choisir une des variables qui est zéro dans la solution actuelle, et
l’augmenter.
Exercice 7.3. Pourquoi est-ce qu’on ne peut pas diminuer une des variables qui est zéro dans
la solution actuelle ?
Comment choisir ?
La première rangée donne l’équation de M . On lit que M −40x1 −60x2 = 0 ou M = 40x1 +60x2
(attention au signes !). On a le choix d’augmenter x1 ou x2 (correspondant aux valeurs négatives
dans la première rangée). Augmenter x2 a une plus forte influence sur M , donc on choisit
d’augmenter x2 , ce qui équivaut à choisir la colonne de x2 comme colonne qui aura un pivot.
On identifie x2 comme la variable qui entre dans la solution : c’est la colonne qu’on choisit.
Il faut maintenant choisir la rangée, c’est-à-dire la position dans cette colonne où sera le pivot.
L’idée c’est que, en augmentant x2 , il faut que les autres variables restent positives. Donc au
pire la contribution de x2 ne peut pas dépasser la constante dans la colonne b. En regardant
les trois rangées correspondant aux contraintes, on voit qu’on a des limites en augmentant x2 :
x2 ≤ 70
x2 ≤ 40
3x2 ≤ 90
Ces limites garantissent que x2 reste faisable. La limite la plus restrictive est 3x2 ≤ 90, donc
c’est dans cette rangée qu’on aura le pivot.
Afin d’accomplir ceci, on multiplie la troisième rangée par 1/3, et on la soustrait des autres
rangées. Voici le tableau qui en résulte.
1 −20 0 0 0 20 1800
5
0 0 1 0 − 13 40
3
0 2
3
0 0 1 − 13 10
1
0 3
1 0 0 31 30
De ce tableau on lit la solution de la même manière. On identifie les variables libres et on leur
donne la valeur zéro. Les autres se lisent directement du tableau.
x1 = y 3 = 0
M = 1800, x2 = 30, y1 = 40, y2 = 10
C’est une solution préférable, car M a augmenté. Mais on peut faire mieux, en observant que
dans la première rangée il y a encore une valeur négative. Donc on peut encore augmenter M
en introduisant la variable x1 dans la solution. En augmentant x1 il faudrait avoir
5
x1 ≤ 40
3
2
x1 ≤ 10
3
1
x1 ≤ 30
3
La condition la plus restrictive est la deuxième. Ceci indique la position du prochain pivot :
colonne de x1 et la rangée de 23 x1 ≤ 10.
1 −20 0 0 0 20 1800
5
0 0 1 0 − 13 40
3
0 2
0 0 1 − 1
10
3 3
1 1
0 3
1 0 0 3 30
3
On multiplie cette rangée par 2
et ensuite on utilise le 1 pour annuler les autres éléments de la
colonne. Ceci donne :
1 0 0 0 30 10 2100
0 0 0 1 −5 1 15
2 2
0 1 0 0 32 − 12 15
0 0 1 0 − 12 21 25
Dans ce tableau on lit la solution
y2 = y3 = 0
M = 2100, x1 = 15, x2 = 25, y1 = 15
C’est encore plus préférable, car M a augmenté.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 39
Pour trouver une prochaine solution, on a l’option d’introduire la variable y2 ou y3 . Mais les
deux éléments correspondants dans la première rangée sont non-négatifs. Autrement dit, on a
maintenant M = 2100 − 30y2 − 10y3 . On voit alors que augmenter y2 ou y3 diminuerait la valeur
de M .
7.4. Conditions sur la variable qui entre. Il se peut qu’un programme linéaire possède des
solutions, mais ne possède aucune solution optimale. On verra comment la méthode de simplex
permet de détecter ce phénomène.
Exercice 7.5. Pouvez-vous donner une raison pourquoi on pourrait ne pas avoir une solution
optimal ?
Ici, on voit que la première “condition” n’est pas une condition du tout. On cherche à augmenter
x2 . On peut l’augmenter autant qu’on veut, on aura toujours −x1 ≤ 1. Donc la seule condition
restrictive est que x1 ≤ 4. C’est donc la rangée correspondante qui indique l’endroit du prochain
pivot.
1 −1 −1 0 0 0
0 −1 1 1 0 1
0 1 −2 0 1 4
On fait des opérations de rangée pour que cette position devienne pivot :
1 0 −3 0 1 4
0 0 −1 1 1 5
0 1 −2 0 1 4
La solution actuelle est
x2 = y2 = 0,
M = 4, x1 = 4, y1 = 5.
On peut augmenter M , car il y a une valeur négative dans la première rangée. Donc on augmente
x2 . Les conditions restrictives sont
−x2 ≤ 5
−2x2 ≤ 4
Aucune de ces conditions impose une restriction sur x2 . On cherche à augmenter x2 ; on peut
augmenter à volonté ! Donc il n’y a aucune limite sur la valeur de M .
Si c’était un problème réel, alors on aurait probablement oublié une contrainte (normalement
on ne pourrait pas produire une quantité illimité de quoi que ce soit). Mais ce problème, tel
que présenté, ne possède aucune solution optimale.
Exercice 7.7. On a fait le choix d’augmenter x1 au début. Refaire l’exemple avec le choix de x2 .
Est-ce que le résultat final est pareille ? Est-ce que les résultats intermédiaires sont pareilles ?
On observe une des constantes est négative. Voyons ce qui se passe. On forme le tableau
initial.
1 2 −3 0 0 0
0 −1 1 1 0 −1
0 1 1 0 1 2
On lit la solution initiale.
x1 = x2 = 0
M = 0, y1 = −1, y2 = 2
Le problème ici, c’est que cette “solution” n’est pas faisable, car y1 < 0. N’étant pas faisable,
ce n’est certainement pas un sommet. Que faire ?
Exercice 7.10. Montrer que si b ≥ 0 alors la solution obtenue du tableau initial est toujours
faisable. Montrer que si b 6≥ 0 alors la solution obtenue du tableau initial n’est pas faisable.
On comprend que la vraie raison d’exiger que b ≥ 0 est que c’est une façon de garantir que
la solution initiale est faisable. Pour la méthode de simplex en forme canonique, la solution
initiale est toujours l’origine ; ici l’origine n’est pas faisable. Donc le vrai problème c’est com-
ment trouver une solution initiale, c’est-à-dire un sommet de la région faisable, afin de pouvoir
démarrer la méthode de simplex.
Exercice 7.11. Vérifier que l’origine n’est pas un point faisable de l’exemple 7.9.
La solution c’est d’introduire une variable artificielle, qui est, comme les autres, non-négative.
−x1 + x2 + y1 − s = −1
42 ALISTAIR SAVAGE
Si on exige que s soit variable de base on voit qu’il y a une solution : s = 1. La variable
artificielle permet “d’absorber” la négativité. Mais le fait que s 6= 0 veut dire qu’on n’a pas une
solution faisable au programme linéaire original. Donc on cherche une solution qui minimise s,
c’est-à-dire qui maximise −s.
Afin de trouver une solution faisable au programme linéaire original, on résout le programme
suivant :
(
−x1 + x2 − s ≤ −1
max −s s.c. , x1 , x2 , s ≥ 0
x1 + x2 ≤ 2
On a donc le tableau suivant, mais on veut que s soit une variable de base, c’est-à-dire qu’on
veut que la colonne de s possède un pivot.
M0 x1 x2 y1 y2 s
1 0 0 0 0 1 0
0 −1 1 1 0 −1 −1
0 1 1 0 1 0 2
(Ici, M 0 = −s est la fonction qu’on veut maximiser.)
La colonne de s doit être ajusté pour que le pivot soit réellement un pivot.
1 0 0 0 0 1 0 1 −1 1 1 0 0 −1
0 −1 1 1 0 −1 −1 → 0 1 −1 −1 0 1 1
0 1 1 0 1 0 2 0 1 1 0 1 0 2
Note qu’en exigeant que la colonne de s possède un pivot (au lieu de y1 ) on rend la constante
non-négative. On lit la solution initiale :
x1 = x2 = y1 = 0,
0
M = −1, y2 = 2, s = 1.
On savait ceci déjà, n’est-ce pas ? (On se souvient que l’objectif M 0 est égale à −s et non le
“vrai” objectif.)
Les constantes sont toutes non-négatives : ce serait toujours le cas, car en faisant à ce que s
devient variable de base on multiplie sa rangée par −1, qui “répare” la constante négative.
On peut maintenant faire une méthode simplex ordinaire. On identifie la variable x1 comme
variable qui entre, et on trouve la position du prochain pivot. Ensuite on fait des opérations de
rangées pour que ça devienne pivot.
1 −1 1 1 0 0 −1 1 0 0 0 0 1 0
0 1 −1 −1 0 1 1 → 0 1 −1 −1 0 1 1
0 1 1 0 1 0 2 0 0 2 1 1 −1 1
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 43
On a la solution actuelle :
x2 = y1 = s = 0,
0
M = 0, x1 = 1, y2 = 1.
Encore une fois, le M 0 représente l’objectif de −s. Note qu’on ne peut pas augmenter M 0 , car il
n’y a aucune valeur négative dans la première rangée. Par contre, on a atteint notre but : une
solution ayant s = 0. On voit ceci de deux façons : la colonne de s ne possède pas de pivot,
donc on peut la mettre égale à zéro. De plus, l’objectif M 0 = −s a atteint la valeur de zéro.
Si on avait trouvé une solution optimale avec M 0 < 0 (ou s > 0) alors on aurait conclut
qu’il n’existe aucune solution faisable avec s = 0. Autrement dit, le programme linéaire original
n’aurait eu aucune solution faisable du tout : une région faisable vide !
Ici ce n’est pas le cas : on a trouvé une solution faisable. Elle se produit avec x1 et y2 comme
variables de base. C’est exactement la raison d’avoir introduit une variable artificielle : pour
trouver ce que devrait être les pivots dans le tableau initial. Donc on retourne au tableau
initial, mais maintenant on exige que les pivots soient dans les colonnes indiqués par notre
dernier tableau “artificielle”, c’est-à-dire dans les colonnes de x1 et y2 .
1 2 −3 0 0 0 1 0 −1 2 0 −2
0 −1 1 1 0 −1 → 0 1 −1 −1 0 1
0 1 1 0 1 2 0 0 2 1 1 1
On observe que toutes les constantes sont non-négatives. Ce serait toujours le cas : le fait
d’avoir identifier les bonnes colonnes pour les variables de base garantit que les nouvelles
constantes seront toutes non-négatives. On peut maintenant retourner à la méthode se sim-
plex standard. On lit la solution initiale (qui est maintenant faisable !) :
x2 = y1 = 0
M = −2, x1 = 1, y2 = 1
On voit que c’est possible d’augmenter M en introduisant la variable x2 . Note qu’une des
conditions restrictives sur x2 n’est pas une restriction.
1 0 −1 2 0 −2 1 0 0 52 21 − 32
0 1 −1 −1 0 1 → 0 1 0 − 12 21 32
0 0 2 1 1 1 0 0 1 12 21 12
On lit la solution actuelle.
y1 = y2 = 0
3 3 1
M = − , x1 = , x2 =
2 2 2
44 ALISTAIR SAVAGE
Exercice
Exercice 7.13.
7.13. Solutionnerleleprogramme
Solutionner programme linéaire
linéaire suivant
suivantenenutilisant la la
utilisant méthode de simplex.
méthode de simplex.
(
(x − x ≥ 2
min 4x1 − 5x2 s.c. x11 − x2 2 ≥ 2 , x ≥ 0
min 4x1 − 5x2 s.c. x1 + x2 ≤ 1 , x≥0
x1 + x2 ≤ 1
Faire un graphique de ce programme linéaire. Bien indiquer la région faisable et les sommets.
FaireIndiquer
un graphique de ce programme
sur ce graphique linéaire.
les solutions Bien indiquer
intermédiaires la région
de votre faisable
méthode et les sommets.
(méthodes?) de
Indiquer sur ou
simplex, ce graphique les solutions
alternativement, intermédiaires
tenter d’expliquer de votre
de façon méthodela(méthodes
géométrique ?) de simplex,
solution obtenue.
ou alternativement, tenter d’expliquer de façon géométrique la solution obtenue.
(e) S’il n’y a aucune condition restrictive alors on pourra augmenter M autant qu’on veut.
On arrête : il n’y a aucune solution optimale.
(f) On connaı̂t maintenant la position du prochain pivot. On multiplie cette rangée par une
constante afin que le pivot devienne 1, et on l’utilise pour annuler les autres éléments
dans sa colonne.
Si b 6≥ 0, c’est que l’origine n’est pas une solution faisable (et donc pas un sommet). On
présente ici un algorithme qui commence en trouvant une solution faisable, c’est-à-dire un
sommet. On peut la modifier pour obtenir une méthode itérative qui fonctionne pour plusieurs
constantes négatives, mais on la présentera ici pour une seule valeur négative.
Algorithme 7.15 (Méthode de simplex avec b 6≥ 0). On commence avec
max cT x s.c. Ax ≤ b, x ≥ 0.
(a) Introduire une variable artificielle s pour la valeur négative dans b. Mettre M 0 = −s.
(b) Former le tableau initial avec les variables ordinaires, auxiliaires et la variable artificielle
et la fonction objective M 0 = −s. Utiliser des opérations de rangées afin que la variable
artificielle devienne pivot.
(c) Faire maintenant une méthode de simplex ordinaire.
(d) Au cas où la solution optimale donne M 0 < 0, il n’existe aucune solution faisable avec
s = 0, donc aucune solution faisable du programme linéaire original. On arrête, car il
n’y a aucune solution du tout.
(e) Au cas où la solution optimale donne M 0 = 0, on a trouvé une solution faisable avec
s = 0. Noter les colonnes avec pivot : ce sont les variables de base désirées.
(f) Reprendre le tableau du programme original, avec la “vraie” fonction objective. Faire
des opérations de rangée pour que les pivots soient dans les colonnes des variables de
base désirées, celles indiquées par le tableau final de la première méthode de simplex.
(g) On a maintenant un tableau de simplex avec toutes les constantes non-négatives. Autre-
ment dit, on a trouvé une solution initiale, c’est-à-dire, un sommet. On peut donc faire
une méthode de simplex ordinaire.
7.7. Entraı̂nement.
Exercice 7.16. Solutionner chaque programme linéaire avec la méthode simplex. Ensuite,
tracer un graphique afin de repérer les solution intermédiaires et/ou expliquer le résultat de
façon géométrique.
x1 + x2 ≤ 10
(a) max x1 + 3x2 s.c. x2 ≤ 8
x − x ≤ 0
1 2
x1 + x2 ≤ 10
(b) min −2x1 + x2 s.c. x2 ≤ 8
x − x ≤ 0
1 2
46 ALISTAIR SAVAGE
x 2 ≥ x 1 − 1
(c) max x1 + 3x2 s.c. x2 ≤ 2x1 + 3
x + x ≥ 2
1 2
x 2 ≥ x 1 − 1
(d) min x1 + 3x2 s.c. x2 ≤ 2x1 + 3
x + x ≥ 2
1 2
On se rappelle que c’est toujours possible de récrire un programme linéaire en forme cano-
nique, donc on peut en principe donner le dual de n’importe quel programme.
8.2. Dualité et optimalité. Le dual est fortement relié au programme original (parfois on
dit primal pour celui-ci). On écrit F pour la région faisable du primal et F ∗ pour la région
faisable du dual. Formellement,
F = {x | Ax ≤ b, x ≥ 0}
F ∗ = y | AT y ≥ c, y ≥ 0
Proposition 8.2. Soit P et P ∗ comme ci-haut. Si x est un point de F et y est un point de
F ∗ , alors cT x ≤ bT y.
Donc cT x ≤ bT y. On a utiliser ici le fait que la transposée d’une matrice de taille 1 × 1 est
égale à elle-même. Par exemple, cT x est une matrice de taille 1 × 1. Donc cT x = (cT x)T = xT c.
(Rappelez-vous que (AB)T = B T AT pour deux matrices A et B telles que AB est définit.)
Exemple 8.3. Pour l’exemple 8.1, on vérifie que y = (30, 30, 30) est un point de F ∗ (un point
faisable du dual). On calcule que pour ce point, bT y = 70(30) + 40(30) + 90(30) = 6000. Donc
pour le primal, on sait que le maximum de cT x est au plus 6000. Pour cet example, on connaı̂t
mieux, mais le principe est qu’un point faisable pour le dual donne une borne sur la valeur de
l’objectif primal.
Aussi, trouver des points faisable du primal de l’exemple 8.1, pour donner des bornes sur le
dual.
On voit que, en principe, la meilleure réponse à l’exercice précédant est de trouver les points
faisables optimales.
Exemple 8.5. On peut vérifier que pour l’exemple 8.1, x = (15, 25) est un point faisable de
P et que y = (0, 30, 10) est un point faisable de P ∗ . Les valeurs des deux fonctions objectives
à ces points sont les deux 2100. En se référant à la proposition 8.2, on peut conclure que ces
points donnent les solutions optimales aux deux programmes linéaires.
La dernière possibilité n’est typiquement pas intéressant : il n’y a rien à optimiser car rien
n’est possible. Les deuxième et troisième possibilités sont parfois utiles dans le sens contraire :
on peut prouver qu’un programme linéaire ne possède aucun point faisable du tout en montrant
que son dual ne possède pas de solution optimale. Mais typiquement c’est la première possibilité
qui nous intéresse.
Si les deux régions faisables ne sont pas vides, alors les deux programmes ont la même solution
optimale. On peut donc choisir de solutionner soit le primal ou le dual.
8.3. Dualité et simplex. Il y a une conséquence pratique du théorème 8.6. Ayant trouvé une
solution optimale du primal, on connaı̂t la valeur optimale de la fonction objective du dual
aussi. On résout deux programmes à la fois. Mais comment trouver les valeurs des variables
dual ?
Les matrices B1 et B2 sont les résultats finals des opération de rangées. Le vecteur s donne
la solution optimale pour les variables de base (afin de connaı̂tre quelles variables, il faudrait
connaı̂tre B1 et B2 ). La valeur M donne le maximum de l’objectif.
Qu’en est-il de d et u ? Ce sont des vecteurs non-négatifs (pourquoi ?). On peut montrer que
d = −cT + uT A. Donc
T
T
0 ≤ d ≤ −cT + uT A = −c + AT u
et AT u ≥ c. On peut aussi montrer que bT u = M . Donc u est un vecteur faisable pour le dual
qui donne la même valeur objective que la valeur optimale du primal. On résume :
Théorème 8.7. Soit le tableau de simplex original et final comme ci-haut, d’un programme
linéaire qui possède une solution optimale. Alors la solution optimale du programme dual est
exactement y = u, avec la valeur objective m = M . C’est-à-dire, on peut lire la solution
optimale du dual dans la première rangée, dans les colonnes correspondant aux variables auxi-
liaires.
Exemple 8.8. On se rappelle l’exemple 6.1. En particulier, voici le tableau de simplex original
et final :
1 −40 −60 0 0 0 0 1 0 0 0 30 10 2100
0 0 0 0 1 −5 1 15
2 1 1 0 0 70 → · · · →
2 2
0
1 1 0 1 0 40 0 1 0 0 32 − 21 15
0 1 3 0 0 1 90 0 0 1 0 −1 1 25
2 2
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 49
Dans le tableau final, on lit la solution primal parmi les pivots : x1 = 15, x2 = 25. On trouve
dans la première rangée la solution pour le dual, dans les colonnes des variables auxiliaires :
y1 = 0, y2 = 30, y3 = 10.
Exercice 8.9. Vérifier que x1 = 15, x2 = 25 est solution faisable du primal, et que y1 = 0, y2 =
30, y3 = 10 est solution faisable de dual. Vérifier aussi que ces deux solutions donnent la même
valeur objective.
8.4. Dualité et dualité. On note que le dual ressemble pas mal au primal. On voit aussi une
symétrie dans le théorème 8.6. Ceci s’explique par le fait suivant :
Théorème 8.10. Le dual du dual est le primal : (P ∗ )∗ = P.
Soit le primal
P: max cT x s.c. Ax ≤ b, x ≥ 0
et le programme dual
P∗ : min bT y s.c. AT y ≥ c, y ≥ 0.
On peut exprimer le dual en forme canonique comme
P∗ : max −bT y s.c. (−A)T y ≤ (−c), y ≥ 0.
Maintenant le dual du dual s’écrit comme
(P ∗ )∗ : min (−c)T z s.c. (−A)T z ≥ (−b), z ≥ 0.
On exprime ce dual du dual en forme canonique pour obtenir le programme linéaire originale.
(P ∗ )∗ = P : max cT z s.c. Az ≤ b, z ≥ 0
Exercice 8.11. Considérer le programme linéaire de l’exemple 7.9. Donner le programme
linéaire dual.
Exercice 8.12. Dans l’exemple 7.6 on a vu que il n’y avait aucune solution optimale, car
c’était possible d’augmenter l’objectif sans limite. En vous référant au théorème 8.6, que peut-
on conclure pour le dual, en particulier pour la région faisable du dual ? Donner le programme
dual, et vérifier votre conclusion.
Exercice 8.13. Pour les problèmes de l’exercice 7.16, écrire le dual. Ensuite, donner une
solution optimale du dual, en vous référant à vos tableau finals de simplex pour les programmes
primals.
50 ALISTAIR SAVAGE
9. Projections
9.2. Produit scalaire. Le produit scalaire de deux vecteurs en Rn est définie comme
x1 y1
x2 y2
x·y =
... · ... = x1 y1 + x2 y2 + · · · + xn yn .
xn yn
9.3. Projection. La projection d’un vecteur x sur un autre vecteur y est la partie de x qui
est dans la direction de y. On peut décomposer x en deux parties : l’une dans la direction de
y, l’autre orthogonal à y.
x y
u
θ
3 3
Exemple 9.2. Soit x = et y = . On calcule la projection comme
6 2
3 3
·
6 2 3 21 3 4, 8
projy (x) = = ≈ .
3 3 2 13 2 3, 2
·
2 2
Exercice 9.3. Vérifier que la décomposition donnée dans l’exercice précédant a les bonnes
directions : le premier vecteur devrait être un multiple de y et le deuxième vecteur devrait être
perpendiculaire à y.
1 2
Exercice 9.4. Soit x = 1 et y = −2. Calculer projy (x), et donner une décomposition
1 1
de x en deux vecteurs : l’un dans la direction de y et l’autre perpendiculaire à y.
Calculer aussi projx (y), et donner une décomposition de y en deux vecteurs : l’un dans la
direction de x et l’autre perpendiculaire à x.
52 ALISTAIR SAVAGE
9.4. Bases. Une base d’un sous-espace U de Rn est un ensemble indépendant de vecteurs qui
engendre U .
On peut aussi avoir des bases pour des sous-espaces : c’est un ensemble indépendant de
vecteurs qui engendre le sous-espace.
On a déjà vu des exemples : on a vu comment trouver des bases pour des espaces propres
d’une matrice. En prenant l’union de toutes les bases propres, on a pu trouver une base pour
Rn (du moins dans le cas des matrices diagonalisables). C’était une base très utile pour étudier
des systèmes dynamiques.
La dimension d’un sous-espace est le nombre de vecteurs dans une base pour le sous-espace.
Par exemple, dim Rn = n.
Une base est utile car ça permet d’exprimer tout vecteur uniquement.
Théorème 9.5. Soit {v1 , v2 , · · · , vk } une base pour un sous-espace U , et x n’importe quel
vecteur dans U .
x = α1 v1 + α2 v2 + · · · + αk vk
3 1 0
Exemple 9.6. On calcule les coordonnées de par rapport à la base , . On cherche
4 0 1
alors des valeurs tel que
3 1 0
= α1 + α2
4 0 1
On observe que le même vecteur a des coordonnées différents par rapport à des bases
différentes. De plus, le coordonnée qui a changé est le coordonnée qui correspond au vecteur
du base qui n’a pas changé. Résumé : les coordonnées dépendent de la base entière.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 53
9.5. Bases orthogonales. L’orthogonalité n’est pas simplement une caractéristique géométrique :
c’est une condition algébrique aussi.
Théorème 9.7. Soit {v1 , v2 , · · · , vk } un ensemble orthogonal ; c’est-à-dire un ensemble avec
vi ⊥ vj pour tout 1 ≤ i < j ≤ k, et vi 6= 0 pour tout 1 ≤ i ≤ n.
Note que ce n’est pas valide dans l’autre sens : un ensemble indépendant n’est pas nécessairement
orthogonal.
2 −1
Est-ce que 2 , 1 est une base orthogonale pour un sous-espace de R3 ?
−1 0
1 a
Exercice 9.9. Trouver des valeurs a, b tel que , soit une base orthogonale. Est-ce
1 b
que les valeurs a, b sont uniques ?
Une base orthonormale est une base orthogonale qui a aussi la propriété que chaque vecteur
est de longueur 1. On peut transformer une base orthogonale à une base orthonormale en
divisant chaque vecteur par sa norme.
2 −1
Exercice 9.10. Vérifier que {v1 , v2 } = 2 , 1 est une base orthogonale pour le
−1 0
sous-espace engendré par ces deux vecteurs.
Autrement dit, x est égale à la somme des projections de x sur chaque vecteur de la base.
x·v
C’est à comparer avec l’exemple 9.6 : on a αj = vj ·vjj .
“Orthogonal à U ” veut dire que v est orthogonal à chaque vecteur dans U . On dit que le
complément orthogonal de U , dit U ⊥ , est l’ensemble des vecteurs qui sont orthogonaux à chaque
vecteur de U .
U ⊥ = {y | y ⊥ x pour tout x ∈ U }.
On reconnaı̂t l’idée de la projection d’un vecteur sur une autre. D’ailleurs, le graphique
ci-haut illustre la projection de x sur l’espace engendré par y. Une autre conséquence est la
suivante : le complément orthogonal est unique.
Corollaire 9.14. Si U et U 0 sont deux sous-espaces de Rn avec dim(U ) + dim(U 0 ) = n, et que
chaque vecteur de U est orthogonal à chaque vecteur de U 0 , alors U 0 = U ⊥ .
2. La terminologie est un peu bizarre : on aurait pensé “matrice orthonormale”. Mais c’est comme ça !
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 55
Ceci se facilite avec des bases orthogonaux. On a trouvé la formule de projection sur un
sous-espace, et aussi sur son complément orthogonal.
Théorème 9.15. Soient {u1 , u2 , · · · , uk } une base orthogonale pour un sous-espace U de Rn ,
et {v1 , v2 , · · · vn−k } une base orthogonale pour U ⊥ . Alors
x = projU (x) + projU ⊥ (x),
x · u1 x · u2 x · uk
projU (x) = u1 + u2 + · · · + uk
u1 · u1 u2 · u2 uk · uk
= proju1 (x) + proju2 (x) + · · · + projuk (x),
x · v1 x · v2 x · vn−k
projU ⊥ (x) = v1 + v2 + · · · + vn−k
v1 · v1 v2 · v2 vn−k · vn−k
= projv1 (x) + projv2 (x) + · · · + projvn−k (x).
2 −1
1 0
2 1
1 0
Exemple 9.16. Soit , et , des bases pour un espace U et son
−1 0
4 0
0 0 0 1
1
1
complément orthogonal, respectivement. Si x =
1, alors on peut calculer les deux projections
1
comme
2 −1 2/3
3 2
+ 0 1 = 2/3 ,
projU (x) =
9 −1 2 0 −1/3
0 0 0
1 0 1/3
6 1 1 0 1/3
+ = .
projU ⊥ (x) =
18 4 1 0 4/3
0 1 1
Note que la somme de ces deux projections donne x. Donc, on aurait pu calculer une projection,
et obtenir l’autre en soustrayant de x (e.g. projU T (x) = x − projU (x)).
Exercice 9.17. Vérifier que les deux bases données dans l’exemple précédant sont chacune
des ensembles orthogonaux. Vérifier que chaque vecteur de la première est orthogonal à chaque
vecteur de la deuxième. Conclure que les quatre vecteurs ensemble forment une base orthogonale
pour R4 .
56 ALISTAIR SAVAGE
Exercice 9.19. Pour les bases de l’exemple 9.16, trouver projU (y) et projU ⊥ (y) pour y =
T
1 0 1 0 . Ensuite calculer y − projU (y) et comparer.
Il reste deux questions techniques. Étant donné un sous-espace, comment trouver une base
orthogonale ? Et aussi, comment trouver une base pour le complément orthogonale ?
L’idée c’est de construire la base orthogonale un vecteur à la fois, chaque fois enlevant toutes
les projections des vecteurs qui sont déjà dans la base orthogonale.
Algorithme 9.20 (Algorithme Gram-Schmidt). Soit {v1 , v2 , · · · , vk } un ensemble qui en-
gendre un sous-espace. On peut la transformer en base orthogonale comme suit.
On commence avec une base orthogonale vide, et on répète les étapes suivantes.
(a) Choisir un vecteur de l’ensemble donné.
(b) Soustraire de ce vecteur sa projection sur chaque vecteur qui est déjà dans la base
orthogonale.
(c) Mettre le résultat (s’il est non-nul) dans la base orthogonale.
1 2 5
1 0 1
Exemple 9.21. Les vecteurs , , forment une base pour un sous-espace. Trou-
2 2 0
0 0 2
ver une base orthogonale pour ce sous-espace.
5
On choisit maintenant le dernier vecteur, 10 . On soustrait les projections :
2
5 1 1
5
5 1 · 1 1 1 · −1 1 5 1 1 2
1 0 2 0 0 −1 6 4 −1
− − 0 = − − = 2 .
2 0 1 2 1 1
0 1 1 2 1 1 0 0 6 2 2 0 −2
1 · 1 −1 −1
2 2 2 0 0 · 0 0 2 0 0 2
0 0 0 0
1 2
1
À date on a la base orthogonale : 1 , −1 , 2
. Il ne reste aucun vecteur dans
2 0 −2
0 0 2
l’ensemble original, donc l’algorithme se termine et c’est une base orthogonale pour l’espace
engendré par les trois vecteurs originaux.
On se rappelle qu’en soustrayant les projections, on considère les projections sur les nou-
veaux vecteurs à date, et non les originaux. Aussi, on voit que puisqu’on obtient un ensemble
orthogonal, alors c’est nécessairement un ensemble indépendant, donc une base pour l’espace
engendré. Donc dans l’exemple 9.21 on a prouvé que l’ensemble original était une base. Sinon,
en soustrayant on aurait obtenu un vecteur 0, qu’on aurait rejeté.
Exercice 9.22. Dans l’exemple 9.21, on a choisit les vecteurs dans un autre ordre particulier.
Répéter l’exemple, mais avec un autre ordre. Est-ce qu’on obtient encore une base orthogonale ?
Est-ce la même base ?
On voit une principe parfois utile : on peut multiplier un vecteur par une constante (non-nul)
sans changer sa direction. Donc si on a une base orthogonale on peut multiplier chaque vecteur
par des constantes (non-nuls) et encore avoir une base orthogonale. Note que ce n’est pas la
58 ALISTAIR SAVAGE
1
même base : lorsqu’on multiplie un vecteur par 2
ça change ! Mais c’est une autre base qui est
encore orthogonale.
On met les vecteurs comme colonnes d’une matrice A, et on fait une méthode de Gauss sur
la matrice [A|I]. Le résultat est [R|B].
Les colonnes de R avec pivots indiquent quels vecteurs de l’ensemble on choisit pour la base
du sous-espace U .
Les rangées de B correspondant aux rangées nulles de R donnent une base pour U ⊥ .
À gauche, il y a des pivots dans la première et deuxième colonne. Donc on prend les vecteurs
correspondantes (dans notre liste originale) comme base de U .
À gauche, il y a deux rangées nulles. Donc on prend les rangées correspondantes à droite
comme base de U ⊥ .
1 1 −2 −1
base de U :
0 , 1
base de U ⊥
: , −2
2
2 0 1 0
1
3 0 1
1 1 −2 −1
0 1 2 −2
base de R : , , ,
4
2 0 1 0
1 3 0 1
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 59
Notez que les bases trouvées avec l’algorithme 9.24 ne sont pas orthogonales en général.
Si vous avez besoin des bases orthogonales, vous pouvez utiliser l’algorithme Gram-Schmidt
(l’algorithme 9.20) avec des bases de U et U T trouvées avec l’algorithme 9.24.
Exercice 9.26. Vérifier que chaque vecteur dans la base pour U ⊥ est orthogonal à chaque
vecteur dans la base pour U .
Exercice 9.27. Dans l’exemple 9.25, vérifier que la base pour U n’est pas une base orthogonale.
La transformer en base orthogonale. Faire de même pour la base pour U ⊥ . Montrer que si
on combine les deux bases orthogonales obtenues, on obtient une base orthogonale pour R4 .
Pourquoi est-ce qu’on n’a pas du faire une méthode de Gram-Schmidt avec quatre vecteurs ?
Qu’arrive si on fait une méthode de Gram-Schmidt avec les quatre vecteurs ?
Pour ceux qui s’intéressent, la méthode de l’algorithme 9.24 repose sur l’idée des matrices
élémentaires. Une réduction de Gauss consiste en une multiplication par une séquence de ma-
trices élémentaires. Donc on peut comprendre toute la réduction par une multiplication à gauche
par une matrice inversible E. Donc la matrice finale [R|B] est exactement E[A|I] = [EA|E]. Le
fait d’avoir des rangées nulles à gauche veut dire que certaines rangées de E sont orthogonales
à toutes les colonnes de A. Donc ce sont exactement ces rangées qu’on veut. Elles se trouvent
à droite, car EI = E.
10. Approximations
Exemple 10.1. Pour chaque valeur de x, on a mesuré une valeur y. Les valeurs y sont sujets à
divers erreurs. On pense que les valeurs devraient être relié par une fonction y = αx + β. Voici
les données ; le but est de déterminer α et β.
x 0 1 2 3 4 5
y 1 2 2 3 3 4
60 ALISTAIR SAVAGE
En voulant que les données de l’exemple 10.1 suivent la fonction, on cherche une solution au
système suivant.
(1) = α(0) + β
0 1 1
(2) = α(1) + β
1 1 2
(2) = α(2) + β
2 1 α 2
=
(3) = α(3) + β 3 1 β 3
4 1 3
(3) = α(4) + β
5 1 4
(4) = α(5) + β
Exercice 10.3. Faire un graphique des données de l’exemple 10.1 et faire une estimation
visuelle de la droite.
“Meilleure approximation” veut dire que b − b̂ est un vecteur aussi petit que possible,
sujet à la contrainte que Ax = b̂ possède une solution exacte. Que Ax = b̂ possède une
solution exacte équivaut à dire que b̂ est dans l’espace engendré par les colonnes de A, col(A).
On reconnaı̂t
b = b̂ + b − b̂ = projcol(A) (b) + b − projcol(A) (b)
Le vecteur b̂ est exactement la projection de b sur l’espace engendré par les colonnes de A.
Sachant une base orthogonale pour col(A), on peut calculer b̂ comme projection :
b̂ = projcol(A) (b)
= proju1 (b) + proju2 (b)
b · u1 b · u2
= u1 + u2
u1 · u1 u2 · u2
15 19/2
= u1 + u2
6 70/4
5 19 T
= 1 1 1 1 1 1 + −5 −3 −1 1 3 5
2 70
1 T
= 40 59 78 97 116 135
35
Si on remplace les valeurs y dans les données originales par celles-ci, les points seront tous
exactement aligné sur la droite optimale. On résout directement Ax = b̂.
0 1 40/35 1 0 19/35
1 1 59/35 0 1 40/35
2 1 78/35 0 0 0
→ ··· →
3 1 97/35 0 0 0
4 1 116/35 0 0 0
5 1 135/35 0 0 0
Ceci donne la solution
α 19/35
x= =
β 8/7
Exercice 10.5. La matrice augmentée précédente possède beaucoup plus de rangées que de
colonnes. On voit que — heureusement ! — les rangées sans pivots sont toutes complètement
nulles. Il n’y a eu aucune “rangée contradictoire”. Expliquer pourquoi ceci n’est pas dû à
l’hasard, mais serait toujours le cas pour le système Ax = b̂. En autres mots, expliquer pourquoi
le système Ax = b̂ est toujours consistant.
Pour résumer :
Algorithme 10.7 (Résoudre Ax ≈ b par projections). On cherche à trouver la meilleure
solution approximative de Ax ≈ b.
62 ALISTAIR SAVAGE
On a déjà vu que
b = projcol(A) (b) + b − projcol(A) (b) .
Le premier vecteur à droite est dans l’espace col(A) : c’est l’observation qui a motivée la
méthode des projections. Le deuxième vecteur à droite est orthogonal à col(A), voulant dire
que le produit scalaire du deuxième vecteur avec chaque colonne de A est 0, voulant dire que
AT multiplié par le deuxième vecteur donne 0 :
0 = AT b − projcol(A) (b) = AT b − b̂ = AT (b − Ax) = AT b − AT Ax.
Donc on cherche à résoudre AT Ax = AT b. Note que c’est une égalité : c’est un système linéaire
ordinaire. On calcul
0 1 1
1 1
2
0 1 2 3 4 5 2 1 55 15 0 1 2 3 4 5 2 47
AT A = = AT b = =
1 1 1 1 1 1 3 1 15 6 1 1 1 1 1 1 3 15
4 1 3
5 1 4
Note qu’on a solutionné le système Ax = b̂, sans connaı̂tre b̂. Ceci permet de trouver b̂
directement.
Pour ceux qui veulent comprendre la différence entre ces deux méthodes, on propose l’exercice
(la discussion !) suivante.
Exercice 10.8. Cette méthode semble beaucoup plus simple. Mais regarder de près les calculs
de AT A et AT b, et comparer avec la méthode de Gram-Schmidt et le calcul de b̂ dans la
méthode des projections. Est-ce qu’on a vraiment évité la méthode de Gram-Schmidt ? De
plus, la matrice, bien que petite, possède des “grands” chiffres, donc la réduction est moins
facile qu’elle ne paraı̂t. La matrice augmentée de la méthode de projections est plus grande,
mais ce n’est pas nécessaire de compléter la réduction, grâce à l’exercice 10.5 (n’est-ce pas ?).
Est-ce que ce sont vraiment deux méthodes différentes ?
Il reste une difficulté. Ici le système AT Ax = AT b était consistant. Serait-ce toujours le cas ?
Si les colonnes de A sont indépendants, alors oui, grâce au résultat suivant. On se rappelle que
le rang d’une matrice est le nombre de pivots dans sa forme échelonnée.
Théorème 10.9. Pour toute matrice A, les rangs de A, AT A, et AAT sont égaux.
On ne démontrera pas ce théorème, mais on verra plus tard une version plus générale. Pour le
moment on observe simplement que si les colonnes de A sont indépendantes, alors le rang de A
est égale à n (nombre de colonnes de A), et alors AT A a aussi n pivots ; étant une matrice carré
(n × n), ceci garantit que AT Ax = d possède une solution unique pour tout d (en particulier,
d = AT b).
Mais alors comment sait-on que les colonnes de A sont indépendantes ? La réponse est que
parfois, elles ne le sont pas ! Si les colonnes ne sont pas indépendantes, ceci veut dire qu’il n’y a
pas une seule droite optimale, mais plusieurs. Par exemple, si l’exemple 10.1 n’avait qu’un seul
point, on aurait une matrice A avec des colonnes dépendantes.
Exercice 10.10. Montrer que si les données originales ont au moins deux points, alors les
colonnes de A seront indépendantes. Postuler une explication géométrique de ceci.
Pour résumer :
Algorithme 10.11 (Résoudre Ax ≈ b par équations normales). On cherche à trouver la
meilleure solution approximative de Ax ≈ b.
(a) On calcule AT A et AT b.
(b) On résout (exactement) AT Ax = AT b. Ceci donne la droite.
(c) On calcule b̂ par b̂ = Ax. Ceci donne les données “ajustées”, qui suivent la droite
exactement.
64 ALISTAIR SAVAGE
On a observé que le rang de AT A est égal au nombre de colonnes ; de plus c’est une matrice
carré. Donc c’est une matrice inversible. Ceci permet une variante de l’approche précédente.
Afin de résoudre AT Ax = AT b on peut utiliser l’inverse.
−1 T −1 T
AT A A A x = AT A A b =⇒ x = (AT A)−1 AT b.
Note que cette expression ne peut pas se simplifier ! Ensuite on calcule b̂ directement.
−1 T
b̂ = Ax = A AT A A b
−1 T −1 T
Donc on pose M = AT A A et N = AM = A AT A A , et on a alors
x = M b, b̂ = N b.
Ceci montre que si A est constante, alors les calculs de x et b̂ sont des transformations
linéaires.
Typiquement cette méthode, bien qu’elle paraı̂t moins compliquée, requiert plus de calculs.
Mais il y a une situation où elle se montre utile. Les valeurs x dans les données correspondent
souvent à l’organisation de l’expérience (sondage, investigation, etc), tandis que les valeurs y
correspondent souvent aux valeurs mesurées. Donc si on répète l’expérience, la matrice A peut
demeurer constante, et donc on pourra calculer M et N une fois, et les réutiliser pour chaque
nouvelle b.
x 0 1 2 3 4 5
y 1 2 2 3 3 4
Chaque rangée de Ax ≈ b représente une des données. Par exemple, la première est (0, 1), qui
est supposé de respecter la fonction y = αx2 + βx + γ. Donc on a
α(0)2 + β(0) + γ = 1.
Exercice 10.14. On cherche à trouver, pour les mêmes données, la meilleure équation de la
forme y = α2x + βx + γ. Donner la forme matricielle Ax ≈ b qui convient. NB : si vous voulez
le résoudre, un solveur serait utile !
Donc on a trouvé un b̂ qui est aussi proche de b que possible. Ceci minimise la distance entre
b̂ et b, soit b − b̂ . On pose e = b − b̂ ; donc chaque composant de e représente l’erreur entre
la valeur mesurée et la valeur de la droite. Précisément, chaque composant représente la distance
entre les données originales et les données ajustées dans votre graphique de l’exercice 10.6. En
2
minimisant b − b̂ , on minimise également b − b̂ , et donc
2
b − b̂ = e21 + e22 + · · · + e2m ,
où m est le nombre de données (nombre de rangées dans A). On minimise la somme des carrées :
c’est la raison pourquoi cette méthode s’appelle parfois la méthode des moindres carrées.
11.1. Introduction. On a vu comment optimiser une fonction linéaire sujet à des contraintes
linéaires : les programmes linéaires et la méthode de simplex.
La solution des systèmes approximatifs est aussi une optimisation. Il s’agit de minimiser
2
b − b̂ sujet à la contrainte que b̂ ∈ col(A). C’est une fonction objective quadratique et une
contrainte linéaire.
On étudiera comment optimiser une fonction quadratique sujet à une contrainte quadratique.
11.2. Formes quadratiques. Une forme quadratique est un polynôme Q(x) = Q(x1 , . . . , xn )
en plusieurs variables, dont chaque terme est de degré deux.
Exemple 11.1. Voici trois exemples de formes quadratiques :
x21 + x22 , x21 − x1 x2 + 4x2 x3 + 2x23 , x1 x2 + x2 x3 + x3 x1 .
T
Les formes quadratiques s’écrivent naturellement en matrices. Posons x = x1 x2 · · · xn ,
un vecteur des variables et A = [aij ] une matrice n × n. Alors :
X
Q(x) = xT Ax = aij xi xj .
1≤i,j≤n
1 0 x1 2 2 2 2 1 0
Par exemple x1 x2 = x1 + x2 : la forme x1 + x2 correspond à la matrice .
0 1 x2 0 1
Ici, la matrice est unique ; en général on a un peu de choix.
T
Exercice 11.2. Vérifier que xT Ax = x1 x2 +x2 x3 +x3 x1 si x = x1 x2 x3 et A est n’importe
quelle des matrices suivantes :
0 1 0 0 0 1 0 1 1 0 1/2 1/2
0 0 1 1 0 0 0 0 0 1/2 0 1/2
1 0 0 0 1 0 0 1 0 1/2 1/2 0
Combien d’autres matrices sont possibles (indice : beaucoup !).
Pour des raisons qu’on verra très bientôt, on préfère toujours la matrice symétrique. On dit
que la matrice d’une forme quadratique sur les variables x1 , x2 , · · · , xn est la matrice de taille
n × n telle que la position Aii de la matrice est le coefficient de x2i , et la position Aij de la
matrice est la moitié du coefficient de xi xj (pour i 6= j).
Exercice 11.3. Donner la matrice (symétrique, bien sur !) pour chaque forme :
x21 + 4x1 x2 + 6x22 , 4x21 + 6x2 x3 , −4x21 + +4x22 + 6x1 x2 .
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 67
Exercice 11.4. Donner les formes quadratiques qui correspondent aux matrices suivantes.
2 1 2
1 2 −1 1 1 3 1/2
2 1 1 −1
2 1/2 5
11.3. Matrices symétriques. Pourquoi choisir une matrice symétrique pour une forme qua-
dratique ? À cause du résultat suivant.
Théorème 11.5. Toute matrice symétrique est diagonalisable.
Démonstration. Vérifier les étapes suivants. C’est utile de commencer au centre et de procéder
à gauche et à droite.
µwT v = wT AT v = wT AT v = wT Av = wT (Av) = λwT v
Donc µwT v = λwT v =⇒ (µ − λ)wT v = 0. Puisque µ 6= λ il faut que wT v = 0.
La conséquence est importante : les différentes espaces propres sont automatiquement ortho-
gonales. On peut transformer chaque base propre à une base propre orthogonale avec Gram-
Schmidt. Donc on obtient le résultat suivant.
Théorème 11.7 (Le Théorème des Axes Principaux). Soit A une matrice symétrique. Alors
A = P DP T pour une matrice diagonale D et une matrice P avec P −1 = P T . Donc x = P y est
un changement de variable orthogonal qui transforme la forme quadratique xT Ax en une forme
quadratique yT Dy où D est diagonale.
C’est en combinant les deux résultats précédents. On obtient une diagonalization comme
d’habitude. Ensuite on applique Gram-Schmidt à chaque espace propre, et on normalise les
vecteurs propres obtenus, ce qui donne une base orthonormale. La matrice P alors est automa-
tiquement tel que P −1 = P T . Puis on voit que
xT Ax = (P y)T AP y = yT P T AP y = yT Dy.
C’est utile de voir qu’il y a peu de nouveau ici en pratique : les valeurs propres et les bases
propres s’obtiennent comme d’habitude. On est garantit que les espaces sont déjà orthogonales
entre eux, donc il ne faudrait faire Gram-Schmidt que dans chaque base propre (et non pas à
tout l’ensemble).
68 ALISTAIR SAVAGE
T 3 1
Exemple 11.8. Trouver une décomposition A = P DP pour A = .
1 3
Expliquer pourquoi les deux bases sont chacune déjà des bases orthogonales. C’est l’ortho-
gonalité dans chaque espace.
3 −2 4
Exemple 11.10. Les valeurs propres de A = −2 6 2 sont λ = −2 de multiplicité un et
4 2 3
λ = 7 de multiplicité deux. Trouver une décomposition A = P DP T .
5 −2 4 1 0 1 −2
λ = −2 : A − (−2)I = −2 8 2 → 0 1 1/2 base pour E−2 : −1
4 2 5 0 0 0 2
−4 −2 4 1 1/2 −1 1 −1
λ = 7 : A − (7)I = −2 −1 2 → 0 0 0 base pour E7 : 0 , 2
4 2 −4 0 0 0 1 0
Comme prévue, la dimension est égale à la multiplicité chaque fois. Aussi on voit que chaque
vecteur dans la base de E−2 est orthogonale à chaque vecteur dans la base de E7 . Il faut
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 69
Donc √ √ √ √ T
−2/3 1/ 2 −1/3√ 2 −2 0 0 −2/3 1/ 2 −1/3√ 2
A = −1/3 0
√ 4/3√2 0 7 0 −1/3 0
√ 4/3√2 .
2/3 1 2 1/3 2 0 0 7 2/3 1 2 1/3 2
Exercice 11.11. Vérifier que dans l’exemple précédent, chaque vecteur dans la base de E−2
est orthogonale à chaque vecteur dans la base de E7 .
Démonstration. D’après Le Théorème des Axes Principaux (le théorème 11.7), il existe une
changement de variable orthogonal x = P y tel que
Q(x) = xT Ax = yT Dy = λ1 y12 + λ2 y22 + · · · + λn yn2 ,
où λ1 , . . . , λn sont les valeurs propres de A. Comme P est inversible, il y a une correspondance
bijective entre tous les x non nuls et tous les y non nuls. Donc les signes des valeurs de Q(x)
pour x 6= 0 sont contrôlées par les signes des valeurs propres λ1 , . . . , λn des trois façons décrites
dans l’énoncé du théorème.
70 ALISTAIR SAVAGE
11.4. Optimisation quadratique. On applique la théorie des matrices symétriques pour op-
timiser des formes quadratiques.
Théorème 11.14. Soit A une matrice symétrique. Alors le maximum de xT Ax sujet à la
contrainte que kxk = 1 est la valeur propre maximale de A. Ce maximum est atteint lorsque x
est un vecteur propre correspondant (avec kxk = 1).
Démonstration. Puisque A est symétrique, on peut trouver une base orthonormale pour Rn
formée de vecteurs propres de A : disons {v1 , v2 , · · · , vn }, avec valeurs propres correspondantes
λ1 ≥ λ2 ≥ · · · ≥ λn . On peut alors écrire x comme x = α1 v1 + α2 v2 + · · · + αn vn . Ceci donne :
xT Ax = xT A (α1 v1 + α2 v2 + · · · + αn vn )
= xT (α1 λ1 v1 + α2 λ2 v2 + · · · + λn αn vn )
= α1 v1T + α2 v2T + · · · + αn vnT (α1 λ1 v1 + α2 λ2 v2 + · · · + λn αn vn )
= α12 λ1 + α22 λ2 + · · · + αn2 λn
≤ α12 λ1 + α12 λ1 + · · · + αn2 λ1
= λ1 α12 + α22 + · · · + αn2
= λ1 kxk2
= λ1
Note que dans la multiplication des deux grandes parenthèses, on a utilisé le fait que viT vi = 1
et viT vj = 0 si i 6= j. C’est parce que c’est une base orthonormale.
Si on a xT Ax = λ1 , c’est que le “≤” est “=”. Il faudrait avoir x un vecteur propre corres-
pondant au valeur propre λ1 .
Exemple 11.16. Quel est le maximum de 2x21 + 2x1 x2 + 3x22 , sujet à la contrainte x21 + x22 = 1 ?
x1 2 1 p
On met x = et A = . Note que kxk = x21 + x22 , et donc la condition équivaut
x2 1 3
2
à kxk = 1, ce qui équivaut à kxk = 1. On cherche donc :
max xT Ax s.c. kxk = 1
√
Selon le théorème, le maximum est la valeur propre maximale de A, qui est (5+ 5)/2 (exercice).
Cette valeur est atteinte si le vecteur x est vecteur propre correspondant à cette valeur propre
(exercice : trouver ces vecteurs – il y en a deux !).
Comment maximiser des formes quadratiques selon des contraintes quadratiques arbitraires ?
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 71
Exemple 11.17. Quel est le maximum de x1 x2 selon la contrainte 3x21 + 2x1 x2 + 3x22 = 4 ?
C’est une forme plus simple, mais on peut faire mieux, en transformant la contrainte à la
forme standard z12 + z22 = 1.
Exemple 11.19. Effectuer un changement de variable pour transformer 4y12 + 2y22 = 4 à la
forme z12 + z22 = 1.
y2
4y12 + 2y22 = 4 −→ y12 + 2 = 1 −→ z12 + z22 = 1
2
√
où z1 = y1 et z2 = y2 / 2. C’est un changement de variable qui renormalise seulement.
λ1 2
(b) La forme xT Ax équivaut à y
k 1
+ · · · λkn yn2 .
(c) On renormalise
q les variables y pour donner z12 +· · ·+zn2 = 1, à l’aide de la transformation
q
λj k
zj = k
y j , ou yj = z.
λj j
Note qu’en pratique, on n’a pas besoin de connaı̂tre la matrice M . Il n’y a aucune raison
d’écrire la fonction objective originale en forme matricielle, c’est plutôt la fonction objective
transformée qu’on devrait écrire en forme matricielle.
Exemple 11.21. Quel est le maximum de x1 x2 selon la contrainte 3x21 + 2x1 x2 + 3x22 = 4 ?
L’approche est donc de transformer la contrainte en forme standard. On a déjà fait le travail :
voici le résumé.
Pour des matrices carrées, cette transformation se comprend très bien en considérant les
valeurs et vecteurs propres de A : c’est la théorie qui soutient notre analyse de systèmes dyna-
miques et chaı̂nes de Markov, entre autres. Cette théorie dépend d’une diagonalization de A, qui
n’est pas toujours possible. Certainement ce n’est jamais possible pour une matrice non-carrée.
12.2. Valeurs singulières. Soit A une matrice complètement arbitraire, de taille m × n. Pour
un vecteur x ∈ Rn avec kxk = 1, on considère kAxk. Cette norme mesure le changement en
longueur entre x et Ax. Note que
kAxk2 = (Ax)T (Ax) = xT AT Ax.
et donc λ = kAxk2 / kxk2 . Les deux normes sont non-négatives, et le dénominateur n’est pas
nul, donc λ ≥ 0.
12.3. Décomposition. On observe dans l’exemple 12.2 que A et AT avaient les mêmes valeurs
singulières. Ce n’est pas par hasard. . .
Théorème 12.3. Soit A une matrice de taille m×n. Les matrices AT A et AAT ont exactement
les mêmes valeurs propres non-nulles.
Ce théorème est à comparer avec le théorème 10.9. C’est un théorème où la preuve est encore
plus utile que le résultat. On y voit que étant donné des vecteurs propres de AT A, on obtient
des vecteurs propres de AAT en multipliant par A. Il y a encore plus.
Théorème 12.4. Soit A une matrice de taille m × n. Soient x et y des vecteurs propres de
AT A avec AT Ax = λx, AT Ay = µy et λ, µ 6= 0. Si x ⊥ y, alors (Ax) ⊥ (Ay).
Que U est orthogonale (c.-à-d. U T U = I) signifie que les colonnes de U forment une base
orthonormale de Rm ; que V est orthogonale (c.-à-d. V T V = I) signifie que les colonnes de V
forment une base orthonormale de Rn . Comme preuve on présente l’algorithme suivant, qui
construit les matrices requises.
Algorithme 12.6 (Décomposition en valeurs singulières).
Soit A une matrice de taille m × n.
(a) On calcule AT A, et on trouve une diagonalisation orthogonale AT A = P DP T .
(b) On identifie les valeurs propres non nulles de AT A : λ1 ≥ λ2 ≥ · · · ≥ λr .
p
(c) Les valeurs singulières de A sont σ1 , σ2 , · · · σr , où σj = λj .
(d) On pose Σ la matrice de taille m × n avec les valeurs singulières sur le diagonal.
(e) On pose V la matrice P .
(f) On identifie les colonnes v1 , v2 , · · · , vr de V , correspondant aux valeurs singulières.
(g) On pose uj = Avj / kAvj k = Avj /σj , 1 ≤ j ≤ r.
(h) Si r < m on étend l’ensemble {u1 , u2 , · · · , ur } à une base orthonormale de Rm .
(i) On pose U la matrice avec les colonnes u1 , · · · , um .
On a alors A = U ΣV T .
Il faudrait démontrer que cette algorithme fonctionne, c’est-à-dire, que les matrices U , Σ et
V ont les bonnes propriétés. On voit directement que U T U = I et V T V = I car les colonnes de
U forment une base orthonormale pour Rm et les colonnes de V forment une base orthonormale
pour Rn . Considérons le produit AV . La colonne j est Avj , qui est σj uj , qui est la colonne j
du produit U Σ. Donc AV = U Σ. Multipliant par V T , on obtient A = U ΣV T .
Les étapes à suivre pour faire une décomposition en valeurs singulières sont des étapes qu’on
connaı̂t déjà. On souligne que la dernière étape peut se faire de deux manières. Les vecteurs
ur+1 , · · · um forment une base pour l’espace nul de AAT . Alternativement, c’est une base pour
le complément orthogonale de {u1 , u2 , · · · , ur }.
3 −1
Exemple 12.7. Trouver une décomposition en valeurs singulières de A = 1 3 .
1 1
T 11 1
On calcule premièrement A A = . On obtient AT A = P DP T avec
1 11
√ √ √ √ T
T 1/ √2 1/√2 12 0 1/ √2 1/√2
A = P DP =
−1/ 2 1/ 2 0 10 −1/ 2 1/ 2
(voir Exemple 12.2). On pose donc
√
√ √ 12 √0
1/ √2 1/√2
V =P = , Σ= 0 10 .
−1/ 2 1/ 2
0 0
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 77
Encore une fois c’est déjà une base orthogonale, donc aucun Gram-Schmidt. On normalise pour
obtenir
−1
1
u3 = √ −2 .
30 5
On a maintenant la matrice U , formée des trois colonnes u1 , u2 et u3 .
√ √ √
1/√6 −2√ 5 1/√30
U = 2/√6 1 5 2/ √30
1/ 6 0 −5/ 30
Ceci donne la décomposition en valeurs singulières
√ √ √ √
3 −1 1/√6 −2√ 5 1/√30 12 √0 √ √ T
1 3 = 2/ 6 1 5 1/ 2 1/√2
√ 2/ √30 0 10 √
1 1 −1/ 2 1/ 2
1/ 6 0 −5/ 30 0 0
78 ALISTAIR SAVAGE
L’exemple était un peu long. Par contre on a calculé le vecteur u3 de trois manières différentes.
Typiquement, une fois suffit. . .
La décomposition en valeurs singulières n’est pas unique. On aurait pu prendre ici −u3 au
lieu de u3 . Aussi, on aurait pu prendre −v1 au lieu de v1 (ceci aurait changé u1 ). En générale,
si on a une valeur singulière de multiplicité plus grand que un, on pourrait avoir plusieurs bases
orthogonales différentes pour l’espace propre correspondant de AT A.
Exercice 12.8. Recalculer la décomposition en valeurs singulières de l’exemple précédent en
utilisant −v1 au lieu de v1 . Comparer votre décomposition avec celle ci-haut. (indice : les calculs
sont très similaires, on peut recycler. . . ).
On se rappelle qu’on peut calculer les valeurs singulières de A en calculant les valeurs
propres de la matrice AT A ou la matrice AAT . On peut dire plus : on peut calculer toute la
décomposition en valeurs singulières par l’une ou l’autre de ces matrices. Il s’agit de “commencer
à la gauche” au lieu de “commencer à la droite”. Voici la version “gauche” de l’algorithme 12.9.
Algorithme 12.9 (Décomposition en valeurs singulières, version gauche).
On a alors A = U ΣV T .
3 −1
Exercice 12.10. Calculer une décomposition en valeurs singulières de A = 1 3 en utili-
1 1
sant la méthode “gauche”. Note que puisque m > n, alors la première étape est plus longue et
la dernière méthode est plus courte, en comparaison avec la méthode “droite”.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 79
Alors A = Ur Σr VrT .
C’est une observation basée sur le fait que des rangées nulles de Σ “annulent” les colonnes
correspondant de U , et les colonnes nulles de Σ “annulent” les colonnes correspondant de V
(rangées de V T ).
Exemple 12.12. On considère la décomposition ci-haut (Exemple 12.7). On vérifie que
√ √ √
3 −1 1/√6 −2√ 5 1/√30 12 0 √ √ T
1 3 = 2/ 6 1 5 1/ √2 1/√2
√ 2/ √30 0 10
1 1 0 0 −1/ 2 1/ 2
1/ 6 0 −5/ 30
√ √
1/√6 −2√ 5 √ √ T
12 0 1/ 2 1/√2
= 2/√6 1 5 √
0 10 −1/ 2 1/ 2
1/ 6 0
C’est une première “approximation” : on simplifie le produit matriciel en enlevant les parties
qui contribuent absolument rien. Ce qui est plus utile c’est d’enlever les parties qui contribuent
peu. Un résultat technique est nécessaire.
Théorème 12.13. Si A = U ΣV T est une décomposition en valeurs singulières, alors A =
σ1 u1 v1T + σ2 u2 v2T + · · · + σr ur vrT (où r est le rang de A).
Note que le produit u1 v1T est le produit d’une matrice m × 1 par une matrice 1 × n, donnant
une matrice m × n. La matrice σj uj vjT est la j-ième composante principale de A. On dénote
par
bt = σ1 u1 v1T + σ2 u2 v2T + · · · + σt ut vtT
A
la somme des t premières composantes principales. Note que A br = A exactement. De plus, le
b b
rang de At est t. Dans un sens technique, At est la meilleure approximation de A de rang t.
rang est 3, mais en faisant cette réduction on voit que les chiffres deviennent très petits. Est-ce
que c’est peut-être de l’erreur expérimentale ? Si oui, quelle est la “vraie” matrice ?
En continuant avec la méthode de Gauss, on multiplie ces rangées par des très grands chiffres :
si ces deux rangées s’agissait des erreurs expérimentales, alors on multiplierait des erreurs par
des très grands chiffres ! Pour cette raison, la méthode de Gauss-Jordan n’est pas numériquement
stable.
Exemple 12.16. Une satellite prend plusieurs images digitales du même secteur de la Terre,
chaque image captant une différente longueur d’onde (i.e., une différente “couleur”). On vou-
drait transmettre une image compacte (c.-à-d. transmettre la plus petite quantité de données
que possible). Il y a c couleurs au total.
On forme une matrice A de taille c × 1000000, où chaque rangée représente toutes les pixels
d’une des images, donc une couleur. On calcule une décomposition en valeurs singulières de A.
Si il y a quelques (disons t) valeurs singulières qui dominent, alors on pourrait être confiant que
la matrice A bt est une bonne approximation de A.
bt = σ1 u1 vT + σ2 u2 vT + · · · + σt ur vT .
A 1 2 t
Exemple 12.17. On pourrait aussi considérer une image comme une matrice de taille 1000 ×
1000 (chaque élément est un pixel). Si une décomposition en valeurs singulières montre que
bt est une bonne approximation à l’image.
les premières t valeurs singulières dominent, alors A
Il faudrait transmettre t valeurs singulières et 2t vecteurs de taille 1000, au lieu de 1000000
valeurs.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 81
13. Codes
13.1. Introduction. Alice et Bob veulent communiquer, mais leurs appareils (téléphone, cel-
lulaire, radio, ordinateur. . . ) sont imparfaites. Est-ce qu’ils peuvent communiquer sans com-
promettre leur conversation ? Par exemple, ils veulent se parler au téléphone, mais la ligne est
imparfaite, donnant parfois du “bruit”. Ou bien Alice veut transmettre à Bob ses photos de
vacances sur son cellulaire, sachant que quelques bits seront renverser par l’interférence. C’est
un modèle très général : si “Alice” est un disque compacte et “Bob” est un haut-parleur, alors
on cherche à jouer correctement la musique même si le disque est endommagé.
Ce n’est pas un problème nouveau : on pourrait dire que c’est le problème fondamental de
communication entre humains. Les langues modernes représentent une solution : vuos pouvvait
encore comprenrde le sens malgrè des ereurs, car la langue française inclut suffisamment de
redondance à pouvoir détecter et même corriger ces erreurs.
La solution est donc simple, en principe : la redondance. Le problème c’est qu’on veut aussi
que le message soit aussi petit que possible (e.g., la transmission d’images digitales).
13.2. Mots, distance, boules. On écrit les messages avec un alphabet de q symboles, typi-
quement {0, 1, 2, · · · , q − 1}. Par exemple, si q = 2, alors chaque symbole est un “bit”. On
forme des mots avec n symboles. Par exemple, si q = 2 un mot de n = 8 bits serait un “byte”.
Les mots possibles sont tous les mots de longueur n avec q symboles ; il y a donc au total q n
mots possibles. Un code C est un sous-ensemble des mots possibles.
La distance entre deux mots est le nombre de positions dans lesquelles ils diffèrent : on
écrit d(x, y) pour la distance entre les deux mots x et y. La distance minimale du code est le
minimum de la distance entre tout pair de mots dans le code ; on le dénote par δ.
Pour chaque mot x du code et chaque entier positif t, on définit la boule de rayon t autour de
x comme l’ensemble de tous les mots à distance au plus t de x. Autrement dit, c’est l’ensemble
de tous les mots qui sont à t erreurs ou moins de x. Formellement, Bt (x) = {z | d(x, z) ≤ t}.
On peut représenter un code par un graphe. Ici on indique les mots du code par un gros
cercle,
On et les autres
peut motsun
représenter parcode
des par
points. Deux mots
un graphe. sont
Ici on reliés si
indique lesleur
motsdistance
du codeest 1. un
par Ongros
montre
les trois boules
cercle, et lesBautres
1 (000), B
mots1 (111)
par et
des B (222)
points.
1 comme
Deux motscercles
sont pointillés.
reliés si NB
leur : le
distancedessin
est n’est
1. On pas
montre
complet, pourles trois
ne pas boules B1 (000),
le rendre tropBcompliqué
1 (111) et B!1 (222) comme cercles pointillés. NB: le dessin
n’est pas complet, pour ne pas le rendre trop compliqué!
001 011
010 110
000 111
100 101
002 211
200 020 112 121
102
220 122
202 221
022 212
222
Exercice
Exercice 13.2.
13.2. Pour
Pour le legraphe
grapheci-haut,
ci-haut, ilil manque
manque certains
certainsmots
motset et
arrêts. Ajouter
arrêts. quelques-
Ajouter quelques-
uns.uns. Combien
Combien de mots
de mots sontsont à l’intérieur
à l’intérieur de de chaque
chaque boule
boule dede rayon1 ?1?Combien
rayon Combiendedemots
motsne
nesont
sont contenus dans aucune boule
contenus dans aucune boule de rayon 1 ? de rayon 1?
On peut comprendre ce graphe comme suit. Certains mots sont “correctes”: ce sont les mots
dupeut
On code:comprendre
000, 111 et ce
222. Certains
graphe sont suit.
comme incorrectes, mais
Certains avecsont
mots une“corrects”
erreur: par: exemple 001.mots
ce sont les
Certains sont incorrectes, mais avec deux erreurs: par exemple 102.
du code : 000, 111 et 222. Certains sont incorrects, mais avec une erreur : par exemple 001.
Certains sont incorrects,
Le graphe montre que mais
pour avec deux
le code de erreurs : par
l’exemple 13.1exemple
les trois102.
boules B1 (000), B1 (111) et
B1 (222) sont disjointes. Si on transmet un mot du code, et on sait que la transmission est
Leassez
graphe
fiablemontre queau
pour avoir pour
plusleune
code de l’exemple
erreur, 13.1
alors on sait queles trois boules
le résultat, mêmeBcorrompu,
1 (000), Bserait
1 (111) et
encore dans la bonne boule. On pourra alors “corriger” l’erreur: un message
B1 (222) sont disjointes. Si on transmet un mot du code, et on sait que la transmission corrompu peut est
assezêtre compris
fiable pourparfaitement
avoir au plusparune
le récepteur!
erreur, alors on sait que le résultat, même corrompu, serait
encore
On dans la bonne boule.
peut généraliser On pourra alors “corriger” l’erreur : un message corrompu peut
ces observations.
être compris parfaitement par le récepteur !
Théorème 13.3. Si un code à une distance minimale δ ≥ 2t + 1, alors les boules de rayon t
sont toutes disjointes. Un tel code peut alors détecter et corriger jusqu’à t erreurs par mot.
Pour le code de l’exemple 13.1 il y a certains mots qui sont à distance deux de chaque mot
du code (par exemple 102). Si on reçoit ce mot, on sait qu’il y a eu au moins deux erreurs. On
peut, dans ce cas, détecter le fait qu’il y a eu (au moins) deux erreurs. Par contre, on ne peut
pas toujours détecter deux erreurs : il se peut que 100 a soumis deux erreurs, mais on ne pourra
savoir, car ce mot incorrect et plus proche à 000 (une erreur).
On peut généraliser.
Théorème 13.4. Si un code a une distance minimale δ ≥ 2t, alors les boules de rayon t sont
toutes disjointes sauf possiblement pour les mots à distance t du code. Un tel code peut alors
détecter (mais pas nécessairement corriger) jusqu’à t erreurs par mot.
La distance minimale est δ = 2 : ceci se voit directement en calculant la liste de toutes les
distances dans le code :
d(00, 11) = 2 d(00, 22) = 2 d(11, 22) = 2
Les boules de rayon 1 ne sont pas disjointes, car B1 (00) = {00, 01, 10, 02, 20} et B1 (11) =
{11, 01, 10, 21, 12}. L’intersection est non vide : les mots {01, 10} sont dans les deux boules.
On a δ = 2 ≥ 2(1), donc ce code peut détecter une erreur. Par contre on a δ = 2 ≥ 2(0) + 1,
donc se peut corriger 0 erreur. On pourra savoir qu’un message est corrompu, mais on pourra
savoir comment l’interpréter. C’est consistant avec les observations sur les boules : un mot
comme 01 est visiblement en erreur, mais on ne peut pas décider quelle est l’erreur.
Exercice 13.6. Faire un graphe du code de l’exemple précédant. Inclure tous les mots possibles
et les boules de rayon 1.
Exercice 13.9. Donner un exemple d’un code de distance minimale 5. Préciser n et q pour
votre exemple. Faire un graphique (partiel au besoin !) des mots possibles. Inclure les boules de
rayon t, ou t est aussi grand que possible pour que les boules soient disjointes. Combien d’erreurs
est-ce que ce code peut détecter ? Combien d’erreurs est-ce que ce code peut corriger ?
Exercice 13.10. Soit un code de distance minimale 5. Combien d’erreurs peut-il détecter ?
Combien d’erreurs peut-il corriger ?
Si un code peut détecter 3 erreurs, mais peut corriger seulement 2 erreurs, alors quelle est sa
distance minimale ?
13.3. Borne de Hamming. Dans le code C de l’exemple 13.1, la distance minimale est δ = 3
qui donne que les boules de rayon 1 sont disjointes. Chaque boule contient 7 mots (un mot du
code et 6 mots à une erreur proche). Donc il y a au moins 3 × 7 = 21 mots au total (en réalité
il y a 27 mots).
Démonstration. Si un code a une distance minimale δ, alors les boules de rayon t seront dis-
jointes, où t = b(δ − 1)/2c. Le dénominateur est donc exactement le nombre de mots dans une
boule. Le numérateur est le nombre de mots possibles. Le nombre de boules, multiplié par le
nombre de mots dans une boule, ne peut pas dépasser le nombre de mots possibles.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 85
Un code tel que l’inégalité dans théorème 13.12 est une égalité est un code parfait.
Exemple 13.13. Considérons le code de l’exemple 13.1. Ici on a δ = 3, donc avec t = 1 on a
les boules de rayon 1 disjointes. De plus, |B1 (x)| = 1 + 3(3 − 1) = 7. Donc
qn 33 27
|C| ≤ 3≤ = .
|B1 (x)| 7 7
Puisque 3 < 27/7 ce code n’est pas parfait.
Si un code n’est pas parfait, alors il existe des mots ambigus : on ne sait pas comment les
interpréter. Dans le code de l’exemple 13.1, le récepteur ne sait pas comment interpréter le mot
012 : évidemment il y a eu au moins deux erreurs, mais si on accepte la possibilité de deux
erreurs dans un mot alors le mot 001 devient ambigu aussi.
Exercice 13.14. Pour les codes des exercices ci-haut, lesquels sont parfaits ?
Exercice 13.15. Donner un exemple d’un code parfait de distance minimale 3, et un code
parfait de distance minimale 5. (Indice : q = 2.)
14.1. Codes efficaces. Si Alice et Bob communiquent avec un code, alors Alice envoie un mot
y du code à Bob, qui ne reçoit pas exactement y, mais plutôt z, qui est proche à y. Que fait
Bob ? Il a une liste de tous les mots du code, et de toutes les boules et toutes les mots possibles
(incluant son z). Il regarde donc dans sa liste pour savoir dans quelle boule se trouve z. Cette
boule correspond à y, et donc il sait que Alice lui a envoyé y et non z.
Le travail de Alice est simple : elle envoie son mot. Bob a une tâche plus difficile : il doit
chercher pour z dans une liste complète, chaque fois qu’il reçoit un mot d’Alice. Il y a une
méthode beaucoup plus efficace, mais pour le comprendre il faut comprendre l’algèbre linéaire
sur un corps fini.
14.2. Corps. Un corps et un ensemble de “nombres” avec lesquels on peut faire de l’arithmétique.
Quelques exemples que vous connaissez déjà sont R (les réels), C (les complexes), Q (les ra-
tionnels). Il y a (beaucoup !) d’autres.
Formellement un ensemble K avec une addition et une multiplication est un corps si les
propriétés suivantes sont valides pour tout a, b, c ∈ K.
1) a + b ∈ K
2) ab ∈ K
86 ALISTAIR SAVAGE
3) a + b = b + a
4) ab = ba
5) a + (b + c) = (a + b) + c
6) a(bc) = (ab)c
7) a(b + c) = ab + ac
En addition, les propriété suivantes doivent être valides.
8) Il existe un élément 0 ∈ K tel que 0 + a = a pour tout a ∈ K.
9) Il existe un élément 1 ∈ K tel que 1a = a pour tout a ∈ K.
10) Pour chaque a, il existe un élément −a ∈ K avec a + (−a) = 0 (−a est l’inverse additif
de a).
11) Pour chaque a 6= 0, il existe un élément a−1 ∈ K avec a (a−1 ) = 1 (−a est l’inverse
multiplicatif de a).
Par exemple, ai a et b sont des fractions, alors a + b est une fraction aussi : c’est Propriété 1
pour Q. Si on considère deux nombres complexes a et b, alors ab = ba : c’est Propriété 4 pour
C. Une inverse additif est aussi connue comme la négative d’un chiffre ; l’inverse multiplicatif
est la réciproque.
Exemple 14.1. L’ensemble des entiers Z n’est pas un corps. Par exemple, 2 n’a pas d’inverse
multiplicatif dans Z. Quelles propriétés sont valides ? Lesquelles ne sont pas ?
14.3. Arithmétique modulo n. Soit n un entier positif fixe. Pour s, r ∈ Z, on dit que s
et r sont équivalents modulo n, et on écrit “s ≡ r mod n”, si s − r est divisible par n. Si s
est n’importe quel entier, on peut trouver t et r tels que s = tn + r avec 0 ≤ r < n. C’est
exactement la division : t est le quotient et r et le reste, obtenu en divisant s par n. On voit que
s est équivalent à r modulo n. On peut comprendre ceci d’une autre manière : en commençant
avec s, on soustrait (ou additionne) des multiples de n afin de la réduire à un chiffre positif
inférieur à n. On parle donc parfois de réduction modulo n.
Exemple 14.2. Voici quelques calculs modulo 7 à titre d’exemple. On fait les calculs avec des
entiers ordinaires, pour ensuite “réduire” modulo 7.
3 + 6 = 9 = 1(7) + 2 ≡ 2 mod 7
3 × 5 = 15 ≡ 2(7) + 1 ≡ 1 mod 7
5 × (2 + 4) = 5 × 6 = 30 = 4(7) + 2 ≡ 2 mod 7
2 × (1 − 6) = 2 × (−5) = −10 = −2(7) + 4 ≡ 4 mod 7
Typiquement on réserve “=” pour une égalité entre entiers (réels) et ≡ pour une égalité entre
entiers modulo n. Parfois on n’écrit pas le “ mod 7” si le contexte le rend clair.
Exemple 14.4. On peut construire les tables d’addition et de multiplication pour Zn . Ce serait
des tables au complet, car Zn ne contient que n éléments (R contient une infinité d’éléments,
donc une table au complet et impossible !). Voici pour Z5 .
+ 0 1 2 3 4 × 0 1 2 3 4
0 0 1 2 3 4 0 0 0 0 0 0
1 1 2 3 4 0 1 0 1 2 3 4
2 2 3 4 0 1 2 0 2 4 1 3
3 3 4 0 1 2 3 0 3 1 4 2
4 4 0 1 2 3 4 0 4 3 2 1
Par exemple, les valeurs en boı̂te s’expliquent avec les calculs suivants.
1 + 4 = 5 = 1(5) + 0 ≡ 0 mod 5
2 × 3 = 6 = 1(5) + 1 ≡ 1 mod 5
On découvre que 1 + 4 ≡ 0 mod 5. Donc 4 est la négative de 1, car −1 ≡ 4 mod 5. On a aussi
que 2 × 3 ≡ 1 mod 5. Donc 3 est la réciproque de 2, car 2−1 ≡ 3 mod 5.
Exercice 14.5. Vérifier les tables d’addition et de multiplication données pour Z5 . Trouver
l’inverse additif de 2 dans la table d’addition (dans la rangée de 2, chercher la valeur 0 :
la colonne correspondante donne l’inverse additif de 2). Trouver l’inverse additif de chaque
élément de Z5 , si possible. Trouver l’inverse multiplicatif de chaque élément non-nul de Z5 , si
possible.
Exercice 14.6. Est-ce que Z5 est un corps ? L’exercice précédant se montre utile, car il faudrait
que tout élément de Z5 possède une inverse additif (Propriété 10), et que tout élément non-nul
de Z5 possède une inverse multiplicatif (Propriété 11).
L’ensemble Z2 représente l’arithmétique des ordinateurs : c’est une chose très pratique. De
plus, c’est un corps.
Exercice 14.9. Montrer directement que Z2 est un corps. C’est-à-dire, pour chaque propriété,
montrer directement selon vos tables que la propriété est satisfaite pour tout a, b, c ∈ Z2 . (Note
que “tout a, b, c ∈ Z2 n’est pas beaucoup. . . ).
88 ALISTAIR SAVAGE
14.4. Algèbre linéaire en Zp . On peut faire l’algèbre linéaire avec n’importe quel corps. Il
s’agit de l’algèbre “ordinaire”, mais avec l’arithmétique du corps.
Exemple 14.12. Résoudre 2x = 3 sur le corps R, sur le corps Z2 et sur le corps Z5 .
R: 2x = 3 =⇒ (2−1 )2x = (2−1 )3 =⇒ x = 3/2 solution : x = 3/2
Z2 : 2x ≡ 3 =⇒ 0x ≡ 1 =⇒ 0 ≡ 1 aucune solution
Z5 : 2x ≡ 3 =⇒ (2−1 )2x ≡ (2−1 )3 =⇒ (3)2x ≡ (3)3 =⇒ 1x ≡ 4 solution : x ≡ 4
On s’étonne peut-être qu’il n’y a aucune solution en Z2 : une équation linéaire a “toujours” une
solution, non ? En fait, non : l’équation 0x = 1 n’a pas de solution en R. L’équation donnée n’est
pas vraiment en Z2 , car “2” et “3” ne sont pas dans Z2 . Donc il a fallu réduire premièrement,
et on découvre que cette équation est donc “0x = 1” (qui ne possède aucune solution peut
importe le corps).
On peut manipuler des matrices sur Zp comme sur R. Les opérations de rangées, les pivots,
le rang, la dimension, les combinaisons linéaires, l’indépendance. . . tout est “pareil” sauf qu’on
utilise l’arithmétique modulo p au lieu de l’arithmétique de R.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 89
1 1 0
Exemple 14.14. Soit la matrice A = 1 0 1. Donner sa forme échelonnée réduite sur R,
0 1 1
sur Z5 et sur Z2 .
1 1 0 1 1 0 1 0 1
R : 1 0 1 − −−−−−−−→ R1 →R1 +(1)R2
R2 →R2 +(−1)R1 0 −1 1 −−−−−−−→ 0 −1 1
R3 →R3 +(1)R2
0 1 1 0 1 1 0 0 2
1 0 1 1 0 0
R2 →(−1)R2 R2 →R2 +(1)R3
−−−−1−→ 0 1 −1 −−−−−−−−→ 0 1 0
R3 →( 2 )R3 R1 →R1 +(−1)R3
0 0 1 0 0 1
1 1 0 1 1 0 1 0 1
Z5 : 1 0 1 − −−−−−−−→ R1 →R1 +(−4)R2
R2 →R2 +(−1)R1 0 4 1 −−−−−−−−→ 0 4 1
R3 →R3 +(−4)R2
0 1 1 0 1 1 0 0 2
−1
1 0 1 1 0 0
R2 →(4 )R2 R2 →R2 +(1)R3
−−−−− −→ 0 1 4 −−−−−−−−→ 0 1 0
R3 →(2−1 )R3 R1 →R1 +(−1)R3
0 0 1 0 0 1
1 1 0 1 1 0 1 0 1
Z2 : 1 0 1 − −−−−−→ R3 →R3 +R2
R2 →R2 +R1 0 1 1 − −−−−−→ 0 1 1
R1 →R1 +R2
0 1 1 0 1 1 0 0 0
Note que pour les opérations sur Z5 , “R1 →R1 +(−4)R2 ” est la même chose que “R1 →R1 +1R2 ”. Sur
le corps Z2 , il y a seulement deux sortes d’opérations : “Rj →Rj +Ri ” et “Ri Rj ”.
Exercice 14.15. Expliquer pourquoi les seules opérations de rangée sur Z2 sont d’ajouter une
rangée à une autre, ou d’échanger deux rangées : “Rj →Rj +Ri ” et “Ri Rj ”.
1 1 1 0
Exemple 14.16. Est-ce que u = 0 est vecteur propre de A = 1 0 1 sur R ? Sur Z2 ?
1 0 1 1
1 1 0 1 1
R : Au = 1 0 1 0 = 2 6= λu
0 1 1 1 1
1 1 0 1 1
Z2 : Au = 1 0 1 0 = 0 = 1u
0 1 1 1 1
Le vecteur u n’est pas un vecteur propre de A sur R ; par contre, c’est un vecteur propre avec
valeur propre λ = 1 sur Z2 .
90 ALISTAIR SAVAGE
15.1. Introduction. Considérons les mots de longueur n en symboles {0, 1, · · · , p − 1}, où p
est premier (on utilise p au lieu de q ici pour souligner le fait que ce nombre est premier).
Dénotons par V l’ensemble de tous les mots possibles. Pour n = 3 et p = 3 on aura
V = {abc | a, b, c ∈ {0, 1, 2}}
= {000, 001, · · · , 102, 110, · · · , 222} .
L’ensemble V est un espace vectoriel de dimension n sur le corps Zp . On peut voir ceci en
écrivant les mots comme vecteurs. On écrira les vecteurs en rangée au lieu d’en colonne. C’est
pour des raisons pratiques : on aura souvent à écrire des “grands” vecteurs, qui sont plus
compactes en rangée qu’en colonne.
V = a b c | a, b, c ∈ Z3
= 0 0 0 , 0 0 1 ,··· , 1 0 2 , 1 1 0 ,··· , 2 2 2
On peut construire des espaces vectoriels sur le corps Zp comme sur le corps R. Pour n = 3 et
p = 3 on a V = Zp n = Z3 3 .
Le code C = {000,
111, 222}
de l’exemple 13.1 est en sous-espace de Z3 3 . On peut dire même
plus : C = span 1 1 1 sur le corps Z2 , car :
span 1 1 1 = t 1 1 1 | t ∈ Z3
= t 1 1 1 | t ∈ {0, 1, 2}
= 0 1 1 1 ,1 1 1 1 ,2 1 1 1
= 0 0 0 , 1 1 1 , 2 2 2
On
voit qu’un
“mot” n’est nul autre qu’un vecteur écrit sans les parenthèse et les espaces :
“ 1 1 1 ” est équivalent à “111”. Pour cet raison on écrira parfois des vecteurs comme des
mots, et parlera de faire des opérations algébriques sur des “mots”.
Le fait que C est un sous-espace d’un espace vectoriel permet une approche plus efficace pour
Alice et Bob.
15.2. Codes linéaires : matrice génératrice. Un code linéaire est un code qui est un sous-
espace vectoriel de l’espace vectoriel Zp n . Comme tout autre sous-espace, un code possède des
bases. Si on écrit les vecteurs de la base d’un code comme rangées d’une matrice, on a une
matrice génératrice pour ce code. Note que typiquement il y aura plusieurs bases pour un sous-
espace ; on préfère une base qui donne une matrice génératrice en forme échelonnée réduite.
Une telle base, écrite comme rangées d’une matrice, donne une matrice génératrice standard .
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 91
Un code linéaire est donc l’espace rangée d’une matrice. On peut faire des opérations de
rangée sur une matrice sans changer son espace-rangée, donc on peut toujours trouver une
matrice génératrice standard en faisant une réduction par rapport aux lignes.
Une matrice génératrice “génère” le code : le code est exactement l’ensemble des vecteurs
obtenus comme combinaison linéaire des rangées de G. Donc le code C généré par la matrice
G (de taille m × n) est exactement C = {xG | x ∈ Zp m }.
Exemple 15.1. Soit le code C = {0000, 1100, 0011, 1111}, avec n = 4, p = 2.
On peut voir que c’est un code linéaire, car on peut trouver un ensemble engendrant. Il y en
a plusieurs, par exemple, {1100, 1111} comme montre les calculs suivants.
C = span {1100, 1111}
= {a(1100) + b(1111) | a, b ∈ Z2 }
= {0(1100) + 0(1111), 0(1100) + 1(1111), 1(1100) + 0(1111), 1(1100) + 1(1111)}
= {0000, 1111, 0011, 0011}
De plus, {1100, 1111} est linéairement
indépendant,
donc c’est une base pour ce code. On écrit
ici “1100” pour le vecteur “ 1 1 0 0 ”.
Le code est généré par G, car C = {xG | x ∈ R2 }. Les quatre possibilités pour x sont
{00, 01, 10, 11} ; en multipliant par G on obtient les quatre mots du code.
1 1 0 0
0 0 = 0 0 0 0
0 0 1 1
1 1 0 0
0 1 = 0 0 1 1
0 0 1 1
1 1 0 0
1 0 = 1 1 0 0
0 0 1 1
1 1 0 0
1 1 = 1 1 1 1
0 0 1 1
1 1 0 0
Exercice 15.2. Montrer que le code généré par est le même code que celui généré
1 1 1 1
par la matrice génératrice standard ci-haut.
92 ALISTAIR SAVAGE
1 1 1 0 0 0
Exemple 15.3. Soit le code généré par la matrice .
0 0 0 1 1 1
La liste de tous les mots du code est obtenue en pré-multipliant G par tous les vecteurs dans
Z2 2 . On obtient alors le code {000000, 000111, 111000, 111111}. La distance minimale est δ = 3.
Donc les boules de rayon 1 sont toutes disjointes, et ce code peut détecter et corriger une erreur
par mot.
Une matrice génératrice indique comment transmettre des messages. Dans le code d’Exemple 15.3,
la matrice génératrice standard et
1 1 1 0 0 0
G= .
0 0 0 1 1 1
Donc, le code est
C = {xG | x ∈ Z2 2 }.
Alice écrit son message en termes des mots {00, 01, 10, 11} dans Z2 2 . Elle veut transmettre
son message à Bob. Pour chaque mot x, elle envoie le mot correspondant du code y = xG.
On imagine que les mots x représentent le message original, sans aucune redondance : tout
pixel compte. Les mots y représentent la même information, mais plus dispersé : il y a une
redondance.
Exemple 15.4. Alice veut envoyer le message “00, 11, 01, 01” à Bob. Alice et Bob ont
déjà
1 1 1 0 0 0
décidé que leurs communications se feront avec le code C généré par . Alice
0 0 0 1 1 1
fait les calculs suivants.
1 1 1 0 0 0
x= 0 0 y= 0 0 = 0 0 0 0 0 0
0 0 0 1 1 1
1 1 1 0 0 0
x= 1 1 y= 1 1 = 1 1 1 1 1 1
0 0 0 1 1 1
1 1 1 0 0 0
x= 0 1 y= 0 1 = 0 0 0 1 1 1
0 0 0 1 1 1
1 1 1 0 0 0
x= 0 1 y= 0 1 = 0 0 0 1 1 1
0 0 0 1 1 1
Donc Alice envoie “000000, 111111, 000111, 000111”.
Il y a une observation utile pour les codes linéaires. Si x1 , x2 sont deux mots (vecteurs) dans
un code linéaire (sous-espace) alors d(x1 , x2 ) = d(x1 − x2 , 0). La distance entre deux mots et
égale à la distance entre leur différence et le vecteur zéro. Si d(x1 , x2 ) = δ, la distance minimale
du code, alors d(x1 − x2 , 0) = δ aussi. Puisqu’il s’agit d’un code linéaire, x1 − x2 est également
un mot du code. Donc afin de trouver la distance minimale, il suffit de considérer la distance
entre un mot et 0. La distance d(x, 0) est le nombre de symboles non-nuls dans x, dit le poids
de x. On écrit w(x) pour le poids de x. Le poids minimal du code est le minimum du poids de
tous les mots non-nuls du code.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 93
Théorème 15.5. Si C est un code linéaire, alors la distance minimale du code est égale au
poids minimale du code.
L’avantage de ce résultat est qu’on peut plus rapidement calculer la distance minimale : ce
n’est que nécessaire de considérer tous les mots, et non tous les paires de mots. (Souvent on peut
calculer la distance minimale d’un code linéaire plus directement, en comprenant sa structure
particulière.)
Exemple 15.6. Pour le code de l’exemple 15.3, on peut calculer toutes les distances :
On voit que la distance minimale est 3. On aurait pu aussi calculer la liste de tous les poids.
15.3. Matrice de contrôle. Bob ne reçoit pas exactement les mots du code que Alice envoie
(à cause du “bruit” dans la transmission). Il a besoin d’une méthode d’interpréter les mots
reçus.
Si G est une matrice génératrice standard, alors on peut la comprendre comme étant une
matrice de la forme [Im |A] : les colonnes de Im correspondent au colonnes de G avec pivot (ce
ne sont pas nécessairement au début), la matrice A représente le “reste” de G. Si G est une
matrice de taille m × n, alors A est de taille m × (n − m). Donc la matrice identité est de taille
m × m, ce qui explique la notation Im .
La matrice de contrôle, H, est obtenue en écrivant la matrice −AT dans les colonnes corres-
pondant aux pivots de G, et une matrice identité dans les colonnes correspondant aux non-pivots
de G. Puisque AT est de taille (n − m) × m, alors H a n − m rangées est la matrice identité ici
est de taille (n − m) × (n − m). Donc on a H = [−AT |In−m ], de taille (n − m) × n.
Note que les matrices G, H, R ont tous n = 6 colonnes. Les matrices G et R sont de la même
taille, 2 × 6. Mais la matrice H est de taille 4 × 6.
Ce code est un code sur le corps Z2 . Donc la négation de AT se fait par rapport au corps Z2 .
Mais dans ce corps −1 ≡ 1, donc −AT = AT (voir l’exercice 14.8).
Démonstration. On observe que HGT = [−AT |I] ([I|A])T = −AT I + IAT = 0 (ici on utilise le
fait que les positions des colonnes de la matrice −AT dans H correspondent aux positions des
colonnes de la matrice I dans G). De plus, HyT = H (xG)T = HGT xT = 0xT = 0.
Une façon de comprendre ceci est que le noyau de H est l’espace rangée de G.
L’application est directe. Bob reçoit un mot z, qui n’est peut-être pas exactement le mot
y envoyé par Alice. Il calcul HzT : si c’est 0, alors z est un mot du code : aucune erreur. Si
HzT 6= 0 alors il y a eu une erreur.
Exemple 15.9. Rappelant l’exemple 15.4, Bob reçoit le message suivant : “000001, 111111,
000111, 010111”. Il dénote ces quatre mots par z1 , z2 , z3 , z4 .
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 95
Il connaı̂t la matrice génératrice du code, et aussi la matrice de contrôle (car il a bien étudié
l’exemple 15.7). Donc il calcul :
0 0
0
HzT1 = =⇒ z est incorrect Hz T
= 0 =⇒ z2 est correct
0 1 2 0
1 0
0 1
0 0
HzT3 =
0 =⇒ z3 est correct HzT4 =
0 =⇒ z4 est incorrect
0 0
Bob sait alors que z1 et z4 sont en erreur, mais z2 et z3 sont corrects.
15.4. Syndrome. La matrice de contrôle sert à reconnaı̂tre les mots incorrects, mais elle sert
aussi à les corriger. On imagine que Alice envoie y à Bob, mais Bob reçoit z. On peut écrire z
comme z = y + e, où e est le vecteur de l’erreur. En fait e = z − y, mais Bob ne connaı̂t (pour
l’instant) ni e ni y. On voit que
On dit que HzT est le syndrome de z. Bob ne peut pas voir l’erreur e, mais il peut connaı̂tre
le syndrome de l’erreur, car HeT = HzT .
Le nombre d’erreurs possibles est relativement petit : Il s’agit de tous les vecteurs e avec au
plus t éléments non-nuls, pour un code qui peut détecter et corriger t erreurs par mot.
Exemple 15.10. Si un code de longueur n sur le corps Zp peut détecter et corriger t erreurs,
alors le nombre de vecteurs d’erreur est
n 2 n
n(p − 1) + (p − 1) + · · · + (p − 1)t
2 t
On à déjà vu cette formule : c’est le nombre de mots dans la boule de rayon t (sans inclure le
mot du code lui-même). Voir le théorème 13.12 et la discussion qui la précède.
Exemple 15.11. Pour le code de l’exemple 15.3, la distance minimale est δ = 3, donc ce code
peut corriger une erreur par mot. C’est un code sur le corps Z2 , donc les erreurs possibles
sont les vecteurs dans Z2 6 ayant un élément non-nul. Il y en a six. On donne tous les erreurs
possibles, ainsi que les syndromes correspondants (les vecteurs sont écrits comme mots pour
96 ALISTAIR SAVAGE
conserver l’espace).
e1 = 000001 → syndrome : He1 = 0001
e2 = 000010 → syndrome : He2 = 0010
e3 = 000100 → syndrome : He3 = 0011
e4 = 001000 → syndrome : He4 = 0100
e5 = 010000 → syndrome : He5 = 1000
e6 = 100000 → syndrome : He6 = 1100
L’exemple précédant montre une chose très pratique : si un code sur Z2 corrige une erreur,
alors les syndromes sont exactement les colonnes de H. La tâche de Bob est simplifié : il calcul
le syndrome de chaque mot reçu. Si le syndrome est 0, alors le mot est correct. Si le syndrome
n’est pas zéro, alors le syndrome est une des colonnes de H. De plus, la colonne de H correspond
exactement à l’erreur ! Donc il sait e et il peut donc calculer y = z − e et récupérer le message
original.
Le principe est pareil en général, par contre les erreurs possibles sont tous les vecteurs de
Zp n ayant poids au plus b(δ − 1)/2c. Donc il y a plus de syndromes ! Pour les codes à grande
distance minimales, on cherche des autres méthodes de “décoder”, mais pour nous, l’approche
simple suffira.
Exemple 15.12. Rappelant l’exemple 15.9, Bob a reçu le message “000001, 111111, 000111,
010111” et il a calculé les syndromes “0001, 0000, 0000, 1000”.
Le premier syndrome 0001 est exactement la dernière colonne de H. Donc c’est le dernier
symbole de ce mot qui est en erreur. Donc Bob sait que 000001 était vraiment 000000.
Le quatrième syndrome est 1000, qui est deuxième colonne de H. Donc c’est le deuxième
symbole de ce mot qui est en erreur. Donc Bob sait que 010111 était vraiment 000111.
Bob sait alors que les mots transmis par Alice étaient “000000, 111111, 000111, 000111”.
Bob a corrigé le message. Il veut maintenant récupérer le message original d’Alice. C’est la
matrice R qui fait ceci.
Théorème 15.13. Soit un code généré par G, avec matrice de contrôle H et matrice de
“récupérage” R. Si y = xG est un mot du code, alors xT = RyT (ou x = yRT ).
Exemple 15.14. Rappelant l’exemple 15.12, Bob a reçu le message “000001, 111111, 000111,
010111”, il a calculer les syndromes “0001, 0000, 0000, 1000”, et il a corrigé pour trouver
les mots transmis par Alice “000000, 111111, 000111, 000111”. Il peut maintenant calculer le
message original.
y1 = 000000 =⇒ x1 = y1 RT = 00
y2 = 111111 =⇒ x2 = y1 RT = 11
y3 = 000111 =⇒ x3 = y1 RT = 01
y4 = 000111 =⇒ x4 = y1 RT = 01
Bob sait alors que le message original de Alice était “00, 11, 01, 01”.
Algorithme 15.15. Soit un code linéaire avec matrice génératrice G de taille m × n sur un
corps Zp . On calcule la matrice de contrôle H et la matrice de “récupérage” R.
Si Alice veut envoyer un message à Bob, elle suit les étapes suivants.
(a) Alice écrit son message original en termes de mots de longueur m sur Zp : chaque mot
est un vecteur x dans l’espace vectoriel Zp m .
(b) Pour chaque mot x, Alice calcul y = xG ; c’est un mot du code, sous-espace de Zp n .
(c) Alice envoie chaque y à Bob.
Si Bob reçoit un message de Alice, il suit les étapes suivants.
(a) Bob reçoit des mots de Alice ; ce sont des mots z en Zp n .
(b) Pour chaque mot z, Bob calcul le syndrome HzT .
(c) Si le syndrome est 0, alors le mot est correct, et y = z.
(d) Si le syndrome n’est pas 0, alors le mot est incorrect. Il connaı̂t tous les erreurs possibles.
Parmi ces erreurs, il choisi celui qui à le même syndrome que z. C’est cette erreur e qui
a perturbé le mot y, donc il peut maintenant calculer y = z − e.
(e) Bob connaı̂t maintenant y, le mot correct transmis par Alice. Il obtient x = yRT .
Note que Bob doit passer à travers une liste de tous les erreurs possibles. C’est beaucoup plus
rapide que de passer à travers une liste de tous les mots possibles. Mais si le nombre d’erreurs
par mot est plus élevé, on a besoin d’autres techniques.
Le message original est écrit en Zp m ; les mots du code sont écrit en Zp n . On dit que m est
la dimension du code et que n et la longueur du code. On a déjà vu la longueur, mais dans
le contexte des codes linéaires on comprend que “dimension” mesure la quantité d’information
dans le message original. Le nombre de mots possibles dans le code est exactement pm . La
“longueur” mesure la quantité de redondance ajoutée pour donner une message transmissible
(et corrigeable, au besoin).
Exercice 15.16. En utilisant encore le même code que l’exemple 15.3, Bob renvoie un message
à Alice. Alice reçoit “100111, 000101, 111111, 110111”. Quel est le message original de Bob ?
Donner les syndromes, les mots corrigés et le message original.
98 ALISTAIR SAVAGE
Exercice 15.17. Les photos prises par les sondes spatiales Voyager ont été transmises à la
Terre en utilisant un code de Golay. Ce code prend des mots en Z2 12 (donc 12 bits) et les
transforme en mot du code qui est un sous-espace de Z2 24 (donc 24 bits). La distance minimale
de ce code est 8. Donner les tailles des matrices G, H et R. Combien d’erreurs par mot est-ce
que ce code peut détecter ? Combien d’erreurs par mot est-ce que ce code peut corriger ?
Combien de syndromes distinctes sont possibles avec ce code ? Bob devrait passer à travers
cette liste pour chaque mot qu’il reçoit. Est-ce que vous pensez que c’est une méthode efficace
pour un code de distance minimale δ = 8 ? Note que c’est encore beaucoup plus rapide que
de passer à travers une liste de tous les mots possibles dans Z2 24 . Néanmoins, il existe des
méthodes même plus rapides de “décoder” ce code.
15.5. Codes de Hamming. Un code de Hamming est un code linéaire parfaite. On considère
les codes de Hamming binaire, voulant dire sur le corps Z2 . On obtient sa matrice de contrôle
en écrivant tous les vecteurs non-nuls de Z2 k comme colonnes, pour un entier k. On peut alors
déterminer G et R.
Exemple 15.18. Pour k = 3, la matrice de contrôle du code de Hamming est
0 1 1 1 1 0 0
H = 1 0 1 1 0 1 0 .
1 1 0 1 0 0 1
On calcule alors que
1 0 0 0 0 1 1
0 1 0 0 1 0 1
G=
0
,
0 1 0 1 1 0
0 0 0 1 1 1 1
1 0 0 0 0 0 0
0 1 0 0 0 0 0
R=
0
.
0 1 0 0 0 0
0 0 0 1 0 0 0
On voit que la dimension est m = 4 et la longueur est n = 7 (c’est la taille de G, 4 × 7). En
général, k = n − m, n = 2k − 1 et m = 2k − k − 1.
Ici, on a choisi d’écrire la matrice H avec la matrice identité à la fin. Ce n’est pas strictement
nécessaire, il suffit de l’écrire dans un ordre où l’on peut “voir” la matrice identité. Mais dans
l’ordre choisi, on aura automatiquement une matrice génératrice standard.
On peut montrer que le poids minimal du code de Hamming est 3. C’est vrai en toute
dimension. Donc ce code peut détecter et corriger une erreur par mot. Ce code comporte 2m
mots. On a que |C| |B1 | = (2m ) (1 + n) = 2n−k 2k = 2n . La borne d’un code parfaite est atteinte.
Exercice 15.19. Alice veut envoyer le message “0001, 0100, 0110” à Bob en utilisant un code
de Hamming binaire de dimension m = 4. Donner les mots du code qu’elle transmet.
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 99
Exercice 15.20. Bob reçoit le message “0011010, 1100110, 1110100”, envoyé selon le code
Hamming binaire de dimension m = 4. Déterminer si les mots sont corrects. Si nécessaire, les
corriger. Donner le message original (en Z2 4 ).
base, 52 kernel, 6
base orthogonale, 53
longueur, 19, 97
base orthonormale, 53
binaire, 98 matrice
Borne de Hamming, 84 d’étape, 12, 15
boule, 81 d’une forme quadratique, 66
de contrôle, 93
chaı̂ne de Markov, 15 de récupérage, 93
régulière, 18 de transition, 12, 14, 15
code, 81 génératrice, 90
de Hamming, 98 génératrice standard, 90
linéaire, 90 orthogonale, 54
parfait, 85 stochastique, 15
complément orthogonal, 54 stochastique régulière, 18
composante principale, 79 méthode
contrainte, 29 de Gauss-Jordan, 6
coordonnées, 52 de simplex, 44
corps, 85 moindres carrées, 65
fini, 85 mots, 81
cycle, 19 multiplicité, 8
décomposition en valeurs singulières, 76 nombres de Fibonacci, 21
définie noyau, 6
négative, 69 numériquement stable, 80
positive, 69
diagonalisable, 9 objectif, 29
diagonalisation, 8 ordre, 20
dimension, 8, 52, 97 orthogonaux, 50
distance minimale, 81
droite de régression, 50 périodique, 19
dual, 46 poids, 92
dualité, 46 poids minimal, 92
point
eigenvalue, 5 d’attraction, 13
eigenvector, 5 de répulsion, 13
équation de selle, 13
de récurrence, 20 polynôme caractéristique, 7
normale, 62 position générale, 33
équivalence modulo n, 86 premier, 88
espace nul, 6 primal, 46
espace propre, 8 programme linéaire, 28, 30
projection, 50
fonction
objective, 29 réduction par rapport aux lignes, 6
forme canonique, 30 rang, 63
forme quadratique, 66 région faisable, 30
100
INTRODUCTION À L’ALGÈBRE LINÉAIRE APPLIQUÉE 101
régulière, 18
solution faisable, 31
stochastique, 15
syndrome, 95
système dynamique, 9, 12
tableau de simplex, 35
Théorème
des Axes Principaux, 67
trajectoire, 13
transformation linéaire, 73
valeur propre, 5
valeurs singulières, 74
variable
artificielle, 41
qui entre, 37
vecteur
d’état, 15
d’état stationnaire, 16
propre, 5