0% ont trouvé ce document utile (0 vote)
85 vues371 pages

Mathématiques pour Médias Numériques

Transféré par

aissataatraore50
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
85 vues371 pages

Mathématiques pour Médias Numériques

Transféré par

aissataatraore50
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Mathématiques

pour les Médias Numériques


Parcours Informatique et Multimédia

Recueil d’exercices corrigés et aide-mémoire.

Gloria Faccanoni
Diplôme d’ingénieur Cnam

i [Link]

Dernière mise-à-jour : Mercredi 31 mai 2023


1ère année
Ce fascicule est un support pour le cours de mathématiques de la première année du Diplôme d’ingénieur Cnam – Spécialité
I NFORMATIQUE – Parcours S CIENCES ET T ECHNOLOGIES DES M ÉDIAS N UMÉRIQUES (parcours en alternance). Ce document
donne une aperçue des thèmes qui constituent le socle des connaissances mathématiques indispensables pour votre
parcours. L’objectif principal de ce cours est la mise en œuvre des connaissances mathématiques acquises les années
précédentes dans un contexte de modélisation et initiation à l’analyse numérique pour les médias numériques. On y
présente les concepts fondamentaux de la façon la plus intuitive possible avant de procéder à une mise en forme abstraite.
Avec un souci de rigueur, mais sans insister sur les concepts les plus abstraits que ne rencontrera probablement pas un
élève-ingénieur, on a choisi de détailler le moindre calcul et les difficultés apparaissent progressivement. Les pré-requis sont
limités à ceux acquis en premier cycle. Les exercices et problèmes corrigés, classiques ou plus originaux, sont nombreux et
variés.

Le but du cours est une ouverture vers des techniques mathématiques appliquées à des problèmes issus des Technologies
du numérique. Actuellement il est impossible d’aborder ce sujet sans faire des simulations numériques et le langage
Octave/Matlab a été choisi comme langage de programmation du cours. La documentation et les sources peuvent être
téléchargées à l’adresse [Link] Les notions supposées connues correspondent au
programme des cours de Mathématiques (Analyse mathématique des fonctions réelles d’une ou plusieurs variables réelles
et Algèbre Linéaire) et Informatiques (Initiation à l’algorithmique).

L’objet de cet aide-mémoire est de proposer une explication succincte des concepts vus en cours. Ici on a cherché, compte
tenu des contraintes de volume horaire, des acquis des étudiants et des exigences pour la suite du cursus, à dégager les
points clés permettant de structurer le travail personnel de l’étudiant voire de faciliter la lecture d’autres ouvrages. Ce
polycopié ne dispense pas des séances de cours-TD ni de prendre des notes complémentaires. Il est d’ailleurs important
de comprendre et apprendre le cours au fur et à mesure. Ce polycopié est là pour éviter un travail de copie qui empêche
parfois de se concentrer sur les explications données oralement mais ce n’est pas un livre auto-suffisant et il est loin d’être
exhaustif ! De plus, ne vous étonnez pas si vous découvrez des erreurs (merci de me les communiquer).

Mathématiques pour l’Informatique


CM-TD-TP 70h 20 séances de 3h30

Quelque référence. Il est bon d’utiliser le web via des moteurs de recherche pour trouver des références en format pdf.
L’encyclopédie Wikipedia permet souvent un éclairage intéressant et différent de ce que montrent les manuels universitaires
français. Seulement, internet ne doit pas être votre seule et unique source d’inspiration. Votre bibliographie doit comprendre
d’autres ouvrages scientifiques, comme par exemple :
[1] Howard A NTON, Irl C B IVENS et Stephen D AVIS. Calculus Early Trascendental. John Wiley & Sons, 2012.
[2] Frédéric B ERTRAND et Myriam M AUMY-B ERTRAND. Initiation à la statistique avec R : Cours, exemples, exercices et
problèmes corrigés. Sciences Sup. Dunod, sept. 2010, 396 pages.
[3] D. C HAPRA C. C HAPRA. Numerical Methods for Engineers. McGraw-Hill Education, 2014.
[4] E. Ward C HENEY et David R. K INCAID. Numerical Mathematics and Computing. Cengage Learning, 2012.
[5] Bernard G OLDFARB et Catherine PARDOUX. Introduction à la méthode statistique-6e éd. : Économie, gestion. Hachette,
2011.
[6] Jaan K IUSALAAS. Numerical Methods in Engineering with Python 3. Cambridge University Press, 2013.
[7] Alfio QUARTERONI, Fausto S ALERI et Paola G ERVASIO. Calcul scientifique : cours, exercices corrigés et illustrations en
MATLAB et Octave. Springer, 2011.
[8] Jean-Pierre R AMIS, André WARUSFEL, Xavier B UFF, Josselin G ARNIER, Emmanuel H ALBERSTADT, Thomas L ACHAND -
R OBERT, François M OULIN et Jacques S AULOY. Mathématiques Tout-en-un pour la Licence 1-3e éd. Dunod, 2018.
[9] Timothy S AUER. Numerical Analysis. Pearson Education, 2018.
[10] D. S TEVEN C. C HAPRA. Applied Numerical Methods with MATLAB for Engineers and Scientists. McGraw-Hill Education,
2017.

Gloria FACCANONI

IMATH Bâtiment M-117 T 0033 (0)4 83 16 66 72


Université de Toulon
Avenue de l’université B [Link]@[Link]
83957 LA GARDE - FRANCE i [Link]

2
Mis à jour le Mercredi 31 mai 2023 Table des matières

Table des matières

1. Background 5
1.1 Éléments d’analyse matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Espaces vectoriels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 Systèmes linéaires et calcul pratique de la matrice inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 Valeurs propres et vecteurs propres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2. Méthodes de résolution numériques des systèmes linéaires 93


2.1 Méthodes directes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
2.2 Méthodes itératives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.3 Quelle est la précision de la solution d’un système linéaire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

3. Interpolation 131
3.1 Interpolation polynomiale : base canonique, base de L AGRANGE, base de N EWTON . . . . . . . . . . . . . . . 131
3.2 Interpolation non polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires 161


4.1 Calcul analytique de primitives et intégrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
4.2 Calcul approché d’intégrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

5. De l’interpolation à l’approximation d’EDO 185


5.1 EDO : généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.2 Calcul analytique des solutions de quelques types d’EDO d’ordre 1 . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.3 Quelques schémas numériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

6. Fonctions de plusieurs variables 227


6.1 Dérivées partielles du premier ordre et gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
6.2 Dérivées partielles de deuxième ordre et matrice hessienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.3 Optimisation (dans un ouvert et sans contraintes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) 253
7.1 Fitting par une relation affine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
7.2 Fitting polynomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
7.3 Fitting non polynomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
7.4 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
7.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

8. Statistique descriptive 275


8.1 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
8.2 Données statistiques et leur représentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
8.3 Statistique descriptive univariée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
8.4 Statistique descriptive à deux caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
8.5 Régression linéaire revisitée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
8.6 Corrélation et mises en garde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
8.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

© 2020-2021 G. Faccanoni 3
Table des matières Mis à jour le Mercredi 31 mai 2023

A. Introduction à Octave/Matlab 309


A.1 Les environnements MATLAB et Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
A.2 Installation(s) et version(s) en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
A.3 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
A.4 Notions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
A.5 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
A.6 Affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
A.7 Opérations arithmétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
A.8 Division euclidienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
A.9 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
A.10 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
A.11 Graphes de fonctions R → R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
A.12 Structure conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
A.13 Structures itératives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
A.14 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
A.15 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

4 © 2020-2021 G. Faccanoni
CHAPITRE 1

Background

1.1. Éléments d’analyse matricielle


1.1.1. Généralité
On appelle MATRICE m × n (ou d’ordre m × n) à coefficients dans K tout tableau de m lignes et n colonnes d’éléments de K.
L’ensemble des matrices m × n à coefficients dans K est noté Mm,n (K).
On convient de noter a i j l’élément de la matrice situé sur la i -ème ligne et j -ème colonne (1 ≤ i ≤ m et 1 ≤ j ≤ n).
Une matrice A est représentée entre deux parenthèses ou deux crochets :
   
a 11 ... a1 j ... a 1n a 11 ... a1 j ... a 1n
 . .. ..   . .. .. 
 .. . .   .. . . 
   
A =  ai 1 ... ai j ... ai n  ou A =  ai 1 ... ai j ... ai n 
   
 .. .. ..   .. .. .. 
   
 . . .   . . . 
a m1 ... am j ... a mn a m1 ... am j ... a mn

ou encore
A = (a i j )1≤i ≤m ou A = [a i j ]1≤i ≤m
1≤ j ≤n 1≤ j ≤n

⋆ Si m = n on dit qu’on a une MATRICE CARRÉE. L’ensemble des matrices carrées d’ordre n à coefficients dans K est noté
Mn (K).
⋆ Une matrice m × 1 est appelée VECTEUR - COLONNE et une matrice 1 × n est appelée VECTEUR - LIGNE.
⋆ La MATRICE NULLE, notée Om,n , est la matrice dont tous les éléments sont nuls : a i j = 0 pour tout i = 1, . . . , m et tout
j = 1, . . . , n.
⋆ On appelle MATRICE DIAGONALE toute matrice carrée D = (d i j )1≤i , j ≤n telle que i ̸= j =⇒ d i j = 0. Si on note d i ≡ d i i ,
une matrice diagonale est de la forme
 
d1 0 ... 0 0
0
 d2 ... 0 0 
 . .. .. .. 
Dn = 
 .. . . . .

 
0 0 ... d n−1 0
0 0 ... 0 dn

On la note Diag(d 1 , d 2 , . . . , d n ).
⋆ La MATRICE IDENTITÉ d’ordre n, notée In , est la matrice diagonale Diag(1, 1, . . . , 1).
| {z }
n fois
⋆ On dit qu’une matrice carrée A = (a i j )1≤i , j ≤n est
⋆ TRIANGULAIRE SUPÉRIEURE si i > j =⇒ a i j = 0,

⋆ TRIANGULAIRE INFÉRIEURE si i < j =⇒ a i j = 0.

⋆ On appelle matrice TRANSPOSÉE de A, notée AT , la matrice A = (a j i ) 1≤ j ≤n . C’est donc une matrice de Mn,m (R)
1≤i ≤m
obtenue en échangeant lignes et colonnes de la matrice initiale. Bien évidemment (AT )T = A.
⋆ On appelle matrice ADJOINTE (ou CONJUGUÉE TRANSPOSÉE) de A, notée AH , la matrice A = (a j i ) 1≤ j ≤n . C’est donc
1≤i ≤m
une matrice de Mn,m (C) obtenue en échangeant lignes et colonnes de la matrice initiale et en prenant le nombre
complexe conjugué. Bien évidemment (AH )H = A.

5
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

⋆ Une matrice A est dite SYMÉTRIQUE si AT = A, i.e. si a i j = a j i pour tout i ̸= j .


⋆ Une matrice A est dite HERMITIENNE ou AUTOADJOINTE si AH = A, i.e. si a i j = a j i pour tout i ̸= j .
⋆ Si A est une matrice carrée d’ordre n, on définit la TRACE de A comme la somme des éléments de la diagonale
principale : tr(A) ≡ ni=1 a i i . Par conséquent tr(AT ) = tr(A).
P

On remarque qu’une matrice DIAGONALE est triangulaire supérieure et inférieure (i.e. i ̸= j =⇒ a i j = 0).

E XEMPLE ³ −1 4 2 ´
⋆ La matrice A = 0 1 −3 est carrée et d’ordre 3 à coefficients dans Z.
4 1 5
µ1 2 3 4 ¶
⋆ La matrice U = 0 56 7
0 0 2 −1 est une matrice triangulaire supérieure.
0 0 0 −5
µ1
0 0 0

⋆ La matrice L = 4 0 0 0 est une matrice triangulaire inférieure.
5 −1 2 0
7 9 15 4
µ1 0 0 0¶
⋆ La matrice D = 0 −8 0 0
0 0 7 0 est une matrice diagonale.
0 0 00
µ1 0 0 0¶
⋆ La matrice I4 = 0 100
0 0 1 0 est la matrice identité d’ordre 4.
0001
⋆ La matrice B = ( 7 0 8 2 ) est une matrice ligne (= vecteur ligne) d’ordre 4.
³7´
⋆ La matrice C = 0 est une matrice colonne (= vecteur colonne) d’ordre 3.
9
³ 1 5 −9 ´
⋆ La matrice A = 5 4 0 est symétrique.
−9 0 7
³ 1 3´
Si A = 3 0 7 alors AT = −1 0 .
¡ 1 −1 5 ¢

5 7
³1 2 0 ´
⋆ La trace de la matrice A = 0 2 3 est tr(A) = a 11 + a 22 + a 33 = 1 + 2 + (−2) = 1.
0 −1 −2

1.1.2. Calcul matriciel élémentaire


Addition de matrices
Si A = (a i j )1≤i ≤m et B = (b i j )1≤i ≤m sont deux matrices m × n, on définit l’ADDITION des matrices par
1≤ j ≤n 1≤ j ≤n

A + B = (a i j + b i j )1≤i ≤m .
1≤ j ≤n

La MATRICE OPPOSÉE D ’ UNE MATRICE A est notée −A. Si A = (a i j )1≤i ≤m alors −A = (−a i j )1≤i ≤m .
1≤ j ≤n 1≤ j ≤n

E XEMPLE
Soient les matrices 2 × 3 suivantes :
µ ¶ µ ¶
3 4 2 6 1 9
A= , B= .
1 3 5 2 0 3
La somme de A et B est la matrice 2 × 3 suivante :
µ ¶ µ ¶
3+6 4+1 2+9 9 5 11
A+B = = .
1+2 3+0 5+3 3 3 8

ATTENTION
La somme de deux matrices d’ordres différents n’est pas définie.

Si A, B et C sont des matrices de même ordre, alors nous avons

1. A + B = B + A (commutativité), 2. A + (B + C) = (A + B) + C (associativité),
T T T
3. (A + B) = A + B 4. (A + B)H = AH + BH
5. tr(A + B) = tr(A) + tr(B).

6 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

E XEMPLE
Soient les matrices 2 × 2 suivantes :
µ ¶ µ ¶ µ ¶
1 −1 6 −5 0 2
A= , B= , C= .
3 0 2 1 2 4

On a alors
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
1+6 −1 − 5 7 −6 6+1 −5 − 1 7 −6 6+0 −5 + 2 6 −3
A+B = = , B+A = = , B+C = = .
3+2 0+1 5 1 2+3 1+0 5 1 2+2 1+4 4 5

De plus, µ ¶ µ ¶
7 −4 7 −4
(A + B) + C = , A + (B + C) = .
7 5 7 5

Produit d’une matrice par un scalaire

Si A = (a i j )1≤i ≤m est une matrice m × n et si α ∈ K, on définit le PRODUIT D ’ UNE MATRICE PAR UN SCALAIRE comme la
1≤ j ≤n
matrice
α · A = (α · a i j )1≤i ≤m
1≤ j ≤n

Si A et B sont deux matrices de même ordre et α ∈ K un scalaire, alors α · (A + B) = α · A + α · B (distributivité).

De plus, (αA)T = αAT et (αA)H = αAH .

E XEMPLE µ ¶ µ3 ¶
3 4 2 /2 2 1
Si α = 21 et A = alors α · A = 1 .
1 3 5 /2 3
/2 5
/2

Produit de matrices

Si A = (a i k )1≤i ≤m est une matrice m × n et B = (b k j )1≤k≤n une matrice n × p, on définit C = AB le PRODUIT DES MATRICES A
1≤k≤n 1≤ j ≤p
et B (dans l’ordre) comme la matrice de dimension m × p telle que l’élément c i j est le produit scalaire de la ligne i de A et de
la colonne j de B. par
n
X
ci j = a i k b k j = a i 1 b1 j + a i 2 b2 j + · · · + a i n bn j
k=1

© 2020-2021 G. Faccanoni 7
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

B : n lignes p colonnes
 

 b 11 ... b1 j ... b 1p 

 
 
 
 .. .. .. .. .. 
. . . . .
 
 
 
 
 
 b k1 ... bk j ... b kp 

1j
 

b
 

×
 

i1
 

a
.. .. .. .. ..

+
 

..
 . . . . . 

.+
 
j  
bk  
× 
b n1 ... bn j ... b np

k
ai
 

+
..
.+
j
bp
×
p
ai
   

 a 11 ... a 1k ... a 1n 


 c 11 ... c1 j ... c 1p 

   
   
   
 .. .. .. .. ..   .. .. .. .. .. 

 . . . . . 


 . . . . . 

   
   

 ai 1 ... ai k ... ai n 


 ci 1 ... ci j ... ci p 

   
   
   
 .. .. .. .. ..   .. .. .. .. .. 
. . . . . . . . . .
   
   
   
   
  
c m1 c mk c mp

 a m1 ... a mk ... a mn   ... ... 

A : m lignes n colonnes C = AB : m lignes p colonnes

E XEMPLE
Soient les deux matrices
 
µ ¶ 1 2 0
1 3 0
A= et B = 0 2 3 .
−1 1 2
0 −1 −2
La matrice A est d’ordre 2 × 3, la matrice B est d’ordre 3 × 3, donc la matrice produit AB est une matrice d’ordre 2 × 3 :
µ ¶ µ ¶
1×1+3×0+0×0 1 × 2 + 3 × 2 + 0 × (−1) 1 × 0 + 3 × 3 + 0 × (−2) 1 8 9
AB = = .
−1 × 1 + 1 × 0 + 2 × 0 −1 × 2 + 1 × 2 + 2 × (−1) −1 × 0 + 1 × 3 + 2 × (−2) −1 −2 −1

B : 3 lignes 3 colonnes
 

 1 2 0 

b 11
 
 
×
a 11
 
 0 2 3 
+

1
 
×b2  
a 12 +
 
 
b 31
 0 −1 −2 
a 13 ×
   

 1 3 0 


 1 8 9 

   
   
   
 −1 1 2   −1 −2 −1 

A : 2 lignes 3 colonnes C = AB : 2 lignes 3 colonnes

8 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

E XEMPLE
Une société commerciale possède deux magasins dont l’aménagement du parc informatique est le suivant :
⋆ Magasin 1 : 12 PC, 5 tablettes et 10 smartphones,
⋆ Magasin 2 : 17 PC, 6 tablettes et 14 smartphones.
On peut associer à cet équipement la matrice M = 12
¡ 5 10 ¢
17 6 14 .
La société souhaite améliorer son équipement de la manière suivante :
⋆ Magasin 1 : +3 PC, +2 tablettes et +2 smartphones,
⋆ Magasin 2 : +5 PC, +3 tablettes et +4 smartphones.
Ce nouvel équipement peut être associé à la matrice N = 35 23 24 .
¡ ¢

Le répartition du nouvel aménagement du parc informatique des deux magasins sera donc
µ ¶ µ ¶ µ ¶
12 5 10 3 2 2 15 7 12
M+N = + =
17 6 14 5 3 4 22 9 18

Pour acheter le nouvel équipement, la société commerciale a le choix entre deux fournisseurs :
⋆ Fournisseur 1 : 600 e le PC, 180 e la tablette et 60 e le smartphone,
⋆ Fournisseur 2 : 550 e le PC, 200 e la tablette et 50 e le smartphone.
600 550
³ ´
On peut associer ces prix à la matrice P = 180 200 .
60 50
On obtient les prix du nouvel aménagement selon les magasins et selon les fournisseurs en calculant
 
µ ¶ 600 550 µ ¶ µ ¶
3 2 2  3 × 600 + 2 × 180 + 2 × 60 3 × 550 + 2 × 200 + 2 × 50 2280 2150
NP = 180 200 = =
5 3 4 5 × 600 + 3 × 180 + 4 × 60 5 × 550 + 3 × 200 + 4 × 50 3780 3550
60 50

Par exemple, le prix de l’investissement pour le magasin 1 est de 2280 e avec le fournisseur 1 et de 2150 e avec le fournisseur 2.

ATTENTION
AB ̸= BA en général (non commutativité).
Prenons le cas général avec A d’ordre m × p et B d’ordre p × n. Le produit AB est défini, c’est une matrice d’ordre m × n.
Qu’en est-il du produit BA ? Il faut distinguer trois cas :
⋆ si m ̸= n le produit BA n’est pas défini ;
⋆ si m = n mais p ̸= n, le produit AB est défini et c’est une matrice d’ordre m × n tandis que le produit BA est défini
mais c’est une matrice d’ordre p × p donc AB ̸= BA ;
⋆ si m = n = p, A et B sont deux matrices carrées d’ordre m. Les produits AB et BA sont aussi carrés et d’ordre m mais
là encore, en général, AB ̸= BA ;

E XEMPLE
Soient les matrices
µ ¶ µ ¶
1 −1 6 −5
A= , B= .
3 0 2 1
On obtient µ ¶ µ ¶
4 −6 −9 −6
AB = et BA = .
18 −15 5 −2

Si les dimensions sont compatibles, on a les propriétés suivantes :

1. A(BC) = (AB)C (associativité) 2. A(B + C) = AB + AC (distributivité) 3. AIn = In A = A


T T T H H H
4. (AB) = B A 5. (AB) = B A 6. tr(AB) = tr(BA)

Puissance d’une matrice


Si A est une matrice carrée, on note B = Aq (pour q ≥ 2) la matrice définie par

B≡A
| ×A×
{z· · · × A} .
q fois

Il s’agit du produit matriciel de A par elle même q fois par conséquent, en générale, b i j ̸= (a i j )q .
Si la matrice est diagonale, i.e. si a i j = 0 pour i ̸= j , alors b i j = (a i j )q .

© 2020-2021 G. Faccanoni 9
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Inverse d’une matrice carrée


Une matrice carrée A ∈ Mn (K) est dite INVERSIBLE (ou régulière) s’il existe une matrice B ∈ Mn (K) telle que

AB = BA = In .

Si une telle matrice existe, alors elle est unique, on la note A−1 et on l’appelle matrice INVERSE de A.
⋆ Si une matrice est non inversible (i.e. il n’existe pas A−1 ), on dit qu’elle est SINGULIÈRE.
⋆ Une matrice carrée A est dite ORTHOGONALE si elle est inversible et AT A = AAT = In , i.e. si AT = A−1 .
H H
⋆ Une matrice carrée A est dite UNITAIRE si elle est inversible et A A = AA = In , i.e. si AH = A−1 .
Soit A et B deux matrices inversibles, alors
¢−1
⋆ A−1 l’est aussi et A−1 = A,
¡

T
¡ T ¢−1 ¡ −1 ¢T
⋆ A l’est aussi et A = A ,
⋆ AB l’est aussi et (AB)−1 = B−1 A−1 .

E XEMPLE
Considérons les matrices

− 21
µ ¶ µ ¶
1 1 2
A= B= 1 .
2 4 −1 2

On a

− 21 − 21
µ ¶µ ¶ µ ¶ µ ¶µ ¶ µ ¶
1 1 2 1 0 2 1 1 1 0
AB = 1 = = I2 BA = 1 = = I2
2 4 −1 2
0 1 −1 2
2 4 0 1

On dit que B est la matrice inverse de A et réciproquement.

Remarque
Matrice inverse et systèmes linéaires Il est fréquent, dans toutes les disciplines scientifiques, de devoir résoudre des systèmes
linéaires.
Tout système linéaire de n équations à n inconnues peut s’écrire sous la forme matricielle Ax = b ; A est une matrice carrée
de dimension n et x et b sont des vecteurs colonnes de dimension n, où x est l’inconnue et b un vecteur donné.
Si A est inversible alors ce système possède une unique solution x donnée par x = A−1 b car

Ax = b ⇐⇒ A−1 Ax = A−1 b ⇐⇒ x = A−1 b.

E XEMPLE
Considérons le système linéaire
(
2x + 3y = 15
3x + 4y = 12
¡x¢
Si on pose A = , alors le produit matriciel Ax donne le vecteur colonne
¡2 3¢ ¡ 15 ¢
34 ,x= y et b = 12
µ ¶µ ¶ µ ¶
2 3 x 2x + 3y
Ax = =
3 4 y 3x + 4y

ainsi le système peut s’écrire sous forme matricielle Ax = b.


On cherche donc à calculer A−1 , i.e. on cherche a, b, c, d tels que
µ ¶µ ¶ µ ¶µ ¶ µ ¶
a b 2 3 2 3 a b 1 0
= = .
c d 3 4 3 4 c d 0 1

On a
µ ¶µ ¶ µ ¶ µ ¶
a b 2 3 2a + 3b 3a + 4b 1 0
= =
c d 3 4 2c + 3d 3c + 4d 0 1
µ ¶µ ¶ µ ¶ µ ¶
2 3 a b 2a + 3c 2b + 3d 1 0
= =
3 4 c d 3a + 4c 3b + 4d 0 1

10 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

si et seulement si a = −4, b = c = 3 et d = −2 ainsi


µ ¶µ ¶ µ ¶
−1 −4 3 15 −24
x=A b= =
3 −2 12 21

Cet exemple montre le lien entre résolution d’un système linéaire et calcul d’une matrice inverse. Cependant, pour calculer
la solution du système initiale de 2 équations à 2 inconnues, on doit calculer les 4 coefficients de A−1 et pour cela on doit
résoudre un système linéaire de 8 équations et 4 inconnues. . . ce n’est pas la bonne stratégie !

1.1.3. Définition et calcul pratique d’un déterminant


Le déterminant est un nombre que l’on associe à n vecteurs de Rn . Il correspond au volume du parallélépipède engendré
par ces n vecteurs. On peut aussi définir le déterminant d’une matrice A comme le déterminant des vecteurs qui composent
ses colonnes. Le déterminant permet de savoir si une matrice est inversible ou pas, et de façon plus générale, joue un rôle
important dans le calcul matriciel et la résolution de systèmes linéaires.

Définition 1.1 (D ÉTERMINANT d’une matrice d’ordre n (règle de L APLACE))


Soit A une matrice carrée d’ordre n.
Étant donné un couple (i , j ) d’entiers, 1 ≤ i , j ≤ n, on note Ai j la matrice carrée d’ordre n − 1 obtenue en supprimant la
i -ème ligne et la j -ème colonne de A.
Le DÉTERMINANT de A, noté det(A) ou |A|, est défini par récurrence sur l’ordre de la matrice A :
⋆ si n = 1 : le déterminant de A est le nombre
det(A) ≡ a 11 ,

⋆ si n > 1 : le déterminant de A est le nombre


n
(−1)i + j a i j det(Ai j )
X
det(A) ≡ quelque soit la ligne i fixée, 1 ≤ i ≤ n,
j =1

ou, de manière équivalente, le nombre

n
(−1)i + j a i j det(Ai j )
X
det(A) ≡ quelque soit la colonne j fixée, 1 ≤ j ≤ n.
i =1

Astuce
Pour se souvenir des signes de ces deux formules, on peut remarquer que la distribution des signes + et − avec la formule
(−1)i + j est analogue à la distribution des cases noirs et blanches sur un damier :
¯ ¯
¯+ − + − . . . ¯
¯ ¯
¯− + − + . . . ¯
¯ ¯
¯+ − + − . . . ¯
¯ ¯
¯ .. .. .. .. . . ¯
¯ ¯
¯. . . . .¯

E XEMPLE (D ÉTERMINANT D ’ UNE MATRICE D ’ ORDRE 2 — MÉTHODE DE L APLACE )


Soit la matrice
µ ¶
a 11 a 12
A=
a 21 a 22
alors

det(A11 ) = a 22 , det(A12 ) = a 21 , det(A21 ) = a 12 , det(A22 ) = a 11 .

On peut calculer det(A) par l’une des formules suivantes :


⋆ a 11 det(A11 ) − a 12 det(A12 ) = a 11 a 22 − a 12 a 21 (développement suivant la ligne i = 1)
⋆ −a 21 det(A21 ) + a 22 det(A22 ) = −a 21 a 12 + a 22 a 11 (développement suivant la ligne i = 2)
⋆ a 11 det(A11 ) − a 21 det(A21 ) = a 11 a 22 − a 21 a 12 (développement suivant la colonne j = 1)
⋆ −a 12 det(A12 ) + a 22 det(A22 ) = −a 12 a 21 + a 22 a 11 (développement suivant la colonne j = 2)

© 2020-2021 G. Faccanoni 11
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Ces formules donnent bien le même résultat.

Astuce (Déterminant d’une matrice d’ordre 2 — méthode pratique)


Soit A une matrice carrée d’ordre n = 2. Sans appliquer la méthode de Laplace, nous pouvons nous rappeler du déterminant
par le schéma suivant : µ ¶
a 11 a 12
det(A) = det = a 11 a 22 − a 12 a 21 .
a 21 a 22

+ −
a 11 a 12

a 21 a 22

E XEMPLE
µ ¶
5 7
det = 5 × 3 − 7 × 4 = 15 − 28 = −13.
4 3

E XEMPLE (D ÉTERMINANT D ’ UNE MATRICE D ’ ORDRE 3 — MÉTHODE DE L APLACE )


Soit la matrice
 
a 11 a 12 a 13
A = a 21 a 22 a 23 
a 31 a 32 a 33
alors
µ ¶ µ ¶
a 22 a 23 a 21 a 23
det(A11 ) = det = a 22 a 33 − a 23 a 32 , det(A12 ) = det = a 21 a 33 − a 23 a 31 ,
a 32 a 33 a 31 a 33
µ ¶ µ ¶
a 21 a 22 a 12 a 13
det(A13 ) = det = a 21 a 32 − a 22 a 31 , det(A21 ) = det = a 12 a 33 − a 13 a 32 ,
a 31 a 32 a 32 a 33
µ ¶ µ ¶
a 11 a 13 a 11 a 12
det(A22 ) = det = a 11 a 33 − a 13 a 31 , det(A23 ) = det = a 11 a 32 − a 12 a 31 ,
a 31 a 33 a 31 a 32
µ ¶ µ ¶
a 12 a 13 a 11 a 13
det(A31 ) = det = a 12 a 23 − a 13 a 22 , det(A32 ) = det = a 11 a 23 − a 13 a 21 ,
a 22 a 23 a 21 a 23
µ ¶
a 11 a 12
det(A33 ) = det = a 11 a 22 − a 12 a 21 ,
a 21 a 22

donc on peut calculer det(A) par l’une des formules suivantes :


⋆ a 11 det(A11 ) − a 12 det(A12 ) + a 13 det(A13 ) (développement suivant la ligne i = 1)
⋆ −a 21 det(A21 ) + a 22 det(A22 ) − a 23 det(A23 ) (développement suivant la ligne i = 2)
⋆ a 31 det(A31 ) − a 32 det(A32 ) + a 33 det(A33 ) (développement suivant la ligne i = 3)
⋆ −a 11 det(A11 ) + a 21 det(A21 ) − a 31 det(A31 ) (développement suivant la colonne j = 1)
⋆ a 12 det(A12 ) − a 22 det(A22 ) + a 32 det(A32 ) (développement suivant la colonne j = 2)
⋆ −a 13 det(A13 ) + a 23 det(A23 ) − a 33 det(A33 ) (développement suivant la colonne j = 3)
Quelques calculs montrent que ces formules donnent bien le même résultat.

E XEMPLE
Soit la matrice
 
1 0 1
A = 0 2 0
0 3 5
alors
µ ¶ µ ¶ µ ¶
2 0 0 0 0 2
det(A11 ) = det = 10, det(A12 ) = det = 0, det(A13 ) = det = 0,
3 5 0 5 0 3

12 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

µ ¶ µ ¶ µ ¶
0 1 1 1 1 0
det(A21 ) = det = −3, det(A22 ) = det = 5, det(A23 ) = det = 3,
3 5 0 5 0 3
µ ¶ µ ¶ µ ¶
0 1 1 1 1 0
det(A31 ) = det = −2, det(A32 ) = det = 0, det(A33 ) = det = 2,
2 0 0 0 0 2

donc on peut calculer det(A) par l’une des formules suivantes :


⋆ 1 det(A11 ) + 0 det(A12 ) + 1 det(A13 ) = 10 + 0 + 0 = 10
⋆ 0 det(A21 ) + 2 det(A22 ) + 0 det(A23 ) = 0 + 2 × 5 + 0 = 10 L99 formule pratique car il n’y a qu’un déterminant à calculer
⋆ 0 det(A31 ) + 3 det(A32 ) + 5 det(A33 ) = 0 + 0 + 5 × 2 = 10
⋆ 1 det(A11 ) + 0 det(A21 ) + 0 det(A31 ) = 10 + 0 + 0 = 10 L99 formule pratique car il n’y a qu’un déterminant à calculer
⋆ 0 det(A12 ) + 2 det(A22 ) + 3 det(A32 ) = 0 + 2 × 5 + 0 = 10
⋆ 1 det(A13 ) + 0 det(A23 ) + 5 det(A33 ) = 0 + 0 + 5 × 2 = 10

Astuce (Déterminant d’une matrice d’ordre 3 — méthode pratique (règle de S ARRUS))


Soit A une matrice carrée d’ordre n = 3. Sans appliquer la méthode de Laplace, nous pouvons nous rappeler du déterminant
par le schéma suivant :
 
a 11 a 12 a 13 ¡ ¢ ¡ ¢
det(A) = det a 21 a 22 a 23  = a 11 a 22 a 33 + a 12 a 23 a 31 + a 13 a 21 a 32 − a 13 a 22 a 31 + a 11 a 23 a 32 + a 12 a 21 a 33
a 31 a 32 a 33

+ + + − − −
a 11 a 12 a 13 a 11 a 12

a 21 a 22 a 23 a 21 a 22

a 31 a 32 a 33 a 31 a 32

E XEMPLE
Soit la matrice
 
1 0 1
A = 0 2 0
0 3 5
alors avec la règle de S ARRUS
+ + + − − −

1 0 1 1 0

0 2 0 0 2

0 3 5 0 3

det(A) = (1 × 2 × 5 + 0 × 0 × 0 + 1 × 0 × 3) − (1 × 2 × 0 + 1 × 0 × 3 + 0 × 0 × 5) = 10.

Si on utilise la définition (règle de L APLACE), en développant selon la première colonne on obtient


µ ¶
2 0
det(A) = 1 × det = 2 × 5 − 0 × 3 = 10.
3 5

E XEMPLE
Soit la matrice
 
5 7 1
A = 4 3 2
2 1 6
alors

© 2020-2021 G. Faccanoni 13
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

+ + + − − −

5 7 1 5 7

4 3 2 4 3

2 1 6 2 1

det(A) = (5 × 3 × 6 + 7 × 2 × 2 + 1 × 4 × 1) − (1 × 3 × 2 + 5 × 2 × 1 + 7 × 4 × 6) = −62.

ATTENTION
La règle de S ARRUS ne s’applique qu’à des matrices d’ordre 3.

E XEMPLE
Soit la matrice d’ordre 4 suivante :
1 0 0 1
 
2 0 1 0
A=
1

2 0 4
1 2 3 0
Alors
   
0 1 0 2 0 1 µ ¶
2 4 ¡ ¢
det(A) = det(A11 ) − det(A14 ) = det 2 0 4 − det 1 2 0 = − det − 12 + 0 + 2 − 2 − 0 − 0 = −(−8) − 12 = −4.
2 0
2 3 0 1 2 3

Si on essaye de «généraliser» la règle de S ARRUS on n’obtient pas le bon résultat :


³ ´ ³ ´
1 × 0 × 0 × 0 + 0 × 1 × 4 × 1 + 0 × 0 × 1 × 2 + 1 × 2 × 2 × 3 − 1 × 1 × 2 × 1 + 1 × 0 × 0 × 2 + 0 × 2 × 4 × 3 + 0 × 0 × 1 × 0 = 10.

On a les propriétés suivantes :


1. A est inversible si et seulement si det(A) ̸= 0,
1
2. det(A−1 ) = ,
det(A)
3. det(AT ) = det(A),
4. det(AB) = det(A) · det(B)
5. le déterminant d’une matrice triangulaire est égal au produit des éléments diagonaux,
6. le déterminant d’une matrice orthogonale est égal à 1.

Astuce
Il convient d’utiliser la définition de déterminant après avoir fait apparaître sur une même rangée le plus possible de zéro
sachant que
⋆ si deux colonnes (resp. deux lignes) sont identiques ou proportionnelles, alors det(A) = 0 ;
⋆ si on multiplie une colonne (resp. une ligne) par un scalaire α ̸= 0, alors le déterminant est multiplié par α ;
⋆ si on échange deux colonnes (resp. deux lignes), alors le déterminant est changé en son opposé (i.e., le déterminant
change de signe) ;
⋆ on ne change pas un déterminant si on ajoute à une colonne (resp. une ligne) une combinaison linéaire des autres
colonnes (resp. lignes), i.e.

C i ← C i + αC j , L i ← L i + αL j ,

avec j ̸= i et α ̸= 0.

E XEMPLE
Soit la matrice
 
1 0 1
A = 0 2 0
0 3 5

14 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

On fait apparaître encore plus de zéros dans la matrice jusqu’à obtenir une matrice triangulaire :
   
1 0 1 1 0 1
L 3 ←L 3 − 32 L 2
det(A) = det 0
 2 0 = det 0
 2 0 = 1 × 2 × 5 = 10.
0 3 5 0 0 5

En dimension 2 les déterminants


¡ ¢ correspondent à des aires et en dimension 3 à des volumes.
Considérons deux vecteurs v = ac et w = db du plan R2 . Ces deux vecteurs déterminent un parallélogramme :
¡ ¢

w
d
c
v
j

i b a x

L’aire du parallélogramme est donnée par la valeur absolue du déterminant de la matrice dont les colonnes sont v et w :
¯ µ ¶¯
¯ a c ¯¯
Aire = ¯¯det
b d ¯

Théorème 1.2
A est inversible si et seulement si det(A) ̸= 0.

Propriété 1.3
⋆ det(AT ) = det(A),

⋆ det(AH ) = det(A),
1
⋆ det(A−1 ) = ,
det(A)
⋆ det(AB) = det(A) · det(B).

Définition 1.4 (Rang)


Le RANG d’une matrice quelconque A ∈ Mm,n , noté rg(A), est égal au plus grand entier s tel que l’on puisse extraire de A
une matrice carrée d’ordre s inversible, c’est-à-dire de déterminant non nul. Il représente le nombre maximum de vecteurs
colonnes de A linéairement indépendants (ou, ce qui est équivalent, le nombre maximum de vecteurs lignes linéairement
indépendants).

Remarque
Soit une matrice A ∈ Mm,n . Alors
0 ≤ rg(A) ≤ min(m, n)
et rg(A) = 0 si et seulement si tous les éléments de A sont nuls.

E XEMPLE
Soit A la matrice suivante
µ ¶
1 3 2
A= .
1 3 1
Le rang de A est 2 car
⋆ A est d’ordre 2 × 3 donc s ≤ min{2, 3} soit encore s = 0, 1 ou 2 ;

© 2020-2021 G. Faccanoni 15
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

⋆ il existe au moins un élément de A différent de zéro, donc s ̸= 0 soit encore s = 1 ou 2 ; pour qu’il soit 2 il faut trouver
une sous-matrice de dimension 2 inversible :
⋆ comme le déterminant de la sous-matrice composée de la première et de la deuxième colonne est nul, on ne
peut pas conclure car je peux encore trouver une autre sous-matrice de dimension 2 inversible ;
⋆ comme le déterminant de la sous-matrice composée de la première et de la troisième colonne est non nul, alors
s = 2.

E XEMPLE
Soit A la matrice suivante
 
1 0 1
A= 0 5 −1 .
−1 0 −1
Le rang de A est 2 car
⋆ A est d’ordre 3 × 3 donc s ≤ 3, i.e. s = 0, 1, 2 ou 3 ;
⋆ il existe au moins un élément de A différent de zéro, donc s ̸= 0 ;
⋆ le déterminant de A est 0 (car L 1 =³−L 3´) donc s ̸= 3 ;
⋆ le déterminant de la sous-matrice 1 0
0 5 est non nul, donc s = 2.

Opérations élémentaires sur les matrices

Définition 1.5 (Opérations élémentaires sur les lignes d’une matrices)


Les opérations (ou manipulations) élémentaires sur les lignes d’une matrices M ∈ Mm,n sont
⋆ la multiplication d’une ligne L i par un scalaire non nul α :

L i ← αL i ;

⋆ l’addition d’un multiple d’une ligne αL j à une autre ligne L i :

L i ← L i + αL j ;

⋆ l’échange de deux lignes :


Li ↔ L j .

Ces transformations sont équivalentes à la multiplication à gauche (pré-multiplication) de la matrice M ∈ Mm,n par la matrice
inversible obtenue en appliquant à la matrice identité Im la transformation correspondante. Par exemple, la transformation
qui échange les premières deux lignes de la matrice M ∈ M4,3 suivante

a b c d e f
   
d e f L ↔L 2 a b c
 −−1−−−→

 
g h i g h i
p q r p q r

équivaut à multiplier M à gauche par la matrice obtenue en échangeant les premières deux lignes de la matrice identité I4 :

0 1 0 0 a b c d e f
    

 d e f
1 0 0 0  a b c
 = 
0 0 1 0 g
 h i  g h i
0 0 0 1 p q r p q r

Définition 1.6 (Opérations élémentaires sur les colonnes d’une matrices)


Les opérations élémentaires sur les colonnes d’une matrice M ∈ Mm,n sont
⋆ la multiplication d’une colonne C i par un scalaire α non nul :

C i ← αC i ;

⋆ l’addition d’un multiple d’une colonne αC j à une autre colonne C i :

C i ← C i + αC j ;

16 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

⋆ l’échange de deux colonnes :


Ci ↔ C j .

Ces transformations sont équivalentes à la multiplication à droite (post-multiplication) de la matrice M ∈ Mm,n par la matrice
inversible obtenue en appliquant à la matrice identité In la transformation correspondante. Par exemple la transformation
qui échange les deux premières colonnes de la matrice M précédente s’obtient comme suit :

a b c  b a c
   

d 0 1 0
e f 1
e d f

g 0 0 =  
h i h g i
0 0 1
p q r q p r

Définition 1.7 (Matrices ÉQUIVALENTES)


Deux matrices sont dites ÉQUIVALENTES si on peut passer de l’une à l’autre par des opérations élémentaires.

Théorème 1.8
Deux matrices équivalentes ont le même rang.

1.1.4. Produits scalaires et vectoriels et normes


On a très souvent besoin, pour quantifier des erreurs ou mesurer des distances, de calculer la “grandeur” d’un vecteur ou
d’une matrice. Nous introduisons pour cela la notion de norme vectorielle et celle de norme matricielle.

Définition 1.9 (p-norme ou norme de H ÖLDER)


On définit la p-norme (ou norme de H ÖLDER) par
à !1/p
n
p
def
X
∥x∥p = |x i | , pour 1 ≤ p < +∞
i =1

où les x i sont les composantes du vecteur x.

Quand on prend p = 2 on retrouve la définition classique de la norme euclidienne.

Définition 1.10 (Norme infinie ou norme du maximum)


On définit la norme infinie (ou norme du maximum) par

def
∥x∥∞ = max |x i |.
1≤i ≤n

où les x i sont les composantes du vecteur x.

1.2. Espaces vectoriels


Dans cette section, nous rappelons les notions élémentaires d’algèbre linéaire que nous utiliserons dans le reste du polycopié.

Définition 1.11 (Espace vectoriel)


Un ESPACE VECTORIELsur un corps K (K = C ou K = R) est un ensemble E contenant au moins un élément, noté 0E , ou
simplement 0, muni d’une loi interne notée +, appelée addition, et d’une loi externe notée ·, appelée multiplication par un
scalaire, qui possède les propriétés suivantes : pour tout u, v, w ∈ E et pour tout α, β ∈ K,
➀ u + (v + w) = (u + v) + w (associativité)
➁ u+v = v+u (commutativité)
➂ u + 0E = 0E + u = u (existence d’un élément neutre pour l’addition)
➃ u + (−u) = (−u) + u = 0E en notant −u = (−1K ) · u (existence d’un élément opposé)
➄ (α + β) · u = α · u + β · u (compatibilité avec la somme des scalaires)
➅ α · (u + v) = α · u + α · v (compatibilité avec la somme des vecteurs)

© 2020-2021 G. Faccanoni 17
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

➆ α · (β · u) = (αβ) · u (compatibilité avec le produit des scalaires)


➇ 1K · u = u (compatibilité avec l’unité)
Les éléments de K sont appelés SCALAIRES, ceux de E sont appelés VECTEURS. L’élément unité de K est noté 1K , l’élément
neutre de l’addition 0E est appelé VECTEUR NUL, le symétrique d’un vecteur u pour l’addition est appelé VECTEUR OPPOSÉ
DE u et est noté −u.

E XEMPLE
1. L’ensemble Rn = { (x 1 , x 2 , . . . , x n ) | x i ∈ R }, n ≥ 1, est un espace vectoriel pour les opérations somme (x 1 , x 2 , . . . , x n ) +
(y 1 , y 2 , . . . , y n ) = (x 1 + y 1 , x 2 + y 2 , . . . , x n + y n ) et multiplication α · (x 1 , x 2 , . . . , x n ) = (αx 1 , αx 2 , . . . , αx n ).
2. L’ensemble Rn [x] = p(x) = n+1 i =1 αi x
i −1 ¯
αi ∈ R ou C des polynômes de degré inférieur ou égal à n, n ≥ 0, à co-
© P ¯ ª

efficients réels ou complexes, est un espace vectoriel pour les opérations somme p n (x) + q n (x) = n+1 i =1 αi x
i −1
P
+
Pn+1 i −1 n+1 i −1 n+1 i −1
β β λp
P P
i =1 i x = i =1 (α i + i )x et multiplication n = i =1 (λα i )x .

Définition 1.12 (Sous-espace vectoriel)


Soit E un espace vectoriel. On dit que F est un SOUS - ESPACE VECTORIEL de E si et seulement si F est un espace vectoriel et
F ⊂ E.

E XEMPLE
⋆ L’ensemble { 0E } constitué de l’unique élément nul est un sous-espace vectoriel de E , à ne pas confondre avec
l’ensemble vide ; qui n’est pas un sous-espace vectoriel de E (il ne contient pas le vecteur nul).
⋆ L’ensemble E est un sous-espace vectoriel de E .

Définition 1.13 (Combinaison linéaire)


Soient u1 , u2 , . . . , up des éléments de l’espace vectoriel E et α1 , α2 , . . . , αp des éléments de K. Le vecteur

p
αi · ui
X
i =1

est appelé COMBINAISON LINÉAIRE des vecteurs u1 , u2 , . . . , up .

E XEMPLE
Considérons les trois vecteurs
  
  
−1 0 −1
u1 = −2 , u2 =  2  , u3 =  0  .
−3 −1 −4
Montrons que u3 est combinaison linéaire des vecteurs u1 et u2 .
Pour prouver qu’un vecteur v est une combinaison linéaire des vecteurs u1 , u2 , . . . , up il faut montrer qu’il existe p constantes
α1 , α2 , . . . , αp telles que
v = α1 u1 + α2 u2 + · · · + αp up .
On cherche alors a et b réels tels que
u3 = au1 + bu2 ,
ce qui donne

 −1 = −a,

0 = −2a + 2b, ⇐⇒ a = b = 1.

−4 = −3a − b,

Par conséquent u3 est combinaison linéaire des vecteurs u1 et u2 car u3 = u1 + u2 .

E XEMPLE
Considérons les trois polynômes

q 1 (x) = 1 + x, q 2 (x) = x + x 2 , q 3 (x) = 1 − x 2 .

Montrons que q 3 est combinaison linéaire des polynômes q 1 et q 2 .

18 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Pour prouver qu’un polynôme v est une combinaison linéaire des polynômes q 1 , q 2 , . . . , q p il faut montrer qu’il existe p
constantes α1 , α2 , . . . , αp telles que

v(x) = α1 q 1 (x) + α2 q 2 (x) + · · · + αp q p (x) ∀x ∈ R.

On cherche alors a et b réels tels que


q 3 (x) = aq 1 (x) + bq 2 (x), ∀x ∈ R
ce qui donne
1 − x 2 = a(1 + x) + b(x + x 2 ) ∀x ∈ R
soit encore
(a − 1) + (a + b)x + (1 + b)x 2 = 0 ∀x ∈ R.
On cherche a et b réels tels que

 a − 1 = 0,

a + b = 0, ⇐⇒ a = −b = 1.

1 + b = 0,

Par conséquent q 3 est combinaison linéaire des polynômes q 1 et q 2 car q 3 (x) = q 1 (x) − q 2 (x) pour tout x ∈ R.

Définition 1.14 (Espace engendré)


Soient u1 , u2 , . . . , up des éléments de l’espace vectoriel E . L’ensemble de toutes les combinaisons linéaires de ces
© p vecteurs ª
fixés est un sous-espace vectoriel de E appelé SOUS - ESPACE VECTORIEL ENGENDRÉ par u1 , u2 , . . . , up et noté Vect u1 , . . . , up :
( ¯ )
¯ p
u ∈ E ¯ ∃α1 , . . . , αp ∈ R, u = αi · ui .
© ª X
Vect u1 , . . . , up =
¯
i =1
¯
© ª
Notons que le vecteur 0E et les vecteurs u1 , u2 , . . . , up appartiennent à Vect u1 , . . . , up car pour tout j = 1, 2, . . . , p

p
X p
X
0E = 0 · ui et uj = 0 · ui + 1 · u j .
i =1 i =1
i ̸= j

E XEMPLE
⋆ Vect { 0E } = { 0E }
½µ ¶ µ ¶¾ ½ µ ¶ µ ¶¯ ¾ ½µ ¶¯ ¾
1 0 0 1 1 0 0 1 ¯¯ a b ¯¯
⋆ Vect , = a +b a, b ∈ R = a, b ∈ R .
0 1 1 0 0 1 1 0 ¯ b a ¯

Définition 1.15 (Famille libre, famille©génératrice, ª base)


Soit p ∈ N∗ , E un espace vectoriel et F = u1 , . . . , up une famille de vecteurs de E . On dit que la famille F est. . .
... GÉNÉRATRICE DE E si et seulement si tout vecteur de E est combinaison linéaire des éléments de F :
p
pour tout u ∈ E il existe α1 , . . . , αp ∈ R tel que u = αi · ui ;
X
i =1

... LIBRE si et seulement si les p vecteurs u1 , . . . , up sont linéairement indépendants, c’est-dire si

p
αi · ui = 0E αi = 0 ∀i .
X
=⇒
i =1

Dans le cas contraire la famille est dite liée.


Pour montrer qu’une famille de plus de deux vecteurs est libre, on sera amené à résoudre le système linéaire correspondant,
qui est un système homogène : la famille est libre si et seulement si le système admet uniquement la solution nulle.
... BASE DE E si elle est libre et génératrice de E . Dans ce cas, les réels α1 , . . . , αp sont appelées COORDONNÉES ou
COMPOSANTES du vecteur u dans la base F , on écrit coord(u, F ) = (α1 , . . . , αp ) et on dit que E est de DIMENSION p.
Dans un espace vectoriel E de dimension finie, toutes les bases ont le même nombre d’éléments. Ce nombre, noté
dim(E ), est appelé la DIMENSION de E .

© 2020-2021 G. Faccanoni 19
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Attention à ne pas confondre DIMENSION et CARDINAL : dans un espace vectoriel de dimension n, toutes les bases ont
le même cardinal ( i.e. même nombre d’éléments), mais il ne faut pas parler de cardinal d’un espace vectoriel, ni de
dimension d’une base.

E XEMPLE
⋆ La famille { u = (1, 0), v = (0, 1), w = u + v } de vecteurs de R2 n’est pas libre : par exemple le vecteur (2, −1) peut s’écrire
comme 2u − v, comme 2w − 3v etc.
⋆ La famille { u = (1, 0, −1), v = (2, 3, 5), w = (−1, 0, 1) } de vecteurs de R3 n’est pas libre car w = −u.
⋆ La famille { u = (1, 1, −1), v = (2, −1, 2), w = (3, 0, 1) } de vecteurs de R3 n’est pas libre car w = u + v.

Théorème 1.16
Dans un espace vectoriel E de dimension n, une FAMILLE GÉNÉRATRICE a au moins n éléments.
Si elle a plus de n éléments, alors elle n’est pas libre mais on peut en extraire une sous-famille libre de cardinal n qui est
alors une base de E .
Si elle a exactement n éléments, c’est une base de E .

Théorème 1.17 (de la base incomplète)


Dans un espace vectoriel E de dimension n, une FAMILLE LIBRE a au plus n éléments.
Si elle a moins de n éléments, alors elle n’est pas une base de E mais on peut la compléter de façon à obtenir une base.
Si elle a exactement n éléments, c’est une base de E .

Théorème 1.18 (de la dimension)


Soit F une famille d’éléments de E de dimension finie n. Les propriétés suivantes sont équivalentes :
❶ F est une base de E
❷ F est libre et contient n éléments
❸ F est génératrice de E et contient n éléments
❹ F est libre et génératrice de E

ATTENTION
On utilise ce théorème principalement pour montrer qu’une famille F est une base de E . On utilisera surtout les implications
suivantes (avec E de dimension n) :
⋆ si F est libre et de cardinal n alors F est une base de E
⋆ si F est libre et génératrice de E alors F est une base de E

E XEMPLE (B ASE CANONIQUE DE Rn )


Avec n ∈ N, l’espace vectoriel Rn est de dimension n. La famille B = { (1, 0, . . . , 0); (0, 1, . . . , 0); . . . ; (0, 0, . . . , 1) } est une base,
appelée BASE CANONIQUE de Rn , car pour tout vecteur u ∈ Rn , u = (u 1 , u 2 , . . . , u n ) = u 1 · (1, 0, . . . , 0) + u 2 · (0, 1, . . . , 0) + · · · + u n ·
(0, 0, . . . , 1) de façon unique.

E XEMPLE (B ASE CANONIQUE DE Rn [x])


Avec n ∈ N, l’espace vectoriel Rn [x] des polynômes de degré ≤ n est de dimension n + 1. La base C = 1, x, x 2 , . . . , x n est
© ª

appelée BASE CANONIQUE de Rn [x] car, pour tout polynôme p ∈ Rn [x], p(x) = a 0 + a 1 x + a 2 x 2 + · · · + a n x n de façon unique.

ATTENTION
Ne pas confondre le vecteur u ∈ E (qui peut être un polynôme, une fonction, une matrice. . .) avec la matrice colonne de ses
coordonnées dans la base B de E (qu’on peut noter coord(u, B)).

E XEMPLE
Le polynôme p(x) = a + bx + c x 2 a pour coordonnées (a, b, c) dans la base canonique C = 1, x, x 2 de R2 [x] mais n’est pas
© ª

égale au vecteur (a, b, c) de R3 . Tous ce qu’on peut dire est que le polynôme p(x) = a + bx + c x 2 de R2 [x] et le vecteur (a, b, c)
de R3 ont les mêmes coordonnées dans les bases canoniques respectives.

20 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Astuce
Si F = e1 , . . . , ep est une famille génératrice d’un espace vectoriel E et si un des vecteurs de F (par exemple e1 ) est une
© ª

combinaison linéaire des autres vecteurs de F , alors F \ { e1 } est encore une famille génératrice de E . Ce résultat permet en
particulier de construire une base d’un espace vectoriel connaissant une famille génératrice de cet espace.

Astuce
Pour déterminer le rang d’une famille de vecteurs F = e1 , . . . , ep d’un espace vectoriel E on cherche d’éventuelles relations
© ª

entre les vecteurs e1 , . . . , ep :


⋆ si la famille est libre, on en déduit que rg(F ) = p
⋆ sinon, on cherche à exprimer un vecteur ei comme combinaison linéaire des autres vecteurs et on «élimine» ce vecteur
de la famille ; on procède ainsi jusqu’à obtenir une famille libre contenue dans F .
Avant de commencer une recherche précise, on peut encadrer rg(F ). Ainsi
© ª
⋆ rg(F ) ≤ min p, dim(E ) si E est de dimension finie ;
⋆ si F contient au moins deux vecteurs non colinéaires alors rg(F ) ≥ 2 ;
⋆ si F contient une famille libre de q vecteurs, alors rg(F ) ≥ q.

Définition 1.19 (Rang d’une famille de vecteurs)


Soit E un espace vectoriel et F = { e1 , e2 , . . . , en } une famille d’éléments de E . On appelle RANG DE F , et on note rg(F ), la
dimension du sous-espace vectoriel de E engendré par F :

rg(F ) = dim(Vect { e1 , e2 , . . . , en }).

ATTENTION
Le rang d’une matrice A est le rang des vecteurs colonnes de A, c’est-à-dire la dimension du sous-espace vectoriel qu’ils
engendrent. Donc
rg(F ) = rg([e1 , e2 , . . . , en ]),
où [e1 , e2 , . . . , en ] est la matrice dont les colonnes sont les vecteurs de la famille F .

1.3. Systèmes linéaires et calcul pratique de la matrice inverse


Soit n, p ≥ 1 des entiers. Un SYSTÈME LINÉAIRE n × p est un ensemble de n équations linéaires à p inconnues de la forme

a x ... a 1p x p b1 ,

+ + =
 11 1

.. .. ..
(S) . . .


a n1 x 1 + ... + a np x p = bn .

⋆ Les COEFFICIENTS a i j et les SECONDES MEMBRES b i sont des éléments donnés de K.


⋆ Les INCONNUES x 1 , x 2 , . . . , x p sont à chercher dans K.
⋆ Une SOLUTION de (S) est un p-uplet (x 1 , x 2 , . . . , x p ) qui vérifie simultanément les n équations de (S). Résoudre (S)
signifie chercher toutes les solutions.
⋆ Un système est IMPOSSIBLE, ou incompatible, s’il n’admet pas de solution.
Un système est POSSIBLE, ou compatible, s’il admet une ou plusieurs solutions.
⋆ Deux systèmes sont ÉQUIVALENTS s’ils admettent les mêmes solutions.
⋆ Le SYSTÈME HOMOGÈNE associé à (S) est le système obtenu en remplaçant les b i par 0.
⋆ Un système est CARRÉ si n = p.
Si on note

x1 b1 a 11 ... a 1p
     
 .   .   . .. 
x =  ..  b =  ..  A =  .. . 
xp bn a n1 ... a np

le système (S) est équivalent à l’écriture matricielle Ax = b.


Si on ajoute le vecteur-colonne des seconds membres b à la matrice des coefficients A, on obtient ce qu’on appelle la
matrice augmentée que l’on note [A|b].

© 2020-2021 G. Faccanoni 21
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Système échelonné (ou triangulaire supérieur)


Un système (S) est EN ESCALIER, ou ÉCHELONNÉ, si le nombre de premiers coefficients nuls successifs de chaque équation
est strictement croissant. Autrement dit, un système est échelonné si les coefficients non nuls des équations se présentent
avec une sorte d’escalier à marches de longueurs variables marquant la séparation entre une zone composée uniquement
de zéros et une zone où les lignes situées à droite de l’escalier commencent par des termes non nuls, comme dans l’exemple
suivant de 5 équations à 6 inconnues :




 5x 1 −x 2 −x 3 +2x 4 +x 6 = b 1

3x −x +2x = b2

3 4 5



−x 5 +x 6 = b 3

5x 6 = b 4





0 = b5


La résolution d’un système linéaire Ax = b échelonné est simple car, la matrice lui associée étant triangulaire supérieure, on
utilise la relation de récurrence (dite par remontée)
 bn
x = ,
 n a nn



à !
 1 n
P
 xi = bi − a i j x j , pour i = n − 1, n − 2 . . . , 1


ai i j =i +1


E XEMPLE x 1 +x 2 +x 3 = 6,
Résolution du système triangulaire supérieur : x 2 +x 3 = 5,
x 3 = 3.


b3
 x3 =

 a 33 = 31 ,
1
x2 = xi = a 22 (b 2 − a 23 x 3 ) = 11 (5 − x 3 ) = 2

1
x =x = (b 1 − a 12 x 2 − a 13 x 3 ) = 11 (6 − x 2 − x 3 ) = 1.

1 i a 11

Quand un système contient une équation du type

0x 1 + · · · + 0x p = b,

⋆si b ̸= 0 le système est impossible,


⋆si b = 0, on peut supprimer cette équation, ce qui conduit à un système équivalent à (S) dit SYSTÈME RÉDUIT.
Par conséquent, un système échelonné permet d’établir si le système est possible ou impossible comme dans l’exemple
suivant.
E XEMPLE
Établir si les trois systèmes linéaires suivantes sont impossibles ou possibles et, dans ce cas, calculer la/les solution(s).
  
x+y+z= 6, x+y+z= 6, x+y+z= 6,
(1) y+z= 5, (2) y+z= 5, (3) y+z= 5,
z= 3. 0= 0. 0= 3.
  

(1) Ce système est possible et admet une et une seule solution : en partant de la dernière ligne et en remontant, on obtient

z = 3,
y = 5 − z = 5 − 3 = 2,
x = 6 − y − z = 6 − 2 − 3 = 1.

(2) Ce système est possible et admet une infinité de solutions : en partant de la dernière ligne et en remontant, on obtient

z = κ ∈ R,
y = 5 − κ,
x = 6 − y − z = 1.

(3) Le système n’a pas de solution car aucune valeur de z permet de résoudre 0z = 3.

22 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Systèmes équivalents et opérations élémentaires


Deux systèmes sont ÉQUIVALENTS s’ils ont les mêmes solutions. Les opérations suivantes donnent des systèmes équivalents :
⋆ remplacer une ligne par elle même ± un multiple d’une autre ligne

L i ← L i + αL j

comme par exemple  


x+y+ z= 6, x+y+z= 6,
L 3 ←L 3 −L 2
y+ z= 5, −−−−−−−→ y+z= 5,
y + 2z= 8, z= 3.
 

⋆ échanger deux lignes,


Li ↔ L j
comme par exemple  
x+y+z= 6, x+y+z= 6,
L 2 ↔L 3
z= 3, −−−−−→ y+z= 5,
y+z= 5, z= 3.
 

Ces transformations sont équivalentes à la multiplication à gauche (pré-multiplication) de la matrice M ∈ Mm,n par la matrice
inversible obtenue en appliquant à la matrice identité Im la transformation correspondante. Par exemple, la transformation
qui échange les premières deux lignes de la matrice M ∈ M4,3 suivante

a b c d e f
   
d e f L 1 ↔L 2
a b c
  −−−−−→  
g h i g h i
p q r p q r

équivaut à multiplier M à gauche par la matrice obtenue en échangeant les premières deux lignes de la matrice identité I4 :

0 1 0 0 a b c d e f
    

 d e f
1 0 0 0  a b c
 = 
0 0 1 0  g h i  g h i
0 0 0 1 p q r p q r

Méthode de Gauss
La méthode de G AUSS transforme un système linéaire quelconque en un système échelonné équivalent.
Soit A = (a i j ) 1≤i ≤n la matrice des coefficients du système (S) et [A|b] la matrice augmentée.
1≤ j ≤p
La méthode de G AUSS comporte n − 1 étapes : à chaque étape j on fait apparaître des 0 sur la colonne j pour les lignes i > j
par des opérations élémentaires sur les lignes.
Étape j : en permutant éventuellement deux lignes de la matrice augmentée (i.e. deux équations du système linéaire), on
peut supposer a j j ̸= 0 (appelé pivot de l’étape j ). On transforme alors toutes les lignes L i avec i > j selon la règle :

ai j
Li ← Li − Lj,
aj j

ainsi on fait apparaître des 0 sur la colonne j pour les lignes i > j (i.e. on élimine l’inconnue x j dans chaque lignes L i du
système linéaire).
En réitérant le procédé pour i de 1 à n − 1, on aboutit à un système échelonné.

E XEMPLE
Soit le système linéaire
x 1 +2x 2 +3x 3 +4x 4 = 1,



2x 1 +3x 2 +4x 3 +x 4 = 2,

3x +4x 2 +x 3 +2x 4 = 3,
 1


4x 1 +x 2 +2x 3 +3x 4 = 4.
1. Résolution par la méthode du pivot de G AUSS :

© 2020-2021 G. Faccanoni 23
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

x 1 +2x 2 +3x 3 +4x 4 = 1 L 2 ←L 2 −2L 1  x 1 +2x 2 +3x 3 +4x 4 = 1


 

 L 3 ←L 3 −3L 1 
2x 1 +3x 2 +4x 3 +x 4 = 2 L 4 ←L 4 −4L 1 −x 2 −2x 3 −7x 4 = 0
 
−−−−−−−−→
3x 1 +4x 2 +x 3 +2x 4 = 3
 Étape 1 
 −2x 2 −8x 3 −10x 4 = 0
 
4x 1 +x 2 +2x 3 +3x 4 = 4 −7x 2 −10x 3 −13x 4 = 0

x 1 +2x 2 +3x 3 +4x 4 = 1 x 1 +2x 2 +3x 3 +4x 4 = 1


 
L 3 ←L 3 −2L 2  

−x 2 −2x 3 −7x 4 = 0 L 4 ←L 4 +L 3 −x 2 −2x 3 −7x 4 = 0
 
L 4 ←L 4 −7L 2
−−−−−−−−→ −−−−−−−→
Étape 2 
 −4x 3 +4x 4 = 0 Étape 3 
 −4x 3 +4x 4 = 0
 
4x 3 +36x 4 = 0 40x 4 = 0

donc, en résolvant le système triangulaire supérieur obtenu, on obtient

x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.

2. Résolution par la méthode du pivot de G AUSS en écriture matricielle :

 L ←L −2L  1 2 3 4 1

1 2 3 4 1

2 2 1
L 3 ←L 3 −3L 1 
 2 3 4 1 2  L 4 ←L 4 −4L 1  0 −1 −2 −7 0 
[A|b] =   −−−−−−−−→ 
 3 4 1 2 3  Étape 1 

0 −2 −8 −10 0


4 1 2 3 4 0 −7 −10 −13 0
 
1 2 3 4 1 1 2 3 4 1
 
L 3 ←L 3 −2L 2

L 4 ←L 4 −7L 2 0 −1 −2 −7 0  L 4 ←L 4 +L 3  0
  −1 −2 −7 0 
−−−−−−−−→   −−−−−−−→ 
 
Étape 2  0 0 −4 4 0  Étape 3 0 0 −4 4 0 
0 0 4 36 0 0 0 0 40 0

donc
x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.

E XEMPLE (S YSTÈME AVEC DES PARAMÈTRES )


Pour quelles valeurs de a et c le système linéaire suivant admet aucune, une seule ou une infinité de solutions ?

x +5y +z= 0,
x +6y −z= 2,
2x+a y+z= c.

Nous avons 3 équations donc il faut effectuer 2 étapes de la méthode de G AUSS :


  
x +5y +z= 0 L 2 ←L 2 −L 1 x+5y +z = 0 x+5y+z =0
L 3 ←L 3 −2L 1 L 3 ←L 3 −(a−10)L 2
x +6y −z= 2 −−−−−−−−→ y −2z= 2 −−−−−−−−−−−−→ y −2z =2
Étape j =1 Étape j =2
2x+a y+z= c (a − 10)y−z = c (2a − 21)z= c − 2(a − 10)
  

Étudions la dernière équation : ¡ ¢ ¡ ¢


2a − 21 z = c − 2a + 20
21 c−2a+20
⋆ Si a ̸= 2 alors z = 2a−21 et on trouve y puis x en remontant : il existe une et une seule solution ;
21
⋆ si a = 2 alors
⋆ si c − 2a + 20 = 0 (i.e. c = 1), alors z = κ ∈ R et on trouve y puis x en remontant : il existe une infinité de solutions ;
⋆ si c − 2a + 20 ̸= 0 (i.e. c ̸= 1), alors il n’y a aucune solution.

Variante de Gauss-Jordan
Soit A = (a i j ) 1≤i ≤n la matrice des coefficients du système (S) et [A|b] la matrice augmentée.
1≤ j ≤p

La méthode de G AUSS -J ORDAN comporte n étapes : à chaque étape j on fait apparaître des 0 sur la colonne j pour les lignes
i ̸= j par des opérations élémentaires sur les lignes.
Étape j : en permutant éventuellement deux lignes de la matrice augmentée, on peut supposer a j j ̸= 0. On transforme alors
toutes les lignes L i avec i ̸= j selon la règle
ai j
Li ← Li − Lj
aj j

24 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

ainsi on fait apparaître des 0 sur la colonne j pour les lignes i ̸= j (i.e. on élimine l’inconnue x j dans chaque lignes L i du
système linéaire).
En réitérant le procédé pour i de 1 à n, on aboutit à un système diagonal.

E XEMPLE
Résoudre le système linéaire
1 2 3 4 x1 1
    
2 3 4 1 x 2  2
   =  
3 4 1 2 x 3  3
4 1 2 3 x4 4
par la méthode de G AUSS -J ORDAN.

 L ←L −2L  1 2 3 4 1

L 1 ←L 1 +2L 2
 
1 2 3 4 1 1 0
−1 −10 1

2 2 1
L 3 ←L 3 −3L 1  L 3 ←L 3 −2L 2
 2 3 4 1 2  L 4 ←L 4 −4L 1 
 0 −1 −2 −7 0  
L 4 ←L 4 −7L 2 0 −1
−2 −7 0 
[A|b] =  −−−−−−−−→   −−−−−−−−→ 
  
 3 4 1 2 3  Étape 1  0 −2 −8 −10 0  Étape 2  0 0
−4 4 0


4 1 2 3 4 0 −7 −10 −13 0 0 04 36 0
   
L 1 ←L 1 −L 3 /4 1 0 0 4 1 L 1 ←L 1 +11L 4 /40 1 0 0 0 1
L 2 ←L 2 −L 3 /2  L 2 ←L 2 +9L 4 /40 
0 −1 0 −7 0  L 3 ←L 3 +4L 4 /40  0 −1 0 0 0
 
L 4 ←L 4 +L 3
−−−−−−−−−→   −−−−−−−−−−−→ 
 
0 0 4 0 

Étape 3  −4 Étape 4  0 0 −4 0 0 
0 0 0 40 0 0 0 0 40 0

donc
x 1 = 1, x 2 = 0, x 3 = 0, x 4 = 0.

Rang d’un système linéaire


Le nombre d’équations non triviales du système réduit en escalier obtenu par la méthode de G AUSS est le RANG r DE LA
MATRICE A, OU DU SYSTÈME (S).

Théorème 1.20
Un système carré Ax = b de n équations à n inconnues est compatible si et seulement si rg(A) = rg([A|b]).
1. Si rg(A) = n (i.e. si det(A) ̸= 0) alors rg(A) = rg([A|b]) et la solution est unique.
2. Si rg(A) = rg([A|b]) < n il y a une infinité de solutions.
3. Si rg(A) ̸= rg([A|b]) il n’y a pas de solution.

E XEMPLE
On veut résoudre les systèmes linéaires suivants de 2 équations et 2 inconnues :
( ( (
x+y =1 x+y =1 x+y =1
① ② ③
x−y =1 2x + 2y = 2 2x + 2y = 1

Les matrices augmentées associées à chaque système sont


· ¸ · ¸ · ¸
1 1 1 1 1 1 1 1 1
① [A|b] = ② [A|b] = ③ [A|b] =
1 −1 1 2 2 2 2 2 1

et on a
① rg(A) = rg([A|b]) = 2 donc il existe une et une seule solution. En effet,
( (
x+y =1 L 2 ←L 2 −L 1 x+y =1
−−−−−−−→
x−y =1 −2y = 0

ainsi la solution est y = 0 et x = 1 ;


② rg(A) = rg([A|b]) = 1 donc il existe une infinité de solutions. En effet,
( (
x+y =1 L 2 ←L 2 −2L 1 x+y =1
−−−−−−−−→
2x + 2y = 2 0=0

© 2020-2021 G. Faccanoni 25
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

ainsi la solution est y = κ et x = 1 − κ pour tout κ ∈ R ;


③ rg(A) = 1 et rg([A|b]) = 2 donc il n’y a pas de solution. En effet
( (
x+y =1 L 2 ←L 2 −2L 1 x+y =1
−−−−−−−−→
2x + 2y = 1 0 = −1

et la dernière équation est impossible.

Système de Cramer et méthode de Cramer


Un SYSTÈME est dit DE C RAMER s’il a une solution, et une seule.

Propriété 1.21
Considérons un système carré d’ordre n à coefficients réels. Le système est de C RAMER si une des conditions équivalentes
suivantes est remplie :
1. A est inversible ;
2. rg(A) = n ;
3. le système homogène Ax = 0 admet seulement la solution nulle.

Méthode de C RAMER : la solution d’un système de C RAMER d’écriture matricielle Ax = b est donnée par

det(A j )
xj = , 1≤ j ≤n
det(A)

où A j est la matrice obtenue à partir de A en remplaçant la j -ème colonne par la colonne des seconds membres b.
Cette formule est cependant d’une utilité pratique limitée à cause du calcul des déterminants qui est très coûteux.

E XEMPLE (S YSTÈME D ’ ORDRE 2)


On veut résoudre le système linéaire
µ ¶µ ¶ µ ¶
a 11 a 12 x1 b1
=
a 21 a 22 x2 b2
par la méthode de C RAMER. On a
µ ¶
a 11 a 12
A= , det(A) = a 11 a 22 − a 12 a 21 ,
a 21 a 22
µ ¶
b1 a 12
A1 = , det(A1 ) = b 1 a 22 − a 12 b 2 ,
b2 a 22
µ ¶
a 11 b1
A2 = , det(A2 ) = a 11 b 2 − b 1 a 21 ,
a 21 b2

donc
b 1 a 22 − a 12 b 2 a 11 b 2 − b 1 a 21
x1 = , x2 = .
a 11 a 22 − a 12 a 21 a 11 a 22 − a 12 a 21

E XEMPLE
On veut résoudre le système linéaire
    
1 −1 2 x 2
2 1 0  y  = −1
3 2 0 z 1
par la méthode de C RAMER. On a
 
1 −1 2
A = 2 1 0 , det(A) = 2,
3 2 0
 
2 −1 2
A1 = −1 1 0 , det(A1 ) = −6,
1 2 0

26 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

 
1 2 2
A2 = 2 −1 0 , det(A2 ) = 10,
3 1 0
 
1 −1 2
A3 = 2 1 −1 , det(A3 ) = 10,
3 2 1

donc
−6 10 10
x= = −3, y= = 5, z= = 5.
2 2 2

Définition 1.22 (Cofacteur & comatrice)


Soit A une matrice carrée d’ordre n. Étant donné un couple (i , j ) d’entiers, 1 ≤ i , j ≤ n, on note Ai j la matrice carrée d’ordre
n − 1 obtenue en supprimant la i -ème ligne et la j -ème colonne de A. On appelle COFACTEUR de l’élément a i j le nombre
(−1)i + j det(Ai j ). On appelle COMATRICE de A la matrice constituée des cofacteurs de A.

E XEMPLE
µ ¶ µ ¶
a b d −c
Soit A = . Alors la matrice des cofacteurs de A est la matrice .
c d −b a

1.3.1. Calcul de la matrice inverse


A étant inversible, pour obtenir A−1 il suffit de résoudre le système Ax = b qui admet pour solution x = A−1 b. On peut alors
calculer A−1 en résolvant n systèmes linéaires de termes sources (1, 0, 0, . . . , 0), (0, 1, 0, . . . , 0), . . . , (0, 0, 0, . . . , 1). Les méthodes
suivantes résolvent ces n systèmes linéaires simultanément.
Première méthode.
1. On calcul la matrice des cofacteurs des éléments de A, appelée comatrice de A ;
2. on transpose la comatrice de A ;
3. on divise par det(A).
Cette méthode est quasi-impraticable dès que n > 3.
Deuxième méthode.
La matrice A est inversible si et seulement si on obtient par opérations élémentaires sur les lignes de A une matrice
triangulaire sans zéros sur la diagonale ; non inversible si et seulement si on obtient une matrice triangulaire avec un
zéro sur la diagonale. Si A est inversible, on effectue les mêmes opérations sur la matrice [A|In ] jusqu’à obtenir [In |A−1 ] :

Opérations élémentaires
[A|In ] −−−−−−−−−−−−−−−−→ [In |A−1 ].

E XEMPLE
µ ¶
2 0
Soit A = . Comme det(A) = 4 ̸= 0 la matrice est inversible.
2 2
Première méthode : on a déjà calculé le déterminant de cette matrice ainsi que la matrice des cofacteurs, il suffit alors de
calculer la transposée et on obtient
µ ¶ µ 1 ¶
1 2 0 0
A−1 = = 21 1 .
4 −2 2 −2 2

Deuxième méthode : on parvient au même résultat par transformations élémentaires :


µ ¶ µ ¶
2 0 1 0 L 2 ←L 2 −L 1 2 0 1 0
[A|I2 ] = −−−−−−−→
2 2 0 1 0 2 −1 1
L 1 ← 12 L 1
L 2 ← 12 L 2
µ 1 ¶
1 0 2 0
−−−−−−→
0 1 − 21 1
2

E XEMPLE
µ ¶
2 1
Soit A = . Comme det(A) = 2 ̸= 0 la matrice est inversible.
2 2

© 2020-2021 G. Faccanoni 27
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Première méthode : on a déjà calculé le déterminant de cette matrice ainsi que la matrice des cofacteurs, il suffit alors de
calculer la transposée et on obtient
− 21
µ ¶ µ ¶
1 2 −1 1
A−1 = = .
2 −2 2 −1 1

Deuxième méthode : on parvient au même résultat par transformations élémentaires :


µ ¶ µ ¶
2 1 1 0 L 2 ←L 2 −L 1 2 1 1 0
[A|I2 ] = −−−−−−−→
2 2 0 1 0 1 −1 1
µ ¶
L 1 ←L 1 −L 2 2 0 2 −1
−−−−−−−→
0 1 −1 1
L 1 ← 12 L 1
µ 1 ¶
1 0 1 −2
−−−−−−→
0 1 −1 1

E XEMPLE
µ ¶
a b
Soit A = avec det(A) = ad − bc ̸= 0.
c d
Première méthode : on a déjà calculé le déterminant de cette matrice ainsi que la matrice des cofacteurs, il suffit alors de
calculer la transposée et on obtient µ ¶
1 d −b
A−1 = .
ad − bc −c a

Deuxième méthode : on parvient au même résultat par transformations élémentaires :

L 2 ←L 2 − ac L 1
µ ¶ µ ¶
a b 1 0 a b 1 0
[A|I2 ] = −−−−−−−−−→
c d 0 1 0 d − ac b − ac 1
b
L 1 ←L 1 − cb
d− a

1 + adbc − adab
ab µ ¶
L 2 =L 1 − ad −bc L 2 a 0
−−−−−−−−−−−→ −bc −bc
0 d − ac b − ac 1
L 1 ← a1 L 1
1 a
L2 ← c b L 2 = ad −cb L 2 1
+ a(adbc−bc) − adab d
− ad b−bc
µ ¶ µ ¶
d− a 1 0 a −bc 1 0 ad −bc
−−−−−−−−−−−−−−−−→ c a = c a
0 1 − ad −cb ad −cb
0 1 − ad −cb ad −cb

E XEMPLE
Calculer l’inverse de la matrice
 
1 1 −1
A = −1 1 1 .
1 −1 1

Première méthode.
1. On calcule la matrice des cofacteurs des éléments de A, appelée comatrice de A :
 ¯ ¯ ¯ ¯ ¯ ¯
1+1 ¯ 1 1¯¯ 1+2 ¯−1 1¯ 1+3 ¯−1 1 ¯¯
¯ ¯ ¯ ¯
 (−1) (−1) ¯ 1 1¯ (−1)
¯ −1 1 ¯
¯ ¯ ¯ 1 −1¯  
 ¯ ¯ ¯ ¯ 2 2 0
2+1 ¯ 1 −1¯¯ 2+2 ¯1 −1¯ 2+3 ¯1 1 ¯¯  
 ¯ ¯ ¯ ¯ 
comatrice = (−1) (−1) (−1) = 0 2 2 ;

¯−1 1 ¯
¯1 1 ¯
¯ ¯ ¯1 −1¯  
2 0 2

 ¯ ¯ ¯ ¯
¯1 −1¯
(−1)3+1 ¯¯ ¯ (−1)3+2 ¯ 1 −1¯ (−1)3+3 ¯ 1 1¯ 
 ¯ ¯ ¯ ¯
1 1¯ ¯−1 1 ¯ ¯−1 1¯

2. on transpose la comatrice de A :
 
2 0 2
comatriceT = 2 2 0 ;
0 2 2

3. on divise par det(A) :


  1 
2 0 2 /2 0 1
/2
1
A−1 = 2 2 0 = 1/2 1
/2 0 .
4
0 2 2 0 1
/2 1
/2

28 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Deuxième méthode.
 
1 1 1 0
−1 0
 
1 1 −1 1 0 0 L 2 ←L 2 +L 1
L 3 ←L 3 −L 1 
[A|I3 ] =  −1 1 1 0 1 0  −−−−−−−→  0 2 1 10 0 

1 −1 1 0 0 1 0 −2 −1 02 1
 
1 1 −1 1 0 0
 
L 1 ←L 1 −L 2 1 0 −1 1
/2 −1/2 0
L 2 ←L 2 /2 L 3 ←L 3 +2L 2 
−−−−−−→ 0 1 0 1
/2 1
/2 0 −−−−−−−−→  0 1 0 1
/2 1
/2 0 
  
0 −2 2 −1 0 1 0 0 2 0 1 1
 
1 0 −1 /2 − /2 0
1 1
 
1 0 0 1
/2 0 1
/2
L 3 ←L 3 /2 L ←L +L 3  −1
−−−−−−→  0 1 0 1
/2 1/2 0  −−1−−−1−−→  0 1 0 1
/2 1
/2 0  = [I3 |A ].

0 0 1 0 1
/2 1
/2 0 0 1 0 1
/2 1
/2

1.3.2. Système sur-déterminé


Si le système (S) a n équations et m inconnues avec n > m, on dit que le système est sur-déterminé. On considère alors (S ′ )
un sous-système carré d’ordre m qu’on peut résoudre par exemple par la méthode du pivot de Gauss. Parmi les solutions de
ce système carré, on cherchera celles qui vérifient les équations de (S) qui n’apparaissent pas dans (S ′ ).

E XEMPLE
Soit les systèmes linéaires de n = 3 équations et m = 2 inconnues
 
x+y =2
 x+y =2

(S 1 ) x + 2y = 3 (S 2 ) x + 2y = 3
 
x + 3y = 4 x + 3y = 0
 

Prenons comme sous-système carré d’ordre m = 2 celui constitué des deux premières équations et résolvons-le :
( (
′ x+y =2 L 2 ←L 2 −L 1 x+y =2
(S ) −−−−−−−→
x + 2y = 3 y =1

Ce système admet une seule solution : x = y = 1.


On vérifie si cette solution satisfait l’équation de (S 1 ) qui n’apparaît pas dans (S ′ ) :

x + 3y = 1 + 3 = 4

donc x = y = 1 est l’unique solution de (S 1 ).


On vérifie si cette solution satisfait l’équation de (S 2 ) qui n’apparaît pas dans (S ′ ) :

x + 3y = 1 + 3 = 4 ̸= 0

donc (S 2 ) n’admet pas de solution.

1.3.3. Système sous-déterminé


Un système est sous-déterminé si, après échelonnage, le nombre d’équations significatives est inférieur au nombre d’incon-
nues.

Équilibrage de réactions chimiques Du point de vue mathématique, équilibrer une réaction chimique signifie trouver
des coefficients (dans N ou Q), appelés coefficients stœchiométriques, qui satisfont certaines contraintes.
Toutes ces contraintes dépendent linéairement des coefficients stœchiométriques, ce qui amène tout naturellement à
l’écriture d’un système linéaire.
Typiquement on aura n inconnues mais seulement n − 1 équations linéairement indépendantes : en effet, les coefficients
stœchiométriques ne définissent pas des quantités absolues mais seulement les rapports entre les différents éléments. Par
conséquent, si les coefficients trouvés équilibrent la réaction, alors tous les multiples entiers de ces coefficients équilibrent
aussi la réaction.

© 2020-2021 G. Faccanoni 29
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

E XEMPLE
Si on mélange de la soude caustique et de l’acide sulfurique, on obtient du sulfate de sodium et de l’eau :

?NaOH + ?H SO → ?Na2 SO4 +?H2 O


| {z } | 2{z 4} | {z }
soude caustique acide sulfurique sulfate de sodium

Pour que cette réaction ait lieu, il faut que tous les atomes (par exemple de sodium) qui sont à gauche se retrouvent à droite
et vice-versa.
|x NaOH
{z } + |y H{z 2 SO4
}
→ z Na2 SO4 +w H2 O
| {z }
soude caustique acide sulfurique sulfate de sodium

On voit bien qu’il nous faut au moins 2 molécules de NaOH à gauche pour tomber sur le Na2 de droite. On pose alors x = 2
(mieux, un multiple de 2) et z = 1 :
2NaOH + yH2 SO4 → Na2 SO4 + wH2 O
Le 2OH à gauche venant de la soude et la yH2 venant de l’acide sulfurique se combinent pour donner wH2 O. On peut alors
poser y = 1 et w = 2 :
2NaOH + H2 SO4 → Na2 SO4 + 2H2 O
Le SO4 se trouve bien à gauche et à droite et l’équation est alors équilibrée.
En système cela devient 

 x = 2z [Na]


 x + 2y = 2w [H]


 x + 4y = 4z + w [O]

y =z [S]

On trouve z = y = κ, x = 2κ et w = κ et l’équation est alors équilibrée. On peut alors poser κ = 1.

E XEMPLE
Considérons la réaction
H2 + O 2 → H2 O.
Notons x 1 , x 2 et x 3 les coefficients stœchiométriques

x 1 H2 + x 2 O 2 → x 3 H2 O.

Les contraintes sont :


⋆ la conservation du nombre d’atomes d’hydrogène : 2x 1 = 2x 3 ,
⋆ la conservation du nombre d’atomes d’oxygène : 2x 2 = x 3 .
On note qu’on a 3 inconnues mais seulement 2 équations linéairement indépendantes.
Pour résoudre le problème sans paramètres, fixons arbitrairement un des coefficients, par exemple x 3 = 1. On doit alors
résoudre le système linéaire (
2x 1 = 2
2x 2 = 1
On trouve alors x 1 = 1 et x 2 = 1/2. Si nous voulons des coefficients stœchiométriques entiers, il suffit de multiplier tous les
coefficients par 2 et on a ainsi
2H2 + 1O 2 → 2H2 O.

1.3.4. Conclusion sur les systèmes rectangulaires


Théorème 1.23
Un système Ax = b de m équations à n inconnues est compatible si et seulement si rg(A) = rg([A|b]).
1. Si le système a n équations et n inconnues, la matrice A est carrée d’ordre n et 3 situations peuvent se présenter :
1.1. Si rg(A) = n (i.e. si det(A) ̸= 0) alors rg(A) = rg([A|b]) et la solution est unique.
1.2. Si rg(A) = rg([A|b]) < n il y a une infinité de solutions.
1.3. Si rg(A) ̸= rg([A|b]) il n’y a pas de solution.
2. Si le système a m équations et n inconnues avec m > n alors 3 situations peuvent se présenter :

30 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

2.1. Si rg(A) = rg([A|b]) = n la solution est unique.


2.2. Si rg(A) = rg([A|b]) < n il y a une infinité de solutions.
2.3. Si rg(A) ̸= rg([A|b]) il n’y a pas de solution.
3. Si le système a m équations et n inconnues avec m < n alors 2 situations peuvent se présenter :
3.1. Si rg(A) = rg([A|b]) ≤ m < n il y a une infinité de solutions.
3.2. Si rg(A) ̸= rg([A|b]) il n’y a pas de solution.

Remarque
Soit A ∈ Mn,p la matrice des coefficients du système (S). Alors
© ª
0 ≤ rg(A) ≤ min n, p
© ª
rg(A) ≤ rg([A|b]) ≤ min n, p + 1 .

E XEMPLE
1. n équations et n inconnues :
   
1 2 3 12
1.1. A =  1 −3 −7, b = −26. On a rg(A) = 3 (car det(A) ̸= 0) donc rg(A) = rg([A|b]) et la solution est unique.
−6 4 −2 −4
   
1 2 3 14
1.2. A = 1 −3 −7, b = −26. On a rg(A) = rg([A|b]) = 2 < 3 donc il y a une infinité de solutions.
3 −2 −7 −22
   
1 2 3 14
1.3. A = 1 −3 −7, b = −26. On a rg(A) = 2 ̸= rg([A|b]) = 3 donc il n’y a pas de solution.
3 −2 −7 −20
2. m équations et n inconnues avec m > n :
   
2 4 4
2.1. A = 2 −3, b = 18. On a rg(A) = rg([A|b]) = 2 donc la solution est unique.
1 −4 14
2 −2 2 6
   
−1 2 3 0
2.2. A = 

 0 −1 −4, b = −3. On a rg(A) = rg([A|b]) = 2 < 3 donc il y a une infinité de solutions.
  

−2 3 2 −3
2 −2 2 6
   
−1 2 3 0
2.3. A = 

 0 −1 −4, b = −4. On a rg(A) = 2 ̸= rg([A|b]) = 3 donc il n’y a pas de solution.
  

−2 3 2 −3
3. m équations et n inconnues avec m < n :
µ ¶ µ ¶
2 −1 2 2
3.1. A = ,b= . On a rg(A) = rg([A|b]) = 2 < 3 donc il y a une infinité de solutions.
−1 2 2 2
µ ¶ µ ¶
2 −1 1 1
3.2. A = ,b= . On a rg(A) = 1 ̸= rg([A|b]) = 2 donc il n’y a pas de solution.
4 −2 2 4

Astuce
Soit r le rang du système (S) et p le nombre d’inconnues.
⋆ Si r = p, (S) a une unique solution,
⋆ si r < p, (S) a une infinité de solutions. Les r inconnues qui figurent au début des r équations issues de la méthode du
pivot de G AUSS sont les inconnues principales. Elles peuvent se calculer de façon unique en fonction des autres p − r
inconnues.
Le choix des inconnues principales d’un système est arbitraire, mais leur nombre est toujours le même.

© 2020-2021 G. Faccanoni 31
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

E XEMPLE
On cherches toutes les solutions du système linéaire homogène

 x 1 + x 2 + 3x 3 + x 4 = 0,

(S) x 1 + 3x 2 + 2x 3 + 4x 4 = 0,

2x 1 + x 3 − x 4 = 0.

Le système étant homogène, il est inutile d’écrire le terme source dans la méthode du pivot de G AUSS :
     
1 1 3 1 L 2 ←L 2 −L 1 1 1 3 1 1 1 3 1
L 3 ←L 3 −2L 1 L 3 ←L 3 +L 2
A = 1 3 2 4  −−−−−−−−→ 0 2 −1 3  −−−−−−−→ 0 2 −1 3
2 0 1 −1 0 −2 −5 −3 0 0 −6 0

Le système admet une infinité de solutions de la forme ( 12 κ, − 23 κ, 0, κ) avec κ ∈ R.

Astuce
Pour résoudre un système (S) de m équations à n inconnues où m > n on considère un sous-système carré (S ′ ) de n
équations à n inconnues et on résout ce système :
⋆ si (S ′ ) n’admet pas de solution, alors (S) non plus ;
⋆ si (S ′ ) admet une unique solution (c 1 , c 2 , . . . , c n ), alors on vérifie si cette solution vérifie les autres m − n équations du
système (S) :
⋆ si oui, alors (S) admet l’unique solution (c 1 , c 2 , . . . , c n ),
⋆ si non, alors (S) n’admet pas de solution ;

⋆ si (S ) admet une infinité de solutions, on cherche parmi ces solutions celles qui vérifient également les autres
équations de (S).

E XEMPLE
Considérons le système de 4 équations à 3 inconnues


 x + y + z = 3,


 x + 2y + 3z = 6,
(S)


 −x − y + 2z = 0,

3x + 2y − 4z = 1,

Pour résoudre (S), on considère le sous-système carré d’ordre 3



 x + y + z = 3,

(S ′ ) x + 2y + 3z = 6,

−x − y + 2z = 0,

qu’on peut résoudre par la méthode du pivot de G AUSS


 
 x +y +z=3, L 2 ←L 2 −L 1 x+y +z=3,
L 3 ←L 3 +L 1
x+2y+3z=6, −−−−−−−→ y+2z=3,
3z=3,

−x −y+2z=0,

Ce sous-système admet l’unique solution (1, 1, 1). On étudie alors si elle est aussi solution de l’équation de (S) qui n’apparaît
pas dans (S ′ ) : pour (x, y, z) = (1, 1, 1) on a 3x + 2y − 4z = 1 donc le triplet (1, 1, 1) est solution de (S) et c’est l’unique.

1.4. Valeurs propres et vecteurs propres


Une matrice peut être représentée par ses valeurs propres et ses vecteurs propres. Cette représentation est appelée décom-
position en valeurs propres. Pour une matrice A donnée, la notion clé est la résolution de l’équation

Av = λv

32 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

où v est un vecteur propre de la matrice A et λ est la valeur propre correspondante. λ et v sont appelés un couple valeur
propre-vecteur propre.
Dans cette partie, nous allons explorer la relation entre une matrice et sa décomposition en vecteurs propres.

1.4.1. Produit matrice-vecteur et lien avec la décomposition en valeurs propres


Lorsque on multiplie une matrice et un vecteur, le résultat est un autre vecteur. De cette façon, la matrice A peut être
considérée comme une transformation qui transforme un vecteur x en un vecteur y.
Par exemple, si x est un vecteur de R2 , on peut visualiser cette multiplication comme suit.

Dans le dessin ci-contre,


µ ¶ µ ¶
1 0 4
x= , A= ,
1 1 0
x Ax = y
ainsi µ ¶
4
y = Ax = .
1

Lorsque on multiplie une matrice et son vecteur propre, c’est comme si le vecteur propre venait d’être multiplié par un
nombre mais la direction n’est pas modifiée : il est juste mis à l’échelle et le facteur de mise à l’échelle est la valeur propre.

Dans le dessin ci-contre on a la même matrice mais


µ ¶ Ax = y
2
x=
1

ainsi µ ¶ x
4
y = Ax = = 2x,
2
on dit que λ = 2 est une valeur propre pour A et x = (2, 1) une
vecteur propre associée à cette valeur propre.

Bien sûr, µ ¶
1
x= 1
2

est encore une vecteur propre associée à la valeur propre Ax = y


λ = 2 comme on voit sur la figure ci-contre.
x

1.4.2. Définitions et propriétés


Soit K = R ou C. On dit que le scalaire λ ∈ K est une valeur propre de A s’il existe un vecteur x ̸= 0 tel que

Ax = λx

où A est une matrice carrée d’ordre n donnée.


On peut réécrire l’équation précédente sous la forme

(A − λI)x = 0

qui est un système linéaire homogène de n équations. Si det(A − λI) ̸= 0 pour tout λ, ce système admet une et une seule
solution, le vecteur x = 0. Une solution x ̸= 0 existe si et seulement si det(A − λI) = 0.
⋆ On appelle POLYNÔME CARACTÉRISTIQUE DE LA MATRICE A le polynôme défini par

p A (λ) = det(A − λI) = a 0 + a 1 λ + a 2 λ2 + · · · + a n λn .

Dans C, tout polynôme admet exactement n racines (comptées avec leur multiplicité).
Dans R, tout polynôme admet au plus n racines (comptées avec leur multiplicité).

© 2020-2021 G. Faccanoni 33
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

⋆ On appelle VALEUR PROPRE DE A tout élément λ ∈ K tel que p(λ) = 0.


La multiplicité de la valeur propre est dite “multiplicité algébrique”.
Dans C, toute matrice carrée d’ordre n admet exactement n valeurs propres (distinctes ou confondues).
Dans R, toute matrice carrée d’ordre n admet donc au plus n valeurs propres (distinctes ou confondues).
⋆ On appelle SPECTRE DE A l’ensemble de ses valeurs propres et on le note σ(A).
⋆ On appelle RAYON SPECTRALE DE A la valeur propre de module maximale et on le note ϱ(A).
⋆ On dit que deux matrices A et B carrées d’ordre n sont semblables s’il existe une matrice P carrées d’ordre n inversible
telle que A = P−1 BP. On peut démonter que
⋆ p A (λ) = p B (λ) ;
⋆ σ(A) = σ(B).
⋆ On appelle VECTEUR PROPRE DE A ASSOCIÉ À LA VALEUR PROPRE λ tout vecteur x ̸= 0 tel que (A − λI)x = 0.
⋆ L’ensemble des VECTEURS PROPRES DE A ASSOCIÉS À LA VALEUR PROPRE λ engendre un espace vectoriel. La dimension
de cet espace vectoriel est dite “multiplicité géométrique” et elle toujours inférieure ou égale à la multiplicité algébrique
de la valeur propre correspondante.

On peut démonter que


1. det(A) = ni=1 λi , (donc det(A) = 0 ssi il existe une valeur propre nulle) ;
Q

2. tr(A) = ni=1 λi ;
P

3. σ(AT ) = σ(A) et σ(AH ) = σ(A) ;


4. λ est une valeur propre de A ∈ Cn×n ⇐⇒ λ̄ est une valeur propre de AH .

Une matrice carrée A d’ordre n est diagonalisable si elle est semblable à une matrice diagonale. On peut démonter que
1. si le polynôme caractéristique a exactement n racines distinctes deux à deux alors A est diagonalisable et A = P−1 DP
avec D = diag(λ1 , λ2 , . . . , λn ) et les colonnes de P sont les vecteurs propres de A ;
p p p
2. Ap = P−1 Dp P et Dp = diag(λ1 , λ2 , . . . , λn ) ;
3. si la “multiplicité géométrique” de l’espace vectoriel associé à une valeur propre est strictement inférieur à la “multi-
plicité algébrique” de cette valeur propre, la matrice n’est pas diagonalisable ;
4. si A est orthogonale alors elle est diagonalisable sur C.
Par conséquent, une matrice peut être diagonalisable dans C mais pas dans R.

E XEMPLE
Considérons la matrice
 
1 −1 0
A = −1 2 −1 .
0 −1 1
⋆ Calcul des valeurs propres
Le polynôme caractéristique de A est

1−λ
 
−1 0
p(λ) = det(A − λI) = det  −1 2−λ −1 
0 −1 1−λ
2−λ
µ ¶ µ ¶
−1 −1 −1
= (1 − λ) det − (−1) det
−1 1−λ 0 1−λ
³ ´ ³ ´ ³ ´
= (1 − λ) (2 − λ)(1 − λ) − 1 − (1 − λ) = (1 − λ) (2 − λ)(1 − λ) − 2 = (1 − λ) −3λ + λ2 = λ(1 − λ)(λ − 3)

Nous avons trouvé 3 valeurs propres :


λ1 = 0 < λ2 = 1 < λ3 = 3.

⋆ Calcul des vecteurs propres

34 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

⋆ Calcul des vecteurs propres associés à la valeurs propre λ1 .


On cherche x tel que

1 − λ1
    
−1 0 x1 0
(A − λ1 I)x = 0 c’est-à-dire  −1 2 − λ1 −1  x 2  = 0 .
0 −1 1 − λ1 x 3 0

En utilisant la méthode de Gauss (le système étant homogène, on n’écrit pas le second membre) on a
     
1 −1 0 L 2 ←L 2 +L 1 1 −1 0 1 −1 0
L 3 ←L 3 L 3 ←L 3 +L 2
−1 2 −1 −−−−−−−→ 0 1 −1 −−−−−−−→ 0 1 −1
Étape 1 Étape 2
0 −1 1 0 −1 1 0 0 0

On obtient le système linéaire triangulaire supérieure


    
1 −1 0 x1 0
0 1 −1 x 2  = 0
0 0 0 x3 0

donc x 3 = κ ∈ R, x 2 = x 3 = κ et x 1 = x 2 = κ donc
 
1
x = κ 1 .
1

Pour faire simple, on choisira κ = 1.


⋆ Calcul des vecteurs propres associés à la valeurs propre λ2 .
On cherche x tel que

1 − λ2
    
−1 0 x1 0
(A − λ2 I)x = 0 c’est-à-dire  −1 2 − λ2 −1  x 2  = 0 .
0 −1 1 − λ2 x 3 0

En utilisant la méthode de Gauss on a


     
0 −1 0 −1 1 −1 −1 1 −1
L 2 ←L 1 L 3 ←L 3 −L 2
−1 1 −1 −−−−−→  0 −1 0  −−−−−−−→  0 −1 0
0 −1 0 Étape 1 0 −1 0 Étape 2
0 0 0

On obtient le système linéaire triangulaire supérieure


    
−1 1 −1 x 1 0
0 −1 0  x 2  = 0
0 0 0 x3 0

donc x 3 = κ ∈ R, x 2 = 0 et x 1 = x 2 − x 3 = −κ donc
 
−1
x = κ 0 .
1

Pour faire simple, on choisira κ = 1.


⋆ Calcul des vecteurs propres associés à la valeurs propre λ3 .
On cherche x tel que

1 − λ3
    
−1 0 x1 0
(A − λ3 I)x = 0 c’est-à-dire  −1 2 − λ3 −1  x 2  = 0 .
0 −1 1 − λ3 x 3 0

En utilisant la méthode de Gauss on a


     
−2 −1 0 −2 −1 0 −2 −1 0
L 2 ←L 2 − 21 L 1 L 3 ←L 3 −2L 2
−1 −1 −1 −−−−−−−−→  0 − 21 −1 −−−−−−−−→  0 − 21 −1
Étape 1 Étape 2
0 −1 −2 0 −1 −2 0 0 0

© 2020-2021 G. Faccanoni 35
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

On obtient le système linéaire triangulaire supérieure


    
−2 −1 0 x1 0
0 − 21 −1   x 2 = 0
  
0 0 0 x3 0

donc x 3 = κ ∈ R, x 2 = −2x 3 = −2κ et x 1 = −x 2 /2 = κ donc



1
x = κ −2 .
1

Pour faire simple, on choisira κ = 1.


⋆ Diagonalisation
On peut alors écrire les valeurs propres et les vecteurs propres dans deux matrices

λ1
     
0 0 0 0 0 1 1 1
D= 0 λ2 P = x1
¡ ¢
0  = 0 1 0 et x2 x3 = 1 0 −2
0 0 λ3 0 0 3 1 −1 1

et vérifier que A = PDP−1 , c’est-à-dire que AP = PD :


    
1 −1 0 1 1 1 0 1 3
AP = −1 2 −1 1 0 −2 = 0 0 −6
0 −1 1 1 −1 1 0 −1 3
    
1 1 1 0 0 0 0 1 3
PD = 1 0 −2 0 1 0 = 0 0 −6
1 −1 1 0 0 3 0 −1 3

Une matrice carrée A d’ordre n n’est pas toujours diagonalisable. En revanche, elle est toujours trigonalisable sur C, i.e. elle
est semblable à une matrice triangulaire et l’on a le résultat suivant :

Proposition 1.24 (Décomposition de Schur)


Pour toute matrice A ∈ Cn×n il existe une matrice U carrées d’ordre n unitaire telle que T = U−1 AU = UH AU avec

λ1
 
t 12 ... t 1n
0 λ2 t 12 t 2n 
T=
 
 .. .. .. 
 . . . 

0 ... 0 λn

ayant noté λi les valeurs propres de A. Les matrices U et T ne sont pas forcement uniques.

On peut démonter que


1. si A est hermitienne alors T est toujours une matrice diagonale et les colonnes de U sont les vecteurs propres de A ;
2. si de plus A est normale alors on a la décomposition spectrale A = UTUH = ni=1 λi ui uiH
P

1.4.3. Applications
Marche aléatoire entre deux états (chaîne de Markov)
Lorsqu’un système n’ayant que deux états possibles 1 et 2 évolue par étapes successives aléatoires et indépendantes, on dit
qu’il suit une marche aléatoire entre ses deux états. Soit p la probabilité qu’il passe de 1 à 2 et q la probabilité qu’il passe de
2 à 1. On peut alors lui associer :
⋆ un graphe probabiliste qui schématise les échanges entre 1 et 2 par des arêtes orientées, pondérées par les probabilités
de passer d’un état à l’autre ou de rester au même état,
p

1-p v1 v2 1-q
q

⋆ une matrice de transition T carrée d’ordre 2 telle que le coefficient t i j est égal à la probabilité

36 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

⋆ de passer de l’état j à l’état i lorsque i ̸= j ;


⋆ de rester à l’état i lorsque i = j .
µ ¶
1−p q
T=
p 1−q
Une matrice de transition est dite stochastique : ses coefficients appartiennent à l’intervalle [0; 1] et la somme des
coefficients de chacune de ses colonnes est égale à 1.
Pour n ∈ N, on note
⋆ l’événement A n : « le système est dans l’état A à l’étape n » ;
⋆ l’événement B n : « le système est dans l’état B à l’étape n » ;
⋆ les probabilités a n = P (A n ) et b n = P (B n ) telles que a n + b n = 1.
µ ¶
(n) an
Le vecteur u = est appelée la répartition de probabilité à l’étape n et l’on a
bn

u(n+1) = Tu(n) = Tn u(0)

E XEMPLE
Akwa, un chien ayant une puce, rencontre Bali, un autre chien. Chaque seconde, la puce reste sur un chien ou va sur l’autre.
On a un système à deux états : l’état 1 (la puce est sur Akwa) et l’état 2 (la puce est sur Bali) dont l’évolution est une marche
aléatoire entre ces deux états.
Supposons que chaque seconde soit la puce va d’Akwa (état 1) à Bali (état 2) une fois sur cinq, soit elle va de Bali à Akwa
deux fois sur trois, soit elle reste sur le même chien. Alors, la marche aléatoire a pour graphe
1
5
4 v1 v2 1
5 3
2
3

et matrice de transition : µ ¶
4/5 2/3
T=
1/5 1/3
µ ¶
1
Initialement, la puce est sur Akwa donc u(0) = .
0
Après une seconde, la répartition de probabilité est
µ ¶µ ¶ µ ¶
4/5 2/3 1 4/5
u(1) = Tu(0) = =
1/5 1/3 0 1/5

Après deux secondes, la répartition de probabilité est


µ ¶µ ¶ µ ¶
4/5 2/3 4/5 58/75
u(2) = Tu(1) = =
1/5 1/3 1/5 17/75

Pour calculer limn→+∞ u(n+1) , il faut calculer limn→+∞ Tu(n) = T(limn→+∞ u(n) ).
Supposons qu’une telle limite existe et notons-la u, alors u vérifie u = Tu, autrement dit λ = 1 est une valeur propre de T et
u est le vecteur propre unitaire correspondant.
Le vecteur propre associé à λ = 1 est donné par
µ 1 2 ¶µ ¶ µ ¶
−5 3 y1 0
1 =
5 − 32 y 2 0

d’où 3y 1 = 10y 2 soit encore x = (10κ, 3κ)T . La distribution normalisée est donnée par les composantes du vecteur propre
unitaire correspondant, c’est-à-dire
µ ¶ µ 10 ¶
1 10κ
x= = 133 .
10κ + 3κ 3κ 13

Cela signifie que

10 3
lim a n = , lim b n = .
n→+∞ 13 n→+∞ 13
On généralise ces définitions et ces propriétés à des marches aléatoires entre trois états ou plus. Ainsi, le coefficient t i j de la
matrice de transition T est égal à la probabilité de passer de l’état j à l’état i .

© 2020-2021 G. Faccanoni 37
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

E XEMPLE
v 1 , v 2 et v 3 sont trois villes. Des trafiquants de drogue prennent leur marchandise le matin dans n’importe laquelle de ces
villes pour l’apporter le soir dans n’importe quelle autre. On notera p i j la probabilité qu’une marchandise prise le matin
dans la ville v j soit rendue le soir dans la ville v i . On construit ainsi la matrice P ∈ M3 ([0; 1]), appelée matrice de transition
de la chaîne de M ARKOV. On remarque que la somme des composantes de chaque vecteur colonne est égale à 1.
Supposons que A soit connue et vaille
 
0.8 0.3 0.2
A = 0.1 0.2 0.6 .
0.1 0.5 0.2
Les trafiquants se promenant de ville en ville, il peut être utile de visualiser leurs déplacements par le diagramme de
transition suivant :
0.8

v1

0.3 0.1

0.1 0.2

0.5
0.2 v2 v3 0.2
0.6

On notera x i(k) la proportion de trafiquants qui se trouvent au matin du jour k dans la ville v i . On montre que le vecteur
x(k) = (x 1(k) , x 2(k) , x 3(k) )T vérifie la relation
x(k+1) = Ax(k)
et donc par une récurrence immédiate
x(k) = Ak x(0) .
Supposons que le chef de la mafia locale dispose de 1000 trafiquants qui partent tous le matin du jour 0 de la ville v 1 . Quelle
sera la proportion de trafiquants dans chacune des villes au bout d’une semaine ? d’un an ?

Méthode directe Il s’agit de calculer des puissances successives de A avec x(0) = (1, 0, 0)T . Au bout d’une semaine on a

x(7) = A7 · x(0) ≃ (56.4%, 22.6%, 21%)T .

Au but d’un an les proportions ne changent guère :

x(365) = A365 · x(0) ≃ (55.7%, 22.9%, 21.3%)T .

Le calcul de la puissance de A est lourd car il s’agit de 365 multiplications matricielles.


Méthode par diagonalisation Si on diagonalise A i.e. si on calcule D et P telles que A = PDP−1 alors

x(365) = A365 · x(0) = (PDP−1 )(PDP−1 ) · · · (PDP−1 ) ·x(0) = PD365 P−1 · x(0) .
| {z }
365 fois

Le calcul de la puissance de D est immédiat car


 365
1 0 0
  
1 0p 0 ³ p ´365
1+2 5 1+2 5
D = 0 0p  =⇒ D365 =  0 0
   
10

10  p ´365 
1−2 5
³
0 0 1−2 5
10 0 0 10 )

clc; clear all; x_365=A^n*x_init


A = [0.8 0.3 0.2; 0.1 0.2 0.6; 0.1 0.5 0.2]
x_init=[1;0;0] % Methode par diagonalisation
n=365 [V,D] = eig(A);
x_365=V*D^n*inv(V)*x_init
% Methode directe

38 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Décomposition en valeurs singulières


Soit A ∈ Rn×p une matrice rectangulaire. Un théorème démontré officiellement en 1936 par C. E CKART et G. Y OUNG affirme
que toute matrice rectangulaire A se décompose sous la forme

A = USVT

avec U ∈ Rn×n et V ∈ Rp×p des matrices orthogonales T T


ª (i.e. U = U et V = V ) et S ∈ R
−1 −1 n×p
une matrice diagonale qui
contient les r valeurs singulières de A, r = min n, p , σ1 ≥ σ2 ≥ σr ≥ 0. Ce qui est remarquable, c’est que n’importe quelle
©

matrice admet une telle décomposition alors que la décomposition en valeurs propres (la diagonalisation d’une matrice)
n’est pas toujours possible.
Notons ui et vi les vecteurs colonne des matrices U et V. La décomposition s’écrit alors

σ1 vT1
  

..  . 
  .. 


 .  
  vT 
T
¢ σr  r 
A = USV = u1
¡
... ur ur +1 ... un 

 T 
| {z } 0  vr +1 
n×n ..   .. 
  

 .  . 
0 vTp
| {z } | {z }
n×p p×p
 T 
σ1 v1

r
..   ..  X
σi ui × vTi
¡ ¢
= u1 ... ur  .  .  =
i =1
σr vTr
| {z } | {z }
n×r r ×r
| {z } | {z }
r ×r r ×p

Pour calculer ces trois matrices on remarque que A = USVT = USV−1 et AT = VSUT = VSU−1 ainsi, pour i = 1, . . . , r , en
multipliant par A à gauche AT ui = σi vi et en multipliant par A à droite Avi = σi ui on obtient

AAT ui = σi Avi = σ2i ui , pour i = 1, . . . , r


T T
A Avi = σi A ui = σ2i vi , pour i = 1, . . . , r

ainsi les σ2i sont les valeurs propres de la matrice AAT et les ui les vecteurs propres associés mais aussi les σ2i sont les valeurs
propres de la matrice AT A et les vi les vecteurs propres associés (attention, étant des valeurs propres, ils ne sont pas définis
de façon unique).
On peut exploiter cette décomposition pour faire des économies de mémoire.
⋆ Pour stocker la matrice A nous avons besoin de n × p valeurs.
⋆ Pour stocker la décomposition SVD nous avons besoin de n × r + r + r × p = (n + p + 1)r > (n + p + 1)r valeurs donc
à priori on ne fait pas d’économies de stockage. Cependant, s’il existe s < r tel que σs = σs+1 = · · · = σr = 0, alors
nous n’avons plus besoin que de n × s + s + s × p = (n + p + 1)s valeurs. Si s < np/(n + p + 1) on fait des économies de
stockage.
Idée de la compression : si nous approchons A en ne gardant que les premiers s termes de la somme (sachant que les
derniers termes sont multipliés par des σi plus petits, voire nuls)
s
A σi ui × vTi ,
X
e= où s < r
i =1 | {z }
∈Rn×p

⋆ pour stocker la matrice A


e nous avons toujours besoin de n × p valeurs,
⋆ pour stocker la décomposition SVD nous avons besoin de n × s + s + s × p = (n + p + 1)s valeurs. Si s < np/(n + p + 1)
on fait des économies de stockage.

1.4.4. Localisation des valeurs propres


Soit A une matrice carrée d’ordre n.
Une première estimation de la localisation du spectre d’une matrice dans le plan complexe est donnée par

|λ| ≤ ||A|| ∀λ ∈ σ(A)

pour toute norme || · || consistante. Cette estimation dit que toutes les valeurs propres appartiennent au cercle de rayon ||A||

© 2020-2021 G. Faccanoni 39
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

centré dans l’origine du plan complexe :


σ(A) ⊂ O =⊂ { z ∈ C | |z| ≤ ||A|| } .
Parmi les normes les plus utilisées nous avons
n
|a i j | = ||AT ||∞
X
||A||1 = max
j =1...n i =1
n
|a i j | = ||AT ||1
X
||A||∞ = max
i =1...n j =1

Une autre estimation est donnée par les disques de G ERSHGORIN. Les disques de G ERSHGORIN Ri et C j associés à la i -ème
ligne et à la j -ème colonne sont respectivement définis par
 ¯   ¯ 
 ¯   ¯ 

 ¯ n 
 
 ¯ n 

Ri = z ∈ C ¯ |z − ai i | ≤ Cj = z ∈ C ¯ z − a j j ≤
¯ X ¯¯ ¯ X
¯ |a i j | , ¯ ¯ ¯ |a i j | .
j =1, i =1,

 ¯ 
 
 ¯ 

   
¯ j ̸=i
¯ i ̸= j

Les disques de G ERSHGORIN peuvent servir à localiser les valeurs propres d’une matrice, comme le montre la proposition
suivante

Proposition 1.25
Toutes les valeurs propres d’une matrice A ∈ Cn×n appartiennent à la région du plan complexe définie par l’intersection des
deux régions constituées respectivement de la réunion des disques des lignes et des disques des colonnes :
à ! à !
n n
σ(A) ⊂ Ri ∩ Cj .
[ [
i =1 j =1
| {z } | {z }
SR SC

Si de plus m disques des lignes (ou des colonnes), 1 ≤ m ≤ n, sont disjoints de la réunion des n − m autres disques, alors leur
réunion contient exactement m valeurs propres.

Rien n’assure qu’un disque contienne des valeurs propres, à moins qu’il ne soit isolé des autres.
Remarquer qu’on peut déduire que toutes les valeurs propres d’une matrice à diagonale strictement dominante sont non
nulles.

E XEMPLE
Considérons la matrice
 
3 2 3
A = −1 2 −1 .
0 1 3
Nous avons les estimations suivantes :

1. Si on considère les normes || · ||1 et || · ||∞ nous avons


n
X
||A||1 = max |a i j | = max { | 3| + | − 1| + |0|; |2| + |2| + |1|; |3| + | − 1| + |3| } = max { 4; 5; 7 } = 7
j =1...n i =1 j =1...n j =1...n
n
X
||A||∞ = max |a i j | = max { | 3| + |2| + |3|; | − 1| + |2| + | − 1|; |0| + |1| + |3| } = max { 8; 4; 4 } = 8
i =1...n j =1 i =1...n i =1...n


7
donc toutes les valeurs propres appartiennent au
cercle de rayon 7 centré dans l’origine du plan
complexe :
−7 0 7ℜ
σ(A) ⊂ O = { z ∈ C | |z| ≤ 7 } .

−7

40 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

2. Disques des lignes :


 ¯ 
 ¯ 

 ¯ n 

R1 = z ∈ C ¯ − a11 ≤ |a 1 j | = { z ∈ C | |z − 3| ≤ |2| + |3| } = { z ∈ C | |z − 3| ≤ 5 } ,
¯ X
¯ |z |
j =1,

 ¯ 

 
j ̸=1
¯
 ¯ 
 ¯ 

 ¯ n 

R2 = z ∈ C ¯ |z − a22 | ≤ |a 2 j | = { z ∈ C | |z − 2| ≤ | − 1| + | − 1| } = { z ∈ C | |z − 2| ≤ 2 } ,
¯ X
¯
j =1,

 ¯ 

 
j ̸=2
¯
 ¯ 
 ¯ 

 ¯ n 

R3 = z ∈ C ¯ |z − a33 | ≤ |a 3 j | = { z ∈ C | |z − 3| ≤ |0| + |1| } = { z ∈ C | |z − 3| ≤ 1 } .
¯ X
¯
j =1,

 ¯ 

 
j ̸=3
¯


5
4
3
Toutes les valeurs propres appartiennent à la 2
réunion des disques des lignes : 1
0
−2−1 0 1 2 3 4 5 6 7 8 ℜ
σ(A) ⊂ SR = R1 ∪ R2 ∪ R3 = R1 . −1
−2
−3
−4
−5

3. Disques des colonnes :


 ¯ 
¯

 ¯ n 

C1 = z ∈ C ¯ |z − a11 | ≤ |a i 1 | = { z ∈ C | |z − 3| ≤ | − 1| + |0| } = { z ∈ C | |z − 3| ≤ 1 } ,
¯ X
i =1,

 ¯ 

¯
i ̸=1
 ¯ 
¯

 ¯ n 

C2 = z ∈ C ¯ |z − a22 | ≤ |a i 2 | = { z ∈ C | |z − 2| ≤ |2| + |1| } = { z ∈ C | |z − 2| ≤ 3 } ,
¯ X
i =1,

 ¯ 

¯
i ̸=2
 ¯ 
¯

 ¯ n 

C3 = z ∈ C ¯ |z − a33 | ≤ |a i 3 | = { z ∈ C | |z − 3| ≤ |3| + | − 1| } = { z ∈ C | |z − 3| ≤ 4 } .
¯ X
i =1,

 ¯ 

¯
i ̸=3


5
4
3
Toutes les valeurs propres appartiennent à la 2
réunion des disques des colonnes : 1
0
−2−1 0 1 2 3 4 5 6 7 8 ℜ
σ(A) ⊂ SC = C1 ∪ C2 ∪ C3 = C3 . −1
−2
−3
−4
−5

4. Toutes les valeurs propres appartiennent à l’intersection de ces trois régions :

© 2020-2021 G. Faccanoni 41
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

σ(A) ⊂ SO ∩ SR ∩ SC = C3 ℑ
3
En effet, on a 2
1
p A (λ) = −λ3 +8λ2 −24λ+24 = −(λ−2)(λ2 −6λ+12) 0
−1 0 1 2 3 4 5 6 ℜ
−1
donc
−2
p p −3
λ1 = 2 λ2 = 3 + i 3 λ3 = λ2 = 3 − i 3.

E XEMPLE
Considérons la matrice
 
10 2 3
A = −1 2 −1 .
0 1 3
Nous avons les estimations suivantes :
1. Si on considère les normes || · ||1 et || · ||∞ nous avons
n
X
||A||1 = max |a i j | = max { | 10| + | − 1| + |0|; |2| + |2| + |1|; |3| + | − 1| + |3| } = max { 11; 5; 7 } = 11
j =1...n i =1 j =1...n j =1...n
n
X
||A||∞ = max |a i j | = max { | 10| + |2| + |3|; | − 1| + |2| + | − 1|; |0| + |1| + |3| } = max { 15; 4; 4 } = 15
i =1...n j =1 i =1...n i =1...n

donc toutes les valeurs propres appartiennent au cercle de rayon 11 centré dans l’origine du plan complexe :

σ(A) ⊂ O = { z ∈ C | |z| ≤ 11 } .


11
9
7
5
3
1
−1 1 3 5 7 9 11ℜ
−11−9−7−5−3−1
−3
−5
−7
−9
−11

2. Disques des lignes :


 ¯ 
 ¯ 

 ¯ n 

R1 = z ∈ C ¯ |z − a11 | ≤ |a 1 j | = { z ∈ C | |z − 10| ≤ |2| + |3| } = { z ∈ C | |z − 10| ≤ 5 } ,
¯ X
¯
j =1,

 ¯ 

 
j ̸=1
¯
 ¯ 
 ¯ 

 ¯ n 

R2 = z ∈ C ¯ |z − a22 | ≤ |a 2 j | = { z ∈ C | |z − 2| ≤ | − 1| + | − 1| } = { z ∈ C | |z − 2| ≤ 2 } ,
¯ X
¯
j =1,

 ¯ 

 
j ̸=2
¯
 ¯ 
 ¯ 

 ¯ n 

R3 = z ∈ C ¯ |z − a33 | ≤ |a 3 j | = { z ∈ C | |z − 3| ≤ |0| + |1| } = { z ∈ C | |z − 3| ≤ 1 } .
¯ X
¯
j =1,

 ¯ 

 
j ̸=3
¯

Toutes les valeurs propres appartiennent à la réunion des disques des lignes :

σ(A) ⊂ SR = R1 ∪ R2 ∪ R3 .

De plus, comme le disque R1 est disjoint de la réunion R2 ∪ R3 , une et une seule valeur propre est contenue dans R1
et les deux autres valeurs propres appartiennent à R2 ∪ R3 = R2 .

42 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background


5
4
3
2
1
0
−1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ℜ
−1
−2
−3
−4
−5

3. Disques des colonnes :


 ¯ 
¯

 ¯ n 

C1 = z ∈ C ¯ |z − a11 | ≤ |a i 1 | = { z ∈ C | |z − 10| ≤ | − 1| + |0| } = { z ∈ C | |z − 10| ≤ 1 } ,
¯ X
i =1,

 ¯ 

¯
i ̸=1
 ¯ 
¯

 ¯ n 

C2 = z ∈ C ¯ |z − a22 | ≤ |a i 2 | = { z ∈ C | |z − 2| ≤ |2| + |1| } = { z ∈ C | |z − 2| ≤ 3 } ,
¯ X
i =1,

 ¯ 

¯
i ̸=2
 ¯ 
¯

 ¯ n 

C3 = z ∈ C ¯ |z − a33 | ≤ |a i 3 | = { z ∈ C | |z − 3| ≤ |3| + | − 1| } = { z ∈ C | |z − 3| ≤ 4 } .
¯ X
i =1,

 ¯ 

¯
i ̸=3

Toutes les valeurs propres appartiennent à la réunion des disques des colonnes :

σ(A) ⊂ SC = C1 ∪ C2 ∪ C3 .

De plus, comme le disque C1 est disjoint de la réunion C2 ∪ C3 , une et une seule valeur propre est contenue dans C1
et les deux autres valeurs propres appartiennent à C2 ∪ C3 = C3 .


4
3
2
1
0
−1 0 1 2 3 4 5 6 7 8 9 10 11 ℜ
−1
−2
−3
−4

4. Toutes les valeurs propres appartiennent à l’intersection de ces trois régions :

σ(A) ⊂ SO ∩ SR ∩ SC

En effet, on a

λ1 ≃ 9.6876 λ2 ≃ 2.6562 + 0.6928i λ3 = λ2 ≃ 2.6562 − 0.6928i .

A=[10 2 3; -1 2 -1; 0 1 3]
eig(A)

© 2020-2021 G. Faccanoni 43
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023


3
2
1
0
−1 0 1 2 3 4 5 6 7 8 9 10 11
ℜ 12
−1
−2
−3

1.5. Exercices
1.5.1. Calcul matriciel
Exercice 1.1 (Écriture matricielle)
On considère
© ª les matrices A = (a i j ), B = (b i j ) et C = (c i j ) carrées d’ordre 4 définies par a i j = i 2 , b i j = i + j , c i j =
min i ; j . Écrire ces matrices sous la forme de tableaux de nombres.

Correction

2 3 4 5 1 1 1 1
   
3 4 5 6 1 2 2 2
1

1 1 1
 B=
4
 C= 
5 6 7 1 2 3 3
4 4 4 4
A=  5 6 7 8 1 2 3 4
9 9 9 9
16 16 16 16
B=zeros(4); C=zeros(4);
for i=1:4 for i=1:4
A=zeros(4); for j=1:4 for j=1:4
for i=1:4 B(i,j)=i+j; C(i,j)=min(i,j);
A(i,:)=i^2; end end
end end end
A B C

Exercice 1.2
Soient les matrices
   
−3 2 1 2
A= 0 4 et B = 0 1 .
1 −1 1 1
1. Trouver une matrice C telle que A − 2B − C = O.
2. Trouver une matrice D telle que A + B + C − 4D = O.

Correction
1. On cherche C telle que C = A − 2B, i.e.
         
c 11 c 12 −3 2 1 2 −3 − 2 × 1 2−2×2 −5 −2
c 21 c 22  =  0 4  − 2 0 1 =  0 − 2 × 0 4−2×1  =  0 2 .
c 31 c 32 1 −1 1 1 1−2×1 −1 − 2 × 1 −1 −3

A − 2B − C = O.
2. On cherche D telle que D = 14 (A + B + C) = 14 (A + B + A − 2B) = 12 A − 14 B, i.e.
 1 1 1
× 2 − 14 × 2
       7 
d 11 d 12 2 1 2 2 × (−3) − 4 × 1 − /4 /2
1
−3 2
1 1 1 1 1
d 21 d 22  =  0 4  − 0 1 =
 
2 ×0− 4 ×0 2 × 4 − 14 × 1  =  0 7
/4  .
2 4 1 1 1 1
d 31 d 32 1 −1 1 1 2 ×1− 4 ×1 2 × (−1) − 4 × 1
1
/4 −3/4

44 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

A=[-3 2; 0 4; 1 -1]
B=[1 2; 0 1; 1 1]
C=A-2*B
D=1/4*(A+B+C)

Exercice 1.3
Effectuer les multiplications suivantes
    
µ ¶ 2 1 −1 0 2 −3 ¡
3 1 5  ¡ ¢ ¢
3 0 1 8 , −3 0 5 −4 , 0 2 −4 −3 .
2 7 0
0 −5 3 4 −3 5

Correction

3×4
2×3 z }| { 2×4
zµ }| {¶   z
2 1 −1 0 µ }| {¶
3 1 5  3 × 2 + 1 × 3 + 5 × 0 3 × 1 + 1 × 0 + 5 × (−5) 3 × (−1) + 1 × 1 + 5 × 3 3×0+1×8+5×4
3 0 1 8 =

2 7 0 2 × 2 + 7 × 3 + 0 × 0 2 × 1 + 7 × 0 + 0 × (−5) 2 × (−1) + 7 × 1 + 0 × 3 2×0+7×8+0×4
0 −5 3 4
µ ¶
9 −220 13 28
=
25 2 5 560
3×1
z }| {
1×3   1×1
z¡ }| {¢ 2 z¡ }| {¢
−3 0 5 −4 = −3 × 2 + 0 × (−4) + 5 × (−3) = −21
−3
3×1 3×3
z }| { z }| {
  1×3    
−3 ¡z }| {¢ −3 × 2 −3 × (−4) −3 × (−3) −6 12 9
0 2 −4 −3 =  0 × 2 0 × (−4) 0 × (−3)  =  0 0 0 
5 5×2 5 × (−4) 5 × (−3) 10 −20 −15

[3 1 5; 2 7 0]*[2 1 -1 0; 3 0 1 8; 0 -5 3 4]
[-3 0 5]*[2 -4 -3]’ % ce qui equivaut a [-3 0 5]*[2; -4; -3]
[-3 0 5]’*[2 -4 -3] % ce qui equivaut a [-3; 0; 5]*[2 -4 -3]

Exercice 1.4
Soit les matrices
     
1 2 3 µ ¶ 1 1
2 −1 0
A = −1 0 1 B= u= x  v = 0 
−1 0 1
0 1 0 x2 1

1. Calculer tous les produits possibles à partir de A, B, u et v.


2. Calculer (A − I)7 et en extraire le coefficient en position (2, 3).
3. Calculer A−1 et la trace de A−1 (i.e. la somme des coefficients sur la diagonale).

Correction
Sans utiliser un module spécifique, il n’est pas possible de faire des calculs formels avec MATLAB/Octave, donc on ne peut
pas utiliser u sans donner une valeur numérique à x.
A=[1 2 3; -1 0 1; 0 1 0] % 3x3
B=[2 -1 0; -1 0 1] % 2x3
v=[1;0;1] % 3x1
% Les produits possibles sont
B*A % (2x3)*(3x3) -> 2x3
A*v % (3x3)*(3x1) -> 3x1

© 2020-2021 G. Faccanoni 45
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

B*v % (2x3)*(3x1) -> 2x1


%
Id=eye(3)
D=(A-Id)^7 % c’est bien ^7 (produit matriciel) et non .^7
D(2,3) % -> 153
%
invA=A^(-1) % ou inv(A)
sum(diag(invA))

Exercice 1.5 (Multiplication matricielle appliquée)


On modélise une image en noir et blanc formée de 25 pixels par une matrice de 5 lignes et 5 colonnes, dans laquelle 0
correspond à un pixel blanc et 1 à un pixel noir. L’image à modéliser est la suivante :

1. Donner la matrice M associée à l’image.


2. Soient
0 0 0 0 1 0 1 0 0 0
   
0 0 0 1 0 0 0 1 0 0
A= B=
   
0 0 1 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 0 1
1 0 0 0 0 1 0 0 0 0
Calculer le produit AM. Quel est l’effet de la matrice A sur l’image ? Quel est l’effet si on fait le produit MA sur
l’image ?
Calculer le produit BM. Quel est l’effet de la matrice B sur l’image ? Quel est l’effet si on fait le produit MB sur
l’image ?
3. Quelle image obtient-on en faisant le produit AMB ?
4. Quel produit matriciel peut-on faire pour obtenir la figure suivante ?

Correction
1.
0 1 1 1 0
 
0 1 0 0 0
M=
 
0 1 1 0 0

0 1 0 0 0
0 1 0 0 0

2. Le produit AM correspond à inverser l’ordre des lignes de la matrice M : l’image est alors symétrique par rapport à la
troisième ligne.
Le produit MA correspond à inverser l’ordre des colonnes de la matrice M : l’image est alors symétrique par rapport à
la troisième colonne.
Le produit BM correspond à translater les lignes de la matrice M d’un rang vers le haut (la première ligne passant en
cinquième ligne) : l’image est alors translatée d’un rang vers le haut (la première ligne passant en cinquième ligne).
Le produit MB correspond à translater les colonnes de la matrice M d’un rang vers la droite (la cinquième colonne
passant en première colonne) : l’image est alors translatée d’un rang vers la droite (la cinquième colonne passant en
première colonne).

0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 1 1
       
0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0
AM =  MA =  BM =  MB = 
       
0 1 1 0 0
 0 0 1 1 0
 0 1 0 0 0
 0 0 1 1 0

0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0
0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0

46 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

M AM MA BM MB

3. Le produit AMB = (AM)B correspond par exemple à une symétrie horizontale par rapport à la troisième ligne
suivie d’une translation d’un rang vers la droite. On peut aussi l’écrire comme AMB = A(MB) qui correspond à une
translation d’un rang vers la droite suivie d’une symétrie horizontale par rapport à la troisième ligne. Dans tous les cas
on obtient l’image suivante :

M → AM → (AM)B

M → MB → A(MB)

4. On peut par exemple calculer AMAB.

M → AM → (AM)A → (AMA)B

Ou encore calculer AMBABB.

AMB → AMBA → AMBABB

M=[0 1 1 1 0 A=eye(5); A*M


0 1 0 0 0 A=A(:,5:-1:1) M*A
0 1 1 0 0 % B*M
0 1 0 0 0 B=diag(ones(4,1),1); M*B
0 1 0 0 0] B(5,1)=1; A*M*B
B A*M*A*B
A*M*B*A*B*B

Exercice 1.6
Calculer a, b, c et d tels que
µ ¶µ ¶ µ ¶µ ¶
1 3 a b a b 1 3
① = I2 , ② = I2 .
2 8 c d c d 2 8
Que peut-on conclure ?

Correction
Comme
µ ¶ µ ¶ µ ¶
1 3 a b a + 3c b + 3d
× =
2 8 c d 2a + 8c 2b + 8d
il faut que 

 a + 3c = 1,


 b + 3d = 0, µ ¶ µ ¶
a b 4 −3/2
⇐⇒ = .

 2a + 8c = 0, c d −1 1/2


2b + 8d = 1,

© 2020-2021 G. Faccanoni 47
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

De la même manière, pour avoir µ ¶µ ¶ µ ¶


a b 1 3 a + 2b 3a + 8b
=
c d 2 8 c + 2d 3c + 8d
il faut que 

 a + 2b = 1,


 3a + 8b = 0, µ ¶ µ ¶
a b 4 −3/2
⇐⇒ = .

 c + 2d = 0, c d −1 1/2


3c + 8d = 1,

A=[1 3; 2 8]
I2=eye(2)
I2/A
A\I2
On conclut que
µ ¶ µ ¶−1 µ ¶
a b 1 3 4 −3/2
= = .
c d 2 8 −1 1/2

inv([1 3; 2 8])

Exercice 1.7
On dit que deux matrices A et B commutent si AB = BA. Trouver toutes les matrices qui commutent avec
 
1 0 0
A = 0 3 0 .
0 0 5

En déduire A−1 .

Correction
On cherche B telle que
     
1 0 0 b 11 b 12 b 13 b 11 b 12 b 13 1 0 0
0 3 0 b 21 b 22 b 23  = b 21 b 22 b 23  0 3 0
0 0 5 b 31 b 32 b 33 b 31 b 32 b 33 0 0 5
Comme     
1 0 0 b 11 b 12 b 13 b 11 b 12 b 13
0 3 0 b 21 b 22 b 23  = 3b 21 3b 22 3b 23 
0 0 5 b 31 b 32 b 33 5b 31 5b 32 5b 33
et     
b 11 b 12 b 13 1 0 0 b 11 3b 12 5b 13
b 21 b 22 b 23  0 3 0 = b 21 3b 22 5b 23 
b 31 b 32 b 33 0 0 5 b 31 3b 32 5b 33
il faut que 
 b 11 = b 11 ,






 b 12 = 3b 12 ,




 b 13 = 5b 13 ,

 3b 21 = b 21 , κ1
  

 0 0
3b 22 = 3b 22 , ⇐⇒ B= 0 κ2 0 avec κ1 , κ2 , κ3 ∈ R.
0 0 κ3

3b 23 = 5b 23 ,









 5b 31 = b 31 ,

5b 32 = 3b 32 ,





5b 33 = 5b 33 ,

Si de plus on veut que AB = BA = I3 , i.e. B = A−1 , il faut κ1 = 1, κ2 = 1/3 et κ3 = 1/5.


inv(diag([1 3 5]))

48 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Exercice 1.8
Trouver pour quelles valeurs de t ∈ R les matrices suivantes sont inversibles :

t2 −9 t2 −9
µ ¶ µ ¶
t +3 t +3
A= 2 , B= .
t +9 t −3 t −3 t2 +9

Correction

t2 −9
µ ¶
t +3
det(A) = det = (t + 3) × (t − 3) − (t 2 − 9) × (t 2 + 9) = −(t − 3)(t + 3)(t 2 + 8).
t2 +9 t −3
La matrice est inversible pour tout t ∈ R \ { −3, 3 }.
determinant=@(t)[det([t+3, t^2-9; t^2+9, t-3])];
fsolve(determinant,1)
fsolve(determinant,-1)
µ 2 ¶
t −9 t +3
det(B) = det = (t 2 − 9) × (t 2 + 9) − (t + 3) × (t − 3) = (t − 3)(t + 3)(t 2 + 8).
t −3 t2 +9
La matrice est inversible pour tout t ∈ R \ { −3, 3 }.
determinant=@(t)[det([t^2-9, t+3; t-3, t^2+9])];
fsolve(determinant,1)
fsolve(determinant,-1)

Exercice 1.9
Trouver pour quelles valeurs de t la matrice suivante est inversible
 
t +3 −1 1
 5 t −3 1 .
6 −6 t +4

Correction
On commence par calculer le déterminant de la matrice. Étant une matrice d’ordre 3, on peut par exemple utiliser la
méthode de S ARRUS :
 
t + 3 −1 1
det  5 t −3 1 
6 −6 t + 4
³ ´ ³ ´
= (t + 3) × (t − 3) × (t + 4) + 5 × (−6) × 1 + 6 × (−1) × 1 − 1 × (t − 3) × 6 + 1 × (−6) × (t + 3) + (t + 4) × (−1) × 5

= t 3 − 4t + 4t 2 − 16 = t (t 2 − 4) + 4(t 2 − 4) = (t 2 − 4)(t + 4) = (t − 2)(t + 2)(t + 4).

La matrice est inversible pour tout t ∈ R \ { −4, −2, 2 }.


determinant=@(t)[det([t+3, -1, 1; 5, t-3, 1; 6, -6, t+4])];
fsolve(determinant,1)
fsolve(determinant,-1)
fsolve(determinant,-10)

Exercice 1.10
Soit a, b et c trois réels quelconques, calculer les déterminants suivants :
   
1 1 1 1+a 1 1
D 1 = det  a b c D 2 = det  1 1+a 1 
a2 b2 c2 1 1 1+a

© 2020-2021 G. Faccanoni 49
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Correction
Pour calculer un déterminant comportant des paramètres, il est souvent intéressant de faire apparaître des zéros dans une
ligne ou une colonne :
   
1 1 1 C 2 ←C 2 −C 1 1 0 0 µ ¶
C 3 ←C 3 −C 1 b−a c −a
D 1 = det  a b c  −−−−−−−−→ det  a b−a c − a = det 2
b − a2 c 2 − a2

=
a2 b2 c2 a2 b2 − a2 c 2 − a2
³ ´
= (b − a)(c 2 − a 2 ) − (c − a)(b 2 − a 2 ) = (b − a)(c − a) (c + a) − (b + a) = (b − a)(c − a)(c − b);
     
1+a 1 1 C 2 ←C 2 −C 1 1 + a −a −a 3+a 0 0
C 3 ←C 3 −C 1 L 1 ←L 1 +L 2 +L 3
D 2 = det  1 1+a 1  −−−−−−−−→ det  1 a 0  −−−−−−−−−−→ det  1 a 0  = a 2 (3 + a).
= =
1 1 1+a 1 0 a 1 0 a

Exercice 1.11
κ
¶ µ
1
1. Pour quelles valeurs de κ ∈ R la matrice A = est inversible ?
3 2
   
1 2 8 2 1 3
2. Calculer le rang des matrices B = 2 1 4  et C = 8 4 12.
0 3 12 1 2 0
0 0 1 0 0 2 3 4
   
2 3 7 4  1 7 12 −5
3. Calculer le déterminant des matrices D = 
3 1 12 0 et E = 0
  .
3 1 0
4 0 −5 0 0 4 0 0

Correction
3
1. La matrice A est inversible pour κ ̸= 2 car det(A) = 3 − 2κ.
determinant=@(k)[det([1 k; 2 3])];
fsolve(determinant,0)

2. Sans faire de calcul on peut déjà affirmer que 1 ≤ rg(B) ≤µ 3. Comme ¶ det(B) = 0 (sans faire de calcul, il suffit de
1 2
remarquer que C 3 = 4C 2 ), alors 1 ≤ rg(B) ≤ 2. Comme det = −3 ̸= 0, on conclut que rg(B) = 2. De la même
2 1
manière, 1 ≤µrg(C)¶≤ 3 et puisque det(C) = 0 (sans faire de calcul, il suffit de remarquer que L 2 = 4L 1 ), alors 1 ≤ rg(C) ≤ 2.
2 1
Comme det = 3 ̸= 0, on conclut que rg(C) = 2.
1 2
rank([1 2 8; 2 1 4; 0 3 12])
rank([2 1 3; 8 4 12; 1 2 0])
 
0 0 1 0
2 3 4
 
µ ¶
2 3 7 4 = det  3 3 4
3. det(D) = det  1 0 = 4 det = −16.
3 1 12 0 1 0
4 0 0
4 0 −5 0
0 2 3 4
 
2 3 4
 
µ ¶
1 7 12 −5 3 4
det(E) = det   = − det  3 1 0 = −4 det = 16.
0 3 1 0 1 0
4 0 0
0 4 0 0
det([0 0 1 0; 2 3 7 4; 3 1 12 0; 4 0 -5 0])
det([0 2 3 4; 1 7 12 -5; 0 3 1 0; 0 4 0 0])

Exercice 1.12 (F. L E R OUX)


En admettant le fait que les nombres 2001, 1073, 5800 et 8903 sont tous divisibles par 29, montrer que le déterminant
de la matrice
2 0 0 1
 
1 0 7 3 
A= 5 8 0 0 

8 9 0 3

50 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

est aussi divisible par 29 (sans calculer ce déterminant !).

Correction
Le déterminant ne change pas lorsque on ajoute à une colonne une combinaison linéaire des autres colonnes. Si on ajoute à
la quatrième colonne la combinaison linéaire 3i =1 104−i C i on obtient
P

2 0 0 1 2001 69
           
3 1  2 0 
7 3 1073  37 
104−i C i +C 4 = 103 
X  
5 + 10 8 + 10 0 + 0 = 5800 = 29 200
        
i =1
8 9 0 3 8903 307

donc

2 0 0
29 × 69
 
1 0 7
29 × 37 
det(A) = det 
5

8 0
29 × 200
8 9 0
29 × 307
       
1 0 7 2 0 0 2 0 0 2 0 0
= −29 × 69 × det 5 8 0 + 29 × 37 × det 5 8 0 − 29 × 200 × det 1 0 7 + 29 × 307 × det 1 0 7
8 9 0 8 9 0 8 9 0 5 8 0
        
1 0 7 2 0 0 2 0 0 2 0 0
= 29 × −69 × det 5 8 0 + 37 × det 5 8 0 − 200 × det 1 0 7 + 307 × det 1 0 7
8 9 0 8 9 0 8 9 0 5 8 0

Exercice 1.13
Soit n ≥ 2 un entier naturel pair. Une matrice de taille n × n est à remplir par deux joueurs, A (qui veut un déterminant
non nul, commence) et B (qui veut un déterminant nul). Ils ont le droit de mettre n’importe quel réel dans une case
vide de la matrice, chacun leur tour. Trouver une stratégie gagnante pour B .

Correction
Il suffit de faire en sorte qu’une colonne soit identique (ou un multiple) d’une autre.

1.5.2. Espaces vectoriels et bases


Exercice 1.14
Démontrer que l’ensemble
F = (x, y, z) ∈ R3 ¯ x + y + 2z = 0
© ¯ ª

est un sous-espace vectoriel de R3 .

Correction © ª
On montre que F = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de E . En effet

x ∈R
  
x (
x, y, z ∈ R

y  ∈ F ⇐⇒ ⇐⇒ z ∈R
z x + y + 2z = 0 
y = −2z − x.

Donc
κ1
 ¯          
 ¯   1 0   1 0 
F = −κ1 − 2κ2  ¯¯ κ1 , κ2 ∈ R = κ1 −1 + κ2 −2 = Vect −1 , −2 .
¯

κ2 0 1 0 1
 ¯     

Par conséquent F est un sous-espace vectoriel de R3 . (Cette méthode permet également d’en déduire que {(1, −1, 0), (0, −2, 1)}
est une famille génératrice de F .)

© 2020-2021 G. Faccanoni 51
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Exercice 1.15
Démontrer que l’ensemble
½µ ¶ ¯ ¾
a b
∈ M2 (R) ¯¯ a + b = 0
¯
F=
b c
est un sous-espace vectoriel de M2 (R).

Correction
½µ ¶ ¯ ¾ ½ µ ¶ µ ¶¯ ¾ ½µ ¶ µ ¶¾
a b 1 −1 0 0 ¯¯ 1 −1 0 0
∈ M2 (R) ¯ a + b = 0 = a a, c ∈ R = Vect
¯
F= ¯ +c , .
b c −1 0 0 1 ¯ −1 0 0 1
Par conséquent F est un sous-espace vectoriel de M2 (R).

Exercice 1.16
Démontrer que l’ensemble
F = (x, x, y) ∈ R3 ¯ x, y ∈ R
© ¯ ª

est un sous-espace vectoriel de R3 .

Correction

 κ1 ¯¯
  ¯      ¯     
  1 0 ¯¯   1 0 
F = κ1  ¯¯ κ1 , κ2 ∈ R = κ1 1 + κ2 0 ¯¯ κ1 , κ2 ∈ R = Vect 1 , 0 .
κ2 ¯ 0 1 ¯ 0 1
     

Par conséquent F est un sous-espace vectoriel de R3 .

Exercice 1.17
Démontrer que l’ensemble
½µ ¶¯ ¾
a b ¯¯
F= a, b ∈ R
b b ¯
est un sous-espace vectoriel de M2 (R).

Correction
½µ ¶¯ ¾ ½ µ ¶ µ ¶¯ ¾ ½µ ¶ µ ¶¾
a b ¯¯ 1 0 0 1 ¯¯ 1 0 0 1
F= a, b ∈ R = a +b a, b ∈ R = Vect , .
b b ¯ 0 0 1 1 ¯ 0 0 1 1
Par conséquent F est un sous-espace vectoriel de M2 (R).

Exercice 1.18
Démontrer que l’ensemble
½µ ¶ ¯ ¾
a b
∈ M2 (R) ¯¯ a + b + c + d = 0
¯
F=
c d
est un sous-espace vectoriel de M2 (R).

Correction

¶½µ ¯ ¾ ½µ ¶¯ ¾
a b a b
∈ M2 (R) ¯¯ a + b + c + d = 0 = ¯ a, b, c ∈ R
¯ ¯
F=
c d c −a − b − c ¯
½ µ ¶ µ ¶ µ ¶¯ ¾ ½µ ¶ µ ¶ µ ¶¾
1 0 0 1 0 0 ¯¯ 1 0 0 1 0 0
= a +b +c a, b, c ∈ R = Vect , , .
0 −1 0 −1 1 −1 ¯ 0 −1 0 −1 1 −1

Par conséquent F est un sous-espace vectoriel de M2 (R).

52 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Exercice 1.19
Démontrer que l’ensemble
F = a + bx + c x 2 ∈ R2 [x] ¯ a + b + 2c = 0
© ¯ ª

est un sous-espace vectoriel de R2 [x].

Correction
On montre que F = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de R2 [x]. En effet
© ª

F = a + bx + c x 2 ∈ R2 [x] ¯ a + b + 2c = 0
© ¯ ª

= a + (−2c − a)x + c x 2 ¯ a, c ∈ R
© ¯ ª

= a(1 − x) + c(−2x + x 2 ) ¯ a, c ∈ R
© ¯ ª

= Vect 1 − x, −2x + x 2 .
© ª

Par conséquent F est un sous-espace vectoriel de R2 [x].


(On peut également en déduire que {1 − x, −2x + x 2 } est une famille génératrice de F .)

Exercice 1.20
Démontrer que l’ensemble
F = p ∈ R2 [x] ¯ p(1) = 0
© ¯ ª

est un sous-espace vectoriel de R2 [x].

Correction
On montre que F = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de R2 [x]. En effet
© ª

F = a + bx + c x 2 ∈ R2 [x] ¯ a + b + c = 0
© ¯ ª

= a + bx + (−a − b)x 2 ¯ a, c ∈ R
© ¯ ª

= a(1 − x 2 ) + b(x − x 2 ) ¯ a, b ∈ R
© ¯ ª

= Vect 1 − x 2 , x − x 2 .
© ª

Par conséquent F est un sous-espace© vectoriel de Rª 2 [x].


(On peut également en déduire que 1 − x 2 , x − x 2 est une famille génératrice de F .)

Exercice 1.21
Démontrer que l’ensemble
F = p ∈ R2 [x] ¯ p ′ (1) = 0
© ¯ ª

est un sous-espace vectoriel de R2 [x].

Correction
On montre que F = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de R2 [x]. En effet
© ª

F = a + bx + c x 2 ∈ R2 [x] ¯ b + 2c = 0
© ¯ ª

= a − 2c x + c x 2 ¯ a, c ∈ R
© ¯ ª

= a + c(−2x + x 2 ) ¯ a, c ∈ R
© ¯ ª

= Vect 1, −2x + x 2 .
© ª

Par conséquent F est un sous-espace© vectoriel deª R2 [x].


(On peut également en déduire que 1, −2x + x 2 est une famille génératrice de F .)

Exercice 1.22
Montrer que l’ensemble
½ µ ¶ ¯ ¾
a b
F = A= ∈ M2 (R) ¯ det(A) = 0
¯
¯
c d

© 2020-2021 G. Faccanoni 53
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

n’est pas un sous-espace vectoriel de M2 (R).

Correction
µ ¶ µ ¶ µ ¶
1 0 1 1 2 1
Soit A = et A =

deux matrices de F . Comme A + A =

, alors det(A + A′ ) = 1, donc A + A′ ̸∈ F .
0 0 1 1 1 1

Exercice 1.23
Prouver que les familles suivantes sont libres :
1. A = 10 , 11 ⊂ R2
©¡ ¢ ¡ ¢ª

2. B = 10 00 , 00 10 , 01 10 , 01 01 ⊂ M3 (R)
©¡ ¢ ¡ ¢ ¡ ¢ ¡ ¢ª

3. C = 1, t , t 2 ⊂ R2 [t ]
© ª

4. D = { 1, t , t (t − 1), t (t − 1)(t − 2) } ⊂ R3 [t ]

Correction
α+β
³ ´ ¡ ¢
1. α 10 + β 11 = 00 ssi β = 00 ssi α = β = 0 donc la famille est libre.
¡ ¢ ¡ ¢ ¡ ¢


 α=0

 β+γ = 0

2. α 0 0 + β 0 0 + γ 1 0 + δ 1 1 = 0 0 =⇒ =⇒ α = β = γ = δ = 0 donc la famille est libre.
¡1 0¢ ¡0 1¢ ¡0 1¢ ¡0 0¢ ¡0 0¢
 γ+δ = 0


δ=0

3. C’est la base canonique de R3 [t ] donc la famille est libre.


4. α + βt + γt (t − 1) + δt (t − 1)(t − 2) = 0 pour tout t ∈ R ssi α + (β − γ + 2δ)t + (γ − 3δ)t 2 + δt 3 = 0 pour tout t ∈ R ssi
α = β = γ = δ = 0 donc la famille est libre.

Exercice 1.24
Montrer que l’ensemble
½µ ¶ ¯ ¾
a b 2
∈ M2 (R) ¯ ac = b
¯
F= ¯
b c
n’est pas un sous-espace vectoriel de M2 (R).

Correction
µ ¶ µ ¶ µ ¶
1 0 1 1 2 1
Soit A = et A′ = deux matrices de F . Comme A + A′ = , alors det(A + A′ ) = 1, donc A + A′ ̸∈ F .
0 0 1 1 1 1

Exercice 1.25
Montrer que l’ensemble

F = (x, y, z, w) ∈ R4 ¯ ax + b y − z = 0, bx + y − w ≥ 0 ∀a, b ∈ R
© ¯ ª

n’est pas un espace vectoriel.

Correction
Le vecteur v = (0, 0, 0, −1) ∈ F mais −v ̸∈ F donc F n’est pas un espace vectoriel.

Exercice 1.26
Montrer que l’ensemble
F = (x, y, z) ∈ R3 ¯ x 2 + y = 0
© ¯ ª

n’est pas un espace vectoriel.

Correction
Soit u = (a, b, c) et v = (d , e, f ) deux vecteurs de l’ensemble F . Alors a 2 + b = 0 et d 2 + e = 0. Pour que la somme u + v =
(a + d , b + e, c + f ) appartient à F il faut vérifier si (a + d )2 + (b + e) = 0. Or on a a 2 + d 2 + 2ad + b + e = 2ad qui n’est pas
forcement 0 donc F n’est pas un espace vectoriel.

54 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Exercice 1.27
Soient u1 = (1, 1, 1) et u2 = (1, 2, 3) deux vecteurs de R3 . Trouver une condition nécessaire et suffisante sur les réels x, y, z
pour que le vecteur w = (x, y, z) appartient à Vect { u1 , u2 }.

Correction

w ∈ Vect { u1 , u2 } ⇐⇒ ∃ (a, b) ∈ R2 tel que w = au1 + bu2



 a + b = x,

2
⇐⇒ ∃ (a, b) ∈ R tel que a + 2b = y,

a + 3b = z


 a = 2x − y,

2
⇐⇒ ∃ (a, b) ∈ R tel que b = y − x,

z = −x + 2y

⇐⇒ x − 2y + z = 0.

Exercice 1.28
Dans R3 , on considère les vecteurs u = (−2, 3, 7), v = (1, −2, −3) et w = (−1, −1, 6). Montrer que

Vect { u, v, w } = Vect { u, v } = Vect { v, w } = Vect { w, u } .

Correction
Comme w = 3u + 5v, on peut tirer de cette relation l’un des vecteurs en fonction des deux autres, ce qui permet de prouver
que les espaces engendrés par deux des trois vecteurs sont égaux à Vect { u, v, w }.

Exercice 1.29
Déterminer le rang dans R2 de la famille A = { u1 = (3, 1), u2 = (−1, 5) }. Si le rang de la famille est strictement inférieur
au nombre de vecteurs de la famille, on déterminera une ou des relations non triviales entre les vecteurs de la famille.
Le vecteur w = (1, 0) appartient-il à Vect { u1 , u2 } ? Si oui, l’exprimer comme combinaison linéaire de u1 et u2 .

Correction ¡
Comme det 31 −1
¢
5 ̸= 0, rg(A ) = 2 et l’on a rg(A ) = card(A ) : les vecteurs u1 et u2 sont linéaire indépendants. Pour obtenir
l’expression de w en fonction de u1 et u2 on cherche les réels a et b tels que au1 +bu2 = w, ce qui conduit au système linéaire
(
3a − b = 1, 5 −1
⇐⇒ a = , b= ,
a + 5b = 0 16 16

1
d’où la relation w = 16 (5u1 − u2 ).

Exercice 1.30
Déterminer le rang dans R3 de la famille A = { u1 = (−1, 1, −3), u2 = (1, 2, 5), u3 = (1, 7, 1) }. Si le rang de la famille est
strictement inférieur au nombre de vecteurs de la famille, on déterminera une ou des relations non triviales entre les
vecteurs de la famille. Le vecteur w = (1, 0, 0) appartient-il à Vect { u1 , u2 , u3 } ? Si oui, l’exprimer comme combinaison
linéaire de u1 , u2 et u3 .

Correction ³
−1 1 1
´
Comme det 1 2 7 ̸= 0, rg(A ) = 3 et l’on a rg(A ) = card(A ) : les vecteurs u1 , u2 et u3 sont linéairement indépendants, i.e.
−3 5 1
la famille A est libre. Comme card(A ) = dim(R3 ), alors Vect(A ) = R3 et w ∈ Vect(A ). Pour obtenir l’expression de w en
fonction de u1 , u2 et u3 on cherche les réels a, b et c tels que au1 + bu2 + cu3 = w, ce qui conduit au système linéaire
  
 −a + b + c = 1,
  −a + b + c = 1,
  −a + b + c = 1,

3 1
a + 2b + 7c = 0, ⇐⇒ 3b + 8c = 0, ⇐⇒ 3b + 8c = 0, ⇐⇒ a = − , b = −1, c = ,
  
 22 2 2
−3a + 5b + c = 0, 2b − 2c = −3, − 3 c = − 11
3 ,
 

d’où la relation w = 12 (−3u1 − 2u2 + u3 ).

© 2020-2021 G. Faccanoni 55
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Exercice 1.31
Déterminer le rang dans R3 de la famille A = { u1 = (1, 4, −3), u2 = (2, 5, 3), u3 = (−3, 0, −3) }. Si le rang de la famille est
strictement inférieur au nombre de vecteurs de la famille, on déterminera une ou des relations non triviales entre les
vecteurs de la famille. Le vecteur w = (1, 0, 0) appartient-il à Vect(A ) ? Si oui, l’exprimer comme combinaison linéaire
de u1 , u2 et u3 .

Correction ³
1 2 3
´
Comme det 4 5 0 ̸= 0, rg(A ) = 3 et l’on a rg(A ) = card(A ) : les vecteurs u1 , u2 et u3 sont linéaire indépendants, i.e. A est
−3 3 −3
une famille libre. Comme card(A ) = dim(R3 ) alors Vect(A ) = R3 et w ∈ Vect(A ). Pour obtenir l’expression de w en fonction
de u1 , u2 et u3 on cherche les réels a, b et c tels que au1 + bu2 + cu3 = w, ce qui conduit au système linéaire
  
 a + 2b + 3c = 1,
  a + 2b + 3c = 1,
  a + 2b + 3c = 1,

−1 2 3
4a + 5b = 0, ⇐⇒ −3b − 12c = −4, ⇐⇒ −3b − 12c = −4, ⇐⇒ a = , b= ,c= ,
   6 15 10
−3a + 3b − 3c = 0, 9b + 6c = 3, −30c = 9,
  

d’où la relation w = − 61 u1 + 15
2 3
u2 + 10 u3 .

Exercice 1.32
Déterminer le rang dans R3 de la famille A = { u1 = (1, 2, 3), u2 = (3, 2, 1), u3 = (3, 3, 3), u4 = (7, 0, −7) }. Si le rang de la
famille est strictement inférieur au nombre de vecteurs de la famille, on déterminera une ou des relations non triviales
entre les vecteurs de la famille.

Correction
Sans faire de calcul on sait que rg(A ) ≤ 3 donc au moins un des vecteurs de la famille est combinaison linéaire des autres.
Comme 4u3 = 3u1 + 3u2 donc Vect { u1 , u2 , u3 , u4 } = Vect { u1 , u2 , u4 }. Comme 2u4 = −7u1 + 7u2 alors Vect { u1 , u2 , u4 } =
Vect { u1 , u2 }. Comme u1 et u2 ne sont pas colinéaires, ils sont linéairement indépendants et on conclut que rg(A ) = 2.

Exercice 1.33
Déterminer le rang dans R5 de la famille

A = { u1 = (1, 1, 1, 2, 5), u2 = (2, 1, 0, 3, 4), u3 = (−1, 0, −1, 4, 7), u4 = (−9, −2, 1, −1, 9) } .

Si le rang de la famille est strictement inférieur au nombre de vecteurs de la famille, on déterminera une ou des relations
non triviales entre les vecteurs de la famille.

Correction
Sans faire de calcul on sait que 1 ≤ rg(A ) ≤ 4. Comme u4 = 3u1 − 5u2 + 2u3 donc Vect { u1 , u2 , u3 , u4 } = Vect { u1 , u2 , u3 }.
³ 1 2 −1 ´
Comme det 1 1 0 ̸= 0, on conclut que rg(A ) = 3.
1 0 −1

Exercice 1.34
Dans R3 , montrer que l’espace vectoriel engendré par les vecteurs

u1 = (2, 3, −1), u2 = (1, −1, −2)

et l’espace vectoriel engendré par les vecteurs

v1 = (3, 7, 0), v2 = (5, 0, −7)

sont les mêmes.

Correction
Pour montrer l’égalité des deux ensembles, on va prouver les deux inclusions réciproques : Vect { v1 , v2 } ⊂ Vect { u1 , u2 } et
Vect { u1 , u2 } ⊂ Vect { v1 , v2 }.
① Vect { v1 , v2 } ⊂ Vect { u1 , u2 } : il suffit de montrer que v1 ∈ { u1 , u2 } et v2 ∈ { u1 , u2 }, ce qui suit de la remarque v1 = 2u1 −u2
et v2 = u1 + 3u2 .
② Vect { u1 , u2 } ⊂ Vect { v1 , v2 } : il suffit de montrer que u1 ∈ { v1 , v2 } et u2 ∈ { v1 , v2 }, ce qui suit de la remarque 7u1 =
3v1 + v2 et 7u2 = −v1 + 2v2 .

56 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Exercice 1.35
Montrer que l’espace vectoriel engendré par les vecteurs

u1 = (1, 2, −1, 3), u2 = (2, 4, 1, −2), u3 = (3, 6, 3, −7)

et l’espace vectoriel engendré par les vecteurs

v1 = (1, 2, −4, 11), v2 = (2, 4, −5, 14)

sont les mêmes.

Correction
On note U l’espace vectoriel engendré par les vecteurs u1 , u2 et u3 et V l’espace vectoriel engendré par les vecteurs v1 , v2 .
Remarquons tout d’abord que si U = V alors dim(U ) = dim(V ) = 2 donc la famille { u1 , u2 , u3 } n’est pas libre.
Pour démontrer que U = V on montre que U ⊂ V et que V ⊂ U .
⋆ Pour montrer que U ⊂ V il suffit de montrer que chaque ui , i = 1, 2, 3, est combinaison linéaire des vecteurs v1 , v2 :


 1 = a + 2b,


 2 = 2a + 4b,
u1 = av1 + bv2 ⇐⇒ ⇐⇒ a = −1, b = 1


 −1 = −4a − 5b,

3 = 11a + 14b,



 2 = a + 2b,


 4 = 2a + 4b,
u2 = av1 + bv2 ⇐⇒ ⇐⇒ a = −4, b = 3


 1 = −4a − 5b,

−2 = 11a + 14b,



 3 = a + 2b,


 6 = 2a + 4b,
u3 = av1 + bv2 ⇐⇒ ⇐⇒ a = −7, b = 5


 3 = −4a − 5b,

−7 = 11a + 14b,

⋆ Pour montrer que V ⊂ U il suffit de montrer que chaque vi , i = 1, 2, est combinaison linéaire des vecteurs u1 , u2 et u3 :


 1 = a + 2b + 3c,


 2 = 2a + 4b + 6c,
v1 = au1 + bu2 + cu3 ⇐⇒ ⇐⇒ a = 3 + κ, b = −1 − 2κ, c = κ,


 −4 = −a + b + 3c,

11 = 3a − 2b − 7c,



 2 = a + 2b + 3c,


 4 = 2a + 4b + 6c,
v2 = au1 + bu2 + cu3 ⇐⇒ ⇐⇒ a = 4 − κ, b = −1 − 2κ, c = κ,


 −5 = −a + b + 3c,

14 = 3a − 2b − 7c,

Exercice 1.36
Soient p 0 (x) = x +1, p 1 (x) = x 2 + x et p 2 (x) = 2x 2 +1 trois polynômes de R2 [x]. Démontrer que Vect p 0 , p 1 , p 2 = R2 [x].
© ª

Correction
Méthode 1 : pour prouver l’égalité de deux ensembles A et B , on peut démontrer que A ⊂ B et que B ⊂ A. Pour démontrer
que A ⊂ B , on considère un élément quelconque de A et on démontre qu’il appartient à B .
⋆ Comme p 0 , p 1 , p 2 ∈ R2 [x] qui est un espace vectoriel, touteªcombinaison linéaire de ces trois polynômes est
encore un élément de R2 [x], par conséquent Vect p 0 , p 1 , p 2 ⊂ R2 [x].
©

⋆ R2 [x] ⊂ Vect p 0 , p 1 , p 2 ssi pour tout q ∈ R2 [x] il existe des réels λ0 , λ1 , λ2 tels que q = λ0 · p 0 + λ1 · p 1 + λ2 · p 2 :
© ª

q(x) = a + bx + c x 2 ∈ Vect p 0 , p 1 , p 2
© ª

⇐⇒ ∃ (λ0 , λ1 , λ2 ) ∈ R3 tel que q = λ0 · p 0 + λ1 · p 1 + λ2 · p 2

© 2020-2021 G. Faccanoni 57
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

⇐⇒ ∃ (λ0 , λ1 , λ2 ) ∈ R3 tel que a + bx + c x 2 = λ0 (x + 1) + λ1 (x 2 + x) + λ2 (2x 2 + 1)


⇐⇒ ∃ (λ0 , λ1 , λ2 ) ∈ R3 tel que a + bx + c x 2 = (λ0 + λ2 ) + (λ0 + λ1 )x + (λ1 + 2λ2 )x 2

 λ0 + λ2 = a,


⇐⇒ ∃ (λ0 , λ1 , λ2 ) ∈ R3 tel que λ0 + λ1 = b,

λ1 + 2λ2 = c.

¯ ¯
¯1 0 1 ¯
Comme ¯¯1 1 0¯¯ = 3, le système est de Cramer et on peut conclure que R2 [x] ⊂ Vect p 0 , p 1 , p 2 . Après résolu-
¯ ¯ © ª
¯0 1 2 ¯
tion du système linéaire on trouve q = bp 0 + (−a + b + c)p 1 + (a − b)p 2 .
© ª © ª
Méthode 2 : comme card( p 0 , p 1 , p 2 ) = 3 = dim(R2 [x]), il suffit de prouver que la famille p 0 , p 1 , p 2 est libre, i.e. “λ0 ·
p 0 + λ1 · p 1 + λ2 · p 2 = 0 =⇒ λ0 = λ1 = λ2 = 0” :

λ0 · p 0 + λ1 · p 1 + λ2 · p 2 = 0
⇐⇒ λ0 (x + 1) + λ1 (x 2 + x) + λ2 (2x 2 + 1) = 0
⇐⇒ (λ0 + λ2 ) + (λ0 + λ1 )x + (λ1 + 2λ2 )x 2 = 0

 λ0 + λ2 = 0,


⇐⇒ λ0 + λ1 = 0,

λ1 + 2λ2 = 0.

¯ ¯
¯1 0 1¯¯
0¯¯ = 3, le système admet l’unique solution nulle et on peut conclure que Vect p 0 , p 1 , p 2 = R2 [x].
¯ © ª
Comme ¯¯1 1
¯0 1 2¯

Exercice 1.37
Étudier si la famille
F = { u = (2, 3), v = (4, 5) }
de l’espace vectoriel R2 est libre. Si la famille est liée, trouver une relation entre les vecteurs de cette famille.

Correction
On dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

Ici
( (
p
X 2a 1 + 4a 2 = 0, a 1 = 0,
a i · ui = 0E ⇐⇒ a 1 u + a 2 v = (0, 0) ⇐⇒ ⇐⇒
i =1 3a 1 + 5a 2 = 0 a 2 = 0,

donc la famille est libre.


(On peut remarquer que, F étant libre et comme card(F ) = 2, elle engendre un espace vectoriel de dimension 2. Puisque
F ⊂ R2 et dim(R2 ) = 2, on conclut que Vect(F ) = R2 .)

Exercice 1.38
Étudier si la famille
F = { u = (1, 0, 1), v = (2, 1, 0), w = (0, −1, 2) }
3
de l’espace vectoriel R est libre. Si la famille est liée, trouver une relation entre les vecteurs de cette famille.

Correction
On dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

58 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Ici
 
p
X  a 1 + 2a 2 = 0,
  a 1 = −2κ,

a i · ui = 0E ⇐⇒ a 1 u + a 2 v + a 3 w = (0, 0, 0) ⇐⇒ a 2 − a 3 = 0, ⇐⇒ a 2 = κ,
i =1
 
a 1 + 2a 3 = 0 a3 = κ
 

donc la famille est liée. De plus, en prenant par exemple κ = 1, on a w = 2 · u − v.

Exercice 1.39
Étudier si la famille
     
 3 2 1 1 1 1 
F = A = 1 2 3 , B = 1 1 1  , C = I3
2 1 3 1 1 1
 

de l’espace vectoriel M3 (R) est libre. Si la famille est liée, trouver une relation entre les vecteurs de cette famille.

Correction
On dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

Ici

 3a 1 + a 2 + a 3 = 0,






 2a 1 + a 2 = 0,




 a 1 + a 2 = 0,
 
 a 1 + a 2 = 0,  a 1 = 0,


p  
a i · ui = 0E ⇐⇒ a 1 A + a 2 B + a 3 C = O3
X
⇐⇒ 2a 1 + a 2 + a 3 = 0, ⇐⇒ a 2 = 0,
i =1
 
3a 1 + a 2 = 0, a 3 = 0,

 







 2a 1 + a 2 = 0,

a 1 + a 2 = 0,





3a 1 + a 2 + a 3 = 0.

donc la famille est libre.

Exercice 1.40
Considérons les matrices d’ordre 2 à coefficients réels

κ κ
µ ¶ µ ¶ µ ¶
0 0 1 1
A= , B= , C= .
κ 0 −2 0 −1 1

Pour quelles valeurs de κ ∈ R les trois matrices forment une famille libre ?

Correction
Nous pouvons tout de suite dire que si κ = 0 alors la famille n’est pas libre.
La famille F = { A, B, C } est libre lorsque

αA + βB + γC = O2 =⇒ α = β = γ = 0.

On a 
 β + κγ = 0,
 β = 0,
 

µ ¶  κβ + γ = 0,
 
0 0
αA + βB + γC = =⇒ =⇒ κα = 0,
0 0  κα − 2β − γ = 0, 
γ = 0.

 
γ = 0,

La famille est libre ssi κ ̸= 0.

© 2020-2021 G. Faccanoni 59
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Exercice 1.41
Étudier si la famille
F = p 0 (x) = x 3 + x 2 , p 1 (x) = x 2 + x, p 2 (x) = x + 1, p 3 (x) = x 3 + 1
© ª

de l’espace vectoriel R3 [x] est libre. Si la famille est liée, trouver une relation entre les vecteurs de cette famille.

Correction
On dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

Ici
n
a i · ui = 0E ⇐⇒ a 0 p 0 + a 1 p 1 + a 2 p 2 + a 3 p 3 = 0 ⇐⇒ (a 2 + a 3 ) + (a 1 + a 2 )x + (a 0 + a 1 )x 2 + (a 0 + a 3 )x 3 = 0
X
i =0
 

 a 2 + a 3 = 0, 
 a 0 = κ,

 

 a + a = 0,  a = −κ,
1 2 1
⇐⇒ ⇐⇒ pour tout κ ∈ R


 a 0 + a 1 = 0, 

 a 2 = κ,
 
a 0 + a 3 = 0, a 3 = −κ,
 

donc la famille est liée. De plus, en prenant par exemple κ = 1 on a p 3 = p 0 − p 1 + p 2 .

Exercice 1.42
On considère dans Rn , n ≥ 4, une famille de 4 vecteurs linéairement indépendants : { e1 , e2 , e3 , e4 }. Les familles suivantes
sont libres ?
① { e1 , 2e2 , e3 }
② { e1 , e3 }
③ { e1 , 2e1 + e4 , e4 }
④ { 3e1 + e3 , e3 , e2 + e3 }
⑤ { 2e1 + e2 , e1 − 3e2 , e4 , e2 − e1 }

Correction
① Oui
② Oui
③ Non
④ Oui car α(3e1 + e3 ) + β(e3 ) + γ(e2 + e3 ) = 0 =⇒ 3αe1 + γe2 + (α + β + γ)e3 = 0. Comme e1 , e2 , e3 sont linéairement
indépendants, cela implique 3α = γ = α + β + γ = 0 =⇒ α = β = γ = 0
⑤ Non : −7(e2 − e1 ) = 2(2e1 + e2 ) + 3(e1 − 3e2 )

Exercice 1.43
On considère dans Rn , n ≥ 4, une famille de 4 vecteurs linéairement indépendants : { e1 , e2 , e3 , e4 }. Les familles suivantes
sont libres ?
① { e1 + e2 }
② { e1 + e2 , e2 }
③ { e1 + e2 , e1 − e2 }
④ { e1 + e2 , e1 − e2 , e1 + e3 , e1 − e3 }
⑤ { 2e1 + e2 , e1 − 3e2 , e4 , e2 − e1 }

Correction
① Oui
② Oui

60 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

③ Oui
④ Non
⑤ Non : −7(e2 − e1 ) = 2(2e1 + e2 ) + 3(e1 − 3e2 )

Exercice 1.44
On considère dans Rn une famille de 4 vecteurs linéairement indépendants : { e1 , e2 , e3 , e4 }. Les familles suivantes sont
libres ?
① { 2e1 , e2 , −e3 }
② { e1 , −e3 }
③ { e1 , 3e1 + e4 , e4 }
④ { 3e1 + e3 , e3 , e2 + e3 }
⑤ { 2e1 + e2 , e1 − 3e2 , e4 , e2 − e1 }

Correction
① Oui
② Oui
③ Non
④ Oui
⑤ Non : −7(e2 − e1 ) = 2(2e1 + e2 ) + 3(e1 − 3e2 )

Exercice 1.45
Écrire la base canonique de R3 , la base canonique de M2 (R) et la base canonique de R2 [t ].

     
Correction  1 0 0 
1. Base canonique de R3 : 0 , 1 , 0
0 0 1
 
½µ ¶ µ ¶ µ ¶ µ ¶¾
1 0 0 1 0 0 0 0
2. Base canonique de M2 (R) : , , ,
0 0 0 0 1 0 0 1
3. Base canonique de R2 [t ] : 1, t , t 2
© ª

Exercice 1.46
Soit V un espace vectoriel et F une famille libre d’éléments de V . Donner la définition de card(F ) et de dim(V ). Si
dim(V ) = card(F ), que peut-on conclure ?

Correction
1. Le cardinal d’une famille est le nombre d’éléments qui la constitue.
2. La dimension d’un espace vectoriel est le nombre d’éléments d’une de ses bases, i.e. le cardinal d’une de ses bases.
3. Si la dimension de l’espace vectoriel V coïncide avec le cardinal de la famille F contenue dans V , alors la famille F
constitue une base de V . Attention : si la famille F n’est pas libre, on ne peut rien conclure.

Exercice 1.47
Vrai ou Faux ?
① Toute famille génératrice contient une base.
② La dimension d’un espace vectoriel est le nombre de vecteur de cet espace.
③ Toute famille contenant une famille liée est liée.
④ La base de R3 [x] est 1, x, x 2 , x 3 .
© ª

⑤ Si E = Vect { u, v, w } et si { u, v, w } est une famille libre, alors dim(E ) = 3.


© ª © ª
⑥ Vect u1 , u2 , . . . , up = Vect u1 , u2 , . . . , up−1 si et seulement si up est combinaison linéaire de u1 , u2 , . . . , up−1 .
⑦ Soient u, v et w trois vecteurs d’un espace vectoriel E . On suppose que deux vecteurs parmi ces trois ne sont pas
colinéaires. Alors la famille { u, v, w } est libre.

© 2020-2021 G. Faccanoni 61
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Correction
① Vrai (dans le sens que d’une famille génératrice on peut extraire une famille libre qui génère le même espace vectoriel).
② Faux. Un espace vectoriel de dimension finie a une infinité de vecteurs. La dimension d’un espace vectoriel est le
nombre de vecteur d’une de ces bases.
③ Vrai. La relation non trivial qui lie des vecteurs de la plus petite des deux familles est vraie dans la plus grande.
④ Incorrect. On ne peut pas parler de «la» base de R3 [x] car il y en a une infinité.
⑤ Vrai. La famille { u, v, w } est une base de E car libre et génératrice de E .
⑥ Vrai.
⑦ Faux. Par exemple si w = u + v, deux vecteurs parmi ces trois ne sont pas colinéaires mais la famille { u, v, w } est liée.

Exercice 1.48
Considérons l’ensemble
F = (x, x, y, y) ¯ x, y ∈ R .
© ¯ ª

1. Montrer que F est un sous-espace vectoriel de R4 .


2. Donner une base de F et sa dimension.

Correction
1. F est un sous-espace vectoriel de R4 car

κ1 ¯
  ¯      ¯     
   1 0 ¯¯   1 0 
κ

   ¯¯ 
   
   
1 0
 + κ2   ¯ κ1 , κ2 ∈ R = Vect   , 0 .
1
    
1 ¯
κ1 , κ2 ∈ R = κ1 
  ¯
F= 
 κ2 ¯ 0 1 ¯ 0 1 
   ¯       ¯      

    
κ2 ¯
    
0 1 ¯ 0 1

2. Les deux vecteurs u1 = (1, 1, 0, 0) et u2 = (0, 0, 1, 1) constituent une famille génératrice de F . On vérifie aisément que
cette famille est libre donc elle est une base de F . Comme card({ u1 , u2 }) = 2, alors dim(F ) = 2.

Exercice 1.49
Considérons l’ensemble
F = a + ax 2 + bx 4 ¯ a, b ∈ R .
© ¯ ª

1. Montrer que F est un sous-espace vectoriel de R4 [x].


2. Donner une base de F et sa dimension.

Correction
1. F est un sous-espace vectoriel de R4 [x] car

F = a + ax 2 + bx 4 ¯ (a, b) ∈ R2 = a(1 + x 2 ) + bx 4 ¯ (a, b) ∈ R2 = Vect 1 + x 2 , x 4 .


© ¯ ª © ¯ ª © ª

2. Les deux polynômes p(x) = 1 + x 2 et q(x) = x 4 constituent une


© famille
ª génératrice de F . On vérifie aisément que cette
famille est libre donc elle est une base de F . Comme card( p, q ) = 2, alors dim(F ) = 2.

Exercice 1.50
Considérons l’ensemble
F = (x, y, z) ∈ R3 ¯ 2x + y + z = 0 .
© ¯ ª

1. Montrer que F est un sous-espace vectoriel de R3 .


2. Donner une base de F et sa dimension.

Correction
1. F est un sous-espace vectoriel de R3 car

κ1
 ¯      ¯     
 ¯   1 0 ¯¯   1 0 
κ2  ¯ κ1 , κ2 ∈ R = κ1  0  + κ2  1  ¯ κ1 , κ2 ∈ R = Vect  0  ,  1  .
¯
F=  ¯ ¯
−2κ1 − κ2 ¯
  
−2 −1 ¯
 
−2 −1

62 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

2. Les deux vecteurs u1 = (1, 0, −2) et u2 = (0, 1, −1) constituent une famille génératrice de F . On vérifie aisément que
cette famille est libre donc elle est une base de F . Comme card({ u1 , u2 }) = 2, alors dim(F ) = 2.

Exercice 1.51
Considérons l’ensemble
 ¯ 
 a b 0 ¯ 
0  ¯¯ a, b, c ∈ R .
¯
F = b a
c 0 a +b ¯
 

1. Montrer que F est un sous-espace vectoriel de M3 (R).


2. Donner une base de F et sa dimension.

Correction
1. F est un sous-espace vectoriel de M3 (R) car
 ¯        ¯ 
 a b 0 ¯   1 0 0 0 1 0 0 0 0 ¯¯ 
0  ¯¯ (a, b, c) ∈ R3 = κ1 0 1 0  + κ 2 1 0  + κ 3 0 0 ¯¯ κ1 , κ2 , κ3 ∈ R
¯
F = b a 0 0
c 0 a +b ¯ 0 0 1 0 0 1 1 0 0 ¯
   
     
 1 0 0 0 1 0 0 0 0 
= Vect 0 1 0 , 1 0 0 , 0 0 0 .
0 0 1 0 0 1 1 0 0
 

   
0 1 0 0 0 0
2. Les trois matrice I3 , A = 1 0 0 et B = 0 0 0 constituent une famille génératrice de F . On vérifie s’il s’agit
0 0 1 1 0 0
d’une famille libre : on dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

Ici


 a 1 = 0,





 a 2 = 0,




 0 = 0,
 
 a 2 = 0,  a 1 = 0,


p  
a i · ui = 0E ⇐⇒ a 1 I3 + a 2 A + a 3 B = O3 ⇐⇒
X
a 1 = 0, ⇐⇒ a 2 = 0,
i =1
 
0 = 0, a 3 = 0,

 




 a 3 = 0,




0 = 0,





a 1 + a 2 = 0,

donc la famille F = { I3 , A, B } est libre et est une base de F . Comme card(F ) = 3, alors dim(F ) = 3.

Exercice 1.52
Considérons l’ensemble
F = p ∈ R3 [x] ¯ p(0) = p(1) = 0 .
© ¯ ª

1. Montrer que F est un sous-espace vectoriel de R3 [x].


2. Donner une base de F et sa dimension.

Correction
1. F est un sous-espace vectoriel de R3 [x] car
n ³ ´ ³ ´¯ o
F = { x(x − 1)(ax + b) | a, b ∈ R } = a x 2 (x − 1) + b x(x − 1) ¯ a, b ∈ R = Vect x 2 (x − 1), x(x − 1) .
¯ © ª

© 2020-2021 G. Faccanoni 63
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Si on n’a pas remarqué que 0 et 1 sont racines des polynômes de F , il suffit de remarquer que

F = p ∈ R3 [x] ¯ p(0) = p(1) = 0


© ¯ ª

= a + bx + c x 2 + d x 3 ∈ R3 [x] ¯ a = 0 et a + b + c + d = 0
© ¯ ª

= bx + c x 2 + (−b − c)x 3 ¯ b, c ∈ R
© ¯ ª

= b(x − x 3 ) + c(x 2 − x 3 ) ¯ b, c ∈ R
© ¯ ª

= Vect x − x 3 , x 2 − x 3 .
© ª

Par conséquent F est un sous-espace vectoriel de R3 [x].


2. Les deux polynômesªp(x) = x − x 3 et q(x) = x 2 − x 3 constituent une famille génératrice de F . On montre que la famille
F = x − x 3 , x 2 − x 3 est une base de l’espace vectoriel F ; en effet
©

α(x − x 3 ) + β(x 2 − x 3 ) = 0 ∀x ∈ R ⇐⇒ αx + βx 2 + (−α − β)x 3 = 0 ∀x ∈ R ⇐⇒ α = β = 0.

Comme card(F ) = 2, alors dim(F ) = 2.

Exercice 1.53
Soit R3 [t ] l’espace vectoriel des polynômes de degré au plus 3. Soit U = p ∈ R3 [t ] ¯ p(−1) = 0 . Montrer que U est un
© ¯ ª

sous-espace vectoriel de R3 [t ] et en donner une base.

Correction
On montre que U = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de R3 [x]. En effet
© ª

U = a + bx + c x 2 + d x 3 ∈ R3 [x] ¯ a − b + c − d = 0
© ¯ ª

= a + bx + c x 2 + (a − b + c)x 3 ¯ a, b, c ∈ R
© ¯ ª

= a(1 + x 3 ) + b(x − x 3 ) + c(x 2 + x 3 ) ¯ a, b, c ∈ R


© ¯ ª

= Vect 1 + x 3 , x − x 3 , x 2 + x 3 .
© ª

© vectoriel de R3 [x]. ª
Par conséquent U est un sous-espace
(On peut également en déduire que 1 + x 3 , x − x 3 , x 2 + x 3 est une famille génératrice de U )

Exercice 1.54
Démontrer que l’ensemble
F = p ∈ R3 [x] ¯ p(0) = p ′ (1) = 0
© ¯ ª

est un sous-espace vectoriel de R3 [x] et en donner une base.

Correction
On montre que F = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de R3 [x]. En effet
© ª

F = p ∈ R3 [x] ¯ p(0) = p ′ (1) = 0


© ¯ ª

= a + bx + c x 2 + d x 3 ∈ R3 [x] ¯ a = 0 et b + 2c + 3d = 0
© ¯ ª
½ ¯ ¾
−b − 2c 3 ¯¯
= bx + c x 2 + x ¯ b, c ∈ R
3
= b(x − x 3 /3) + c(x 2 − 2x 3 /3) ¯ b, c ∈ R
© ¯ ª
½ ¾
1 2
= Vect x − x 3 , x 2 − x 3 .
3 3

Par conséquent F est un sous-espace vectoriel deª R3 [x].


On montre que la famille F = x − 13 x 3 , x 2 − 32 x 3 est une base de l’espace vectoriel F ; en effet
©

α(x − x 3 /3) + β(x 2 − 2x 3 /3) = 0 ∀x ∈ R ⇐⇒ αx + βx 2 + (−α − 2β)x 3 /3 = 0 ∀x ∈ R ⇐⇒ α = β = 0.

64 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Exercice 1.55
Considérons l’espace vectoriel M2 (R) des matrices carrées d’ordre 2 avec les entrées réelles. Soient a, b et c trois
nombres réels quelconques. Considérons le sous-ensemble
½ ¯ µ ¶¾
a +b c
E = A ∈ M2 (R) ¯¯ A =
¯
.
2c −b

1. Montrer que E est un sous-espace vectoriel de M2 (R).


2. Donner une base explicite de E .

Correction
1. E est un sous-espace vectoriel de M2 (R) car
½µ ¶¯ ¾ ½ µ ¶ µ ¶ µ ¶¯ ¾
a +b c ¯¯ 3 1 0 1 0 0 1 ¯¯
E= (a, b, c) ∈ R = a +b +c a, b, c ∈ R
2c −b ¯ 0 0 0 −1 2 0 ¯
½µ ¶ µ ¶ µ ¶¾
1 0 1 0 0 1
= Vect , , .
0 0 0 −1 2 0
µ ¶ µ ¶ µ ¶
1 0 1 0 0 1
2. Les trois matrice A = ,B= et C = constituent une famille génératrice de E . On vérifie s’il s’agit
0 0 0 −1 2 0
d’une famille libre : on dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

Ici

 a 1 + a 2 = 0, 
 a 1 = 0,


p 
 a = 0, 
3
a i · ui = 0E ⇐⇒ a 1 A + a 2 B + a 3 C = O2
X
⇐⇒ ⇐⇒ a 2 = 0,
i =1
 2a 3 = 0, 
a 3 = 0,

 

−a 2 = 0,

donc la famille est libre et est une base de E . Comme card { A, B, C } = 3, alors dim(E ) = 3.

Exercice 1.56
Trouver une base de l’espace engendré par les polynômes dans les deux familles suivantes
1. W = 1 + 2x + 3x 2 , x + 2x 2 , 1 + 2x + 4x 2 , 1 + x
© ª

2. W = 2 + 2x 2 , 2 + x − x 2 , 3 + x + x 2 , 3 + x + 3x 2
© ª

Correction
1. Notons

w 1 (x) = 1 + 2x + 3x 2 , w 2 (x) = x + 2x 2 , w 3 (x) = 1 + 2x + 4x 2 , w 4 (x) = 1 + x.

W est une famille non libre si et seulement si

∃(a, b, c, d ) ̸= (0, 0, 0, 0) | aw 1 (x) + bw 2 (x) + c w 3 (x) + d w 4 (x) = 0 ⇐⇒


∃(a, b, c, d ) ̸= (0, 0, 0, 0) | (a + c + d ) + (2a + b + 2c + d )x + (3a + 2b + 4c)x 2 = 0 ⇐⇒
  
 a +c+d =0, a +c +d =0, a +c+d =0,
2a +b+2c+d =0, ⇐⇒ b −d =0, ⇐⇒ b −d =0, ⇐⇒
3a+2b+4c =0 2b+c−3d =0 c−d =0
  

(a, b, c, d ) = (−2κ, κ, κ, κ), κ ∈ R.

Autrement dit w 4 = 2w 1 − w 2 − w 3 . On a alors

Vect { w 1 , w 2 , w 3 , w 4 } = Vect { w 1 , w 2 , w 3 } .

© 2020-2021 G. Faccanoni 65
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Vérifions si la famille { w 1 , w 2 , w 3 } est libre : on dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

Ici
n
X
a i · ui = 0E ⇐⇒ aw 1 + bw 2 + c w 3 = 0
i =0
⇐⇒ (a + c) + (2a + b + 2c)x + (3a + 2b + 4c)x 2 = 0

 a +c=0,
⇐⇒ 2a +b+2c=0, ⇐⇒ a = b = c = 0
3a+2b+4c=0

donc la famille est libre. Par conséquent { w 1 , w 2 , w 3 } est une base de l’espace Vect(W ).
2. Notons

w 1 (x) = 2 + 2x 2 , w 2 (x) = 2 + x − x 2 , w 3 (x) = 3 + x + x 2 , w 4 (x) = 3 + x + 3x 2 .

W est une famille non libre si et seulement si

∃(a, b, c, d ) ̸= (0, 0, 0, 0) | aw 1 (x) + bw 2 (x) + c w 3 (x) + d w 4 (x) = 0 ⇐⇒


∃(a, b, c, d ) ̸= (0, 0, 0, 0) | (2a + 2b + 3c + 3d ) + (b + c + d )x + (2a − b + c + 3d )x 2 = 0 ⇐⇒
  
2a+2b+3c+3d =0, 2a+2b+3c+3d =0, 2a+2b+3c+3d =0,
b +c +d =0, ⇐⇒ b +c +d =0, ⇐⇒ b +c +d =0, ⇐⇒
2a −b +c+3d =0, b+4c+6d =0, 3c+5d =0,
  

(a, b, c, d ) = (κ, 2κ, −5κ, 3κ), κ ∈ R.

Autrement dit 3w 4 = −w 1 − 2w 2 + 5w 3 . On a alors

Vect { w 1 , w 2 , w 3 , w 4 } = Vect { w 1 , w 2 , w 3 } .

Vérifions si la famille { w 1 , w 2 , w 3 } est libre : on dit qu’une famille F = u1 , . . . , up est libre lorsque
© ª

p
X
a i · ui = 0E =⇒ ai = 0 ∀ i .
i =1

Ici
n
X
a i · ui = 0E ⇐⇒ aw 1 + bw 2 + c w 3 = 0
i =0
⇐⇒ (2a + 2b + 3c) + (b + c)x + (2a − b + c)x 2 = 0

2a+2b+3c=0,
⇐⇒ b +c=0, ⇐⇒ a = b = c = 0
b+4c=0,

donc la famille est libre. Par conséquent { w 1 , w 2 , w 3 } est une base de l’espace Vect(W ).

Exercice 1.57
Soit
½ µ ¶ µ ¶ µ ¶ µ ¶¾
1
0 1 1 0 1 0 0
F = B1 = , B2 = , B3 = , B4 =
0
1 1 0 1 1 0 1

une famille d’éléments de l’espace vectoriel E = M ∈ M2 (R) ¯ M = MT


© ¯ ª
.
1. Montrer que F est génératrice de E , i.e. E = Vect(F ) ;
2. montrer que F n’est pas libre ;
3. extraire de F une base de E .

66 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Correction
On remarque que
½µ ¶¯ ¾
a b ¯¯
E= a, b, c ∈ R
b c ¯
et Bi ∈ E pour tout i = 1, 2, 3, 4.

1. La famille F est génératrice de E si E = Vect(F ), i.e. s’il existe λ1 , λ2 , λ3 et λ4 ∈ R tels que


µ ¶
a b
= λ1 B1 + λ2 B2 + λ3 B3 + λ4 B4 , ∀a, b, c ∈ R
b c

i.e. si et seulement si, pour tout a, b, c ∈ R, le système linéaire suivant admet (au moins) une solution


 λ1 + λ2 = a,

 λ + λ = b,

2 3
λ
 2

 + λ3 = b,
λ1 + λ3 + λ4 = c.

La matrice augmentée associée à ce système est

1 1 0 0 a
 
 0 1 1 0 b 
[A|b] =  .
 0 1 1 0 b 
1 0 1 1 c
¯1 1 0¯
Comme la seconde et la troisième ligne sont égales alors rg(A) et rg([A|b]) sont < 4. Puisque ¯ 0 1 1 ¯ ̸= 0, alors rg(A) =
¯ ¯
101
rg([A|b]) = 3 : le système admet une solution (non unique car le rang n’est pas maximal).

2. F n’est pas libre car 2B4 = B1 − B2 + B3

3. On en extrait par exemple la famille B = { B1 , B2 , B3 } qui est une base de E car


(i) Bi ∈ E pour tout i = 1, 2, 3,
(ii) card(B) = dim(E ),
(iii) B est libre car la combinaison linéaire λ1 B1 + λ2 B2 + λ3 B3 = 00 00 a comme unique solution λ1 = λ2 = λ3 = 0.
¡ ¢

Exercice 1.58
Soit
½ µ ¶ µ ¶ µ ¶ µ ¶¾
1 0 1 1 0 1 0 0
F = B1 = , B2 = , B3 = , B4 =
0 0 1 0 1 1 0 1

une famille d’éléments de l’espace vectoriel E = M ∈ M2 (R) ¯ M = MT


© ¯ ª
.
1. Montrer que F est génératrice de E , i.e. E = Vect(F ) ;
2. montrer que F n’est pas libre ;
3. extraire de F une base de E .

Correction
On remarque que
½µ ¶¯ ¾
a b ¯¯
E= a, b, c ∈ R
b c ¯
et Bi ∈ E pour tout i = 1, 2, 3, 4.

1. La famille F est génératrice de E si E = Vect(F ), i.e. s’il existe λ1 , λ2 , λ3 et λ4 ∈ R tels que


µ ¶
a b
= λ1 B1 + λ2 B2 + λ3 B3 + λ4 B4 , ∀a, b, c ∈ R
b c

© 2020-2021 G. Faccanoni 67
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

i.e. si et seulement si, pour tout a, b, c ∈ R, le système linéaire suivant admet (au moins) une solution


 λ1 + λ2 = a,

 λ + λ = b,

2 3


 λ2 + λ3 = b,
λ3 + λ4 = c.

La matrice augmentée associée à ce système est

1 1 0 0 a
 
 0 1 1 0 b 
[A|b] =  .
 0 1 1 0 b 
0 0 1 1 c
¯1 1 0¯
Comme la seconde et la troisième ligne sont égales alors rg(A) et rg([A|b]) sont < 4. Puisque ¯ 0 1 1 ¯ ̸= 0, alors rg(A) =
¯ ¯
001
rg([A|b]) = 3 : le système admet une solution (non unique car le rang n’est pas maximal).
2. F n’est pas libre car B4 = B1 − B2 + B3
3. On en extrait par exemple la famille B = { B1 , B2 , B3 } qui est une base de E car
(i) Bi ∈ E pour tout i = 1, 2, 3,
(ii) card(B) = dim(E ),
(iii) B est libre car la combinaison linéaire λ1 B1 + λ2 B2 + λ3 B3 = 00 00 a comme unique solution λ1 = λ2 = λ3 = 0.
¡ ¢

Exercice 1.59
Soit

q 0 (x) = 1 + x + x 2 + x 3 ,
q 1 (x) = x + x 2 + x 3 ,
q 2 (x) = x 2 + x 3 ,
q 3 (x) = x 3 ,

quatre polynômes de R3 [x].


1. Démontrer que l’ensemble q 0 , q 1 , q 2 , q 3 est une base de R3 [x] qu’on notera B.
© ª

2. Notons C = { c 0 , c 1 , c 2 , c 3 } la base canonique de R3 [x]. Calculer coord(c i , B) et coord(q i , C ).


3. Exprimer le polynôme a + bx + cx 2 + d x 3 dans la base B.

Correction
1. Pour montrer que l’ensemble q 0 , q 1 , q 2 , q 3 est© une base ªde R3 [x] il faut montrer qu’il s’agit d’une famille libre et
© ª

génératrice de R3 [x]. On dit qu’une famille F = u1 , . . . , up est libre lorsque

p
X
a i · ui = 0E =⇒ a i = 0 ∀ i = 1, . . . , p.
i =1

Ici
n
X
a i · ui = 0E ⇐⇒ a 0 q 0 + a 1 q 1 + a 2 q 2 + a 3 q 3 = 0
i =0


 a 0 = 0,


 a = 0,
1
⇐⇒ a 0 + (a 0 + a 1 )x + (a 0 + a 1 + a 2 )x 2 + (a 0 + a 1 + a 2 + a 3 )x 3 = 0 ⇐⇒


 a 2 = 0,

a 3 = 0,

donc la famille est libre. Comme card(Vect q 0 , q 1 , q 2 , q 3 ) = 4 et dim(R4 [x]) = 4, alors B = q 0 , q 1 , q 2 , q 3 est une
© ª © ª

base de R3 [x].
2. Soit C = c 0 (x) = 1, c 1 (x) = x, c 2 (x) = x 2 , x 3 (x) = x 3 la base canonique de R3 [x]. Calculons les coordonnées de q j
© ª

68 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

dans la base C :

q 0 (x) = 1 · c 0 (x) + 1 · c 1 (x) + 1 · c 2 (x) + 1 · c 3 (x) =⇒ coord(q 0 , C ) = (1, 1, 1, 1)


q 1 (x) = 0 · c 0 (x) + 1 · c 1 (x) + 1 · c 2 (x) + 1 · c 3 (x) =⇒ coord(q 1 , C ) = (0, 1, 1, 1)
q 2 (x) = 0 · c 0 (x) + 0 · c 1 (x) + 1 · c 2 (x) + 1 · c 3 (x) =⇒ coord(q 2 , C ) = (0, 0, 1, 1)
q 3 (x) = 0 · c 0 (x) + 0 · c 1 (x) + 0 · c 2 (x) + 1 · c 3 (x) =⇒ coord(q 3 , C ) = (0, 0, 0, 1)

En résolvant le système linéaire (ici c’est très facile car il s’agit d’un système triangulaire), on obtient
 
 q0


= c0 + c1 + c2 + c3 ,  c0


= q0 − q1 ,

q 
1 = c1 + c2 + c3 , c
1 = q1 − q2 ,
⇐⇒


 q 2 = c2 + c3 , 

 c 2 = q2 − q3 ,
 
q3 = c3 , c3 = q3 ,
 

Cela signifie que

c 0 (x) = 1 · q 0 (x) − 1 · q 1 (x) + 0 · q 2 (x) + 0 · q 3 (x) i.e. coord(c 0 , B) = (1, −1, 0, 0),
c 1 (x) = 0 · q 0 (x) + 1 · q 1 (x) − 1 · q 2 (x) + 0 · q 3 (x) i.e. coord(c 1 , B) = (0, 1, −1, 0),
c 2 (x) = 0 · q 0 (x) + 0 · q 1 (x) + 1 · q 2 (x) − 1 · q 3 (x) i.e. coord(c 2 , B) = (0, 0, 1, −1),
c 3 (x) = 0 · q 0 (x) + 0 · q 1 (x) + 0 · q 2 (x) + 1 · q 3 (x) i.e. coord(c 3 , B) = (0, 0, 0, 1).

3. Soit le polynôme p(x) = a + bx + c x 2 + d x 3 ; dans la base C il a coordonnées (a, b, c, d ), donc

p(x) = ac 0 + bc 1 + cc 2 + d c 3 = a(q 0 − q 1 ) + b(q 1 − q 2 ) + c(q 2 − q 3 ) + d (q 3 ) = aq 0 + (b − a)q 1 + (c − b)q 2 + (d − c)q 3 .

Par conséquent, dans la base B le polynôme p(x) = a + bx + c x 2 + d x 3 a coordonnées

coord(p, B) = (a, b − a, c − b, d − c).

Exercice 1.60 (Rang d’une famille de vecteurs)


Dans R3 , déterminer le rang de la famille

E = { u1 = (1, 2, 3), u2 = (2, −1, 1), u3 = (1, 0, 1), u4 = (0, 1, 1) } .

Correction
Notons F = Vect(E ) le sous-espace vectoriel engendré par la famille E .
⋆ Comme card(E ) = 4 alors rg(E ) = dim(F ) ≤ 4.
⋆ Comme F est un sous-espace vectoriel de R3 , dim(F ) ≤ dim(R3 ) = 3 ainsi rg(E ) = dim(F ) ≤ 3.
⋆ Comme u1 et u2 sont linéairement indépendants, alors dim(Vect { u1 , u2 }) = 2 et comme Vect { u1 , u2 } ⊂ F , on obtient
rg(E ) = dim(F ) ≥ 2.
⋆ Étudions maintenant la famille { u1 , u2 , u3 } ⊂ E : si elle est libre, comme dim(Vect { u1 , u2 , u3 }) = 3 alors rg(E ) =
3 ; si elle est liée on ne peut pas conclure. On étudiera alors la famille { u1 , u2 , u4 } ⊂ E : si elle est libre, comme
dim(Vect { u1 , u2 , u4 }) = 3 alors rg(E ) = 3 ; si elle est liée rg(E ) = 2.
Comme 5u3 = u1 + 2u2 , la famille { u1 , u2 , u3 } est liée.
Comme 5u4 = 2u1 − u2 , la famille { u1 , u2 , u4 } est liée.
On conclut que rg(E ) = 2.

Exercice 1.61
Soit R3 [t ] l’espace des polynômes de degré au plus 3 et considérons l’ensemble

V = p ∈ R3 [t ] ¯ p(0) + p(2) = 0, p(1) = 3p(−1) .


© ¯ ª

1. Montrer que V est un sous-espace vectoriel de R3 [t ].


2. Déterminer une base et la dimension de V .

© 2020-2021 G. Faccanoni 69
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

3. Montrer que le polynôme p(t ) = 2 + 2t − t 3 est dans V et trouver les composantes de p dans la base de V calculée
auparavant.

Correction
1. On montre que V = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de R3 [t ]. En effet
© ª

V = p ∈ R3 [t ] ¯ p(0) + p(2) = 0, p(1) = 3p(−1)


© ¯ ª

= a + bt + c t 2 + d t 3 ∈ R3 [t ] ¯ 2a + 2b + 4c + 8d = 0 et a + b + c + d = 3a − 3b + 3c − 3d
© ¯ ª
½µ ¶ µ ¶ ¯ ¾
5 1
= − c − 2d + − c − 2d t + c t 2 + d t 3 ¯¯ c, d ∈ R
¯
3 3
½µ ¶ ¯ ¾
5 1 2 3
= − − t + t c + −2 − 2t + t d ¯ c, d ∈ R
¡ ¢ ¯
¯
3 3
½ ¾
5 1
= Vect q 1 (t ) = − − t + t 2 ; q 2 (t ) = −2 − 2t + t 3 .
3 3

Par conséquent V est un sous-espace vectoriel de R3 [t ].


2. La famille V = q 1 , q 2 est génératrice de l’espace vectoriel V . De plus,
© ª

αq 1 + βq 2 = 0R3 [t ] ⇐⇒ αq 1 (t ) + βq 2 (t ) = 0 ∀t ∈ R ⇐⇒ α=β=0

donc elle est aussi libre donc elle est une base de V et dim(V ) = 2.
3. Si p(t ) = 2 + 2t − t 3 on a p(0) + p(2) = 2 + 2 + 4 − 8 = 0 et p(1) − 3p(−1) = 2 + 2 − 1 − 3 2 − 2 + 1 = 0 donc p ∈ V et
¡ ¢ ¡ ¢ ¡ ¢ ¡ ¢

coord(p, V ) = (0, −1).

Exercice 1.62
Montrer que les matrices
µ ¶ µ ¶ µ ¶
1 −2 1 3 −1 1
A= B= C=
−2 1 3 6 1 −3

forment un base de l’espace vectoriel M des matrices symétriques d’ordre 2. Décomposer sur cette base la matrice
µ ¶
5 6
G= .
6 7

Correction
La famille F = { A, B, C } est une base de l’espace vectoriel

M = M ∈ M2 (R) ¯ M = MT = ba bc ¯ a, b, c ∈ R
© ¯ ª ©¡ ¢ ¯ ª

car
(i) A, B, C ∈ M ,
(ii) card(F ) = dim(M ),
(iii) F est libre car la combinaison linéaire λ1 A + λ2 B + λ3 C = 00 00 a comme unique solution λ1 = λ2 = λ3 = 0 :
¡ ¢

λ1 + λ2 − λ3 −2λ1 + 3λ2 + λ3
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
1 −2 1 3 −1 1 0 0 0 0
λ1 + λ2 + λ3 = ⇐⇒ =
−2 1 3 6 1 −3 0 0 −2λ1 + 3λ2 + λ3 λ1 + 6λ2 − 3λ3 0 0

 λ1 + λ2 − λ3 = 0, 
1 1 −1  

0
 
λ 1 1 −1 λ1
     

 −2λ + 3λ + λ = 0,

−2 3 3  1 0 0
1 2 3  λ2  =   ⇐⇒ −2 3 3  λ2  = 0
⇐⇒ ⇐⇒ 
 −2λ1 + 3λ2 + λ3 = 0, −2 3 3 0
   
λ3 1 6 −3 λ3 0




λ1 + 6λ2 − 3λ3 = 0, 1 6 −3 0

1 1 −1 λ1 1 1 −1 λ1 λ1
             
0 0 0
⇐⇒ 0 5 1  λ2  = 0 ⇐⇒ 0 5 1  λ2  = 0 ⇐⇒ λ2  = 0 .
0 5 −2 λ3 0 0 0 −3 λ3 0 λ3 0

On cherche maintenant coord(G, F ) les coordonnées de la matrice G dans la base F , i.e. les uniques λ1 , λ2 , λ3 ∈ R tels que
λ1 A + λ2 B + λ3 C = G :

70 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

λ1 + λ2 − λ3 −2λ1 + 3λ2 + λ3
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
1 −2 1 3 −1 1 5 6 5 6
λ1 + λ2 + λ3 = ⇐⇒ =
−2 1 3 6 1 −3 6 7 −2λ1 + 3λ2 + λ3 λ1 + 6λ2 − 3λ3 6 7

 λ1 + λ2 − λ3 = 5, 1 1 −1   5
    
−2 3 3  λ1 1 1 −1 λ1
    

 −2λ + 3λ + λ = 6,

6 5
1 2 3  λ2  =   ⇐⇒ −2 3 3  λ2  = 6
⇐⇒ ⇐⇒ 
 −2λ1 + 3λ2 + λ3 = 6, −2 3 3  6

 λ3 1 6 −3 λ3 7


λ1 + 6λ2 − 3λ3 = 7, 1 6 −3 7

1 1 −1 λ1 1 1 −1 λ1 λ1
             37 
5 5 /5
⇐⇒ 0 5 1  λ2  = 16 ⇐⇒ 0 5 1  λ2  =  16  ⇐⇒ λ2  = 34/15 = coord(G, F ).
0 5 −2 λ3 2 0 0 −3 λ3 −14 λ3 14
/3

1.5.3. Systèmes linéaires : utilisation de fonctions prédéfinies dans Octave


Exercice 1.63 (Systèmes linéaires)
On a demandé à 215 étudiants de dire quel est leur langage de programmation préféré parmi Python, Matlab, Java et C.
Chaque étudiant devait fournir une seule réponse. On sait que 163 étudiants ont déclaré préférer Python ou Matlab ; 65
ont déclaré préférer Matlab ou C ; 158 ont déclaré préférer Python ou C.
Traduire les données par un système linéaire de 4 équations et 4 inconnues et le résoudre par la méthode de Gauss.

Correction
On note p, m, j et c le nombre d’étudiants préférant respectivement Python, Matlab, Java et C. D’après l’énoncé on a

 p + m + j + c = 215,



 p + m = 163,


 m + c = 65,

p + c = 158.

On passe à la notation matricielle et on résout le système par la méthode de Gauss (4 équations donc 3 étapes) :
 L ←L −L 
1 1 1 1 215 1 1 1 1 215 1 1 1 1 215
   
2 2 1
L 3 ←L 3
 1 1 0 0 163  L 4 ←L 4 −L 1  0 0 −1 −1 −52  0 1 0 1 65 
 −−L−2 ↔L 3 
 

 0 −−−−−−−→  −−−→  
1 0 1 65  Étape 1  0 1 0 1 65  Pivot nul 0 0 −1 −1 −52 
1 0 0 1 158 0 −1 −1 0 −57 0 −1 −1 0 −57
1 1 1 1 215 1 1 1 1 215
   
L 3 ←L 3
 0 1 0 1 65  0 1 0 1 65 
L 4 ←L 4 +L 2
−−−−−−−→   −L−4−
←L 4 −L 3 
−−−−→  .
Étape 2
 0 0 −1 −1 −52  Étape 3
 0 0 −1 −1 −52 
0 0 −1 1 8 0 0 0 2 60

On résout le système triangulaire supérieur ainsi obtenu par remonté :

2c = 60 =⇒ c = 30,
− j − c = −52 =⇒ j = −c + 52 = 22,
m + c = 65 =⇒ m = −c + 65 = 35,
p + m + j + c = 215 =⇒ p = 215 − m − j − c = 128.

Les préférences sont donc : 128 pour Python, 35 pour Matlab, 22 pour Java et 30 pour C.
A=[1 1 1 1; 1 1 0 0; 0 1 0 1; 1 0 0 1]
b=[215; 163; 65; 158]
sol=A\b

Systèmes linéaires : méthode de Gauss pour des systèmes carrés

© 2020-2021 G. Faccanoni 71
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Exercice 1.64
Résoudre les systèmes linéaires suivants :
 
 x 1 + 2x 2 − x 3 = 2  −x 1 + x 2 + 3x 3 = 12

  −2u−4v+3w=−1
① x 1 − 2x 2 − 3x 3 = −6 ② 2x 1 − x 2 + 2x 3 = −8 ③ 2v −w=1
u +v−3w=−6
  
x 1 + 4x 2 + 4x 3 = 3 4x 1 + x 2 − 4x 3 = 15
 

1 2 3 4 x1

−2x −y +4t =2 10
    
    

 6 1 1 x1 12 2 3 4 1 x 2  10
2x+3y+3z+2t =14

④ ⑤ 2 4 0  x 2  =  0  ⑥3 4 1 2 x 3  = 10
   
 x+2y +z +t =7

 1 2 6 x3 6
−x −z +t =−1 4 1 2 3 x4 10

Correction
On utilise la méthode du pivot de G AUSS :


  
x 1 +2x 2 −x 3 = 2, L 2 ←L 2 −L 1 x 1 +2x 2 −x 3 = 2, x 1 +2x 2 −x 3 = 2,
L 3 ←L 3 −L 1 L 3 ←L 3 +L 2 /2
x 1 −2x 2 −3x 3 = −6, −−−−−−−→ −4x 2 −2x 3 = −8, −−−−−−−−−→ −4x 2 −2x 3 = −8,
x 1 +4x 2 +4x 3 = 3. 2x 2 +5x 3 = 1. 4x 3 = −3.
  

−3 19 −7
donc x 3 = 4 , x2 = 8 et x 1 = 2 .


  
−x 1 +x 2 +3x 3 = 12 L 2 ←L 2 +2L 1 −x 1 +x 2 +3x 3 = 12 −x 1 +x 2 +3x 3 = 12
L 3 ←L 3 +4L 1 L 3 ←L 3 −5L 2
2x 1 −x 2 +2x 3 = −8 −−−−−−−−→ x 2 +8x 3 = 16 −−−−−−−−→ x 2 +8x 3 = 16
4x 1 +x 2 −4x 3 = 15 5x 2 +8x 3 = 63
  
−32x 3 = −17

17 47 43
donc x 3 = 32 , x2 = 4 et x 1 = 32 .


  
−2u−4v+3w=−1 −2u−4v +3w=−1 −2u−4v+3w=−1
L 3 ←L 3 +L 1 /2 L 3 ←L 3 +L 2 /2
2v −w=1 −−−−−−−−−→ 2v −w=1 −−−−−−−−−→ 2v −w=1
u +v−3w=−6 −v− 32 w=−13/2
  
−2w=−6

donc w = 3, v = 2 et u = 1.

+4t =2 L 2 ←L 2 +L 1 
 
−2x −y −2x−y +4t =2

 L 3 ←L 3 +L 1 /2 

2x+3y+3z+2t =14 L 4 ←L 4 −L 1 /2
 2y+3z+6t =16
−−−−−−−−−→ 3

 x+2y +z +t =7 
 2 y +z+3t =8
  1
2 y −z −t =−2
−x −z +t =−1
 
−2x−y +4t =2 −2x−y +4t =2
L 3 ←L 3 −3L 2 /4 
 

L 4 ←L 2 −L 2 /4
 2y +3z +6t =16 L 4 ←L 4 −7L 3 /5  2y +3z +6t =16
−−−−−−−−−−→ −−−−−−−−−−→

 − 45 z− 32 t =−4 
 − 45 z− 32 t =−4
7 5
− 52 t =− 25
 
− 4 z− 2 t =−6

donc t = 1, z = 2, y = 2 et x = 0.

 L 2 ←L 2 − 62 L 1  11
6 1 1 12
   
6 1 1 12 6 L
L 3 ←L 3 − 11 2 6 1 1 12
L 3 ←L 3 − 61 L 1 11
− 13 11
− 13
3
[A|b] =  2 4 0 0  −−−−−−−−→  0 3 −4  −−−−−−−−−−→  0 3 −4 
11 35
1 2 6 6 0 6 6 4 0 0 6 6

donc 
 6x 1 + x 2 + x 3 = 12,

11 1
3 x 2 − 3 x 3 = −4
=⇒ x 3 = 1, x 2 = −1, x 1 = 2.

6x 3 = 6

72 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background


 L ←L −2L 
1 2 3 4 10 1 2 3 4 10
 
2 2 1
L 3 ←L 3 −3L 1
 2 3 4 1 10  L 4 ←L 4 −4L 1
 0 −1 −2 −7 −10 
[A|b] = 
 3
 −−−−−−−−→  
4 1 2 10   0 −2 −8 −10 −20 
4 1 2 3 10 0 −7 −10 −13 −30
1 2 3 4 10 1 2 3 4 10
   
L 3 ←L 3 −2L 2
 0 −1 −2 −7 −10  0 −1 −2 −7 −10 
L 4 ←L 4 −7L 2
−−−−−−−−→   −L−4−
←L 4 +L 3 
−−−−→  
 0 0 −4 4 0   0 0 −4 4 0 
0 0 4 36 40 0 0 0 40 40

donc 
 x 1 + 2x 2 + 3x 3 + 4x 4 = 10



 −x − 2x − 7x = −10
2 3 4
=⇒ x 4 = 1, x 3 = 1, x 2 = 1, x 1 = 1.


 −4x 3 + 4x 4 = 0

40x 4 = 40

A=[1 2 -1; 1 -2 -3; 1 4 4] A=[-2 -1 0 4; 2 3 3 2; 1 2 1 1; -1 0 -1 1]


b=[2; -6; 3] b=[2; 14; 7; -1]
A\b A\b
A=[-1 1 3; 2 -1 2; 4 1 -4] A=[6 1 1; 2 4 0; 1 2 6]
b=[12; -8; 15] b=[12; 0; 6]
A\b A\b
A=[-2 -4 3; 0 2 -1; 1 1 -3] A=[1 2 3 4; 2 3 4 1; 3 4 1 2; 4 1 2 3]
b=[-1; 1; -6] b=[10; 10; 10; 10]
A\b A\b

Exercice 1.65
Soit le système linéaire

 2x 1 − x 2 − 3x 3 = 0,

(S) −x 1 + 2x 3 = 0,

2x 1 − 3x 2 − x 3 = 0.

Ce système est-il compatible ? Possède-t-il une solution unique ?

Correction

  
 2x 1 − x 2 − 3x 3 = 0,
  2x 1 − x 2 − 3x 3 = 0,
L 2 ←L 2 +L 1 /2
  2x 1 − x 2 − 3x 3 = 0,

L 3 ←L 3 −L 1 L 3 ←L 3 −4L 2
−x 1 + 2x 3 = 0, −−−−−−−−−→ −1/2x 2 + 1/2x 3 = 0, −−−−−−−−→ −1/2x 2 + 1/2x 3 = 0,
  
2x 1 − 3x 2 − x 3 = 0. −2x 2 + 2x 3 = 0, 0 = 0,
  

Le système est compatible car le rang du système est 2 inférieur au nombre d’inconnues 3 et la solution n’est pas unique car
rg(S) < 3. Il admet une infinité de solutions de la forme (2κ, κ, κ), κ ∈ R.
Que dit Octave ?
>> [2,-1,-3;-1,0,2;2,-3,-1]\[0;0;0]
warning: matrix singular to machine precision

Exercice 1.66
Trouver toutes les solutions du système linéaire homogène

 −3x 1 + x 2 + 2x 3 = 0,

(S) −2x 1 + 2x 3 = 0,

−11x 1 + 6x 2 + 5x 3 = 0.

© 2020-2021 G. Faccanoni 73
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Correction
Le système étant homogène, il est inutile d’écrire le terme source dans la méthode du pivot de G AUSS :
     
−3 1 2 L 2 ←L 2 −2L 1 /3 −3 1 2 −3 1 2
L 3 ←L 3 −11L 1 /3 L 3 ←L 3 +7L 2 /2
A =  −2 0 2 −−−−−−−−−−→  0 −2/3 2
/3  −−−−−−−−−−→  0 −2/3 /3
2 

−11 6 5 0 7
/3 −7/3 0 0 0

Le système admet une infinité de solutions de la forme (κ, κ, κ) avec κ ∈ R.

Exercice 1.67
Équilibrer la réaction
Z n + H2 SO 4 + K 2C r 2 O 7 → K C r (SO 4 )2 + Z nSO 4 + H2 O.

Correction
Écrivons les coefficients stœchiométriques et les contraintes :

x 1 Z n + x 2 H2 SO 4 + x 3 K 2C r 2 O 7 → x 4 K C r (SO 4 )2 + x 5 Z nSO 4 + x 6 H2 O

1. Atomes de Z n : x 1 = x 5 , i.e. x 1 − x 5 = 0
2. Atomes de H : 2x 2 = 2x 6 , i.e. x 2 − x 6 = 0
3. Atomes de S : x 2 = 2x 4 + x 5 , i.e. x 2 − 2x 4 − x 5 = 0
4. Atomes de K : 2x 3 = x 4 , i.e. 2x 3 − x 4 = 0
5. Atomes de C r : 2x 3 = x 4 , i.e. 2x 3 − x 4 = 0
6. Atomes de O : 4x 2 + 7x 3 = 8x 4 + 4x 5 + x 6 , i.e. 4x 2 + 7x 3 − 8x 4 − 4x 5 − x 6 = 0
Notons que la contrainte 2x 3 − x 4 = 0 est répétée deux fois, donc on ne l’écrira qu’une seule fois dans le système linéaire ;
cela donne 5 équations pour 6 inconnues. Fixons arbitrairement un des coefficients, par exemple x 6 = 1 ; on obtient alors le
système linéaire
1 0 0 0 −1 x 1 0
    
0 1 0 0 0  x 2  1
    
0 1 0 −2 −1 x 3  = 0
    
0 0 2 −1 0  x 4  0
0 4 7 −8 −4 x 5 1
ce qui donne

1 0 0 0 −1 0 1 0 0 0 −1 0 1 0 0 0 −1 0
     

 0 1 0 0 0 1  L 3 ←L 3 −L 2 
 L 5 ←L 5 −4L 2  0 1 0 0 0 1  
 L 3 ↔L 4  0 1 0 0 0 1 


 0 1 0 −2 −1 0  −−−−−−−−→ 
  0 0 0 −2 −1 −1  −−−−−→ 
  0 0 2 −1 0 0 

 0 0 2 −1 0 0   0 0 2 −1 0 0   0 0 0 −2 −1 −1 
0 4 7 −8 −4 1 0 0 7 −8 −4 −3 0 0 7 −8 −4 −3
   
1 0 0 0 −1 0 1 0 0 0 −1 0
 0 1 0 0 0 1   0 1 0 0 0 1 
L 5 ←L 5 − 27 L 3
  L 5 ←L 5 − 9 L 4 
4

−−−−−−−−→  0 0 2 −1 0 0  −−−−−−−−→  0 0 2 −1 0 0
   

0 0 0 −2 −1 −1 0 0 0 −2 −1 −1
   
   
0 0 0 − 92 −4 −3 0 0 0 0 − 47 − 34

dont la solution est bien


x1 /7
  3 
x 2   1 
   
x 3  = 1/7
   
x 4  2/7
x5 3
/7
Si on multiplie tous les coefficients par 7 on obtient
 
3
x1
 
7 
x 2   

  1 
x 3  =  
  2 
x 4    
3 
x5
7

74 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

et donc la réaction équilibrée

3Z n + 7H2 SO 4 + K 2C r 2 O 7 → 2K C r (SO 4 )2 + 3Z nSO 4 + 7H2 O.

Exercice 1.68 (V. G UIRARDEL)


Vous projetez de passer un concours de recrutement l’an prochain. Vous avez sous les yeux le tableau de notes suivant :

C ANDIDAT Mathématique Anglais Informatique Moyenne


QUI 7 12 6 8
QUO 11 6 10 9
QUA 11 16 14 14

Retrouver les coefficients de chaque épreuve. La solution est-elle unique ?

Correction
Il s’agit de trouver les trois coefficients m, a, i ∈ [0; 1] tels que

 7m + 12a + 6i = 8,

11m + 6a + 10i = 9,

11m + 16a + 14i = 14.

Utilisons la méthode de G AUSS :


 L 2 ←L 2 − 11 L 1  
 7m+12a +6i =8, L 3 ←L 3 − 117 L 1 7m+12a +6i =8, 2 7m+12a +6i =8,
90 4 25 L 3 ←L 3 − 9 L 2
− 90 4 25
7
11m +6a+10i =9, −−−−−−−−−→ − 7 a + 7 i =− 7 , −−−−−−−−→ 7 a+ 7 i =− 7 ,
20 32 10 40 20
11m+16a+14i =14, − 7 a+ 7 i = 7 , 9 i= 9 ,
  

qui admet l’unique solution (0.2, 0.3, 0.5).


Une autre interprétation est la suivante : il s’agit de trouver les trois coefficients m, a, i ∈ [0; 1] tels que

 7m + 12a + 6i = 8(m + a + i )

11m + 6a + 10i = 9(m + a + i ),

11m + 16a + 14i = 14(m + a + i ).

Utilisons la méthode de G AUSS :


 L 2 ←L 2 − 11 L 1  
 −m+4a−2i =0, L 3 ←L 3 − 117 L 1 −m +4a−2i =0, L 3 ←L 3 − 2 L 2 −m+4a−2i =0,
7 9
2m−3a +i =0, −−−−−−−−−→ 5a−3i =0, −−−−−−−−→ 5a−3i =0,
0=0,

−3m+2a =0,

−10a+6i =0,

qui admet une infinité de solutions de la forme (2κ, 3κ, 5κ) avec κ ∈ [0; 1/5].

Exercice 1.69 (V. G UIRARDEL)


Une entreprise fabrique des manteaux. Ces manteaux sont composés de tissu rouge, de tissu bleu et d’une doublure
noire. Le tableau suivant résume les mètres carrés de chaque tissu nécessaires à la confection du manteau en tailles S,
M, L et XL :

S M L XL
Tissu rouge 0.4 0.5 0.6 0.7
Tissu bleu 1 1.1 1.2 1.3
Doublure 1.5 1.7 1.9 2.1

Chaque tissu est tissé à l’aide de plusieurs types de fil : coton, polyester et polyamide. Le tableau suivant résume les
mètres de fil de chaque type nécessaires par mètre carré de tissu :

© 2020-2021 G. Faccanoni 75
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Tissu rouge Tissu bleu Doublure


Coton 500 400 1000
Polyamide 1000 900 700
Polyester 500 600 0

1. L’entreprise veut produire s manteaux taille S, m manteaux taille M, ℓ manteaux taille L et x manteaux taille XL.
Quelle quantité de fil de chaque catégorie doit-elle commander ? Répondre à cette question dans le langage des
matrices.
2. En fin d’année, l’entreprise veut écouler entièrement ses stocks de fils. Il lui reste 100 000 m de coton et de
polyamide, et 20 000 m de Polyester. Peut-elle transformer entièrement ses stocks de fils en manteaux ?

Correction
Introduisons les deux matrices A et B et les deux vecteurs u et v suivants

s
 
     
0.4 0.5 0.6 0.7 500 400 1000 m  c
A= 1 1.1 1.2 1.3 B = 1000 900 700  u=
ℓ
 v = a 
1.5 1.7 1.9 2.1 500 600 0 e
x

1. Pour produire s manteaux taille S, m manteaux taille M, ℓ manteaux taille L et x manteaux taille XL, l’entreprise doit
commander c mètres de coton, a mètres de polyamide et e mètres de polyester où c, a, e sont les entrées du vecteur v
suivant :  
2100s + 2390m + 2680ℓ + 2970x
v = BAu = 2350s + 2680m + 3010ℓ + 3340x  .
800s + 910m + 1020ℓ + 1130x

2. On cherche s’il existe un vecteur u tel que


 
100000
100000 = BAu,
20000
i.e. s’il existe une solution du système linéaire

 s
 
  
2100 2390 2680 2970   100000
2350 m
2680 3010 3340 
 ℓ  = 100000 .
  
800 910 1020 1130 20000
x

En appliquant la méthode de G AUSS on obtient le système

 s
 
100000
  
2100 2390 2680 2970  
 0 115 230 m
115     250000 
21 21 7  ℓ  = − 21
0 0 0 0 − 440000
23
x

qui n’admet pas de solution.

Exercice 1.70
Soit le système linéaire
(
x − αy = 1,
(S)
αx − y = 1.
Déterminer les valeurs de α de telle sorte que ce système possède :
1. une infinité de solutions ;
2. aucune solution ;
3. une solution unique.

Correction

µ ¶ µ ¶
1 −α 1 L 2 ←L 2 −αL 1 1 −α 1
−−−−−−−−→ .
α −1 1 0 −1 + α2 1−α

76 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Comme −1 + α2 = (α − 1)(α + 1) on conclut que


1. si α = 1 (i.e. la dernière équation correspond à 0 = 0) alors (S) possède une infinité de solutions,
2. si α = −1 (i.e. la dernière équation correspond à 0 = 2) alors (S) ne possède aucune solution,
1 1
3. si α ̸∈ { −1; 1 } alors (S) possède une solution unique x = α+1 et y = − α+1 .

Exercice 1.71
Soit le système linéaire
(
x + αy = 1,
(S)
−αx − y = 1.
En utilisant le pivot de G AUSS, déterminer les valeurs de α ∈ R de telle sorte que ce système possède :
a) une infinité de solutions ;
b) aucune solution ;
c) une solution unique.

Correction

½ ½
x+αy=1 L 2 ←L 2 +αL 1 x +αy=1
−−−−−−−−→
−αx −y=1 (−1 + α2 )y=α + 1

Comme −1 + α2 = (α − 1)(α + 1) on conclut que


a) si α = −1 (i.e. la dernière équation correspond à 0 = 0) alors (S) possède une infinité de solutions,
b) si α = 1 (i.e. la dernière équation correspond à 0 = 2) alors (S) ne possède aucune solution,
1 1
c) si α ̸∈ { −1; 1 } alors (S) possède une solution unique x = − α−1 et y = α−1 .

Exercice 1.72
Soit le système linéaire

 x + y − z = 1,

(S) 2x + 3y + βz = 3,

x + βy + 3z = −3.

Déterminer les valeurs de β de telle sorte que ce système possède :


1. une infinité de solutions ;
2. aucune solution ;
3. une solution unique.

Correction

     
1 1 −1 1 L 2 ←L 2 −2L 1 1 1 −1 1 1 1 −1 1
L 3 ←L 3 −L 1 L 3 ←L 3 +(1−β)L 2
 2 3 β 3  −−−−−−−−→  0 1 β+2 1  −−−−−−−−−−−→  0 1 β+2 1 .
1 β 3 −3 0 β−1 4 −4 0 0 (6 − β − β2 ) −(3 + β)

Comme 6 − β − β2 = (2 − β)(3 + β) on conclut que


1. si β = −3 (i.e. la dernière équation correspond à 0z = 0) alors (S) possède une infinité de solutions,
2. si β = 2 (i.e. la dernière équation correspond à 0z = −5) alors (S) ne possède aucune solution,
3. si β ̸∈ { 2; −3 } alors (S) possède une solution unique.

© 2020-2021 G. Faccanoni 77
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Exercice 1.73
Trouver les valeurs de κ ∈ R pour lesquelles le système suivant a un nombre respectivement fini et infini de solutions :

 2x 1 − x 2 = κ,


x 1 − x 2 − x 3 = 0,

x 1 − κx 2 + κx 3 = κ.

Correction

κ κ κ
     
2 −1 0 L 2 ←L 2 −L 1 /2 2 −1 0 2 −1 0
L 3 ←L 3 −L 1 /2 L 3 ←L 3 +(1−2κ)L 2
 1 −1 −1 0  −−−−−−−−−→  0 −1/2 −1 −κ/2  −−−−−−−−−−−−→  0 −1/2 −1 −κ/2  .
1 −κ κ κ 0 −κ + 1/2 κ κ/2 0 0 3κ − 1 κ2

On conclut que
1
1. si κ = 3 alors (S) ne possède aucune solution,
1 κ2 −κ/2+x 3 κ(κ−1) κ+x 2 κ(2κ−1)
2. si κ ̸= 3 alors (S) possède une solution unique donnée par x 3 = 3κ−1 , x2 = −1/2 = 3κ−1 et x 1 = 2 = 3κ−1 ,
3. il n’existe aucune valeur de κ pour que (S) possède une infinité de solutions.

Exercice 1.74
Résoudre le système linéaire en discutant suivant la valeur du paramètre a ∈ R :

 x + 2y + 3z = 2,

x − y + 2z = 7,

3x + az = 10.

Correction
Si on utilise la méthode de G AUSS on trouve
     
1 2 3 2 L 2 ←L 2 −L 1 1 2 3 2 1 2 3 2
L 3 ←L 3 −3L 1 L 3 ←L 3 −2L 2
[A|b] =  1 −1 2 7  −−−−−−−−→  0 −3 −1 5  −−−−−−−−→  0 −3 −1 5 .
3 0 a 10 0 −6 a −9 4 0 0 a −7 −6

On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent

 x + 2y + 3z = 2,

−3y − z = 5,

(a − 7)z = −6.

Par conséquent,
−6 5+z 5a − 41 2(8a − 35)
⋆ si a ̸= 7, z = ,y= = et x = 2 − 2y − 3z = est l’unique solution du système linéaire ;
a −7 −3 −3(a − 7) 3(a − 7)
⋆ si a = 7 il n’y a pas de solutions du système linéaire.

Observons que si on ne veut pas calculer la solution mais juste dire s’il en existe une (ou plusieurs), il suffit de regarder le
rang des matrices A et [A|b] :
(
3 si a ̸= 7
⋆ rg(A) = car det(A) = 21 − 3a et det(A33 ) ̸= 0 où A33 est la sous-matrice de A obtenue en supprimant la
2 si a = 7
3-ème ligne et la 3-ème colonne ;
³1 2 2 ´ ³1 2 2 ´
⋆ rg([A|b]) = 3 car det 1 −1 7 ̸= 0 où 1 −1 7 est la sous-matrice de [A|b] obtenue en supprimant la 3-ème colonne.
3 0 10 3 0 10

78 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Exercice 1.75
En utilisant la méthode de G AUSS, résoudre le système linéaire en discutant suivant la valeur du paramètre a ∈ R :

 x − y + 2z = 7,

x + 2y + 3z = 2,

3x + az = 10.

Correction

     
1 −1 2 7 L 2 ←L 2 −L 1 1 −1 2 7 1 −1 2 7
L 3 ←L 3 −3L 1 L 3 ←L 3 −L 2
 1 2 3 2  −−−−−−−−→  0 3 1 −5  −−−−−−−→  0 3 1 −5  .
3 0 a 10 0 3 a −6 −11 0 0 a −7 −6
On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent

 x − y + 2z = 7,

3y + z = −5,

(a − 7)z = −6.

Par conséquent,
−6 −5 − z −5a + 41 2(8a − 35)
⋆ si a ̸= 7, z = ,y= = et x = 7 − y − 2z = est l’unique solution du système linéaire ;
a −7 3 3(a − 7) 3(a − 7)
⋆ si a = 7 il n’y a pas de solutions du système linéaire.

Observons que si on ne veut pas calculer la solution mais juste dire s’il en existe une (ou plusieurs), il suffit de regarder le
rang des matrices A et [A|b] :
(
3 si a ̸= 7
⋆ rg(A) = car det(A) = 3a − 21 et det(A33 ) ̸= 0 où A33 est la sous-matrice de A obtenue en supprimant la
2 si a = 7
3-ème ligne et la 3-ème colonne ;
³1 2 2 ´ ³ 1 −1 2 ´
⋆ rg([A|b]) = 3 car det 1 −1 7 ̸= 0 où 1 2 7 est la sous-matrice de [A|b]A obtenue en supprimant la 3-ème colonne.
3 0 10 3 0 10

Exercice 1.76
En utilisant la méthode du pivot de G AUSS, résoudre le système linéaire en discutant suivant la valeur du paramètre
a ∈R: 

 x + z + w = 0,


 ax + y + (a − 1)z + w = 0,

 2x + a y + z + 2w = 0,



x − y + 2z + aw = 0.

Correction
Il s’agit d’un système homogène, il est alors inutile d’écrire le terme source dans la méthode du pivot de G AUSS. En appliquant
cette méthode on obtient
 L ←L −aL 
1 0 1 1 1 0 1 1 1 0 1 1
   
2 2 1
L 3 ←L 3 −2L 1 L 3 ←L 3 −aL 2
 a 1 a −1 1  0 1 −1 1 − a  0 1 −1 1−a 
 −L−4−←L 4 −L 1   −L−4−←L 4 +L 2 
−−−−−→  −−−−−→   0 0 a − 1 a(a − 1)  .
 
 2 a 1 2   0 a −1 0 
1 −1 2 a 0 −1 1 a − 1 0 0 0 0

On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent

 x + z + w = 0,



 y − z + (1 − a)w = 0,


 (a − 1)z + a(a − 1)w = 0,

0 = 0.

Par conséquent, si on pose w = κ1 ∈ R une constante réelle quelconque, alors

© 2020-2021 G. Faccanoni 79
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

⋆ si a ̸= 1, z = −a(a−1)w
a−1 = −aκ1 , y = −(1−a)w+z = −κ1 et x = −w−z = (a−1)κ1 : tous les vecteurs de Vect { (a − 1, −1, −a, 1) }
sont solution du système linéaire ;
⋆ si a = 1, on pose z = κ2 ∈ R une constante réelle quelconque et on a y = −(1 − a)w + z = −(1 − a)κ1 + κ2 et x = −w − z =
−κ1 − κ2 : tous les vecteurs de Vect { (−1, 1, 1, 0), (−1, 0, 0, 1) } sont solution du système linéaire.

Exercice 1.77
En utilisant la méthode du pivot de G AUSS, résoudre le système linéaire en discutant suivant la valeur du paramètre
b∈R: 

 x + z + w = 0,


 (b + 1)x + y + bz + w = 0,


 2x + (b + 1)y + z + 2w = 0,

x − y + 2z + (b + 1)w = 0.

Correction
Il s’agit d’un système homogène, il est alors inutile d’écrire le terme source dans la méthode du pivot de G AUSS. En appliquant
cette méthode on obtient
 L ←L −(b+1)L 
1 0 1 1 1 0 1 1 1 0 1 1
   
2 2 1
L 3 ←L 3 −2L 1 L 3 ←L 3 −(b+1)L 2
 b +1 1 b 1   0 1 −1 −b   0 1 −1 −b
 −L−4−←L 4 −L 1  −L−4−←L 4 +L 2 
 −−−−−−−−→  −−−−−−−−→  .
 2 b +1 1 2   0 b + 1 −1 0   0 0 b b(b + 1) 
1 −1 2 b +1 0 −1 1 b 0 0 0 0

On a ainsi transformé le système linéaire initial dans le système linéaire triangulaire supérieur équivalent

 x + z + w = 0,



 y − z − bw = 0,


 bz + b(b + 1)w = 0,

0 = 0.

Par conséquent, si on pose w = κ1 ∈ R une constante réelle quelconque, alors


⋆ si b ̸= 0,
−b(b + 1)w
z= = −(b + 1)κ1 , y = bw + z = −κ1 , x = −w − z = bκ1 ;
b
tous les vecteurs de Vect { (b + 1, 1, b + 1, −1) } sont solution du système linéaire ;
⋆ si b = 0, on pose z = κ2 ∈ R une constante réelle quelconque et on a y = bw + z = κ2 et x = −w − z = −κ1 − κ2 : tous les
vecteurs de Vect { (−1, 1, 1, 0), (−1, 0, 0, 1) } sont solution du système linéaire.

Exercice 1.78
Discuter et résoudre le système

 (1 + a)x + y + z = 0,

(S a ) x + (1 + a)y + z = 0,

x + y + (1 + a)z = 0,

d’inconnue (x, y, z) ∈ R3 et de paramètre a ∈ R.

Correction
Comme le système contient un paramètre, on commence par calculer le déterminant de la matrice associée :
¯ ¯
¯1 + a 1 1 ¯¯
1 ¯¯ = (1 + a)3 + 1 + 1 − (1 + a) − (1 + a) − (1 + a) = (1 + a)3 − 3(1 + a) + 2
¯
¯ 1
¯ 1+a
¯ 1 1 1 + a¯
³ ´³ ´ ³ ´³ ´³ ´
= (1 + a) − 1 (1 + a)2 + (1 + a) − 2 = (1 + a) − 1 (1 + a) + 2 (1 + a) − 1 = a 2 (3 + a).

Le système est de Cramer si et seulement si ce déterminant est non nul, donc

(S a ) est de Cramer si et seulement a ∈ R \ { −3, 0 } .

80 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Notons S l’ensemble des solutions.

⋆ Étude du cas a = −3. Le système s’écrit



 −2x + y + z = 0,

(S −3 ) x − 2y + z = 0,

x + y − 2z = 0,

On utilise la méthode du pivot de G AUSS :


  
−2x y +z=0 L 2 ←L 2 +L 1 /2 −2x y +z=0 −2x −y +z=0
L 3 ←L 3 +L 1 /2 3 3 L 3 ←L 3 +L 2
x−2y +z=0 −−−−−−−−−→ − 2 y+ 2 z=0 −−−−−−−→ − 52 y+ 32 z=0
3 3
x y−2z=0 2 y− 2 z=0
0z=0
  

donc z = κ ∈ R, y = z et x = z, ainsi
S = { (κ, κ, κ) | κ ∈ R } .

⋆ Étude du cas a = 0. Le système s’écrit



 x + y + z = 0,

(S 0 ) x + y + z = 0,

x + y + z = 0,

donc z = κ1 ∈ R, y = κ2 ∈ R et x = −κ1 − κ2 , ainsi

S = (−κ1 − κ2 , κ2 , κ1 ) ¯ (κ1 , κ2 ) ∈ R2 .
© ¯ ª

⋆ Étude du cas a ∈ R \ { −3, 0 }. Il s’agit d’un système de Cramer homogène, donc l’unique solution est (0, 0, 0) :

S = { (0, 0, 0) } .

Exercice 1.79
Discuter et résoudre le système

 x + a y + (a − 1)z = 0,

(S a ) 3x + 2y + az = 3,

(a − 1)x + a y + (a + 1)z = a,

d’inconnue (x, y, z) ∈ R3 et de paramètre a ∈ R.

Correction
Comme le système contient un paramètre, on commence par calculer le déterminant de la matrice associée :
¯ ¯
¯ 1 a a − 1¯¯
a ¯¯ = 2(a + 1) + a 2 (a − 1) + 3a(a − 1) − 2(a − 1)2 − a 2 − 3a(a + 1) = a 2 (a − 4).
¯
¯ 3 2
¯
¯a − 1 a a + 1¯

Le système est de Cramer si et seulement si ce déterminant est non nul, donc

(S a ) est de Cramer si et seulement a ∈ R \ { 0, 4 } .

Notons S l’ensemble des solutions.

⋆ Étude du cas a = 0. Le système s’écrit



 x − z = 0,

(S 0 ) 3x + 2y = 3,

−x + z = 0,

3−3κ
donc z = κ ∈ R, y = 2 et x = κ, ainsi
½µ ¶¯ ¾
3 − 3κ
S = κ, ,κ ¯ κ ∈ R .
¯
¯
2

© 2020-2021 G. Faccanoni 81
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

⋆ Étude du cas a = 4. Le système s’écrit



 x + 4y + 3z = 0,

(S 4 ) 3x + 2y + 4z = 3,

3x + 4y + 5z = 4,

On utilise la méthode du pivot de G AUSS :


  
 x+4y+3z=0, L 2 ←L 2 −3L 1 x +4y+3z=0, x +4y+3z=0,
L 3 ←L 3 −3L 1 L 3 ←10L 3 −8L 2
3x+2y+4z=3, −−−−−−−−→ −10y−5z=3, −−−−−−−−−−→ −10y−5z=3,
3x+4y+5z=4, 0=16.
 
−8y−4z=4,

La dernière équation est impossible donc


S = ;.

⋆ Étude du cas a ∈ R \ { −3, 0 }. On utilise la méthode du pivot de G AUSS :


 
 x+a y+(a − 1)z=0, L 2 ←L 2 −3L 1 x +a y +(a − 1)z=0,
L 3 ←L 3 −(a−1)L 1
3x +2y +az=3, −−−−−−−−−−−→ (2 − 3a)y +(3 − 2a)z=3,
(a − 1)x+a y+(a + 1)z=a, (2 − a)a y+(3 − a)az=a,
 

L 3 ←L 3 − (2−a)a x
 +a y +(a − 1)z=0,
(2−3a) L 2
−−−−−−−−−−−−→ (2 − 3a)y+(3 − 2a)z=3,
 a 2 (a−4) 4a
 − 3a−2 z= 3a−2 .

4 a−6 a 2 −2a−4
On obtient z = − a(a−4) , y = − a(a−4) ,x= a(a−4) , ainsi

a 2 − 2a − 4 a −6
½µ ¶¾
4
S= ,− ,− .
a(a − 4) a(a − 4) a(a − 4)

Calcul de la matrice inverse

Exercice 1.80
1 0 −1
³ ´
Calculer A−1 où A est la matrice 4 −1 −2 .
−2 0 1

Correction

  L 1 ←L 1  
1 0 −1 1 0 0 L 2 ←L 2 −4L 1 1 0 −1 1 0 0
L 3 ←L 3 +2L 1
[A|I3 ] =  4 −1 −2 0 1 0  −−−−−−−−→  0 −1 2 −4 1 0 
−2 0 1 0 0 1 0 0 −1 −2 0 1
L 1 ←L 1   L 1 ←L 1 −L 3  
L 2 ←−L 2 1 0 −1 1 0 0 L 2 ←L 2 −2L 3 1 0 0 −1 0 −1
L 3 ←L 3 L 3 ←−L 3
−−−−−−→  0 1 −2 4 −1 0  −−−−−−−−→  0 1 0 0 −1 −2  = [I3 |A−1 ].
0 0 −1 −2 0 1 0 0 1 −2 0 −1

A=[1 0 -1; 4 -1 -2; -2 0 1]


inv(A)

Exercice 1.81 ³1 0 1´
Calculer A−1 où A est la matrice 012 .
201

Correction

82 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

  L 1 ←L 1  
1 0 1 1 0 0 L 2 ←L 2 1 0 1 1 0 0
L 3 ←L 3 −2L 1
[A|I3 ] =  0 1 2 0 1 0  −−−−−−−−→  0 1 2 0 1 0 
2 0 1 0 0 1 0 0 −1 −2 0 1
L 1 ←L 1   L 1 ←L 1 +L 3  
L 2 ←L 21 0 1 1 0 0 L 2 ←L 2 +2L 3 1 0 0 −1 0 1
L 3 ←L 3 L 3 ←−L 3
−−−−−→  0 1 2 0 1 0  −−−−−−−−→  0 1 0 −4 1 2  = [I3 |A−1 ].
0 0 −1 −2 0 1 0 0 1 2 0 −1

A=[1 0 1; 0 1 2; 2 0 1]
inv(A)

Exercice 1.82
Calculer les inverses des matrices suivantes (si elles existent) :
   
µ ¶ 1 5 −3 1 5 −3
2 −3
A= , B = 2 11 1 , C = 2 11 1 .
4 5
2 9 −11 1 4 −10

Correction
det(A) = 22 ̸= 0 donc A est inversible et on trouve
µ ¶
1 5 3
A−1 = .
22 −4 2

det(B) = 2 ̸= 0 donc B est inversible et on trouve


 
−130 28 38
1
B−1 =  24 −5 −7 .
2
−4 1 1

det(C) = 0 donc C n’est pas inversible.

Exercice 1.83
Soit A la matrice
1 0 0 −1
 
1 1 −1 −1
A=
1
.
2 −1 −2
1 2 0 −2
1. Calculer det(A).
̸ 0, calculer A−1 .
2. Si det(A) =

Correction
1. Pour calculer le déterminant de la matrice A on développe par rapport à la première ligne
³ 1 −1 −1 ´ ³ 1 1 −1 ´
det(A) = 1 · det(A11 ) − 0 · det(A12 ) + 0 · det(A13 ) − (−1) · det(A14 ) = det 2 −1 −2 + det 1 2 −1 .
2 0 −2 12 0

On note que la première colonne de la sous-matrice A11 est l’opposée de la deuxième colonne, ainsi le déterminant
de A11 est nul et il ne reste plus qu’à calculer le déterminant de A14 (par exemple en utilisant la règle de S ARRUS).
³ 1 1 −1 ´
det(A) = 0 + det 1 2 −1 = 1.
12 0

2. Calculons A−1 avec l’une des deux méthodes suivantes :


Méthode de Gauss

© 2020-2021 G. Faccanoni 83
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

 L ←L −L 
1 0 0 −1 1 0 0 0 1 0 0 −1 1 0 0 0
 
2 2 1
L 3 ←L 3 −L 1
 1 1 −1 −1 0 1 0 0  L 4 ←L 4 −L 1 
 0 1 −1 0 −1 1 0 0 
[A|I4 ] = 
 1 −−−−−−−→  
2 −1 −2 0 0 1 0   0 2 −1 −1 −1 0 1 0 
1 2 0 −2 0 0 0 1 0 2 0 −1 −1 0 0 1
L 1 ←L 1
 L ←L
1 0 0 −1 1 0 0 0 1 0 0 −1 1 0 0 0
  
1 1
L 3 ←L 3 −2L 2 L 2 ←L 2 +L 3
L 4 ←L 4 −2L 2  0 1 −1 0 −1 1 0 0  L 4 ←L 4 −2L 3
 0 1 0 −1 0 −1 1 0 
−−−−−−−−→   0 0
 −−−−−−−−→  
1 −1 1 −2 1 0   0 0 1 −1 1 −2 1 0 
0 0 2 −1 1 −2 0 1 0 0 0 1 −1 2 −2 1
L 1 ←L 1 +L 4 1 0 0 0 0 2 −2 1
 
L 2 ←L 2 +L 4
L 3 ←L 3 +L 4  0 1 0 0 −1 1 −1 1 
 = [I4 |A−1 ].
−−−−−−−→  
0 0 1 0 0 0 −1 1 
0 0 0 1 −1 2 −2 1

Méthode de Cramer
⋆ On calcule la matrice des cofacteurs des éléments de A, appelée comatrice de A :
 ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯
¯1 −1 −1¯¯ ¯1 −1 −1¯¯ ¯1 1 −1¯¯ ¯1 1 −1¯¯
¯ ¯ ¯ ¯
+ ¯2 −1 −2¯¯ − ¯¯1 −1 −2¯¯ + ¯¯1 2 −2¯¯ − ¯¯1 2 −1¯¯
 ¯ 
 ¯2 0 −2¯ ¯1 0 −2¯ ¯1 2 −2¯ ¯1 2 0 ¯
 
 ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯
 ¯0 0 −1¯¯ ¯1 0 −1¯¯ ¯1 0 −1¯¯ ¯1 0 0 ¯
 ¯ ¯ 
¯ ¯ ¯
− ¯2 + ¯¯1 − ¯¯1 2 + ¯¯1 2
 ¯ 
−1 −2¯¯ −1 −2¯¯ −2¯¯ −1¯¯  0 −1 0 −1

 ¯ 
 2 0 −2¯ ¯1 0 −2¯ ¯1 2 −2¯ ¯1 2 0 ¯   2 1 0 2
comatrice =  ¯ = ;

 ¯0 ¯ ¯ ¯ ¯ ¯ ¯ ¯ −2 −1 −1 −2
 ¯ 0 −1¯¯ ¯1 0 −1¯¯ ¯1 0 −1¯¯ ¯1 0 0 ¯¯
1 1 1 1
+ ¯1 ¯ ¯ ¯
 ¯ −1 −1¯¯ − ¯¯1 −1 −1¯¯ + ¯¯1 1 −1¯¯ − ¯¯1 1 −1¯¯ 
 2 0 −2¯ ¯1 0 −2¯ ¯1 2 −2¯ ¯1 2 0 
 ¯ ¯ 
 
 ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯
 ¯0 0 −1¯¯ ¯1 0 −1¯¯ ¯1 0 −1¯¯ ¯1 0 0 ¯¯
 ¯ ¯ ¯ ¯ 
− ¯¯1 −1 −1¯¯ + ¯¯1 −1 −1¯¯ − ¯¯1 1 −1¯¯ + ¯¯1 1 −1¯¯
¯2 −1 −2¯ ¯1 −1 −2¯ ¯1 2 −2¯ ¯1 2 −1¯

⋆ on transpose la comatrice de A :
0 2 −2 1
 
−1 1 −1 1
comatriceT = 

;
0 0 −1 1
−1 2 −2 1

⋆ on divise par det(A) et on obtient


0 2 −2 1
 
−1 1 −1 1
A−1 = 

.
0 0 −1 1
−1 2 −2 1

A=[1 0 0 -1; 1 1 -1 -1; 1 2 -1 -2; 1 2 0 -2]


det(A)
inv(A)

Systèmes linéaires : méthode de Gauss pour des systèmes rectangulaires (sur ou sous déterminés)

Exercice 1.84
Vrai ou faux ?
① Un système linéaire de 4 équations à 3 inconnues dont les secondes membres sont nuls n’a que la solution nulle.
② Un système linéaire de 3 équations à 4 inconnues dont les secondes membres sont nuls a des solutions non
nulles.

Correction
① Faux. Contrexemple : un système linéaire où toutes les équations sont identiques.

84 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

② Vrai : rg(A) ≤ 3, rg([A|b]) ≤ 3 ; comme les secondes membres sont nuls alors rg([A|b]) = rg(A) donc il admet forcement
des solutions ; comme il y a 4 inconnues, alors on a une infinité de solutions.

Exercice 1.85
Résoudre le système
(
−2x + y + z = 0,
(S)
x − 2y + z = 0,

d’inconnue (x, y, z) ∈ R3 .

Correction
(S) est équivalent au système
(
−2x + y + z = 0,
−3y + 3z = 0,
qui admet une infinité de solutions de la forme (κ, κ, κ) pour κ ∈ R.

Exercice 1.86
Soit le système linéaire
(
x 1 + x 2 − 2x 3 + 4x 4 = 6,
(S)
−3x 1 − 3x 2 + 6x 3 − 12x 4 = b.
1. Pour quelle valeur de b le système est-il possible ?
2. Donner à b la valeur trouvée au point précédent et calculer la solution complète du système.

Correction
(S) est équivalent au système
(
x 1 + x 2 − 2x 3 + 4x 4 = 6,
0 = b + 18.
1. (S) est possible si et seulement si b = −18.
2. Si b = −18, (S) admet ∞3 solutions de la forme (x 1 , x 2 , x 3 , x 4 ) = (6 − a + 2b − 4c, a, b, c) avec a, b, c ∈ R.

Exercice 1.87
Résoudre le système

 x + 2y + z = −1,



 2x + y − z = 1,
(S)


 −x + y + 2z = −2,

x + y + z = 4.

Correction
(S) étant un système de 4 équations à 3 inconnues, on considère le sous-système carré d’ordre 3

 x + 2y + z = −1,

(S ′ ) 2x + y − z = 1,

−x + y + 2z = −2,

qu’on peut résoudre par la méthode du pivot de G AUSS


  
 x+2y +z=−1, L 2 ←L 2 −2L 1 x+2y +z=−1, x+2y +z=−1,
L 3 ←L 3 +L 1 L 3 ←L 3 +L 2
2x +y −z=1, −−−−−−−−→ −3y−3z=3, −−−−−−−→ −3y−3z=3,
3y+3z=−3, 0=0,

−x +y+2z=−2,
 

qui admet une infinité de solutions de la forme (1+κ, −1−κ, κ) pour κ ∈ R. Cherchons parmi ces solutions celles qui vérifient
l’équation de (S) qui n’apparaît pas dans (S ′ ) : pour (x, y, z) = (1 + κ, −1 − κ, κ) on a x + y + z = 1 + κ − 1 − κ + κ = κ donc
x + y + z = 4 si et seulement si κ = 4 ainsi (S) admet l’unique solution (5, −5, 4).

© 2020-2021 G. Faccanoni 85
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Exercice 1.88
Déterminer si le système suivant a une solution non nulle. Dans le cas affirmatif trouver la(les) solution(s) et expliquer
pourquoi : 

 x − 2y + 2z = 0,


 2x + y − 2z = 0,
(S)


 3x + 4y − 6z = 0,

3x − 11y + 12z = 0.

Correction
(S) étant un système de 4 équations à 3 inconnues, on considère le sous-système carré d’ordre 3

 x − 2y + 2z = 0,

(S ′ ) 2x + y − 2z = 0,

3x + 4y − 6z = 0,

qu’on peut résoudre par la méthode du pivot de G AUSS


  
 x−2y+2z=0, L 2 ←L 2 −2L 1 x−2y +2z=0, x−2y+2z=0,
L 3 ←L 3 −3L 1 L 3 ←L 3 −2L 2
2x +y−2z=0, −−−−−−−−→ 5y −6z=0, −−−−−−−−→ 5y−6z=0,
3x+4y−6z=0, 10y−12z=0, 0=0,
  

qui admet une infinité de solutions de la forme (2κ, 6κ, 5κ) pour κ ∈ R. Cherchons parmi ces solutions celles qui vérifient
l’équation de (S) qui n’apparaît pas dans (S ′ ) : pour (x, y, z) = (2κ, 6κ, 5κ) on a 3x − 11y + 12z = 6κ − 66κ + 60κ = 0 donc
3x − 11y + 12z = 0 pour tout κ ∈ R ainsi (S) admet une infinité de solutions de la forme (2κ, 6κ, 5κ) pour κ ∈ R.

1.5.4. Valeurs et vecteur propres


Exercice 1.89 (Migration entre deux villes)
Deux villes A et B totalisent une population d’un million d’habitants. La ville A est plus agréable, mais la ville B offre
plus de possibilités d’emplois. 20% des habitants de B partent chaque année habiter A pour avoir un meilleur cadre de
vie, et 5% des habitants de A partent chaque année habiter B pour trouver un meilleur emploi. Sachant qu’à l’année 0,
un quart des habitants sont en A, quelle est la population de A et de B au bout de 1 an, 2 ans, 4 ans, 9 ans ?

Correction
On résume les informations dans un graphe de transition :

5%

95% A B 80%

20%

Les sommets du graphes correspondent aux différents états possibles (ici, habiter la ville A ou la ville B ), et les flèches
donnent le pourcentage de gens qui passent d’un état à un autre, d’une année sur l’autre.
Méthode directe La suite des états successifs est décrite par une relation de récurrence linéaire, de la forme xn+1 = Txn .
Le vecteur xn ∈ R2 est le vecteur d’état du système, i.e. le vecteur (a n , b n ) où a n est la population de la ville A après n
années et b n est la population de la ville B après n années, et la matrice T est la matrice de transition. Ainsi,
1  
4 95% 20%
x(0) =   T= 
3
4
5% 80%

donc

20% 41
     31   
95% 80 0.3875
x(1) = Tx(0) =    =   =  
5% 80% 34 49
80
0.6125

86 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

   31   157   
95% 20% 80 320 0.90625
(2) (1)
x = Tx =   =   =  
5% 80% 49 80
163
320
0.509375

Méthode par récurrence La relation de récurrence linéaire qui peut être explicitée : xn = Tn x0 . Ainsi,
 73 7
1  157   
80 20 4 320 0.90625
x(2) = T2 x(0) =    = 
= 
7 13 3 163
0.509375
 80
221
20
35
 4
1
 320
 641

256 64 4 0.6259765625 1024
x(4) = T4 x(0) =    =  ≃ 
35 29 3 383
0.3740234375
 256
1068259
64 4
242461
 1024
1
  3977791   
1310720 327680 4 5242880 0.7587034225
(9) 9 (0)
x =T x =   =  ≃ 
242461 85219 3 1265089
1310720 327680 4 5242880
0.2412965775

On peut vérifier numériquement que µ ¶


(n) 0.8
lim x =
n→+∞ 0.2
autrement dit la suite converge vers un état où le 80% de la population se trouve dans la la ville A et 20% dans la ville
B.
Méthode par diagonalisation En diagonalisant d’abord la matrice T on obtient T = PDP−1 avec
 p17 p 
p4 − p1 17
   
17 2
1 0 5 5
P=  D=  P−1 =  p p

p1 p1
17 2
0 25% − 52 4 2
5

donc
p     p17
p4 − p1 17 1
 
17 2
1 5 5
0 4
x(k) = PDk P−1 x(0) =   
p p
 
p1 1
0 4k1 3
17
p
2 − 52 4 5 2 4
  p17 p   
p4 − p1 17 1 4 4
  1 4
17 2
1 0 5 5 4 5 5 4 5
−−−−−→   
p p
  =    =  
k→+∞ p1 p1 0 0 − 2 4 2 3 1 1 3 1
17 2 5 5 4 5 5 4 5

Exercice 1.90 (Chaîne de Markov)


Considérons un processus de M ARKOV modélisé par la matrice de transition suivante :
 
1
0 3
T=
2
1 3

1. Vérifier que les valeurs propres de T sont 1 et − 31 .


2. Calculer les vecteurs propres associés à ces valeurs propres sans les normaliser (on utilisera la méthode de G AUSS
pour résoudre les deux systèmes linéaires).
3. Définir deux matrice D et P telles que T = PDP−1 et calculer P−1 en utilisant la méthode de G AUSS.
4. On veut trouver le comportement du processus à long terme si l’état initiale est x(0) = (1, 0)T . On sait que le
comportement du processus à l’étape k + 1 est lié au comportement à l’étape k par la relation x(k+1) = Tx(k) et
donc, par récurrence, x(k+1) = Tk+1 x(0) . On cherche à calculer lim x(k) .
k→+∞
(k)
⋆ S’il existe x = lim x , alors x = Tx, autrement dit x est solution du système linéaire (T − I)x = 0.
k→+∞
Calculer x et le diviser par la somme de ses composantes.
⋆ Étant donné que T = PDP−1 , alors lim x(k) = P( lim Dk )P−1 x(0) .
k→+∞ k→+∞
Calculer le produit P( lim Dk )P−1 x(0) et le diviser par la somme de ses composantes.
k→+∞
Vérifier qu’on obtient bien la valeur calculée précédemment.

© 2020-2021 G. Faccanoni 87
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Correction
1. Calcul des valeurs propres :
µ ¶ µ ¶
−λ 1 2 1 2 1
p(λ) = det(T − λI2 ) = det λ − = λ2 − λ − .
def
1 2 = −λ −
3 3 − λ 3 3 3 3

On vérifie facilement que les valeurs données annulent ce polynôme, en effet :

2 1
p(1) = 12 − − = 0,
3 3
1 2 21 1 1 2 1
µ ¶ µ ¶
1
p − = − + − = + − = 0.
3 3 33 3 9 9 3

2. On pose λ1 = 1 et λ2 = − 13 . Pour calculer les vecteurs propres on doit résoudre deux systèmes linéaires homogènes. 1
2.1. On résout le système linéaire (T − λ1 I2 )x = 0, ce qui donne l’espace vectoriel des vecteurs de la forme (κ, 3κ)T :
à ! à ! (
1 1
−1 3 −1 3 y = κ,
−−−−−−−−→ donc
1 − 13 L 2 ←L 2 + 13 L 1 0 0 x = 31 y = κ3 .

On choisit par exemple comme base l’élément x = (1, 3)T .


2.2. On résout le système linéaire (T − λ2 I2 )x = 0, ce qui donne l’espace vectoriel des vecteurs de la forme (−κ, κ)T :
à ! à ! (
1 1 1 1
3 3 3 3 y = κ,
−−−−−−−→ donc
1 1 L 2 ←L 2 −L 1 0 0 x = −y = −κ.

On choisit par exemple comme base l’élément x = (−1, 1)T .


3. D est la matrice diagonale contenant les valeurs propres et P la matrice dont chaque colonne contient un vecteur de
l’espace propre associé. On pose donc
µ ¶ µ ¶
1 0 1 −1
D= P=
0 − 31 3 1

et on calcule P−1 :
µ ¶ µ ¶
1 −1 1 0 L 2 ←L 2 −3L 1 1
−1 1 0
[P|I2 ] = −−−−−−−−→
3 1 0 1 0
4 −3 1
µ ¶ µ ¶
L 2 ←L 2 /4 1 −1 1 0 L 1 ←L 1 +L 2 1 0 1/4 1/4
−−−−−−→ −−−−−−−→ = [I2 |P−1 ]
0 1 −3/4 1/4 0 1 −3/4 1/4

Ainsi µ1 1¶
P−1 = 4 4
− 43 1
4

4. À long terme le vecteur d’état sera x = lim x(k) .


k→+∞
⋆ On a déjà calculé la solution du système linéaire (T − I2 )x = 0, il s’agit simplement d’un vecteur propre associé à
la valeur propre 1, donc si on note v = (1, 3)T , on calcule x = P2 v = (1/4, 3/4)T = (25%, 75%)T .
v
i =1 i

⋆ Étant donné que T = PDP −1


, alors
          
1 1 1 1
1 −1 1 1 0 4 4  1  −1 1 0 4 4  1
P( lim Dk )P−1 x(0) =   lim   =  
1 3 1
k→+∞ 3 1 k→+∞ 0 (−3)k −4 4 0 3 1 0 0 − 34 1
4 0
        
1 −1 41 41 1 1 1
1 1
=    = 4 4  = 4
3 3 3
3 1 0 0 0 4 4 0 4

3 T
¡1 ¢
donc x = 4, 4 .

1. Les systèmes étant homogènes, on n’écrira pas la matrice augmentée.

88 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

Exercice 1.91 (Chaîne de Markov)


Une étude non officielle de la météo dans une ville au début du printemps montre les observations suivantes :
⋆ il est presque impossible d’avoir deux beaux jours consécutifs,
⋆ si nous avons un beau jour, on a la même probabilité d’avoir de la neige ou de la pluie le jour suivant,
⋆ si nous avons la neige ou de la pluie, alors nous avons une chance égale pour avoir la même chose le jour suivant,
⋆ s’il y a un changement de neige ou de pluie, seulement la moitié du temps ce changement est à un beau jour.
Si les lettres b, p, n représentent beau, pluie et neige respectivement, on note P (i → j ) la probabilité d’avoir la météo j
si la veille la météo était i , donc

P (b → b) = 0 P (p → b) = 0.25 P (n → b) = 0.25
P (b → p) = 0.5 P (p → p) = 0.5 P (n → p) = 0.25
P (b → n) = 0.5 P (p → n) = 0.25 P (n → n) = 0.5.

Comme la météo de demain dépend seulement d’aujourd’hui, c’est un processus de M ARKOV. La matrice de transition
qui modélise ce système est donc
 
0 14 14
 
T =  12 21 14 
 
 
1 1 1
2 4 2

1. Vérifier que les valeurs propres de T sont 1, 41 et − 14 .


2. Calculer les vecteurs propres associés à ces valeurs propres sans les normaliser (on utilisera la méthode de G AUSS
pour résoudre les trois systèmes linéaires).
3. Définir deux matrice D et P telles que T = PDP−1 et calculer P−1 en utilisant la méthode de G AUSS.
4. On veut trouver le comportement de la météo à long terme s’il fait beau aujourd’hui, i.e. si x(0) = (1, 0, 0)T . On sait
que le comportement de la météo au jour k + 1 est lié à la météo au jour k par la relation

x(k+1) = Tx(k)

et donc, par récurrence,


x(k+1) = Tk+1 x(0) .
On cherche à calculer lim x(k) .
k→+∞

⋆ S’il existe x = lim x(k) , alors x = Tx, autrement dit x est solution du système linéaire (T − I)x = 0. Calculer
k→+∞
cette limite. a
⋆ Étant donné que T = PDP−1 , alors

lim x(k) = lim x(k) = lim Tk x(0) = lim (PDP−1 )k x(0) = lim PDk P−1 x(0) = P( lim Dk )P−1 x(0)
k→+∞ k→+∞ k→+∞ k→+∞ k→+∞ k→+∞

Calculer ce produit et vérifier qu’on obtient bien la limite x calculée précédemment.


a. Puisque toutes les entrées de la matrice de transition sont entre 0 et 1 exclusivement, alors la convergence est garantie d’avoir lieu. La
convergence peut avoir lieu quand 0 et 1 sont dans la matrice de transition, mais la convergence n’est plus garantie.

Correction
1. Calcul des valeurs propres :
¶2
µ µ ¶ µ ¶
1 1 1 1 1 1 1 1 1 1
p(λ) = det(T − λI) = −λ − λ + −λ + λ− − λ = −λ3 + λ2 + λ − .
def
+ −
2 32 32 8 2 16 8 2 16 16

On vérifie facilement que les valeurs données annulent ce polynôme, en effet :

1 1 1 1
p(1) = −λ3 + λ2 + λ − = −1 + 1 + − = 0,
µ ¶ 16 16 16 16
1 1 1 1 1 1
p =− 3 + 2 + − = 0,
4 4 4 16 4 16
µ ¶
1 1 1 1 1 1
p − =− + + − = 0.
4 (−4)3 (−4)2 16 −4 16

© 2020-2021 G. Faccanoni 89
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

1
2. On pose λ1 = 1, λ2 = 4 et λ3 = − 14 . Pour calculer les vecteurs propres on doit résoudre trois systèmes linéaires. 2

2.1. On résout le système linéaire (T − λ1 I)x = 0, ce qui donne x = (1, 2, 2)T :



1 1  1 1  1 1  z = κ,
  
−1 −1 −1

4 4 4 4 4 4 
 − 38 z
donc y = − 3 = κ,
 1
− 21 1 
−−−−−−−−→  0 − 38 3 
−−−−−−−→
8  L ←L +L  0 − 38 3
 
 2 4  8
1 1 L 2 ←L 2 + 1 L 1 3 3 2  8
− 21 L ←L + 21 L 0 3
− 83 0 0 0 − 1 y− 1 z

x = 4 −1 4 = κ2 .

2 4 8

3 3 2 1

2.2. On résout le système linéaire (T − λ2 I)x = 0, ce qui donne x = (0, 1, −1)T .



z = κ,
− 41 1 1
  1 1 1  1 1 1

−4 −4


4 4 4 4 4 4 − 43 z


donc y = 3 = −κ,
 1 1 1 3 3 3 3
−−−−−− − −→ 0 −−−−− −−→ 0
 
 2 4 4 L ←L +2L
  4 4 L ←L −L
  4 4 4
1 L 2 ←L 2 +2L 1 3 3 2
− 1 y− 1 z

1 1 3 3
0 0 0 0

3 3 1  x = 4 1 4 = 0.

2 4 4 4 4

−4

2.3. On résout le système linéaire (T − λ3 I)x = 0, ce qui donne x = (−2, 1, 1)T .



1 1 1 1 1 1  1 1 1 


 z = κ,
4 4 4 4 4 4 4 4 4 1
4z

donc y = 1 = κ,

1 3 1 1
−−−−−− − −→ 0 − 41  −−−−−−−→  0 1
− 14 
   
2 4 4 L ←L −2L
  4 4 4
L 3 ←L 3 +L 2
3 L 2 ←L 2 −2L 1 − 1 y− 1 z

1 1
0 − 14 1
0 0 0

3 3 1  x = 4 1 4 = −2κ.

2 4 4 4

4

3. D est la matrice diagonale contenant les valeurs propres et P la matrice dont chaque colonne contient le vecteur
propre associé. On pose donc

1 0 0
   
1 0 −2
1
D = 0 4 0  P = 2 1 1
0 0 − 14 2 −1 1

et on calcule P−1 :
   
1 0 −2 1 0 0 L 2 ←L 2 −2L 1 1 0 −2 1 0 0
L 3 ←L 3 −2L 1
[P|I3 ] =  2 1 1 0 1 0  −−−−−−−−→  0 1 5 −2 1 0 
2 −1 1 0 0 1 0 −1 5 −2 0 1
   
L 1 ←L 1 1 0 −2 1 0 0 L 1 ←L 1 1 0 −2 1 0 0
L 3 ←L 3 +L 2 L 2 ←L 2 +L 3
−−−−−−−→  0 1 5 −2 1 0  −−−−−−−→  0 1 5 −2 1 0 
0 0 10 −4 1 1 0 0 10 −4 1 1
   1 1 1 
1 0 −2 1 0 0 L 1 ←L 1 +2L 3 1 0 0 5 5 5
L 3 ←L 3 /10 L ←L −5L 3 1
−−−−−−−→  0 1 5 −2 1 0  −−2−−−2−−−→  0 1 0 0 2 − 12  = [I3 |P−1 ]
0 0 1 − 25 1
10
1
10 0 0 1 − 25 1
10
1
10

Ainsi 1 1 1 
5 5 5
1
P−1 =  0 2 − 21 
2 1 1
5 10 10

4. S’il fait beau aujourd’hui, alors le vecteur d’état initial est


 
1
x(0) = 0
0

À long terme le vecteur d’état sera x = lim x(k) .


k→+∞

⋆ On a déjà calculé la solution du système linéaire (T − I)x = 0, il s’agit simplement d’un vecteur propre associé à la
valeur propre 1, donc si on note v = (1, 2, 2)T , on calcule x = v/ 3i =1 v i = (1/5, 2/5, 2/5)T .
P

2. Les systèmes étant homogènes, on n’écrira pas la matrice augmentée.

90 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background

⋆ Étant donné que T = PDP−1 , alors


     
1 1 1
1 0 −2 1 0 0 1
   5 5
  5
x = P( lim Dk )P−1 x(0) = 2 1 1  lim 0 41k 0   0 12 − 12  0
      
k→+∞   k→+∞    
1 2 1 1
2 −1 1 0 0 (−4)k 5 10 10 0
         
1 0 −2 1 0 0 51 1
5
1
5  1 1 0 0 51 1
     5
1
= 2 1 1  0 0 0  0 − 21  0 = 2 0 0  0  =  25 
         
   2       
2 −1 1 0 0 0 25 1
10
1
10 0 2 0 0 25 2
5

À long terme, il y a une probabilité de 20% d’avoir un beau jour, 40% d’avoir de la pluie et 40% d’avoir de la neige.

Exercice 1.92 (Valeurs singulières)


Soit
µ ¶
1 2 0
A=
2 1 0
Calculer analytiquement et vérifier numériquement sa décomposition SVD.

Correction
A ∈ Rn×p avec n = 2 et p = 3 donc r = 2.
Pour calculer la décomposition SVD nous allons calculer les valeurs et vecteurs propres des matrices AAT et AT A.

Valeurs propres Vecteurs propres unitaires


µ ¶ µ ¶
T 5 4 1 1 1
AA = λ1 = 9 > λ2 = 1 U= p
4 5 2 1 −1
1 1 0
   
5 4 0
T 1 
A A = 4 5 0 λ1 = 9 > λ2 = 1 > λ3 = 0 V = p 1 −1 p0 
0 0 0 2 0 0 2

Donc σ21 = 9, σ22 = 1 et

σ1 vT1
  

..  . 
  .. 


 .  
  vT 
¢ σr
A = USVT = u1
¡  r 
... ur ur +1 ... un 

 T 
| {z } 0  vr +1 
∈Rn×n ..   .. 
  

 .  . 
0 vTp
| {z } | {z }
∈Rn×p ∈Rp×p
 T 
σ1 v1

r
..   ..  X
σi ui × vTi
¡ ¢
= u1 ... ur  .  .  =
i =1
σr vTr
| {z } | {z }
∈Rn×r ∈Rr ×r
| {z } | {z }
∈Rr ×r ∈Rr ×p

devient

1 1 0
 
µ ¶µ ¶
1 1 1 3 0 0 1 
A= p p 1 −1
p
0 
2 1 −1 0 1 0 2 0 0 2
µ ¶µ ¶µ ¶
1
r =2 1 1 3 0 1 1 0
=
2 1 −1 0 1 1 −1 0
µ ¶ µ ¶
3 1 1 0 1 1 −1 0
= +
2 1 1 0 2 −1 1 0

© 2020-2021 G. Faccanoni 91
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023

Notons que la décomposition n’est pas unique, par exemple avec Octave on trouve

Vecteurs propres unitaires :

1 0
 
µ ¶ −1
1 1 −1 1 
U= p V= p 1 1
p
0 
2 1 1 2 0 0 2

ce qui donne le même résultat (heureusement !)


A=[1 2 0; 2 1 0]
[n,p]=size(A)
r=min(n,p)

AAT=A*A’
[VecAAT,ValAAT]=eig(AAT) % unsorted list of all eigenvalues
% To produce a sorted vector with the eigenvalues, and re-order the eigenvectors accordingly:
[ee,perm] = sort(diag(abs(ValAAT)),"descend");
ValAAT=diag(ee)
VecAAT=VecAAT(:,perm)

ATA=A’*A
[VecATA,ValATA]=eig(ATA)
[ee,perm] = sort(diag(abs(ValATA)),"descend");
ValATA=diag(ee)
VecATA=VecATA(:,perm)

myS=diag(sqrt(diag(ValATA)),n,p)
myU=VecAAT
myV=VecATA

[UU,SS,VV]=svd(A)

dS=diag(SS)

AA=zeros(5,4);
for i=1:length(dS)
temp=dS(i)*UU(:,i)*VV(i,:)
AA+=temp
end

92 © 2020-2021 G. Faccanoni
CHAPITRE 2

Méthodes de résolution numériques des systèmes


linéaires

La solution du système Ax = b existe et est unique si et seulement si A n’est pas singulière. En théorie, la solution peut être
calculée en utilisant les formules de C RAMER. Si les n + 1 déterminants sont calculés par le développement de L APLACE,
environ 3(n + 1)! opérations sont nécessaires. 1 Ce coût est trop élevé pour les grandes valeurs de n qu’on rencontre souvent
en pratique. Deux classes de méthodes sont alors utilisées :
⋆ les méthodes directes, qui donnent la solution en un nombre fini d’étapes,
⋆ les méthodes itératives, qui nécessitent (théoriquement) un nombre infini d’étapes.
Il faut être conscient que le choix entre méthodes directes et itératives dépend de nombreux critères : l’efficacité théorique
de l’algorithme, le type de matrice, la capacité de stockage en mémoire, l’architecture de l’ordinateur. Notons enfin qu’un
système associé à une matrice pleine ne peut pas être résolu par moins de n 2 opérations. En effet, si les équations sont
toutes couplées, on peut s’attendre à ce que chacun des n 2 coefficients de la matrice soit impliqué au moins une fois dans
une opération algébrique.
Bien que la plupart des méthodes de ce chapitre soient applicables aux matrices complexes, nous restreindrons notre
analyse aux matrices réelles.

ATTENTION
Un système linéaire ne change pas de solution si on change l’ordre des équations. Cependant, l’ordre des équations peut
changer totalement la solution donnée par une méthode numérique !

2.1. Méthodes directes


2.1.1. Méthode de Gauss : rappelles
La méthode de G AUSS transforme le système Ax = b en un système équivalent (c’est-à-dire ayant la même solution) de la
forme Ux = y, où U est une matrice triangulaire supérieure et y est un second membre convenablement modifié. Enfin on
yn
résout le système triangulaire supérieur Ux = y par remontée : d’abord on trouve x n = unn , ensuite par récurrence on déduit
à !
1 n
P
les inconnues x n−1 , x n−2 , . . . x 1 grâce à la relation x i = yi − ui j x j .
ui i j =i +1

Définition 2.1 (Méthode du pivot de G AUSS)


Soit A = (a i j ) 1≤i ≤n la matrice des coefficients du système Ax = b.
1≤ j ≤p
Étape k : en permutant éventuellement deux lignes du système, on peut supposer a kk ̸= 0 (appelé pivot de l’étape k). On
transforme toutes les lignes L i avec i > k comme suit :
ai k
Li ← Li − Lk .
a kk

En réitérant le procédé pour k de 1 à n − 1, on aboutit à un système triangulaire supérieur.

1. On entend par opération une somme, une soustraction, un produit ou une division.

93
Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

E XEMPLE
Résolution du système linéaire
x 1 +2x 2 +3x 3 +4x 4 = 1,


2x 1 +3x 2 +4x 3 +x 4 = 2,

3x 1 +4x 2 +x 3 +2x 4 = 3,


4x 1 +x 2 +2x 3 +3x 4 = 4.

 L ←L −2L 
1 2 3 4 1 1 2 3 4 1
 
2 2 1
L 3 ←L 3 −3L 1
 2 3 4 1 2  L 4 ←L 4 −4L 1 
 0 −1 −2 −7 0 
[A|b] = 
 3
 −−−−−−−−→ 
4 1 2 3   0 −2 −8 −10 0 
4 1 2 3 4 0 −7 −10 −13 0
1 2 3 4 1 1 2 3 4 1
   
L 3 ←L 3 −2L 2
L 4 ←L 4 −7L 2  0 −1 −2 −7 0 
 −L−4−
←L 4 +L 3  0 −1 −2 −7 0 
−−−−−−−−→   0 0 −−−−→  
−4 4 0   0 0 −4 4 0 
0 0 4 36 0 0 0 0 40 0

donc
x 1 +2x 2 +3x 3 +4x 4 = 1,


−x 2 −2x 3 −7x 4 = 0,

=⇒ x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.

 −4x 3 +4x 4 = 0,

40x 4 = 0.

Si on a plusieurs systèmes dont seul le second membre change, il peut être utile de factoriser une fois pour toute la matrice
A et résoudre ensuite des systèmes triangulaires.

2.1.2. Factorisation LU et systèmes linéaires


Soit A ∈ Rn×n . Supposons qu’il existe deux matrices, L et U, respectivement triangulaire inférieure et supérieure, telles que
A = LU (On appelle cela une factorisation ou décomposition LU de A.) Résoudre le système Ax = b équivaut à résoudre
LUx = b. Si on note y = Ux alors on peut commencer par résoudre le système Ly = b obtenant ainsi le vecteur y, puis on
def

résout Ux = y pour obtenir x :

résoudre Ax = b revient à résoudre deux systèmes triangulaires : d’abord le système Ly = b, puis Ux = y.

Si A est régulière (i.e. non singulière), alors L et U le sont aussi, et leurs termes diagonaux sont donc non nuls. Les deux
systèmes triangulaires sont faciles à résoudre comme on va voir ci-dessous.

Proposition 2.2 (Système triangulaire inférieur Ly = b)


L étant triangulaire inférieure, la première ligne du système Ly = b est de la forme

ℓ11 y 1 = b 1

ce qui donne la valeur de y 1 puisque ℓ11 ̸= 0. En substituant cette valeur de y 1 dans les n − 1 équations suivantes, on obtient
un nouveau système dont les inconnues sont y 2 , . . . , y n ), pour lesquelles on peut faire de même. En procédant équation par
équation, on calcule ainsi toutes les inconnues par l’algorithme dit de descente :

b1
y1 =
ℓ11
à !
1 iX
−1
yi = bi − ℓi k y k , pour i = 2, 3, . . . , n
ℓi i k=1

Évaluons le nombre d’opérations requis : on effectue i − 1 sommes, i − 1 produits et 1 division pour calculer l’inconnue y i .
Le nombre total d’opérations est donc
n n
1 + 2 (i − 1) = n 2 .
X X
i =1 i =1

Proposition 2.3 (Système triangulaire supérieur Ux = y)


On peut résoudre le système Ux = y de manière similaire. Cette fois, on commence par déterminer x n puis, de proche
en proche, les autres inconnues x i de i = n − 1 à i = 1. En procédant équation par équation, on calcule ainsi toutes les

94 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

inconnues par l’algorithme dit de remontée :


yn
xn =
u nn
à !
1 Xn
xi = yi − ui k xk , pour i = n − 1, n − 2, . . . , 1
ui i k=i +1

Il nécessite également n 2 opérations.


Il reste à présent à trouver un algorithme qui permette le calcul effectif des facteurs L et U tels que A = LU avec U triangulaire
supérieure et L triangulaire inférieure.

Proposition 2.4 (Factorisation LU de D OLITTLE-v1)


Si on choisit de chercher une matrice L ayant la valeur 1 pour les n éléments diagonaux, la matrice U peut être déterminée
avec l’algorithme de Gauss et la matrice L contient les coefficients multiplicateurs de chaque ligne i à l’étape k (on appelle
cela la factorisation de D OLITTLE).
L ← In
for k = 1 à n − 1 do
for i = k + 1 à n do
ai k
ℓi k ← {Attention, à chaque étape k, le terme a kk , appelé pivot, doit être non nul !}
a kk
for j = 1 à n do
a i j ← a i j − ℓi k a k j {Ligne i , colonnes j = 1 . . . n : il s’agit de u i k mémorisé dans a i k }
end for
end for
end for
À la fin la matrice A est triangulaire supérieure et on pose U = A
Amélioration : à chaque étape k, les termes non nuls de U et les termes non nuls en-dessous de la diagonale principale de
L sont mémorisés encore dans la matrice A. Autrement dit, comme on sait qu’à l’étape k on a a i k = 0 pour i > k, au lieu
d’avoir des 0 on va y mémoriser les coefficients ℓi k .

Proposition 2.5 (Factorisation LU de D OLITTLE-v2)


for k = 1 à n − 1 do
for i = k + 1 à n do
ai k
ai k ← {Ligne i , colonnes j = 1 . . . k : il s’agit de ℓi k mémorisé dans a i k }
a kk
for j = k + 1 à n do
ai j ← ai j − ai k ak j {Ligne i , colonnes j = k + 1 . . . n : il s’agit de u i k mémorisé dans a i k }
end for
end for
end for
À la fin on posera :
U = On puis U = partie triangulaire supérieure de A
L = In puis L = partie triangulaire strictement inférieure de A

Proposition 2.6
Pour une matrice quelconque A ∈ Rn×n , la factorisation LU existe et est unique si et seulement si les sous-matrices
principales Ai de A d’ordre i = 1, . . . , n − 1 (celles que l’on obtient en restreignant A à ses i premières lignes et colonnes) ne
sont pas singulières (autrement dit si les mineurs principaux, i.e. les déterminants des sous-matrices principales, sont non
nuls).
On peut identifier des classes de matrices particulières pour lesquelles les hypothèses de cette proposition sont satisfaites :

Proposition 2.7
Si la matrice A ∈ Rn×n est symétrique et définie positive ou si est à diagonale dominante 2 alors la factorisation LU existe et
2. A ∈ Rn×n est
⋆ symétrique si a i j = a j i pour tout i , j = 1, . . . , n,
⋆ définie positive si pour tout vecteurs x ∈ Rn avec x ̸= 0, xT Ax > 0,
⋆ à diagonale dominante par lignes si |a i i | ≥ nj=1 |a i j |, pour i = 1, . . . , n (à diagonale dominante stricte par lignes si l’inégalité est stricte),
P

j ̸=i
Pn
⋆ à diagonale dominante par colonnes si |a i i | ≥ j =1
|a j i |, pour i = 1, . . . , n (à diagonale dominante stricte par colonnes si l’inégalité est stricte),
j ̸=i

© 2020-2021 G. Faccanoni 95
Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

est unique.

Une technique qui permet d’effectuer la factorisation LU pour toute matrice A inversible, même quand les hypothèses de
cette proposition ne sont pas vérifiées, est la méthode du pivot par ligne : il suffit d’effectuer une permutation convenable
des lignes de la matrice originale A à chaque étape k où un terme diagonal a kk s’annule.

Définition 2.8 (Algorithme de G AUSS avec pivot partiel)


(k)
Dans la méthode d’élimination de G AUSS les pivot a kk doivent être différents de zéro. Si la matrice est inversible mais un
pivot est zéro (ou numériquement proche de zéro), on peut permuter deux lignes avant de poursuivre la factorisation.
Concrètement, à chaque étape on cherche à avoir le pivot de valeur absolue la plus grande possible. L’algorithme modifié
s’écrit alors
P ← In
for k = 1 à n − 1 do
Dans la colonne k de A, pour les lignes i ≥ k on cherche le coefficient maximal en valeur absolu et on échange sa ligne
avec la ligne k, on fait la même opération sur la matrice P
for i = k + 1 à n do
ai k
ai k ←
a kk
for j = k + 1 à n do
ai j ← ai j − ai k ak j
end for
end for
end for
Une fois calculées les matrices L et U et la matrice des permutations P (i.e. la matrice telle que PA = LU), résoudre le
système linéaire consiste simplement à résoudre successivement le système triangulaire inférieur Ly = Pb puis le système
triangulaire supérieure Ux = y.

Propriété 2.9 (Déterminant)


La factorisation LU permet de calculer le déterminant de A en O(n 3 ) car det(A) = det(L) det(U) = nk=1 u kk .
Q

Propriété 2.10 (Inverse d’une matrice)


Le calcul explicite de l’inverse d’une matrice peut être effectué en utilisant la factorisation LU comme suit. En notant X
l’inverse d’une matrice régulière A ∈ Rn×n , les vecteurs colonnes de X sont les solutions des systèmes linéaires

Axi = ei , pour i = 1, . . . , n.

En supposant que PA = LU, où P est la matrice de changement de pivot partiel, on doit résoudre 2n systèmes triangulaires
de la forme
Lyi = Pei , Uxi = yi , pour i = 1, . . . , n.
c’est-à-dire une suite de systèmes linéaires ayant la même matrice mais des seconds membres différents.

E XEMPLE
Soit les systèmes linéaires

1 2 3 4 x1 1 1 2 3 4 x1 10
         
2 3 4 1  x 2  2  2 3 4 1 x 2  10
   =   et    =  .
3 4 1 2   x 3  3  3 4 1 2 x 3  10
4 1 2 3 x4 4 4 1 2 3 x4 10

1. Résoudre les systèmes linéaires par la méthode du pivot de G AUSS.


2. Factoriser la matrice A (sans utiliser la technique du pivot) et résoudre les systèmes linéaires.
3. Calculer le déterminant de A.
4. Calculer A−1 .
1. Résolution par la méthode du pivot de G AUSS du premier système
 L ←L −2L 
1 2 3 4 1 1 2 3 4 1 1 2 3 4 1
   
2 2 1
L 3 ←L 3 −3L 1 L 3 ←L 3 −2L 2
 2 3 4 1 2  L 4 ←L 4 −4L 1  0 −1 −2 −7 0   0 −1 −2 −7 0 
 −L−4−←L 4 −7L 2

[A|b] = 
 3 −−−−−−−−→  −−−−−→  
4 1 2 3   0 −2 −8 −10 0   0 0 −4 4 0 
4 1 2 3 4 0 −7 −10 −13 0 0 0 4 36 0

96 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

1 2 3 4 1
 
L 4 ←L 4 +L 3  0 −1 −2 −7 0 
−−−−−−−→   0

0 −4 4 0 
0 0 0 40 0

donc
x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.

Résolution par la méthode du pivot de G AUSS du second système


 L ←L −2L 
1 2 3 4 10 1 2 3 4 10 1 2 3 4 10
   
2 2 1
L 3 ←L 3 −3L 1 L 3 ←L 3 −2L 2
 2 3 4 1 10  L 0 −1 −2 −7 −10   0 −1 −2 −7 −10 
4 ←L 4 −4L 1   −L−4−←L 4 −7L 2

(A|b) = 
 3
 −−−−−−−−→ −−−−−→  
4 1 2 10   0 −2 −8 −10 −20   0 0 −4 4 0 
4 1 2 3 10 0 −7 −10 −13 −30 0 0 4 36 40
1 2 3 4 10
 
 0
L 4 ←L 4 +L 3 −1 −2 −7 −10 
−−−−−−−→ 
 0

0 −4 4 0 
0 0 0 40 40

donc 

 x 1 + 2x 2 + 3x 3 + 4x 4 = 10


 −x − 2x − 7x = −10
2 3 4
=⇒ x 4 = 1, x 3 = 1, x 2 = 1, x 1 = 1.


 −4x 3 + 4x 4 = 0

40x 4 = 40

2. Factorisation de la matrice A (on mémorise L privée de sa diagonale dans la partie triangulaire inférieure de A car
dans cette partie il n’y a que des 0 qui vont apparaître) :

1 2 3 4 L 2 ←L 2 −2L 1 1 2 3 4 1 2 3 4 1 2 3 4
       
L 3 ←L 3 −3L 1 L 3 ←L 3 −2L 2
2 3 4 1 2 −1 −2 −7  2 −1 −2 −7 L 3 2 −1 −2 −7
 −L−4−←L 4 −4L 1   −L−4−←L 4 −7L 2 ←L +L
 −−4−−−4−−→


3 −−−−−→  −−−−−→  
4 1 2 3 −2 −8 −10 3 2 −4 4 3 2 −4 4
4 1 2 3 4 −7 −10 −13 4 7 4 36 4 7 −1 40

donc

1 0 0 0 1 2 3 4
   
2 1 0 0 0 −1 −2 −7
L=
3
 U= 
2 1 0 0 0 −4 4
4 7 −1 1 0 0 0 40

Pour résoudre le premier système linéaire on résout les systèmes triangulaires Ly = b

1 0 0 0 y1 1
    
2 1 0 0  y 2  2 
   =   =⇒ y 1 = 1, y 2 = 0, y 3 = 0, y4 = 0
3 2 1 0   y 3  3 
4 7 −1 1 y4 4

et Ux = y

1 2 3 4 x1 1
    
0 −1 −2 −7  x 2  0 
   =   =⇒ x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.
0 0 −4 4   x 3  0 
0 0 0 40 x 4 0

Pour résoudre le second système linéaire on résout les systèmes triangulaires Ly = b

1 0 0 0 y1 10
    

  y 2  = 10
2 1 0 0    
 =⇒ y 1 = 10, y 2 = −10, y 3 = 0, y 4 = 40
3 2 1 0  y 3  10
4 7 −1 1 y4 10

© 2020-2021 G. Faccanoni 97
Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

et Ux = y

1 2 3 4 x1 10
    

 x 2  = −10
0 −1 −2 −7    
 =⇒ x 4 = 1, x 3 = 1, x 2 = 1, x 1 = 1.
0 0 −4 4  x 3   0 
0 0 0 40 x4 40

3. Le déterminant de A est u 11 u 22 u 33 u 44 = 1 × (−1) × (−4) × 40 = 160.


4. Pour calculer A−1 on résout les quatre systèmes linéaires

1 2 3 4 x1 1 1 0 0 0 y1 1 1 1 2 3 4 x1 1 /40
                 −9 
2 3 4 1 x 2  0 2 1 0 0  y 2  0 −2 0 −1 −2 −7 x 2  −2  1/40 
    =   i.e.     =   =⇒   puis     =   =⇒  
3 4 1 2 x 3  0 3 2 1 0  y 3  0 1 0 0 −4 4  x 3   1   1/40 
4 1 2 3 x4 0 4 7 −1 1 y4 0 11 0 0 0 40 x 4 11 11
/40
1 2 3 4 x1 0 1 0 0 0 y1 0 0 1 2 3 4 x1 0 /40
                 1 
 x 2  1 
  y 2  = 1 =⇒  1  puis 0  x 2  =  1  =⇒  /40 
2 3 4 1 2 1 0 0        −1 −2 −7     1 
    =   i.e. 
3 4 1 2   x 3  0  3 2 1 0  y 3  0 −2 0 0 −4 4  x 3  −2  11/40 
4 1 2 3 x4 0 4 7 −1 1 y4 0 −9 0 0 0 40 x 4 −9 −9
/40
1 2 3 4 x1 0 1 0 0 0 y1 0 0 1 2 3 4 x1 0 /40
                 1 
 x 2  0   y 2  0
 x 2  = 0 =⇒  /40 
2 3 4 1 2 1 0 0 0  0 −1 −2 −7      11 
    =   i.e.     =   =⇒   puis 
3 4 1 2   x 3  1  3 2 1 0  y 3  1 1  0 0 −4 4   x 3  1   − 9/40
4 1 2 3 x4 0 4 7 −1 1 y4 0 1 0 0 0 40 x 4 1 1
/40
1 2 3 4 x1 0 1 0 0 0 y1 0 0 1 2 3 4 x1 0 /40
                  11 
2 3 4 1  x 2  0  2 1 0 0  y 2  0 0  0 −1 −2 −7  x 2  0   − 9/40
    =   i.e.     =   =⇒   puis     =   =⇒  
3 4 1 2   x 3  0  3 2 1 0  y 3  0 0  0 0 −4 4   x 3  0   1/40 
4 1 2 3 x4 1 4 7 −1 1 y4 1 1 0 0 0 40 x4 1 1
/40

et finalement
/40 /40 /40 /40 1 1 11
−9 1 1 11
−9
  

−1
 1/40 1
/40 11
/40 −9
/40 1 1 1 11 −9
A = 1/40
=  .
11
/40 −9
/40 1
/40  40  11 11 −9 1
11
/40 −9
/40 1
/40 1
/40 11 −9 1 1

2.2. Méthodes itératives


On n’a décrit qu’un seul algorithme de résolution, l’algorithme de G AUSS (version de D OLITTLE). Or cet algorithme est bien
insuffisant pour résoudre numériquement, c’est-à-dire sur ordinateur, les énormes systèmes linéaires rencontrés dans
la pratique. L’analyse numérique matricielle est l’étude d’algorithmes efficaces dans le but de résoudre effectivement et
efficacement de tels systèmes. C’est un vaste champ de recherche toujours très actif de nos jours.
Une méthode itérative pour le calcul de la solution d’un système linéaire Ax = b avec A ∈ Rn×n est une méthode qui
construit une suite de vecteurs x(k) = (x 1(k) , x 2(k) , . . . , x n(k) )T ∈ Rn convergent vers le vecteur solution exacte x = (x 1 , x 2 , . . . , x n )T
pour tout vecteur initiale x(0) = (x 1(0) , x 2(0) , . . . , x n(0) )T ∈ Rn lorsque k tend vers +∞, c’est-à-dire

lim x(k) = x.
k→+∞

Dans ces notes on ne verra que deux méthodes itératives :


⋆ la méthode de J ACOBI,
⋆ la méthode de G AUSS -S EIDEL.
Si x est solution du système linéaire Ax = b, pour toute ligne i = 1, 2, . . . , n on a

a i 1 x 1 + a i 2 x 2 + · · · + a i ,i −1 x i −1 +a i i x i + a i ,i +1 x i +1 + · · · + a i n x n = b i
| {z } | {z }
Pn
iP
−1
j =i +1
ai j x j
ai j x j
j =1

donc
n
P
iP
−1 n
P bi − ai j x j
bi − ai j x j − ai j x j j =1
j =1 j =i +1 j ̸=i
xi = = .
ai i ai i

98 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

E XEMPLE
 ¡ ¢ ¡ ¢
5− x 2 +x 3 +4x 4 5− x 2 +x 3 +4x 4
  x1 = =
 2x 1 + x 2 + x 3 + 4x 4 = 5

 

 ¡ ¢ 2¡ ¢ ¡ 2 ¢


 x + 7x + x + 4x = 9


x = 9− x 1 − x 3 +4x 4 9− x 1 +x 3 +4x 4
1 2 3 4 2 =
=⇒ ¡ 7 ¢ ¡ ¢ ¡ 7 ¢
x
 1 + x 2 + 8x 3 + 4x 4 = 10 10− x 1 +x 2 − 4x 4 10− x 1 +x 2 +4x 4
x3 =
 




 8 = 8 ¢
3x 1 + x 2 + x 3 + 10x 4 = 6
 
 ¡ ¢ ¡
 6− 3x 1 +x 2 +x 3 6− 3x 1 +x 2 +x 3
x4 = =

10 10

Définition 2.11 (Méthode de J ACOBI)


Soit x(0) = (x 1(0) , x 2(0) , . . . , x n(0) )T ∈ Rn un vecteur donné. La méthode de J ACOBI définit la composante x i(k+1) du vecteur x(k+1) à
partir des composantes x (k)
j
du vecteur x(k) pour j ̸= i de la manière suivante :

n
a i j x (k)
P
bi − j
j =1
j ̸=i
x i(k+1) = , i = 1, . . . , n
ai i
   
 x 1(k)   x 1(k+1) 
   
x 2(k) x 2(k+1)
   
   
   
.. ..
   
   

 . 


 . 

x i(k) x i(k+1)
   
   
−1 −1
x(k) =  x(k+1) = 
   
 
x i(k) x i(k+1)
   
   
   
x i(k) x i(k+1)
   
   
 +1   +1 
   
 ..   .. 

 . 


 . 

x n(k) x n(k+1)
   

Proposition 2.12
Si la matrice A est à diagonale dominante stricte, la méthode de J ACOBI converge.
La méthode de G AUSS -S IDEL est une amélioration de la méthode de J ACOBI dans laquelle les valeurs calculées sont utilisées
au fur et à mesure du calcul et non à l’issue d’une itération comme dans la méthode de J ACOBI.

Définition 2.13 (Méthode de G AUSS -S IDEL)


Soit x(0) = (x 1(0) , x 2(0) , . . . , x n(0) )T ∈ Rn un vecteur donné. La méthode de G AUSS -S IDEL définit la composante x i(k+1) du vecteur
x(k+1) à partir des composantes x (k+1)
j
du vecteur x(k+1) pour j < i et des composantes x (k)
j
du vecteur x(k) pour j ≥ i de la
manière suivante :
iP
−1 n
a i j x (k+1) a i j x (k)
P
bi − j
− j
j =1 j =i +1
x i(k+1) = , i = 1, . . . , n
ai i
   
 x 1(k)   x 1(k+1) 
   
x 2(k) x 2(k+1)
   
   
   
.. ..
   
   

 . 


 . 

x i(k) x i(k+1)
   
   
−1 −1
x(k) =  x(k+1) = 
   
 
x i(k) x i(k+1)
   
   
   
x i(k) x i(k+1)
   
   
 +1   +1 
   
 ..   .. 

 . 


 . 

x n(k) x n(k+1)
   

© 2020-2021 G. Faccanoni 99
Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

Proposition 2.14
Si la matrice A est à diagonale dominante stricte ou si elle est symétrique et définie positive, la méthode de G AUSS -S EIDEL
converge.

Il n’y a pas de résultat général établissant que la méthode de G AUSS -S EIDEL converge toujours plus vite que celle de J ACOBI.
On peut cependant l’affirmer dans certains cas, comme le montre la proposition suivante

Proposition 2.15
Soit A une matrice tridiagonale de taille n × n inversible dont les coefficients diagonaux sont tous non nuls. Alors les
méthodes de J ACOBI et de G AUSS -S EIDEL sont soit toutes les deux convergentes soit toutes les deux divergentes. En cas de
convergence, la méthode de G AUSS -S EIDEL est plus rapide que celle de J ACOBI.

E XEMPLE
Considérons le système linéaire
    
4 2 1 x 4
−1 2 0   y  = 2 
2 1 4 z 9
mis sous la forme
4−(2y+z) y
= 1 − 2 − 4z ,

x=
 4
y = 2−(−x+0z)
2 = 1 + x2 ,
9−(2x+y) y

z= = 94 − x2 − 4 .

4

Soit x(0) = (0, 0, 0) le vecteur initial.


⋆ En calculant les itérées avec la méthode de J ACOBI on trouve

1 − 20 − 40 1 − 21 − 4/4
     9   1 
1 − /16
x(1) =  1 + 02  =  1  , x(2) =  1 + 12  =  3/2  ,
9 0 0 9 1 1
4−2−4
9
/4 4−2−4
3
/2
3
/2 3
/2 − /32
1 61
/32
1− 2 − 4 1− 2 − 4
   1    5 
− /8 /128
x(3) =  1 + −2/16  = −1/32 , x(4) =  1 + −2/8
1 1
 =  15/16  .
9 −1/16 3
/2 61
/32 9 −1/8 −1/32 265
/128
4− 2 − 4 4− 2 − 4

La suite x(k) converge vers (0, 1, 2) la solution du système.


⋆ En calculant les itérées avec la méthode de G AUSS -S EIDEL on trouve

1 − 20 − 40 1 − 2/2 − 4/8 1 − −2/32 − 4/64


     3 11   3   3 61   9 
1 − /32 /1024
x(1) =  1 + 21  =  3/2  , x(2) =  1 + −2/32  =  61/64  , x(3) =  1 + /1024
3 9
 =  2047/2048  ,
2 2047
9 1 3
/2 11
/8 9 −3/32 61
/64 527
/256 9 9
/1024 /2048 16349
/8192
4−2− 4 4− 2 − 4 4− 2 − 4

La suite x(k) converge vers (0, 1, 2) la solution du système.

Remarque (Quand doit-on arrêter une méthode itérative ?)


En théorie, il faudrait effectuer un nombre infini d’itérations pour obtenir la solution exacte d’un système linéaire avec une
méthode itérative. En pratique, ce n’est ni nécessaire, ni raisonnable (même si effectivement le nombre d’itérations pour
obtenir la solution avec la précision machine peut être très élevé pour de grands systèmes). En effet, ce n’est en général
pas d’une solution exacte dont on a besoin, mais plutôt d’une valeur x(k) qui approche la solution exacte avec une erreur
inférieure à une tolérance toll fixée. Mais comme l’erreur est elle-même inconnue (puisqu’elle dépend de la solution exacte),
on a besoin d’un estimateur d’erreur a posteriori qui donne une estimation de l’erreur à partir de quantités calculées au
cours de la résolution.
Un premier estimateur est donné par le résidu :
r(k) = Ax(k) − b.
def

Ainsi, on peut décider de stopper les itérations à la première étape k min pour laquelle

∥r(k) ∥ ≤ toll∥b∥.

Le contrôle par le résidu n’est pertinent que pour les matrices dont le conditionnement n’est pas trop grand.
Un autre estimateur est donné par l’incrément
δ(x) = x(k+1) − x(k) .
def

100 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

On peut choisir de stopper les itérations à la première étape k min pour laquelle

∥δ(x)∥ ≤ toll.

2.3. Quelle est la précision de la solution d’un système linéaire ?


Le produit LU n’est pas exactement égal à A en pratique, à cause des erreurs d’arrondi. Bien que la stratégie du pivot atténue
ces erreurs, le résultat n’est pas toujours très satisfaisant.

E XEMPLE
Le couple x 1 = x 2 = 1 est solution du système de deux équations à deux inconnues suivant :
(
3.218613x 1 + 6.327917x 2 = 10.546530,
3.141592x 1 + 4.712390x 2 = 7.853982.

Considérons maintenant un système d’équations “voisin” (le carré indique un changement de décimale) :
(
3.21861 1 x 1 + 6.327917x 2 = 10.546530,
3.14159 4 x 1 + 4.712390x 2 = 7.85398 0 .

Sa solution est donnée par x 1 = −5, x 2 = 5.


On voit que, bien que ces deux systèmes soient voisins, leurs solutions sont très différentes : on parle dans ce cas de systèmes
mal conditionnés.
Géométriquement, ces deux systèmes peuvent être vus comme la recherche du point d’intersection entre deux droites.
Si une petite perturbation sur la pente donne une grande différence sur la solution, alors les deux droites sont “presque”
parallèles.

Résoudre un système mal conditionné avec un ordinateur peut être une affaire délicate si l’ordinateur calcule avec trop peu
de chiffres significatifs. Dans l’exemple précédent nous observons que, si l’ordinateur ne retient que 6 chiffres significatifs, il
est complètement inespéré d’obtenir une solution raisonnablement proche de la solution !

Considérons un système linéaire (non singulier) Ax = b et le système linéaire perturbé Ay = b + δb où δb est une petite
perturbation de b. Par linéarité la solution y du système perturbé est liée à la solution x du système non perturbé par la
relation y = x + δx avec Aδx = δb.
La question est de savoir s’il est possible de majorer l’erreur relative ∥δx∥/∥x∥ sur la solution du système en fonction de
l’erreur relative ∥δb∥/∥b∥ commise sur le second membre.
Il est possible de démontrer que
∥δx∥ ∥δb∥
≤ K (A)
∥x∥ ∥b∥
où K (A) est le nombre de conditionnement de la matrice A.

Définition 2.16 (Conditionnement d’une matrice)


Le conditionnement d’une matrice A ∈ Rn×n non singulière est défini par

K (A) = ∥A∥∥A−1 ∥(≥ 1),

où ∥·∥ est une norme matricielle subordonnée.

En général, K (A) dépend du choix de la norme ; ceci est signalé en introduisant un indice dans la notation. Par exemple, on
a les normes matricielles suivantes (p ≥ 1) :
n q n
λmax (AT A),
X X
∥A∥1 = max |a i j |, ∥A∥2 = ∥A∥∞ = max |a i j |.
j =1,...,n i =1 i =1,...,n j =1

© 2020-2021 G. Faccanoni 101


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

E XEMPLE

  ∥A∥1 = max(1 + 4 + 7, 2 + 5 + 8, 3 + 6 + 9) = max(12, 15, 18) = 18,


1 2 3
A = 4 5 6 =⇒ ∥A∥∞ = max(1 + 2 + 3, 4 + 5 + 6, 7 + 8 + 9) = max(6, 15, 24) = 24.
q
7 8 9
∥A∥2 = ϱ(AAT ) = 16.848

A=[1 2 3;4 5 6; 7,8 9]


% norm_1
max(sum(abs(A)))
norm(A,1)
% norm_inf
max(sum(abs(A’)))
norm(A,inf)
% norm_2
sqrt(max(abs(eig(A’*A))))
norm(A,2)
% conditionnement en norme 2
cond(A)

Si K (A) est “petit”, c’est-à-dire de l’ordre de l’unité, on dit que A est bien conditionnée. Dans ce cas, des erreurs sur les
données induisent des erreurs du même ordre de grandeur sur la solution. Cette propriété intéressante n’est plus vérifiée
par les matrices mal conditionnées.
Si ∥δb∥/∥b∥ est de l’ordre de la précision relative η = 10−p du calculateur, alors l’erreur relative sur la solution ∥δx∥/∥x∥
pourrait, au pire, être égal à
K (A)η = 10log10 (K (A)) 10−p = 10log10 (K (A)−p) .
Si on calcul la solution du système linéaire avec un ordinateur à p chiffres significatifs en valeur décimale, on ne pourra pas
garantir à priori plus de
E (p − log10 (K (A)))
chiffres significatifs sur la solution.
Nota bene : le fait qu’un système linéaire soit bien conditionné n’implique pas nécessairement que sa solution soit calculée
avec précision. Il faut en plus utiliser des algorithmes stables. Inversement, le fait d’avoir une matrice avec un grand
conditionnement n’empêche pas nécessairement le système global d’être bien conditionné pour des choix particuliers du
second membre.
Remarque (Cas particulier)
Si A est symétrique et définie positive 3 ,
λmax
K 2 (A) = ∥A∥2 ∥A−1 ∥2 =
λmin
où λmax (resp. λmin ) est la plus grande (resp. petite) valeur propre de A.

Une étude analogue peut être réalisée pour des petites perturbations des coefficients de la matrice A.

2.4. Exercices
Factorisation LU et systèmes linéaires carrés
Exercice 2.1
Soit A une matrice, A ∈ Mn,n (R).
1. Rappeler les conditions nécessaires et suffisantes pour l’existence d’une factorisation LU de la matrice A et
préciser les définitions de L et U.
2. On suppose L et U construites (i.e. on dispose de tous les coefficients ℓi , j et u i , j de L et U), écrire l’algorithme de

3. A ∈ Rn×n est
⋆ symétrique si a i j = a j i pour tout i , j = 1, . . . , n,
⋆ définie positive si pour tout vecteurs x ∈ Rn avec x ̸= 0, xT Ax > 0.

102 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

résolution de Ax = b, avec b ∈ Mn,1 (R) donné.


3. Soit la matrice A suivante :  
3 −1 −1
−1 3 −1 .
−1 −1 3
Construire à la main les matrices L et U de la factorisation LU.

Correction
1. Pour une matrice quelconque A ∈ Mn,n (R), la factorisation LU (sans pivot) existe et est unique ssi les sous-matrices
principales Ai de A d’ordre i = 1, . . . , n − 1 (celles que l’on obtient en restreignant A à ses i premières lignes et
colonnes) ne sont pas singulières (autrement dit si les mineurs principaux, i.e. les déterminants des sous-matrices
principales, sont non nuls). On peut identifier des classes de matrices particulières pour lesquelles les hypothèses de
cette proposition sont satisfaites. Mentionnons par exemple : les matrices à diagonale strictement dominante, les
matrices réelles symétriques définies positives. Une technique qui permet d’effectuer la factorisation LU pour toute
matrice A inversible, même quand les hypothèses de cette proposition ne sont pas vérifiées, est la méthode du pivot
par ligne : il suffit d’effectuer une permutation convenable des lignes de la matrice originale A à chaque étape k où un
terme diagonal a kk s’annule.
2. Une fois calculées les matrices L et U, résoudre le système linéaire Ax = b, avec b ∈ Mn,1 (R) donné consiste simplement
à résoudre successivement
2.1. le système triangulaire inférieur Ly = b par l’algorithme

iX
−1
y 1 = b1 , y i = bi − ℓi j y j , i = 2, . . . , n
j =1

Rappel : ℓi i = 1 dans la factorisation de D OLITTLE.


2.2. le système triangulaire supérieure Ux = y par l’algorithme
à !
yn 1 Xn
xn = , xi = yi − ui j x j , j = n − 1, . . . , 1
u nn ui i j =i +1

3. Factorisation :
  L 2 ←L 2 − −1
3 L1
   
3 −1 −1 3 −1 −1 L ←L − − / L 3 4 −1 −1
L 3 ←L 3 − −1
3 L 1 3 3 / 2 8
3
3

−1 3 −1 −−−−−−−−−→ 0 8


/3 −4/3 −−−−−−−−−−→ 0 8
/3 −4/3 .
−1 −1 3 0 −4/3 8
/3 0 0 2
Par conséquent
   
1 0 0 3 −1 −1
L = −1/3 1 0 et U = 0 8
/3 −4/3 .
−1/3 −1/2 1 0 0 2

Exercice 2.2
Résoudre les systèmes linéaires suivants :
  
 x − 1 − 5x 2 − 7x 3 = 3
  x − 1 − 5x 2 − 7x 3 = 6
  x − 1 − 5x 2 − 7x 3 = 0

2x 1 − 13x 2 − 18x 3 = 3 et 2x 1 − 13x 2 − 18x 3 = 0 et 2x 1 − 13x 2 − 18x 3 = 3
  
3x 1 − 27x 2 − 36x 3 = 3 3x 1 − 27x 2 − 36x 3 = −3 3x 1 − 27x 2 − 36x 3 = 6.
  

Correction
Le trois systèmes s’écrivent sous forme matricielle
              
1 −5 −7 x1 3 1 −5 −7 x1 6 1 −5 −7 x1 0
2 −13 −18 x 2  = 3 et 2 −13 −18 x 2  =  0  et 2 −13 −18 x 2  = 3
3 −27 −36 x 3 3 3 −27 −36 x 3 −3 3 −27 −36 x 3 6

On remarque que seul le terme source change. On calcul d’abord la décomposition LU de la matrice A :
     
1 −5 −7 L 2 ←L 2 −2L 1 1 −5 −7 1 −5 −7
L 3 ←L 3 −3L 1 L 3 ←L 3 −4L 2
2 −13 −18 −−−−−−−−→ 0 −3 −4  −−−−−−−−→ 0 −3 −4
3 −27 −36 0 −12 −15 0 0 1

© 2020-2021 G. Faccanoni 103


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

donc
   
1 0 0 1 −5 −7
L = 2 1 0 U = 0 −3 −4
3 4 1 0 0 1

Pour résoudre chaque système linéaire on résout les systèmes triangulaires Ly = b et Ux = y.


1. Pour le premier système on a
    
1 0 0 y1 3
2 1 0   y 2  = 3  =⇒ y 1 = 3, y 2 = −3, y 3 = 6;
3 4 1 y3 3
    
1 −5 −7 x 1 3
0 −3 −4 x 2  = −3 =⇒ x 3 = 6, x 2 = −7, x 1 = 10.
0 0 1 x3 6

2. Pour le seconde système on a


    
1 0 0 y1 6
2 1 0  y 2  =  0  =⇒ y 1 = 6, y 2 = −12, y 3 = 27;
3 4 1 y3 −3
    
1 −5 −7 x 1 6
0 −3 −4 x 2  = −12 =⇒ x 3 = 27, x 2 = −32, x 1 = 35.
0 0 1 x3 27

3. Pour le dernier système on a


    
1 0 0 y1 0
2 1 0  y 2  = 3 =⇒ y 1 = 0, y 2 = 3, y 3 = −6;
3 4 1 y3 6
    
1 −5 −7 x 1 0
0 −3 −4 x 2  =  3  =⇒ x 3 = −6, x 2 = 7, x 1 = −7.
0 0 1 x3 −6

Exercice 2.3
1. Implémenter une fonction appelée descente permettant de résoudre un système linéaire dont la matrice est
triangulaire inférieure. La syntaxe doit être function y=descente(L,b) où b est un vecteur colonne de Rn et
L une matrice de Rn×n triangulaire inférieure. On doit obtenir un vecteur colonne de Rn solution du système
linaire Ly = b. Écrire un script appelé TESTdescente.m pour tester cette fonction sur l’exemple suivant : pour
   
1 0 0 1
L = 2 3 0 b= 8 
4 5 6 32

on doit obtenir
 
1
y = 2 
3

Dans ce script on pourra aussi comparer les résultats obtenus par notre fonction descente et la commande
d’Octave L\b sur différents systèmes linéaires triangulaires.
2. Implémenter une fonction appelée remontee permettant de résoudre un système linéaire dont la matrice est
triangulaire supérieure. La syntaxe doit être function x=remontee(U,y) où y est un vecteur colonne de Rn et
U une matrice de Rn×n triangulaire supérieure. On doit obtenir un vecteur colonne de Rn solution du système

104 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

linaire Ux = y. Écrire un script appelé TESTremontee.m pour tester cette fonction sur l’exemple suivant : pour
   
1 2 3 14
U = 0 4 5 y = 23
0 0 6 18

on doit obtenir
 
1
x = 2
3

Dans ce script on pourra aussi comparer les résultats obtenus par notre fonction remontee et la commande
d’Octave U\y sur différents systèmes linéaires triangulaires.
3. Implémenter une fonction appelée mylu permettant de calculer la factorisation LU d’une matrice A par la
méthode de G AUSS. La syntaxe doit être function [L,U]=mylu(A) où A est une matrice de Rn×n non singulière
et b est un vecteur colonne de Rn . On doit obtenir L et U deux matrices de Rn×n triangulaires inférieur et supérieur
respectivement telles que LU = A. Écrire un script appelé TESTmylu.m pour tester cette fonction sur l’exemple
suivant : pour
 
1 0 3
A = 2 2 2
3 6 4

on doit obtenir
   
1 0 0 1 0 3
L = 2 1 0 U = 0 2 −4
3 3 1 0 0 7

Dans ce script on pourra aussi comparer les résultats obtenus par notre fonction mylu et la fonction d’Octave lu
sur différentes matrices.
4. Écrire une fonction appelé syslin permettant de résoudre le système linéaire Ax = b en utilisant la factorisation
LU de la matrice A puis la résolution des systèmes linéaires Ly = b et Ux = y. La syntaxe doit être function [x]=
syslin(A,b) où A est une matrice de Rn×n non singulière. On doit obtenir x un vecteur colonne de Rn solution
du système linaire Ax = b. Écrire un script appelé TESTsyslin.m pour tester cette fonction sur l’exemple suivant :
pour
   
1 0 3 4
A = 2 2 2 b= 6 
3 6 4 13

on doit obtenir
 
1
x = 1
1

Dans ce script on pourra aussi comparer les résultats obtenus par notre fonction syslin et la commande
d’Octave A\b sur différents systèmes linéaires.
5. Écrire une fonction appelée mydet permettant de calculer le déterminant d’une matrice A en utilisant la fac-
torisation LU de la matrice A. La syntaxe doit être function [d]=mydet(A) où A est une matrice de Rn×n
non singulière. On doit obtenir d = det(A). Écrire un script appelé TESTmydet.m pour tester cette fonction sur
l’exemple suivant : pour
 
1 0 3
det 2 2 2 = 14
3 6 4

Dans ce script on pourra aussi comparer les résultats obtenus par notre fonction mydet et la commande d’Octave
det(A) sur différentes matrices.

© 2020-2021 G. Faccanoni 105


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

6. Écrire une fonction appelée myinv permettant de calculer la matrice A−1 d’une matrice A en utilisant la factori-
sation LU de la matrice A et la résolution des 2n systèmes linéaires Ly = e j et Ux = y avec e j le vecteur (e j )i = δi j .
La syntaxe doit être function [invA]=myinv(A) où A est une matrice de Rn×n non singulière. On doit obtenir
A−1 une matrice de Rn×n telle que A−1 A = AA−1 = In . Écrire un script appelé TESTmyinv.m pour tester cette
fonction sur l’exemple suivant : pour
 
1 0 3
A = 2 2 2
3 6 4

on doit obtenir

0 1
 
−1
1 1 
A−1 = −1 2 2
1 0 − 12

Dans ce script on pourra aussi comparer les résultats obtenus par notre fonction myinv et la commande d’Octave
inv(A) sur différentes matrices.
7. Implémenter une fonction appelée mylupivot permettant de calculer la factorisation LU d’une matrice A par la
méthode de G AUSS avec pivot, i.e. PA = LU. La syntaxe doit être function [L,U,P]=mylupivot(A) où A est
une matrice de Rn×n non singulière.
Expliquer pourquoi on ne peut pas effectuer la factorisation LU de la matrice
 
1 1 3
A = 2 2 2
3 6 4

mais on peut effectuer la factorisation avec pivot. Calculer cette factorisation.


8. Implémenter une fonction appelée syslinpivot.m permettant de résoudre le système linéaire Ax = b en utili-
sant la factorisation LU avec pivot de la matrice A puis la résolution des systèmes linéaires Ly = Pb et Ux = y. La
syntaxe doit être function [x]=syslinpivot(A,b) où A est une matrice de Rn×n non singulière. On doit obte-
nir x un vecteur colonne de Rn solution du système linaire Ax = b. Écrire un script appelé TESTsyslinpivot.m
pour tester cette fonction sur l’exemple suivant : pour
  
1 1 3 5
A = 2 2 2 b= 6 
3 6 4 13

on doit obtenir
 
1
x = 1 
1

Dans ce script on pourra aussi comparer les résultats obtenus par notre fonction syslinpivot et la commande
d’Octave A\b sur différents systèmes linéaires.

Correction
1. Il s’agit d’implémenter la méthode de descente pour résoudre un système triangulaire inférieure Ly = b :

b1
y1 =
ℓ11
à !
1 iX
−1
yi = bi − ℓi k y k , pour i = 2, 3, . . . , n
ℓi i k=1

Si la matrice L est obtenue par la méthode de factorisation de Doolittle, alors ℓi i = 1 pour tout i = 1, . . . , n.

Dans le fichier descente.m on écrit for i=2:length(b)


y(i)=(b(i)-sum(L(i,1:i-1).*y(1:i-1)))/L(i,i);
function y=descente(L,b) end
y(1)=b(1)/L(1,1); end

106 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

et on teste cette fonction par exemple comme suit % soit comparer le resultat avec celui d’Octave
L=[1 0 0; 2 3 0; 4 5 6] yOctave=L\b
b=[1; 8; 32] % soit verifier que Ly=b
y=descente(L,b)’ Ly=L*y
% Pour verifier notre resultat on peut

2. Il s’agit d’implémenter la méthode de remontée pour résoudre un système triangulaire supérieure Ux = y :


yn
xn =
u nn
à !
1 Xn
xi = yi − ui k xk , pour i = n − 1, n − 2, . . . , 1
ui i k=i +1

Dans le fichier remontee.m on écrit et on teste cette fonction par exemple comme suit
U=[1 2 3; 0 4 5; 0 0 6]
function x=remontee(U,y)
y=[14; 23; 18]
n=length(y);
x=remontee(U,y)’
x(n)=y(n)/U(n,n);
% Pour verifier notre resultat on peut
for i=n-1:-1:1
% soit comparer le resultat avec celui d’Octave
x(i)=(y(i)-sum(U(i,i+1:n).*x(i+1:n)))/U(i,i);
xOctave=U\y
end
% soit verifier que Ux=y
end
Ux=U*x

3. Il s’agit d’implémenter la méthode de factorisation qui calcule deux matrices L et U telles que A = LU avec U
triangulaire supérieure obtenue par ma méthode de G AUSS et L triangulaire inférieure avec que des 1 sur la diagonale.
Version basique :
L ← In
for k = 1 à n − 1 do
for i = k + 1 à n do
ai k
ℓi k ← {Attention, à chaque étape k, le terme a kk , appelé pivot, doit être non nul !}
a kk
for j = 1 à n do
a i j ← a i j − ℓi k a k j {On modifie tous les éléments de la ligne i }
end for
end for
end for
U=A
Dans le fichier myluBIS.m on écrit
function [L,U]=myluBIS(A)
% Factorisation de Doolittle, i.e. L(i,i)=1
[n,m]=size(A);
L=eye(n);
for k=1:n-1
for i=k+1:n
L(i,k)=A(i,k)/A(k,k);
A(i,:)=A(i,:)-L(i,k)*A(k,:);
end
end
U=A;
end

Version améliorée : à chaque étape k on peut mémoriser ℓi k en a i k :


for k = 1 à n − 1 do
for i = k + 1 à n do
ai k
ai k ← {Il s’agit de ℓi k mémorisé dans a i k }
a kk
for j = k + 1 à n do
ai j ← ai j − ai k ak j {On modifie tous les éléments de la ligne i }
end for
end for
end for

© 2020-2021 G. Faccanoni 107


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

U = On
U = partie triangulaire supérieure deA
L = In
L = partie triangulaire strictement inférieure de A
Dans le fichier mylu.m on écrit
function [L,U]=mylu(A)
% Factorisation de Doolittle, i.e. L(i,i)=1
[n,m]=size(A);
if n ~= m
error(’A is not a square matrix’);
else
tol=1.0e-9;
for k=1:n-1
for i=k+1:n
if abs(A(k,k))<tol
error("Utiliser pivot");
else
A(i,k)=A(i,k)/A(k,k);
A(i,k+1:n)=A(i,k+1:n)-A(i,k)*A(k,k+1:n);
end
end
end
U=triu(A);
L=tril(A,-1)+eye(n);
end
end

et on teste ces fonctions par exemple comme suit


printf(...
"===========================================================\n\
Test 1\n\
===========================================================\n");
A=[1 0 3; 2 2 2; 3 6 4]
[L,U]=mylu(A)
[L,U]=myluBIS(A)
% Verifions notre resutat i.e. LU=A
LU=L*U

printf(...
"===========================================================\n\
Test 2\n\
===========================================================\n");
A=[1 2 3 4; 2 3 4 1; 3 4 1 2; 4 1 2 3]
[L,U]=mylu(A)
[L,U]=myluBIS(A)
LU=L*U

printf(...
"===========================================================\n\
Test 3\n\
===========================================================\n");
A=[1 1 3; 2 2 2; 3 6 4]
[L,U]=mylu(A)
[L,U]=myluBIS(A)

4. Dans le fichier syslin.m on écrit et on teste cette fonction par exemple comme suit

function x=syslin(A,b) A=[1 0 3; 2 2 2; 3 6 4]


[L,U]=mylu(A); b=[4; 6; 13]
y=descente(L,b)’; x=syslin(A,b)
x=remontee(U,y)’; % Pour verifier notre resultat on peut
end % comparer au resultat d’Octave
xOctave=A\b

108 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

% ou verifier qua Ax=b Ax=A*x

5. Dans le fichier mydet.m on écrit et on teste cette fonction par exemple comme suit
A=[1 0 3; 2 2 2; 3 6 4]
function d=mydet(A)
d=mydet(A)
[L,U]=mylu(A);
% Pour verifier notre resultat on peut
d=prod(diag(U));
% le comparer au resultat d’Octave
end
dOctave=det(A)

6. La j -ème colonne de A−1 est solution du système linéaire Ax = e j ou e j est le vecteur qui contient 1 sur la j -ème ligne
est 0 ailleurs. Comme la matrice A est la même pour tous les systèmes linéaires, on n’utilisera pas la fonction syslin
car cela voudrait dire factoriser n fois la matrice A.

Dans le fichier myinv.m on écrit et on teste cette fonction par exemple comme suit
function invA=myinv(A)
[n,m]=size(A); A=[1 0 3; 2 2 2; 3 6 4]
[L,U]=mylu(A); invA=myinv(A)
for j=1:n % Pour verifier notre resultat on peut
b=zeros(n); % comparer au resultat d’Octave
b(j)=1; invAoctave=inv(A)
y=descente(L,b)’; % ou verifier que invA*A=A*invA=Identite
invA(:,j)=remontee(U,y)’; invA*A
end A*invA
end

7. for k = 1 à n − 1 do
Dans la colonne k, pour les lignes i ≥ k on cherche le coefficient maximal en valeur absolu et on échange sa ligne
avec la ligne k
for i = k + 1 à n do
ai k
ai k ← {Il s’agit de ℓi k mémorisé dans a i k }
a kk
for j = k + 1 à n do
ai j ← ai j − ai k ak j {On modifie tous les éléments de la ligne i }
end for
end for
end for
U = On
U = partie triangulaire supérieure deA
L = In
L = partie triangulaire strictement inférieure deA
Dans le fichier mylupivot.m on écrit
function [L,U,P]=mylupivot(A)
% Factorisation de Doolittle, i.e. L(i,i)=1
[n,m]=size(A);
if n ~= m
error(’A non carree’);
else
tol=1.0e-9;
P = eye(n);
for k=1:n-1
[maxVal ipiv] = max(abs(A(k:n,k)));
% echange L(k) <-> L(i)
ipiv+=k-1; % car ipiv demarre de k
A([k ipiv],:)=A([ipiv k],:);
P([k ipiv],:)=P([ipiv k],:);
for i=k+1:n
A(i,k)=A(i,k)/A(k,k);
A(i,k+1:n)=A(i,k+1:n)-A(i,k)*A(k,k+1:n);
end
end

© 2020-2021 G. Faccanoni 109


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

U=triu(A);
L=tril(A,-1)+eye(n);
end
end
et on teste cette fonction par exemple comme suit
printf(...
"===========================================================\n\
Test 1\n\
===========================================================\n");
% mylu et mylupivot donnent le meme resultat
A=[1 0 3; 2 2 2; 3 6 4]
[L,U,P]=mylupivot(A)
% Verifions notre resultat, i.e. LU=PA
LU=L*U
PA=P*A
% Comparons le resultat avec celui d’Octave
[Loctave,Uoctave,Poctave]=lu(A)

printf(...
"===========================================================\n\
Test 2\n\
===========================================================\n");
A=[1 1 3; 2 2 2; 3 6 4]
[L,U,P]=mylupivot(A)
% Verifions notre resultat, i.e. LU=PA
LU=L*U
PA=P*A
% Comparons le resultat avec celui d’Octave
[Loctave,Uoctave,Poctave]=lu(A)
% On ne peut pas utiliser mylu mais forcement mylupivot
% [L,U]=mylu(A)

printf(...
"===========================================================\n\
Test 3\n\
===========================================================\n");
A=[1 2; 1 2]
% det(A)=0 mais on peut ecrire A=LU car det(A_1)~=0
[L,U,P]=mylupivot(A)
LU=L*U
PA=P*A

printf(...
"===========================================================\n\
Test 4\n\
===========================================================\n");
A=[0 1; 1 0]
% det(A)~=0 mais det(A_1)=0. On effectue alors le pivot
[L,U,P]=mylupivot(A)
LU=L*U
PA=P*A
On ne peut pas utiliser la factorisation LU sans pivot car det(A1 ) = 1 mais det(A2 ) =
¡1 1¢
22 = 0. Cependant on peut
calculer la factorisation LU avec pivot car la matrice n’est pas singulière.
8. Le système linéaire Ax = b est équivalent au système linéaire LUx = Pb avec L et U telles que PA = LU avec U
triangulaire supérieure et L triangulaire inférieure obtenues par la méthode de factorisation non pas de la matrice
A mais de la matrice PA. On calcule alors d’abord y solution du système linéaire triangulaire inférieur Ly = Pb par
l’algorithme de descente, puis on calcule x solution du système linéaire triangulaire supérieur Ux = y par l’algorithme
de remontée.

110 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

Dans le fichier syslinpivot.m on écrit et on teste cette fonction par exemple comme suit
A=[1 0 3; 2 2 2; 3 6 4]
b=[4; 6; 13]
x=syslinpivot(A,b)
% Comparons le resultat a celui d’Octave
xOctave=A\b
function x=syslinpivot(A,b) % Verifions que Ax=b
[L,U,P]=mylupivot(A); Ax=A*x
y=descente(L,P*b)’;
x=remontee(U,y)’; A=[1 1 3; 2 2 2; 3 6 4]
end b=[5; 6; 13]
x=syslinpivot(A,b)
% Comparons le resultat a celui d’Octave
xOctave=A\b
% Verifions que Ax=b
Ax=A*x

Exercice 2.4 (Matrices tridiagonales : algorithme de Thomas)


On considère la matrice tridiagonale inversible A ∈ Rn×n
 
a1 c1 0 ... ... 0
 .. .. 
b 2

a2 c2 . .


.. .. ..
 
 
0 b3 a3 . . .
A=


 . .. .. .. ..
 ..

 . . . . 0  
 .
..

 .
 . . b n−1 a n−1 c n−1 

0 ... ... 0 bn an

1. Montrer que les matrices L et U de la factorisation LU de A sont bidiagonales, i.e. si a i j = 0 pour |i − j | > 1
alors ℓi j = 0 pour i > 1 + j (et pour i < j car triangulaire inférieure) et u i j = 0 pour i < j − 1 (et pour i > j car
triangulaire supérieure).
2. On a montré au point précédent que les matrices L et U de la factorisation LU de A sont bidiagonales, écrivons-les
sous la forme

α1 γ1 0 . . .
   
1 0 ... ... ... 0 ... 0
 .. ..   .. .. 
β 2 1 . .  0 α2 γ2 . . 
   
.. ..   .. .. .. .. .. .. 
   
 0 β3 1

. . . . . . . . 
L= U=
 
 . , .
 .. .. .. .. .. .
.. 
 .
 ..
 .. .. .. 
 . . . .   . . . 0 

 .  .
.. ..
 
 .  .
 . . β 1 0  . . α γ
 
n−1  n−1 n−1
0 ... ... 0 βn 1 0 ... ... ... 0 αn

Calculer (α1 , α2 , . . . , αn ), (β2 , β3 , . . . , βn ) et (γ1 , γ2 , . . . , γn−1 ) en fonction de (a 1 , a 2 , . . . , a n ), (b 2 , b 3 , . . . , b n ) et (c 1 , c 2 , . . . , c n−1 ).


En déduire un algorithme de factorisation.
3. À l’aide des formules trouvées au point précédent, écrire l’algorithme pour résoudre le système linéaire Ax = f où
f = ( f 1 , f 2 , . . . , f n )T ∈ Rn .

Correction
1. Soit A(k) , k = 0, . . . , n − 1 la matrice obtenue à l’étape k de la méthode de G AUSS, avec A(0) = A et A(n−1) = U. On
montrera par récurrence sur k que A(k) est tridiagonale, i.e. a i(k)
j
= 0 pour |i − j | > 1.

Initialisation : pour k = 0, A(0) = A qui est une matrice tridiagonale.


Hérédité : soit A(k) une matrice tridiagonale (i.e. ai(k)
j
= 0 pour |i − j | > 1) et montrons que A(k+1) l’est aussi.

⋆ Si i ≤ k alors a i(k+1)
j
= a i(k)
j
= 0 (les lignes L 1 , . . . , L k de la matrice A(k) ne sont pas modifiées à l’étape k).

© 2020-2021 G. Faccanoni 111


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

⋆ Soit i > k, alors les lignes L k+1 , . . . , L n de la matrice A(k) vont être modifiées selon la relation)

a i(k)
k
a i(k+1)
j
= a i(k)
j
− (k)
a k(k)j .
a kk

Pour chaque ligne i > k, considérons séparément les colonnes j ≤ k et les colonnes j > k :
⋆ si j ≤ k, a i(k+1)
j
= 0 (zéros qu’on fait apparaitre avec la méthode de G AUSS pour une matrice quelconque),

⋆ soit j > k :
⋆ si j < i − 1, comme i , j > k alors a i(k)
j
= 0 et i > j + 1 > k + 1, c’est-à-dire i − k > 1 et donc a i(k)
k
= 0 et
ℓ(k)
ik
= 0. Donc a i(k+1)
j
= 0.

⋆ si j > i +1, comme i , j > k alors a i(k)


j
= 0 et j > i +1 > k +1, c’est-à-dire j −k > 1 et donc a k(k)j = 0. Donc
a i(k+1)
j
= 0.

2. Les coefficients (α1 , α2 , . . . , αn ), (β2 , β3 , . . . , βn ) et (γ1 , γ2 , . . . , γn−1 ) se calculent en imposant l’égalité LU = A. L’algo-
rithme se déduit en parcourant les étapes de la méthode de G AUSS :
 
a1 c1 0 ... ... 0
 ..  ..
b 2

a2 c2 . 
 .
.. .. ..
 
 
(0)
0 b3 a3 . . .
A =


 . .. .. .. ..
 ..

 . . . . 0 

 .
..

 .
 . . b n−1 a n−1 c n−1 

0 ... ... 0 bn an
α1 = a 1 γ1 = c 1
 
0 ... ... 0
 .. .. 
 0 α2 = a 2 − β2 c 1 γ2 = c 2 . .
 

.. .. ..
 
 
L 2 ←L 2 −β2 L 1  0 b3 a3 . . .
−−−−−−−−−→ A(1) = 


b2  .. .. .. .. .. 
β2 = a  . . . . . 0 
1  
 .. ..

. . b n−1 a n−1 c n−1 
 

0 ... ... 0 bn an
α1 = a 1 γ1 = c 1
 
0 ... ... 0
 ..  ..
0 α2 = a 2 − β2 c 1 γ2 = c 2 . .
 
 
.. .. ..
 
α3 = a 3 − β3 c 2
 
L 3 ←L 3 −β3 L 2 (2) 0 0 . . .
 L 4 ←L 4 −β4 L 3
−−−−−−−−−→ A = 

 −−−−−−−−−→ [· · · ]
b3  .. .. .. .. ..  b
β3 = α  . . . . . 0  β4 = α4
2   3
 .. ..

. . b n−1 a n−1 c n−1 
 

0 ... ... 0 bn an
α1 = a 1 γ1 = c 1
 
0 ... ... 0
 .. .. 
 0 α2 = a 2 − β2 c 1 γ2 = c 2 . .
 

.. .. ..
 
α3 = a 3 − β3 c 2
 
L n ←L n −βn L n−1 (n−1)
 0 0 . . .
[· · · ] −−−−−−−−−−−→ A

= 
b
βn = αn
 .. .. .. .. .. 
n

 . . . . . 0 

 .. ..

. . 0 αn−1 = a n−1 − βn−1 c n−2 γn−1 = c n−1
 
 
0 ... ... 0 0 αn = a n − βn c n−1

Donc γi = c i pour i = 1, . . . , n, α1 = a 1 et on définie par récurrence

bi
(
βi = αi −1
pour i = 2, . . . , n.
αi = a i − βi c i −1

3. La résolution du système linéaire Ax = f se ramène à la résolution des deux systèmes linéaires Ly = f et Ux = y, pour

112 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

lesquels on obtient les formules suivantes :


( (
y1 = f1, y1 = f1,
i.e. bi
y i = f i − βi y i −1 , pour i = 2, . . . , n, yi = fi − a y i −1 , pour i = 2, . . . , n;
i −βi c i −1
yn

( yn  x n = αn ,

xn = αn ,

y −c x
y i −γi x i +1 i.e. x i = a i −βi ci +1 , pour i = n − 1, . . . , 2,
xi = αi , pour i = n − 1, . . . , 1, i i i −1
 x = y i −ci x2 .


1 a1

Dans le fichier syslinThomas.m on écrit et on teste cette fonction par exemple comme suit
clear all;

b=ones(10,1);
function x=syslinThomas(a,b,c,f)
a=2*b;
[alpha,beta]=myluThomas(a,b,c);
c=3*b;
y=descenteThomas(beta,f)’;
A=spdiags([b,a,c],-1:1,10,10);
x=remonteeThomas(alpha,c,y)’;
f=A*b;
end
xOctave=A\f
x=syslinThomas(a,b,c,f)

Ce fichier utilise les fonctions suivantes : Fichier myluThomas.m :


function [alpha,beta]=myluThomas(a,b,c)
% Factorisation de Doolittle, i.e. L(i,i)=1
% A tridigonale
% Algorithme de Thomas
% a=[a(1),a(2),...,a(n-1),a(n)] idem alpha
% b=[0 ,b(2),...,b(n-1),b(n)] idem beta
% c=[c(1),c(2),...,c(n-1), 0 ] = gamma

n=length(a); %=length(b)=length(c)

% Factorisation LU
alpha(1)=a(1);
for i=2:n
beta(i)=b(i)/alpha(i-1);
alpha(i)=a(i)-beta(i)*c(i-1);
end
% L=diag(beta(2:n),-1)+eye(1)
% U=diag(c(1:n-1),1)+diag(alpha)
end

Fichier descenteThomas.m :
function y=descenteThomas(beta,f)
n=length(beta);
% Resolution Ly=f
% L=diag(beta(2:n),-1)+eye(1)
y(1)=f(1);
for i=2:n
y(i)=f(i)-beta(i)*y(i-1);
end
end

Fichier remonteeThomas.m :
function x=remonteeThomas(alpha,c,y)
n=length(y);
% Resolution Ux=y
% U=diag(c(1:n-1),1)+diag(alpha)
x(n)=y(n)/alpha(n);
for i=n-1:-1:1
x(i)=(y(i)-c(i)*x(i+1))/alpha(i);
end

© 2020-2021 G. Faccanoni 113


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

end

Exercice 2.5
Soit la matrice A ∈ Rn×n , n ≥ 3, dont les éléments vérifient
⋆ a i j = 1 si i = j ou i = n,
⋆ a i j = −1 si i < j ,
⋆ a i j = 0 sinon.
Calculer la factorisation LU de A.

Correction
Factorisation LU de la matrice A :

1 −1 ... ... ... −1 1 −1 ... ... ... −1 1 −1 ... ... ... −1


     
 .. ..   .. ..   .. .. 
0
 1 . .  
0
 1 . .  
0
 1 . . 

. .. 
.. ..  L ←L n − 1 L 1  ..
1 .. .. ..   L ←L n − 1 L 2  ..
2 .. .. .. 
 
. . . . . . .
. 1 .  −−n−−−− . 1 .  −−n−−−− . 1 . 

−−−→  −−−→ 
 .. .. .. .. ..   .. .. .. .. ..   .. .. .. .. .. 
     
.
 . . . . 

.
 . . . .  
.
 . . . .  
0 ... ... 0 1 −1  0 ... ... 0 1 −1  0 ... ... 0 1 −1
1 1 1 ... 1 1 0 2 2 ... 2 2 0 0 4 ... 4 4
1 −1 ... ... ... −1
 
 .. .. 
0
 1 . . 
L n ←L n − 2 1 L n−1  .. .. 
n−2  .. ..
[. . . ] −−−−−−−−−−−−−→  . . 1 . . .

 .. .. .. .. .. 
 
.
 . . . .  
0 ... ... 0 1 −1 
0 0 0 ... 0 2n−1

On obtient les matrices

1 0 ... ... ... 0 1 −1 ... ... ... −1


   
 .. ..   .. .. 
0
 1 . . 
0
 1 . . 

 .. ..   .. .. 
L=

0 0 1 . .

et U=

0 0 1 . . .

 .. .. .. .. .. ..   .. .. .. .. .. 
   
.
 . . . . .
.
 . . . −1 .  
0 0 ... 0 1 0 0 0 ... 0 1 −1 
1 2 4 ... 2n−2 1 0 0 0 ... 0 2n−1

c’est-à-dire
⋆ ℓi i = 1 pour i = 1, . . . , n, ⋆ u i j = a i j pour i=1,. . .,n-1, j=1,. . .,n,
⋆ ℓi j = 0 si i < n et i ̸= j , ⋆ u n j = 0 si j < n,
⋆ ℓn j = 2 j −1 si j < n ; ⋆ u nn = 2n−1 .

Exercice 2.6
Considérons une matrice A ∈ Rn×n (avec n ≥ 3) dont les éléments vérifient
⋆ a i j = 1 si i = j ou j = n,
⋆ a i j = −1 si i > j ,
⋆ a i j = 0 sinon.
Calculer la factorisation LU de A.

114 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

Correction
Factorisation LU de la matrice A :
     
1 0 ... ... 0 1 1 0 ... ... 0 1 1 0 ... ... 0 1
 .. .. ..   L 2 ←L 2 +L 1 
 .. .. 
 L 3 ←L 3 +L 2 
 .. .. 
−1

1 . . . 0 1 . . 2 0 1 . . 2

 .  .
 .. .. .. .. ..  ..  .. .. .. ..  ..  .. .. ..
   

 . . 1 . . . L ←L +L 1 . −1 1 . . . L ←L +L 2 . 0 1 . . 4
 −−n−−−− n  −−n−−−− n
 

 . −−→  −−→  
 .. .. .. ..  .
 .. .. .. .. ..   ... .. .. .. 
 . . 0 .  . . . 0 .   . −1 . 0 .
 . . .. . .. ..
.. .. ..
  
 . . .
 . . 1 1 . . . 1 2 . . . . 1 4
  
−1 ... ... ... −1 1 0 −1 ... ... −1 2 0 0 −1 ... −1 4
0
 
1 0 ... ... 0 2
 .. .. 
0 1 . . 21 
 
 .. . . .. ..
 
22 

L n ←L n +L n−1  . . 1 . .
[. . . ] −−−−−−−−−→  .

 .. .. .. .. 
 . . 0 .  
.
..

.
. . 1 2n−2 

0 ... ... ... 0 2n−1

On obtient les matrices

20
   
1 0 ... ... ... 0 1 0 ... ... 0
 .. ..   .. .. 
−1 1 . . 0 1 . . 21 
   
 .. .. .. ..   .. .. .. ..
   
22 

 . . 1 . . . . 1 . .
L=
 .
 et U= .
 .. .. .. .. ..  .
 .. .. .. .. 
 . . . .  . . 0 . 

 . .
.. ..
 
 . . n−2 
 . . 1 0 . . 1 2


−1 ... ... ... −1 1 0 ... ... ... 0 2n−1

i.e.

⋆ ℓi i = 1 pour i = 1, . . . , n, , ⋆ u i i = 1 pour i = 1, . . . , n − 1,
⋆ ℓi j = −1 si i > j ⋆ u i n = 2i −1 pour i = 1, . . . , n,
⋆ ℓi j = 0 sinon ; ⋆ u i j = 0 sinon.

Exercice 2.7
Calculer, lorsqu’il est possible, la factorisation LU des matrices suivantes :
   
1 2 3 1 2 3
A = 2 4 5 , B = 7 8 9 .
7 8 9 2 4 5

Comment peut-on modifier l’algorithme de factorisation pour pouvoir toujours aboutir à une factorisation LU lorsque
la matrice est inversible ?

Correction
Pour une matrice quelconque A ∈ Mn,n (R), la factorisation LU (sans pivot) existe et est unique ssi les sous-matrices
principales Ai de A d’ordre i = 1, . . . , n − 1 (celles que l’on obtient en restreignant A à ses i premières lignes et colonnes) ne
sont pas singulières (autrement dit si les mineurs principaux, i.e. les déterminants des sous-matrices principales, sont non
nuls).
Matrice A : comme det(A) ̸= 0, la matrice A est bien inversible. Puisque det(A1 ) = a 11 = 1 ̸= 0 mais det(A2 ) = a 11 a 22 −
a12a 21 = 0, on ne peut pas factoriser A sans utiliser la technique du pivot. En effet,

  L 2 ←L 2 − 12 L 1  
1 2 3 1 2 3
L 3 ←L 3 − 71 L 1
A = 2 4 5 −−−−−−−−→ 0 0 −1 
7 8 9 0 −6 −12

© 2020-2021 G. Faccanoni 115


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

La factorisation LU ne peut pas être calculée car à la prochaine étape il faudrait effectuer le changement L 3 ← L 3 − −6
0 L2.
Matrice B :

  L 2 ←L 2 − 17 L 1  
1 2 3 1 2 3
L 3 ←L 3 − 21 L 1
A2 = 7 8 9 −−−−−−−−→ 0 −6 −12
2 4 5 0 0 −1

La factorisation LU de la matrice B est donc


   
1 0 0 1 2 3
L = 7 1 0 , U = 0 −6 −12 .
2 0 1 0 0 −1

Lorsqu’un pivot est nul, la méthode de G AUSS pour calculer la factorisation LU de la matrice A n’est plus applicable. De
plus, si le pivot n’est pas nul mais très petit, l’algorithme conduit à des erreurs d’arrondi importantes. C’est pourquoi des
algorithmes qui échangent les éléments de façon à avoir le pivot le plus grand possible ont été développés. Les programmes
optimisés intervertissent les lignes à chaque étape de façon à placer en pivot le terme de coefficient le plus élevé : c’est la
méthode du pivot partiel. Pour la matrice A cela aurait donné

    L 2 ←L 2 − 17 L 1  
1 2 3 1 2 3 1 2 3
L 2 ↔L 3 L 3 ←L 3 − 21 L 1
A = 2 4 5 −−−−−→ 7 8 9 −−−−−−−−→ 0 −6 −12 .
7 8 9 2 4 5 0 0 −1

Bien évidemment, il faut garder trace de cet échange de lignes pour qu’il puisse être répercuté sur le terme source et sur
l’inconnue lors de la résolution du système linéaire ; ceci est réalisé en introduisant une nouvelle matrice P, dite matrice
pivotale, telle que PA = LU : la résolution du système linéaire Ax = b est donc ramené à la résolution des deux systèmes
triangulaires Ly = Pb et Ux = y. Dans notre exemple cela donne
 
1 0 0
P = 0 0 1
0 1 0

Exercice 2.8
Soit α un paramètre réel et soient les matrices Aα , P et le vecteur b définis par
     
2 4 1 1 0 0 0
Aα = α −2 −1 , P = 0 0 1 , b = −3/2 .
2 3 2 0 1 0 −1

1. À quelle condition sur α, la matrice Aα est inversible ?


2. À quelle condition sur α, la matrice Aα admet-elle une décomposition LU (sans pivot) ?
3. Soit α = −1. Calculer, si elle existe, la décomposition LU de la matrice M = PAα .
4. Soit α = −1. Résoudre le système linéaire Ax = b en résolvant le système linéaire Mx = Pb.

Correction
1. La matrice Aα est inversible si et seulement si det(A) ̸= 0. Comme
 
2 4 1
det(A) = det α −2 −1
2 3 2
= (2 × (−2) × 2) + (4 × (−1) × 2) + (1 × α × 3) − (2 × (−1) × 3) − (4 × α × 2) − (1 × (−2) × 2)
= (−8) + (−8) + (3α) − (−6) − (8α) − (−4)
= −6 − 5α,

la matrice Aα est inversible si et seulement si α ̸= − 56 .


2. Pour une matrice A carrée d’ordre n quelconque, la factorisation de G AUSS existe et est unique si et seulement
si les sous-matrices principales Ai de A d’ordre i = 1, . . . , n − 1 (celles que l’on obtient en restreignant A à ses i
premières lignes et colonnes) ne sont pas singulières (autrement dit si les mineurs principaux, i.e. les déterminants
des sous-matrices principales, sont non nuls).

116 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

Pour la matrice Aα on a les sous-matrices principales suivantes :

A1 = 2 ,
¡ ¢
det(A1 ) = 2;
µ ¶
2 4
A2 = , det(A2 ) = −4(1 + α).
α −2

Par conséquent, la matrice Aα admet une décomposition LU (sans pivot) si et seulement si α ̸= −1.
3. Si α = −1 la matrice Aα n’admet pas de décomposition LU sans pivot. La matrice P échange les lignes 2 et 3 de la
matrice A et on obtient la matrice
    
1 0 0 2 4 1 2 4 1
PA−1 = 0 0 1 −1 −2 −1 =  2 3 2 .
0 1 0 2 3 2 −1 −2 −1

La matrice M admet une décomposition LU (sans pivot) et l’on a

1 L 2 ←L 2 −L−11
   
2 4 2 4 1
L 3 ←L 3 − 2 L 1
2 3 2  −−−−−−−−−→ 0 −1 1 
−1 −2 −1 0 0 − 12

Par conséquent, on obtient la décomposition LU suivante de la matrice M :


   
1 0 0 2 4 1
L= 1 1 0 , U = 0 −1 1 .
− 21 0 1 0 0 − 21

4. Pour résoudre le système linéaire Mx = Pb il suffit de résoudre les deux systèmes triangulaires suivantes :
⋆ Ly = Pb :

3 1 3
y 1 = 0, y 2 = −1 − y 1 = −1, y3 = − + y1 = − ;
2 2 2

⋆ Ux = y :

−3 19
x3 = (−2) = 3, x 2 = (−1 − x 3 )/(−1) = 4, x 1 = (0 − 4x 2 − x 3 )/2 = − .
2 2

Exercice 2.9
Considérons les deux matrices carrées d’ordre n > 3 :

α β β α
   
0 0 0 ... 0 ... ... 0 0
0
 α 0 0 0 ... β 
β
 0 0 0 α 0 

.. ..  .
. ..

0 0 α 0 . . . 0 . 0
  
.. 
   
A=
 .. .. 
B=
 ..
 0 . . ... β   . ... .
. .. ..  . 
. .
. . . 0 β . 0 α 0 0 0
 
0 0 0 α β β α 0 0 α 0
   
β β ... β β α α β β ... β β

avec α et β réels non nuls.


1. Vérifier que la factorisation LU de la matrice B ne peut pas être calculée sans utiliser la technique du pivot.
2. Calculer analytiquement le nombre d’opérations nécessaires pour calculer la factorisation LU de la matrice A.
3. Exprimer le déterminant de la matrice A sous forme récursive en fonction des coefficients de la matrice et de sa
dimension n.
4. Sous quelles conditions sur α et β la matrice A est définie positive ? Dans ce cas, exprimer le conditionnement de
la matrice en fonction des coefficients et de la dimension n.

Correction
1. La factorisation LU de la matrice B ne peut pas être calculée sans utiliser la technique du pivot car l’élément pivotale

© 2020-2021 G. Faccanoni 117


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

au deuxième pas est nul. Par exemple, si n = 4, on obtient :

 L 2 ←L 2 −L 1 
β 0 0 α

β 0 0 α L 3 ←L 3 −L 1

β 0 α 0 L 4 ←L 4 − α L
β 1
0 0 α −α 
B(1) =   −−−−−−−−−→ B(2) = 

.
 
β α 0 0 0 α 0 −α 
2
α β β β 0 β β β − αβ

2. La matrice A est une matrice «en flèche» : pour en calculer la factorisation LU il suffit de transformer la dernière ligne,
ce qui requiert le calcul de l’unique multiplicateur ℓnk = β/α et l’exécution de n − 1 produits et sommes. Le coût
globale est donc de l’ordre de n.
3. Le déterminant δn de la matrice A de dimension n coïncide avec le déterminant de la matrice U. Comme u i i = α pour
tout i < n et u nn = α − (n − 1)β2 /α, on conclut que

n n−1 β2 n−1
µ ¶
δn = u i i = α − (n − 1) α = αn − (n − 1)αn−2 β2 .
Y Y
u i i = u nn ·
i =1 i =1 α

4. Les valeurs propres de la matrice A sont les racines du déterminant de la matrice A−λI. Suivant le même raisonnement
du point précédant, ce déterminant s’écrit

(α − λ)n − (n − 1)(α − λ)n−2 β2

dont les racines sont q


λ1,2 = α ± (n − 1)β, λ3 = · · · = λn = α.
Par conséquent, pour que la matrice A soit définie positive il faut que les valeurs propres soient tous positifs, ce qui
impose
α
α > 0, |β| < p .
n −1
Dans ce cas, le conditionnement de la matrice en norme 2 est
p
α+β n−1

p si β ≥ 0,
α−β n−1


K 2 (A) = p
 α−β n−1
 p sinon.
α+β n−1

Exercice 2.10
Écrire les formules de la méthode d’élimination de G AUSS pour une matrice de la forme
 
a 1,1 a 1,2 0 ... 0
 .. 
 a 2,1 a 2,2 a 2,3 0 .
 

 .. .. .. .. ..
 

 . . . . .
A=

.
 . .. ..
 ..

 . . 0  
 . 
 .
 . a n−1,n−1 a n−1,n 

a n,1 a n,2 ... a n,n−1 a n,n

Quelle est la forme finale de la matrice U = A(n) ? Étant donné la forme particulière de la matrice A, indiquer le nombre
minimal d’opérations nécessaire pour calculer U ainsi que celui pour la résolution des systèmes triangulaires finaux.

Correction
Comme la matrice a une seule sur-diagonale non nulle, les formules de la méthode d’élimination de G AUSS deviennent

a i(k+1)
j
= a i(k)
j
(k)
+ ℓi k a k, j
, i , j = k + 1,

a i(k)
k
ℓi k = (k)
, i = k + 1.
a kk

La coût est donc de l’ordre de n et la matrice U est bidiagonale supérieure.

118 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

Exercice 2.11
On suppose que le nombre réel ε > 0 est assez petit pour que l’ordinateur arrondisse 1 + ε en 1 et 1 + (1/ε) en 1/ε (ε est
plus petit que l’erreur machine (relative), par exemple, ε = 2−30 en format 32 bits). Simuler la résolution par l’ordinateur
des deux systèmes suivants : ( (
εa + b = 1 2a + b = 0
et
2a + b = 0 εa + b = 1
On appliquera pour cela la méthode du pivot de G AUSS et on donnera les décompositions LU des deux matrices
associées à ces systèmes. On fournira également la solution exacte de ces systèmes. Commenter.

Correction
Il s’agit du même système linéaire (on a juste échangé l’ordre des équations) donc la solution exacte est la même. Pour un
système 2 × 2 il n’est même pas nécessaire d’utiliser la méthode de Gauss, on peut directement calculer la solution car
( ( (
εa + b = 1 εa − 2a = 1 (ε − 2)a = 1
⇐⇒ ⇐⇒
2a + b = 0 b = −2a b = −2a

1 2 1
Si ε = 2 il n’y a pas de solution ; si ε ̸= 2 alors a = et b = donc, si ε ≈ 0, on a a ≃ − et b ≃ 1.
ε−2 2−ε 2
Premier système :
ε
µ ¶µ ¶ µ ¶
1 a 1
= .
2 1 b 0
Factorisation LU :

ε 1 L 2 ←L 2 − 2ε L 1 ε ε
µ ¶ µ ¶ µ ¶ µ ¶
1 1 0 1
−−−−−−−−→ donc L= , U=
2 1 0 1 − 2ε 2
ε 1 0 1 − 2ε

Pour résoudre le système linéaire on résout les systèmes triangulaires Ly = b et Ux = y :


µ ¶µ
¶ µ ¶
1 y1 0 1 2
2 = =⇒ y 1 = 1, y2 = − ;
ε
y 2 1 0 ε
ε 1−b
µ ¶µ ¶ µ ¶
1 a 1 2 2 1
= 2 =⇒ b=− ¡ ¢= , a= = .
0 1 − 2ε b −ε 2
ε 1− ε 2 − ε ε ε−2

On retrouve bien la solution calculée. Cependant avec l’ordinateur, comme 1+(1/ε) ≈ 1/ε, on obtient la même matrice
L mais juste une approximation de la matrice U :

e= ε
µ ¶ µ ¶
e = L = 12
L
0
U
1
ε 1 0 − 2ε

Pour résoudre ce système linéaire approché on résout les systèmes triangulaires Ly


e = b et Ux
e =y:
µ ¶µ
¶ µ ¶
1 0 y1 1 2
2 = =⇒ y 1 = 1, y2 = − ;
ε 1 y2 0 ε
ε
µ ¶µ ¶ µ ¶
1 a 1
= 2 =⇒ b = 1, a = 0,
0 − 2ε b −ε

ce qui est bien différent de la solution exacte a ≃ − 12 .


Second système : µ ¶µ ¶ µ ¶
2 1 a 0
= .
ε 1 b 1
Factorisation LU :

1 L 2 ←L 2 − 2ε L 1 2
µ ¶ µ ¶ µ ¶ µ ¶
2 1 1 0 2 1
−−−−−−−−→ donc L= , U=
ε 1 0 1 − 2ε ε
2 1 0 1 − 2ε

Pour résoudre le système linéaire on résout les systèmes triangulaires Ly = b et Ux = y :


µ ¶µ ¶ µ ¶
1 0 y1 0
ε = =⇒ y 1 = 0, y 2 = 1;
2 1 y2 1

© 2020-2021 G. Faccanoni 119


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

0−b
µ ¶µ ¶ µ ¶
2 1 a 0 1 2 1
= =⇒ b= = , a= = .
0 1 − 2ε b 1 1 − 2ε 2 − ε 2 ε−2

on retrouve bien la solution exacte. Cependant avec l’ordinateur, comme 1 + (1/ε) ≈ 1/ε, on obtient la même matrice
L mais juste une approximation de la matrice U :
µ ¶ µ ¶
e = L = 1ε
L
0 e= 2
U
1
2 1 0 − 2ε

Pour résoudre ce système linéaire approché on résout les systèmes triangulaires Ly


e = b et Ux
e =y:
µ ¶µ¶ µ ¶
1 0 y1 0
ε = =⇒ y 1 = 0, y 2 = 1;
2 1 y2 1
ε ε
µ ¶µ ¶ µ ¶
2 1 a 0
= =⇒ b=− , a= .
0 − 2ε b 1 2 4

1
Pour ε ≈ 0 on obtient a ≃ 0 et b ≃ 0, ce qui est loin de la solution exacte a ≃ − et b ≃ 1.
2

Exercice 2.12
Rappeler l’algorithme vu en cours pour calculer la décomposition LU d’une matrice A et la solution du système Ax = b
où le vecteur colonne b est donné. On appliquera ces algorithmes pour les cas suivants :

1 2 3 4 x1 1 1 1 1 1 x1 1
         
    
1 1 1 x1 1 2 x 2  1  x 2  1 
−5 7 1 1 −2 3 4
2 1 3 x 2  = 1 et    =   et    =  
3 1 1 5 x 3  1 1 4 6 8   x 3  1 
−3 2 4 x3 1
2 2 0 3 x4 1 1 0 0 0 x4 1

Correction
Premier système :

  L 2 ←L 2 − 21 L 1    
1 1 1 1 1 1 1 1 5 1 1 1 1
L 3 ←L 3 − −3
1 L1 L 3 ←L 3 − −1 L2
 2 1 3 1  −−−−−−−−−→  0 −1 1 −1  −−−−−−−−−→  0 −1 1 −1 
−3 2 4 1 0 5 7 4 0 0 12 −1

donc    
1 0 0 1 1 1
L= 2 1 0 U = 0 −1 1
−3 −5 1 0 0 12
Il ne reste à résoudre que le système triangulaire

 x1 + x2 + x3 = 1

1 11 1
−x 2 + x 3 = −1 =⇒ x 3 = − , x2 = , x1 = .
 12 12 6
12x 3 = −1

Deuxième système :
2
 L 2 ←L 2 − 13 L 1 
1 2 3 4 1 1 2 3 4 1
 
L 3 ←L 3 − 1 L 1
 2 −5 7 1 1  L ←L − 2 L 1  0 −9 1 −7 −1 
  −−4−−−4−−1−→  
 3 1 1 5 1   0 −5 −8 −7 −2 
2 2 0 3 1 0 −2 −6 −5 −1
−5 1 2 3 4 1 1 2 3 4 1
   
L 3 ←L 3 − −9 L 2
56/9
L 4 ←L 4 − −2
 0 −9 L 2 −9 1 −7 −1  L ←L − L2  0 −9 1 −7 −1 
−−−−−−−−−→   −−4−−−4−−77/9
−−−→ 
− 77 − 28 − 13 − 77 − 28 − 13

 0 0   0 0 
9 9 9 9 9 9
0 0 − 56
9 − 31
9 −9 7
0 0 0 13
− 11 3
11

120 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

donc
1 0 0 0 1 2 3 4
   
2 1 0 0 0 −9 1 −7 
L= 5 U=
− 77 − 28 
 
3 1 0 0 0
9 9 9
2 56
2 9 77 1 0 0 0 − 13
11

Il ne reste à résoudre que le système triangulaire




 x 1 + 2x 2 + 3x 3 + 4x 4 = 1


 −9x + x − 7x = −1 3 23 29 48
2 3 4
77 28
=⇒ x 4 = − , x3 = , x2 = , x1 = .


 − 9 x 3 − 9 x 4 = − 13
9
13 91 91 91
 13
 3
− 11 x 4 = 11

Troisième système :
 L ←L −L 
1 1 1 1 1 1 1 1 1 1
 
2 2 1
L 3 ←L 3 −L 1
 1 −2 3 4 1  L ←L −L 0 −3 2 3 0 
 −−4−−−4−−→ 1 

 
 1 4 6 8 1   0 3 5 7 0 
1 0 0 0 1 0 −1 −1 −1 0
1 1 1 1 1 1 1 1 1 1
   
L 3 ←L 3 −(−1)L 2
−1 −5/3
L 4 ←L 4 − −3 L 2  0 −3 2 3 −0  L 4 ←L 4 − 7 L 2  0 −3 2 3 −0 
−−−−−−−−−−→   0 0
 −− −−−−−−−−→  
7 10 0   0 0 7 10 0 
0 0 − 53 −2 0 0 0 0 8
21 0

donc
1 0 0 0 1 1 1 1
   
1 1 0 0 0 −3 2 3
L=
1
 U= 
−1 1 0 0 0 7 10
1 −5 8
1 3 21 1 0 0 0 21

Il ne reste à résoudre que le système triangulaire



 x1 + x2 + x3 + x4 = 1



 −3x + 2x + 3x = 0
2 3 4
=⇒ x 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.
7x
 3

 + 10x 4 = 0
 8

21 x 4 = 0

Factorisation QR et systèmes linéaires sur déterminés


Exercice 2.13 (Système sur-déterminé)
Soit le système linéaire sur-déterminé Ax = b avec A la matrice de 8 lignes et 2 colonnes et b le vecteur de 8 lignes
suivantes :    
0 1 0
0.06 1 0.08
   
0.14 1 0.14
   
0.25 1  0.2 
   
A= b=
0.31 1 0.23
 
   
0.47 1 0.25
   
 0.6 1 0.28
0.7 1 0.29

Calculer la solution x ∈ R2 au sens des moindres carrés en utilisant la factorisation QR. Comparer la solution obtenue
en résolvant le système Rx = QT b avec le système R̃x = Q̃T b et avec la solution donnée par Octave A\b.

Correction
A=[ 0 1; 0.06 1; 0.14 1; 0.25 1; 0.31 1; 0.47 1; 0.6 1; 0.7 1 ]
b=[0; 0.08; 0.14; 0.2; 0.23; 0.25; 0.28; 0.29]
[m,n]=size(A)

© 2020-2021 G. Faccanoni 121


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

[Q,R]=qr(A)
xstar=R\(Q’*b)

Qt=Q(:,1:n);
Rt=R(1:n,:);
xstar=Rt\(Qt’*b)

xstar=A\b

Méthodes itératives
Exercice 2.14 (systèmes linéaires, méthodes itératives)
Une méthode itérative pour le calcul de la solution d’un système linéaire Ax = b avec A ∈ Rn×n est une méthode
qui construit une suite de vecteurs x(k) = (x 1(k) , x 2(k) , . . . , x n(k) )T ∈ Rn convergent vers le vecteur solution exacte x =
(x 1 , x 2 , . . . , x n )T pour tout vecteur initiale x(0) = (x 1(0) , x 2(0) , . . . , x n(0) )T ∈ Rn lorsque k tend vers +∞.

Méthode de Jacobi Soit x0 = (x 10 , x 20 , . . . , x n0 ) un vecteur donné. La méthode de J ACOBI définit la composante x ik+1 du
vecteur xk+1 à partir des composantes x kj du vecteur xk pour j ̸= i de la manière suivante :

n
a i j x kj
P
bi −
j =1
j ̸=i
x ik+1 = , i = 1, . . . , n
ai i

Si la matrice A est à diagonale dominante stricte, la méthode de J ACOBI converge.


Méthode de Gauss-Sidel C’est une amélioration de la méthode de J ACOBI dans laquelle les valeurs calculées sont
utilisées au fur et à mesure du calcul et non à l’issue d’une itération comme dans la méthode de J ACOBI. Soit
x0 = (x 10 , x 20 , . . . , x n0 ) un vecteur donné. La méthode de G AUSS -S IDEL définit la composante x ik+1 du vecteur xk+1 à
partir des composantes x k+1 j
du vecteur xk+1 pour j < i et des composantes x kj du vecteur xk pour j ≥ i de la
manière suivante :
iP
−1 n
a i j x k+1 a i j x kj
P
bi − j

j =1 j =i +1
x ik+1 = , i = 1, . . . , n
ai i
1. Implémenter une fonction appelée myJacobi permettant de résoudre un système linéaire Ax = b d’inconnue x
par la méthode itérative de Jacobi. La syntaxe doit être function [x,r,k]=myJacobi(A,b,xinit,toll,kmax
) où A est une matrice de Rn×n , b est un vecteur colonne de Rn , xinit= x(0) est un vecteur colonne de Rn , toll
la tolérance sur la norme du résidu Ax − b et kmax le nombre maximal d’itérations. On doit obtenir x un vecteur
colonne de Rn solution du système linaire Ax = b, r la norme du dernier résidu calculé et k le nombre d’itérations
effectuées.
Écrire un script appelé TESTmyJacobi.m pour tester cette fonction sur l’exemple suivant : toll= 10−9 , kmax= 50,
µ ¶ µ ¶ µ ¶
2 1 1 (0) 1
A= b= x = .
1 3 0 1/2

La solution exacte est


¶µ
3/5
x= .
−1/5

Construire la matrice d’itération associée à la méthode de Jacobi et en calculer le rayon spectrale.


2. Même exercice pour la méthode de Gauss-Seidel.

Correction
1. Dans le fichier myJacobi.m on écrit

function [x,r,k]=myJacobi(A,b,xinit,toll,kmax)
k=0;
xold=xinit;
r=norm(A*xold-b);

122 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

n=length(b);
while ((r>=toll) && (k<=kmax))
for i=1:n
j=[1:i-1,i+1:n];
x(i)=(b(i)-dot(A(i,j),xold(j)))/A(i,i);
end
k+=1;
xold=x’;
r=norm(A*xold-b);
disp(k)
disp(x)
end
end

% Remarque: sum(A(i,j).*xold(j))=dot(A(i,j),xold(j))

et on teste cette fonction par exemple comme suit


%clear all
%A=[2 1; 1 3]
%b=[1;0]
%xinit=[0;0];
%[x,r,k]=myJacobi(A,b,xinit,1.e-9,50)
%A\b % verification avec la fonction predefinie dans Octave
%
%E=-tril(A,-1);
%F=-triu(A,1);
%P=A+E+F;
%B=inv(P)*(P-A);
%RayonSpectraleB_Jacobi=max(abs(eig(B)))

clear all;
clc;
A=[1 2 4; 2 1 6; 4 6 1]
b=[8;3;7]
xinit=[0;0;0];
disp("Jacobi")
[x,r,k]=myJacobi(A,b,xinit,1.e-9,2)
A\b % verification avec la fonction predefinie dans Octave

E=-tril(A,-1);
F=-triu(A,1);
P=A+E+F;
B=inv(P)*(P-A);
RayonSpectraleB_Jacobi=max(abs(eig(B)))

disp("Gauss Seidel")
[x,r,k]=myGS(A,b,xinit,1.e-9,2)
A\b % verification avec la fonction predefinie dans Octave

E=-tril(A,-1);
F=-triu(A,1);
P=A+E+F;
B=inv(P-E)*(P-E-A);
RayonSpectraleB_GS=max(abs(eig(B)))

2. Dans le fichier myGS.m on écrit


function [x,r,k]=myGS(A,b,xinit,toll,kmax)
k=0;
x=xinit;
r=norm(A*x-b);
n=length(b);
while r>=toll && k<=kmax
for i=1:n
j=[1:i-1,i+1:n];

© 2020-2021 G. Faccanoni 123


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

x(i)=(b(i)-dot(A(i,j),x(j)))/A(i,i);
end
k+=1;
r=norm(A*x-b);
disp(k)
disp(x)
end
end
et on teste cette fonction par exemple comme suit
A=[2 1; 1 3]
b=[1;0]
xinit=[0;0]
[x,r,k]=myGS(A,b,xinit,1.e-9,50)
A\b % verification avec la fonction predefinie dans Octave

E=-tril(A,-1);
F=-triu(A,1);
P=A+E+F;
B=inv(P-E)*(P-E-A);
RayonSpectraleB_GS=max(abs(eig(B)))

Exercice 2.15
Soit le système linéaire
    
6 1 1 x1 12
2 4 0  x 2  =  0  .
1 2 6 x3 6

1. Approcher la solution avec la méthode de J ACOBI avec 3 itérations à partir de x(0) = (2, 2, 2).
2. Approcher la solution avec la méthode de G AUSS -S EIDEL avec 3 itérations à partir de x(0) = (2, 2, 2).
3. Résoudre les systèmes linéaires par la méthode d’élimination de G AUSS.
4. Factoriser la matrice A (sans utiliser la technique du pivot) et résoudre les systèmes linéaires.

Correction
1. Méthode de J ACOBI :
 12−(1×(−1)+1×0)   12−(1× −2 +1× 10 ) 
12−(1×2+1×2)
   
4   13  3 9  52 
2 6 /3 6
 0−(2× 4 +0×0)  /6 6 /27
(0) (1)  0−(2×2+0×2) (2) (3) 0−(2× 13 10
6 +0× 9 )
 
3
x = 2 , x = = −1 , x = = − /3 ,
2 
x =  = −13/12
      
4 4  4 
2 6−(1×2+2×2) 0 6−(1× 43 +2×(−1)) 10
/9 6−(1× 13 −2 31
/36
6 6 +2× 3 )
6 6

ainsi  
1.926
x ≈ −1.083 .
0.861

2. Méthode de G AUSS -S EIDEL :


12−(1×2+1×2) 12−(1× −2
 12−(1× 35 +1× −35 ) 
3 +1×1)
   
  4   35  18 36  431 
2 6
4
/3 6 /18 6 /216
0−(2× +0×2) 35 431
x(0) = 2 , x(1) =   = − 2  , x(2) =  0−(2× 18 +0×1)   35 
x(3) =  0−(2× 216 +0×1)
     
3
4 3 = − /36 ,  = −431/432
   4   4 
2 6−(1× 43 +2× −2
3 ) 1 6−(1× 35 +2× −35
) 1 431 −431
6−(1× 216 +2× 432 ) 1
18 36
6 6 6

ainsi  
1.995
x ≈ −0.995 .
1

3. Méthode d’élimination de G AUSS :


 L 2 ←L 2 − 62 L 1  11
6 1 1 12
   
6 1 1 12 6 L
L 3 ←L 3 − 11 2 6 1 1 12
L 3 ←L 3 − 16 L 1 11
− 31 11
− 13
3
(A|b) =  2 4 0 0  −−−−−−−−→  0 3 −4  −−−−−−−−−−→  0 3 −4 
11 35
1 2 6 6 0 6 6 4 0 0 6 6

124 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

donc 
 6x 1 + x 2 + x 3 = 12,

11 1
3 x 2 − 3 x 3 = −4
=⇒ x 3 = 1, x 2 = −1, x 1 = 2.

6x 3 = 6

4. Factorisation de la matrice A :
 L 2 ←L 2 − 62 L 1  11
 
6 1 1 L 3 ←L 3 − 116 L 2  62 1 1
 
6 1 1
L 3 ←L 3 − 16 L 1 11
− 13 
0 −−−−−−−−→  62 11
− 13  −−−−−−−−−−→ 
2 3
4 3 6 3
11

1 11 35

1 6
1 2 6 6 6 6 6 11 6
3

donc

1 0 0
   
6 1 1
L =  31 1 0 U = 0 11
3 −31
1 1
6 2 1 0 0 6

Pour résoudre le système linéaire on résout les systèmes triangulaires Ly = b

1 0 0 y1
    
12
1 1 0  y 2  =  0  =⇒ y 1 = 12, y 2 = −4, y3 = 6
3
1 1
6 2 1 y3 6

et Ux = y
    
6 1 1 x1 1
11
0
3 − 13  x 2  = −4 =⇒ x 3 = 1, x 2 = −1, x 1 = 2.
0 0 6 x3 6

Exercice 2.16
Donner une condition suffisante sur le coefficient α pour avoir convergence des méthodes de J ACOBI et G AUSS -S EIDEL
pour la résolution d’un système linéaire associé à la matrice

α
 
0 1
A = 0 α 0
1 0 α

Correction
Une condition suffisante pour la convergence des méthodes de J ACOBI et de G AUSS -S EIDEL est que A est à diagonale
strictement dominante, i.e. 3i =1 |a i j | < |a i i | pour j = 1, 2, 3. La matrice A vérifie cette condition si et seulement si |α| > 1.
P
i ̸= j

Exercice 2.17
Considérons le système linéaire Ax = b avec
α γ
 
0
A = 0 α β
0 δ α
avec α, β, γ et δ des paramètres réels. Donner des conditions suffisantes sur les coefficients pour avoir
1. convergence de la méthode de J ACOBI
2. convergence de la méthode de G AUSS-S EIDEL.

Correction
1. Une condition suffisante pour que la méthode de J ACOBI converge est que la matrice soit à dominance diagonale
stricte, ce qui équivaut à imposer

 |α| > |γ|,

|α| > |β|,


|α| > |δ|,
ª ©
c’est-à-dire |α| > max |β|, |γ|, |δ| .

© 2020-2021 G. Faccanoni 125


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

2. La condition précédente est aussi suffisante pour la convergence de la méthode de G AUSS-S EIDEL. Une autre condition
suffisante pour la convergence de cette méthode est que la matrice soit symétrique définie positive. Pour la symétrie il
faut que (
γ = 0,
β = δ,
on obtient ainsi la matrice
α
 
0 0
A = 0 α β .
0 β α
Elle est définie positive si ses valeurs propres sont positifs. On a

λ1 = α, λ2 = α − β, λ3 = α + β,

donc il faut que α > |β|.


On note que dans ce cas, lorsque A est symétrique définie positive alors elle est aussi à dominance diagonale stricte.

Exercice 2.18
Écrire les méthodes itératives de G AUSS, J ACOBI et G AUSS -S EIDEL pour les systèmes suivants :
( (
10a + b = 11 2a + 10b = 12
et
2a + 10b = 12 10a + b = 11.

Pour chacun de ces méthodes et systèmes, on illustrera les résultats théoriques de convergence/non-convergence en
calculant les 3 premières itérés en prenant comme point de départ le vecteur (a, b) = (0, 0).

Correction
Gauss ⋆ Premier système :
( (
2
10a + b = 11 a =1
µ ¶ µ ¶
10 1 11 L 2 ←L 2 − 10 L1 10 1 11
−−−−−−−−−→ 49 49 =⇒ 49 49
=⇒
2 10 12 0 5 5 5 b = 5 b = 1.

⋆ Second système :
( (
L 2 ←L 2 − 10 2a + 10b = 12 a =1
µ ¶ µ ¶
2 10 12 2 L1 2 10 12
−−−−−−−−−→ =⇒ =⇒
10 1 11 0 −49 −49 −49b = −49 b = 1.

Jacobi ⋆ Premier système : ( (


11−b
10a + b = 11 a= 10
⇐⇒ 12−2a
2a + 10b = 12 b= 10

La matrice étant à diagonale dominante stricte, la méthode converge et on a


12
11− 49
   
µ ¶ µ 11−0 ¶ µ11 ¶ 11− 10 µ49 ¶ 50
µ501 ¶
(0) 0 (1) 10 /10 (2) 10  = /50 (3) 10  = /500
x = , x = 12−0 = 12 , x =  12−2 11 , x = 
12−2 49
.
0 10
/10 10
49
/50 50
502
/500
10 10

⋆ Second système : ( (
12−10b
2a + 10b = 12 a= 2
⇐⇒
10a + b = 11 b = 11 − 10a
La méthode ne converge pas, en effet on a
µ ¶ µ 12−0 ¶ µ ¶ µ 12−10×11 ¶ µ ¶ µ 12−10×(−49) ¶ µ ¶
0 6 −49 251
x(0) = , x(1) = 2 = , x(2) = 2 = , x(3) = 2 = .
0 11 − 0 11 11 − 10 × 6 −49 11 − 10 × (−49) 501

Gauss-Seidel ⋆ Premier système : ( (


11−b
10a + b = 11 a= 10
⇐⇒ 12−2a
2a + 10b = 12 b= 10

126 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

La matrice étant à diagonale dominante stricte, la méthode converge et on a

11− 49 2499
   
11− 2500
à 11−0 ! µ ¶
50
µ ¶ µ 501 ¶ µ 25001 ¶
0 10
11
/10 /500 /25000
x(0) = , x(1) = 12−2 11 = 49 , x(2) =  12−2 10
501
= , x(3)
=  10
25001
12−2 25000
= .
0 10 /50 500
2499
/2500 12499
/125000
10 10 10

⋆ Second système : ( (
12−10b
2a + 10b = 12 a= 2
⇐⇒
10a + b = 11 b = 11 − 10a
La méthode ne converge pas, en effet on a
µ ¶ µ 12−0 ¶ µ ¶ µ 12−10×(−49) ¶ µ ¶ µ 12−10×(−2499) ¶ µ ¶
0 6 251 12501
x(0) = , x(1) = 2 = , x(2) = 2 = , x(3) = 2 = .
0 11 − 10 × 6 −49 11 − 10 × 251 −2499 11 − 10 × (12501) −124999

Exercice 2.19
Soit A une matrice, A ∈ Mn,n (R).
1. Rappeler la méthode de J ACOBI pour la résolution du système Ax = b, avec b ∈ Mn,1 (R) donné.
2. Soit la matrice A suivante :  
4 −1 −1
−1 3 −1 .
−1 −1 4
La méthode de J ACOBI est-elle convergente pour cette matrice ?
3. Construire à la main les matrices L et U de la factorisation LU pour la matrice ci-dessus.

Correction
1. La méthode de J ACOBI est une méthode itérative pour le calcul de la solution d’un système linéaire qui construit une
suite de vecteurs x(k) ∈ Rn convergent vers la solution exacte x pour tout vecteur initiale x(0) ∈ Rn :
n
a i j x kj
P
bi −
j =1
j ̸=i
x ik+1 = , i = 1, . . . , n.
ai i

2. Comme |4| > | − 1| + | − 1|, |3| > | − 1| + | − 1| et |4| > | − 1| + | − 1|, la matrice A est à diagonale dominante stricte donc la
méthode de J ACOBI converge
3. Factorisation :
  L 2 ←L 2 − −1
4 L1
   
4 −1 −1 4 −1 −1 L ←L − − / L 4 5 −1 −1
L 3 ←L 3 − −1
4 L1 3 3 / 2 11
4
4

−1 3 −1 −−−−−−−−−→ 0 11


/4 − /4 −−−−−−−−−−→ 0
5  11
/4 − /4 .
5 

−1 −1 4 0 −5/4 15
/4 0 0 35
/11
Par conséquent
   
1 0 0 4 −1 −1
L = −1/4 1 0 et U = 0 11
/4 −5/4 .
−1/4 −5/11 1 0 0 35
/11

Exercice 2.20
Soit les systèmes linéaires

 4x 1 + 3x 2 + 3x 3 = 10

3x 1 + 4x 2 + 3x 3 = 10 (2.1)

3x 1 + 3x 2 + 4x 3 = 10


 4x 1 + x 2 + x 3 = 6

x 1 + 4x 2 + x 3 = 6 (2.2)

x 1 + x 2 + 4x 3 = 6

1. Rappeler une condition suffisante de convergence pour les méthodes de J ACOBI et de G AUSS-S EIDEL. Rappeler

© 2020-2021 G. Faccanoni 127


Chapitre 2. Méthodes de résolution numériques des systèmes linéaires Mis à jour le Mercredi 31 mai 2023

une autre condition suffisante de convergence pour la méthode de G AUSS -S EIDEL (mais non pour la méthode de
J ACOBI). Les systèmes (2.1) et (2.2) vérifient-ils ces conditions ?
2. Écrire les méthodes de J ACOBI et de G AUSS -S EIDEL pour ces deux systèmes linéaires.
3. On illustrera les résultats théoriques de convergence/non-convergence de ces deux schémas en prenant comme
point de départ le vecteur (x 1 , x 2 , x 3 ) = (0, 0, 0) et en calculant les 3 premiers itérés :
3.1. avec la méthode de J ACOBI pour le système (2.1),
3.2. avec la méthode de G AUSS -S EIDEL pour le système (2.1),
3.3. avec la méthode de J ACOBI pour le système (2.2),
3.4. avec la méthode de G AUSS -S EIDEL pour le système (2.2).
4. On comparera le résultat obtenu avec la solution exacte (qu’on calculera à l’aide de la méthode d’élimination de
G AUSS).

Correction
Écrivons les deux systèmes sous forme matricielle Ax = b :
         
4 3 3 x1 10 4 1 1 x1 6
3 4 3 x 2  = 10 et 1 4 1 x 2  = 6
3 3 4 x3 10 1 1 4 x3 6
| {z } | {z }
A1 A2

1. Rappelons deux propriétés de convergence :


⋆ Si la matrice A est à diagonale dominante stricte, les méthodes de J ACOBI et de G AUSS -S EIDEL convergent.
⋆ Si la matrice A est symétrique et définie positive, la méthode de G AUSS -S EIDEL converge.
Comme 4 > 1 + 1, la matrice A2 est à diagonale dominante stricte : les méthodes de J ACOBI et de G AUSS -S EIDEL
convergent.
Comme 4 < 3 + 3, la matrice A1 n’est pas à diagonale dominante stricte : les méthodes de J ACOBI et de G AUSS -S EIDEL
peuvent ne pas converger. Cependant elle est symétrique et définie positive (car les valeurs propres 4 sont λ1 = λ2 = 1
et λ3 = 10) : la méthode de G AUSS -S EIDEL converge.
2. Pour les systèmes donnés les méthodes de J ACOBI et G AUSS -S EIDEL s’écrivent

A1 x = b A2 x = b
       
(k+1) (k) (k) (k+1) (k) (k)
x
 1  10 − 3x 2 − 3x 3  x
 1   6 − x 2 − x 3 
       
 (k+1)  1   (k+1)  1 
J ACOBI  = 4 10 − 3x − 3x (k) 
(k)  = 4 6 − x − x (k) 
(k)
 
x x
 2   1 3   2   1 3 
       
x 3(k+1) 10 − 3x 1(k) − 3x 2(k) x 3(k+1) 6 − x 1(k) − x 2(k)
       
(k+1) (k) (k) (k+1) (k) (k)
x 1   10 − 3x 2 − 3x 3  x 1   6 − x2 − x3 
       
 (k+1)  1   (k+1)  1 
Gauss-S EIDEL  = 4  10 − 3x (k+1) − 3x (k)   = 4  6 − x (k+1) − x (k) 
 
x x
 2   1 3   2   1 3 
       
(k+1) (k+1) (k+1) (k+1) (k+1) (k+1)
x3 10 − 3x 1 − 3x 2 x3 6 − x1 − x2

3. On obtient les suites suivantes


3.1. J ACOBI pour le système (2.1) :

 (0)    (1)    
5
x1 0 x1 10 − 3 × 0 − 3 × 0
  1  2
x  = 0 =⇒ x  = 10 − 3 × 0 − 3 × 0 =  5 
   
 2    2 4   2
5
x3 0 x3 10 − 3 × 0 − 3 × 0 2
 (2)      (3)    
x1 10 − 3 × 2 − 3 × 52
5
− 54 x1 10 − 3 × −5 −5
4 −3× 4
35
  1   1  8
5 5  5 −5   35 
  
=⇒  −5
x 2  = 4 10 − 3 × 2 − 3 × 2  = − 4  =⇒ x 2  = 4 10 − 3 × 4 − 3 × 4  =  8 
    

x3 10 − 3 × 52 − 3 × 52 − 54 x3 10 − 3 × −5 −5
4 −3× 4
35
8
4. det A1 (λ) = (4 − λ)3 + 27 + 27 − 9(4 − λ) − 9(4 − λ) − 9(4 − λ) = 64 − 48λ + 12λ2 − λ3 + 54 − 108 + 27λ = −λ3 + 12λ2 − 21λ + 10. Une racine évidente est
λ = 1 et on obtient det A1 (λ) = (λ − 1)(−λ2 + 11λ − 10) = (λ − 1)2 (λ − 10).

128 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 2. Méthodes de résolution numériques des systèmes linéaires

3.2. G AUSS -S EIDEL pour le système (2.1) :

 (0)    (1)    
5
x1 0 x1 10 − 3 × 0 − 3 × 0
  1  2
x  = 0 =⇒ x  =  10 − 3 × 5 − 3 × 0  =  5 
   
 2    2 4  2  8
x3 0 x3 10 − 3 × 52 − 3 × 58 5
32
 (2)      (3)  
x1 5
10 − 3 × 58 − 3 × 32 245
128 x1 12485
8192
  1
245 5   485   35765 
      
=⇒  x 2  = 4  10 − 3 × 128 − 3 × 32  =  512  =⇒ x 2  =  32768 
   

x3 10 − 3 × 245 485
128 − 3 × 512
725
2048 x3 70565
131072

3.3. J ACOBI pour le système (2.2) :

 (0)    (1)    
3
x1 0 x1 6−1×0−1×0
  1  2
3
   
x  = 0 =⇒ x  = 6 − 1 × 0 − 1 × 0 =  
 2    2 4   2
3
x3 0 x3 6−1×0−1×0 2
 (2)      (3)    
x1 6 − 1 × 32 − 1 × 32 3
x 1 6 − 1 × 3
− 1 × 3 9
  1  4   1 4 4
 8
=⇒  3 3 3 3 3 9
x 2  = 4 6 − 1 × 2 − 1 × 2  =  4  =⇒ x 2  = 4 6 − 1 × 4 − 1 × 4  =  8 
    

x3 6 − 1 × 32 − 1 × 32 3
4 x3 6 − 1 × 34 − 1 × 43 9
8

3.4. G AUSS -S EIDEL pour le système (2.2) :

 (0)    (1)   
3
x1 0 x1 6−1×0−1×0
  1  2 
x  = 0 =⇒ x  =  6 − 1 × 3 − 1 × 0   9 
   
 2    2 4  2  8 
3 9 27
x3 0 x3 6−1× 2 −1× 8 32
 (2)      (3)    
x1 6 − 1 × 89 − 1 × 32
27 129
128 x1 6 − 1 × 531 2025
512 − 1 × 2048
8139
8192
  1   1
129 27   531  8139 2025   32913 
     
=⇒ 
x 2  = 4  6 − 1 × 128 − 1 × 32  =  512  =⇒ x 2  = 4  6 − 1 × 8192 − 1 × 2048  =  32768 
    
129
x3 6 − 1 × 128 − 1 × 531
512
2025
2048 x3 8139
6 − 1 × 8192 − 1 × 32913
32768
131139
131072

4. Calcul de la solution exacte à l’aide de la méthode d’élimination de G AUSS :


⋆ Système (2.1) :

  L 2 ←L 2 − 34 L 1      
4 3 3 10 4 3 3 10 4 3 3 10 1
L 3 ←L 3 − 34 L 1 L 3 ←L 3 − 3/4
7/4 L2
 3 4 3 10  −−−−−−−−→  0 7
/4 3
/4 5
/2  −−−−−−−−−−→  0 7
/4 3
/4 5
/2  =⇒ x = 1
3 3 4 10 0 3
/4 7
/4 5
/2 0 0 10
/7 10
/7 1

⋆ Système (2.2) :

  L 2 ←L 2 − 14 L 1      
4 1 1 6 4 1 1 6 3/4 4 1 1 6 1
L 3 ←L 3 − 14 L 1 L 3 ←L 3 − 15/4 L2
 1 4 1 6  −−−−−−−−→  0 15
/4 3
/4 9
/2  −−−−−−−−−−→  0 15
/4 3
/4 9
/2  =⇒ x = 1
1 1 4 6 0 3
/4 15
/4 9
/2 0 0 18
/5 18
/5 1

© 2020-2021 G. Faccanoni 129


CHAPITRE 3

Interpolation

ªn
Étant donné n + 1 couples (x i , y i ) i =0 , le problème consiste à trouver une fonction ϕ = ϕ(x) telle que ϕ(x i ) = y i ; on dit
©

alors que ϕ interpole l’ensemble de valeurs {y i }ni=0 aux nœuds {x i }ni=0 . Les quantités y i représentent les valeurs aux nœuds
x i d’une fonction f connue analytiquement ou des données expérimentales. Dans le premier cas, l’approximation a pour
but de remplacer f par une fonction plus simple en vue d’un calcul numérique d’intégrale ou de dérivée. Dans l’autre cas, le
but est d’avoir une représentation synthétique de données expérimentales (dont le nombre peut être très élevé). On parle
d’interpolation polynomiale quand ϕ est un polynôme et d’interpolation polynomiale par morceaux (ou d’interpolation par
fonctions splines) si ϕ est polynomiale par morceaux.

3.1. Interpolation polynomiale : base canonique, base de Lagrange, base de


Newton

Supposons que l’on veuille chercher un polynôme p n de degré n ≥ 0 qui, pour des valeurs x 0 , x 1 , x 2 , . . . , x n distinctes données
(appelés nœuds d’interpolation), prenne les valeurs y 0 , y 1 , y 2 , . . . , y n respectivement, c’est-à-dire

p n (x i ) = y i pour 0 ≤ i ≤ n. (3.1)

Si un tel polynôme existe, il est appelé polynôme d’interpolation ou polynôme interpolant.

Base canonique. Une manière apparemment simple de résoudre ce problème est d’écrire le polynôme dans la base
canonique de Rn [x] :
p n (x) = a 0 + a 1 x + a 2 x 2 + · · · + a n x n ,
où a 0 , a 1 , a 2 , . . . , a n sont des coefficients qui devront être déterminés. Les (n + 1) relations (3.1) s’écrivent alors


 a 0 + a 1 x 0 + . . . a n x 0n = y 0

 a + a x + . . . a xn = y

0 1 1 n 1 1
 ...


a 0 + a 1 x n + . . . a n x nn = y n

Puisque les valeurs x i et y i sont connues, ces relations forment un système linéaire de (n + 1) équations en les (n + 1)
inconnues a 0 , a 1 , a 2 , . . . , a n qu’on peut mettre sous la forme matricielle

1 x 0 . . . x 0n a 0
    
y0
1 x
 1 . . . x 1n 
  a1   y 1 
   
 .  =  . . (3.2)
. .. ..     
.
. . .   ..   .. 
1 xn ... x nn an yn

Ainsi, le problème consistant à chercher le polynôme p n satisfaisant (3.1) peut se réduire à résoudre le système
linéaire (3.2) (cette matrice s’appelle matrice de VANDERMONDE).

Étant donné n + 1 points distincts x 0 , . . . , x n et n + 1 valeurs correspondantes y 0 , . . . , y n , il existe un unique

131
Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

polynôme p n ∈ Rn [x] tel que p n (x i ) = y i , pour i = 0, . . . n qu’on peut écrire sous la forme

1 x 0 . . . x 0n a 0
    
y0
n 1 x
1 . . . x 1n  a   y 
1  1
ai x i
X   
p n (x) = avec   .. .. ..  .  =  . .
   
i =0 . . .   ..   .. 
1 x n . . . x nn a n yn

Base de Lagrange. Malheureusement, résoudre une système linéaire de (n + 1) équations à (n + 1) inconnues n’est pas
une tache triviale. Cette méthode pour trouver le polynôme p n n’est donc pas une bonne méthode en pratique. On se
demande alors s’il existe une autre base { L 0 , L 1 , L 2 , . . . , L n } de Rn [x] telle que le polynôme p n s’écrit

p n (x) = y 0 L 0 (x) + y 1 L 1 (x) + y 2 L 2 (x) + · · · + y n L n (x),

autrement dit s’il existe une base telle que les coordonnées du polynôme dans cette base ne sont rien d’autre que les
valeurs connues y 0 , y 1 , . . . , y n . Pour trouver une telle base, commençons par imposer le passage du polynôme par les
n + 1 points donnés : les (n + 1) relations (3.1) imposent la condition
(
1 si i = j
L i (x j ) = pour 0 ≤ i , j ≤ n,
0 sinon

ce qui donne
n x −x (x − x 0 )(x − x 1 ) · · · (x − x i −1 )(x − x i +1 ) · · · (x − x n )
Y j
L i (x) = = .
j =0 xi − x j (x i − x 0 )(x i − x 1 ) · · · (x i − x i −1 )(x i − x i +1 ) · · · (x i − x n )
j ̸=i

Il est facile de vérifier que


⋆ L i (x) ∈ Rn [x] car le numérateur de L i (x) est un produit de n termes (x − x j ) avec i ̸= j et est donc un polynôme
de degré n et le dénominateur de L i (x) est une constante,
⋆ L i (x j ) = 0 si i ̸= j , 0 ≤ i ≤ n,
⋆ L i (x i ) = 1.
De plus, les polynômes L 0 , L 1 , L 2 , . . . , L n sont linéairement indépendants car si l’équation ni=0 αi L i (x) = 0 doit être
P

satisfaite pour tout x ∈ R alors en particulier elle doit être satisfaite pour x = x j pour tout j = 0, 1, . . . , n et puisque
Pn
i =0 αi L i (x j ) = α j , on conclut que tous les α j sont nuls. Par conséquent, la famille { L 0 , L 1 , L 2 , . . . , L n } forme une base
de Rn [x].
Il est important de remarquer que nous avons construit explicitement une solution du problème (3.1) et ceci pour
n’importe quelles valeurs y 0 , y 1 , y 2 , . . . , y n données. Ceci montre que le système linéaire (3.2) a toujours une unique
solution.
Étant donné n + 1 points distincts x 0 , . . . , x n et n + 1 valeurs correspondantes y 0 , . . . , y n , il existe un unique
polynôme p n ∈ Rn [x] tel que p n (x i ) = y i , pour i = 0, . . . n qu’on peut écrire sous la forme
n n x −x
X Y j
p n (x) = y i L i (x) où L i (x) = .
i =0 j =0 xi − x j
j ̸=i

Cette relation est appelée formule d’interpolation de L AGRANGE et les polynômes L i sont les polynômes
caractéristiques (de L AGRANGE).
Base de Newton. Cependant, cette méthode n’est pas encore la plus efficace d’un point de vue pratique. En effet, pour cal-
culer le polynôme d’interpolation d’un ensemble de n +1 points on doit calculer les n©+1 polynômes { L 0 ,ªL 1 , L 2 , . . . , L n }.
Si ensuite on ajoute un point d’interpolation, on doit calculer les n + 2 polynômes L̃ 0 , L̃ 1 , L̃ 2 , . . . , L̃ n+1 qui diffèrent
tous des n + 1 calculés précédemment. La méthode de N EWTON est basée sur le choix d’une autre base de sort à ce
que l’ajout d’un point comporte juste l’ajout d’une fonction de base.
Considérons la famille de polynômes { ω0 , ω1 , ω2 , . . . , ωn } où 1

ω0 (x) = 1,
k−1
ωk (x) =
Y
(x − x i ) = (x − x k−1 )ωk−1 (x), ∀k = 1, . . . , n.
i =0

Il est facile de vérifier que


1. Notons que le dernier point x n n’intervient pas dans la construction de cette base.

132 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

⋆ ωk (x) ∈ Rn [x],
⋆ la famille { ω0 , ω1 , ω2 , . . . , ωn } est génératrice de Rn [x]
⋆ la famille { ω0 , ω1 , ω2 , . . . , ωn } est libre.
Par conséquent, la famille { ω0 , ω1 , ω2 , . . . , ωn } forme une base de Rn [x].
Si on choisit comme base de Rn [x] la famille { ω0 , ω1 , ω2 , . . . , ωn }, le problème du calcul du polynôme d’interpolation
p n est alors ramené au calcul des coefficients { α0 , α1 , α2 , . . . , αn } tels que
n
αi ωi (x).
X
p n (x) =
i =0

Si on a calculé les n + 1 coefficients { α0 , α1 , α2 , . . . , αn } et on ajoute un point d’interpolation, il n’y a plus à calculer que
le coefficient αn+1 car la nouvelle base est déduite de l’autre base en ajoutant simplement le polynôme ωn+1 .
© ªn
Pour calculer tous les coefficients on introduit la notion de différence divisée : soit (x i , y i ) i =0 un ensemble de n + 1
points distincts.
⋆ La différence divisée d’ordre 1 de x i −1 et x i est
y i − y i −1
f [x i −1 , x i ] ≡ .
x i − x i −1

⋆ La différence divisée d’ordre n des n + 1 points x 0 , . . . , x n est définie par récurrence en utilisant deux différences
divisées d’ordre n − 1 comme suit :
f [x 1 , . . . , x n ] − f [x 0 , . . . , x n−1 ]
f [x 0 , . . . , x n ] ≡
xn − x0

Pour expliciter le processus récursif, les différences divisées peuvent être calculées en les disposant de la manière
suivante dans un tableau :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ] f [x i −3 , x i −2 , x i −1 , x i ] f [x i −4 , x i −3 , x i −2 , x i −1 , x i ] ...
0 x0 y0
1 x1 y1 f [x 0 , x 1 ]
2 x2 y2 f [x 1 , x 2 ] f [x 0 , x 1 , x 2 ]
3 x3 y3 f [x 2 , x 3 ] f [x 1 , x 2 , x 3 ] f [x 0 , x 1 , x 2 , x 3 ]
4 x4 y4 f [x 3 , x 4 ] f [x 2 , x 3 , x 4 ] f [x 1 , x 2 , x 3 , x 4 ] f [x 0 , x 1 , x 2 , x 3 , x 4 ]
.. .. .. .. .. .. .. ..
. . . . . . . .

© ªn
Soit (x i , y i ) i =0 un ensemble de n + 1 points distincts. Le polynôme d’interpolation p n sous la forme de
N EWTON est donné par
n
ωi (x) f [x 0 , . . . , x i ]
X
p n (x) =
i =0

ω0 (x) = 1,
k−1
ωk (x) =
Y
(x − x i ) = (x − x k−1 )ωk−1 (x), ∀k = 1, . . . , n;
i =1
f [x k ] = y k , ∀k = 0, . . . , n,
f [x 1 , . . . , x k ] − f [x 0 , . . . , x k−1 ]
f [x 0 , . . . , x k ] ≡ , ∀k = 1, . . . , n.
xk − x0

Comme le montre la définition des différences divisées, des points supplémentaires peuvent être ajoutés pour créer
un nouveau polynôme d’interpolation sans recalculer les coefficients. De plus, si un point est modifié, il est inutile de
recalculer l’ensemble des coefficients. Autre avantage, si les x i sont équirépartis, le calcul des différences divisées
devient nettement plus rapide. Par conséquent, l’interpolation polynomiale dans une base de N EWTON est privilégiée
par rapport à une interpolation dans la base de L AGRANGE pour des raisons pratiques.

© 2020-2021 G. Faccanoni 133


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

(a) Distribution équirepartie des nœuds (b) Nœuds de C HEBYSHEV-G AUSS -L OBATTO

F IGURE 3.1. – Interpolation de L AGRANGE, exemple de RUNGE

Remarque (Les défauts de l’interpolation polynomiale)


Malheureusement les polynômes d’interpolation ne forment pas une suite convergente vers une fonction analytique f .
Si y i = f (x i ) pour i = 1, 2, . . . , n, f : I → R étant une fonction donnée de classe C n (I ) où I est le plus petit intervalle contenant
les nœuds distincts { x i }ni=0 , alors il existe ξ ∈ I tel que l’erreur d’interpolation au point x ∈ I est donnée par

f (n) (ξ)
ωn (x)
def
E n−1 (x) = f (x) − p n−1 (x) =
n!
avec p n−1 ∈ Rn−1 [x] le polynôme d’interpolation.
Dans le cas d’une distribution uniforme de nœuds, i.e. quand x i = x i −1 + h avec i = 1, 2, . . . , n et h > 0 et x 0 donnés, on a

hn
|ωn (x)| ≤ (n − 1)!
4
et donc
maxx∈I | f (n) (x)| n
max|E n−1 (x)| ≤ h .
x∈I 4n
Malheureusement, on ne peut pas déduire de cette relation que l’erreur tend vers 0 quand n tend vers l’infini, bien
que h n /[4n] tend effectivement vers 0. En fait, il existe des fonctions f pour lesquelles maxx∈I |E n−1 (x)| −−−−−→ +∞. Ce
n→+∞
résultat frappant indique qu’en augmentant le degré n du polynôme d’interpolation, on n’obtient pas nécessairement
une meilleure reconstruction de f .

Ce phénomène est bien illustré par la fonction de RUNGE de l’exemple ci-dessous.

E XEMPLE
1 (n)
Soit la fonction f : [−5, 5] → R définie par f (x) = 1+x 2 . La fonction f est infiniment dérivable sur [−5, 5] et | f (±5)| devient
très rapidement grand lorsque n tend vers l’infini. Si on considère une distribution uniforme des nœuds on voit que
l’erreur tend vers l’infini quand n tend vers l’infini. Ceci est lié au fait que la quantité maxx∈[−5,5] | f (n) (x)| tend plus vite vers
n
l’infini que h4n tend vers zéro. La figure 3.1a montre ses polynômes interpolants de degrés 3, 5 et 10 pour une distribution
équirepartie des nœuds. Cette absence de convergence est également mise en évidence par les fortes oscillations observées
sur le graphe du polynôme d’interpolation (absentes sur le graphe de f ), particulièrement au voisinage des extrémités de
l’intervalle. Ce comportement est connu sous le nom de phénomène de RUNGE.
On peut éviter le phénomène de RUNGE en choisissant correctement la distribution des nœuds d’interpolation. Sur un
intervalle [a, b], on peut par exemple considérer les nœuds de C HEBYSHEV-G AUSS -L OBATTO (voir figure 3.1b)

a +b b −a ³ π ´
xi = − cos (i − 1) , pour i = 0, . . . , n
2 2 n −1
Pour cette distribution particulière de nœuds, il est possible de montrer que, si f est dérivable sur [a, b], alors p n converge
vers f quand n → +∞ pour tout x ∈ [a, b]. Les nœuds de C HEBYSHEV-G AUSS -L OBATTO, qui sont les abscisses des nœuds
équirépartis sur le demi-cercle unité, se trouvent à l’intérieur de [a, b] et sont regroupés près des extrémités de l’intervalle.
Les courbes des figures 3.1a et 3.1b peuvent été obtenues par les instructions suivantes :
f=@(x)[1./(1+x.^2)]; % La fonction de Runge

134 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

x = [-5:.1:5]; % Pour l’affichage on evaluera f et les polynomes en ces points


y = f(x);

% NOEUDS EQUIREPARTIS

% Construction des polynomes

% n=4 points => p in R_3[x]


x1 = [linspace(-5,5,4)];
y1 = f(x1);
y1interp = polyval(polyfit(x1,y1,3),x);

% n=8 points => p in R_7[x]


x2 = [linspace(-5,5,8)];
y2 = f(x2);
y2interp = polyval(polyfit(x2,y2,7),x);

% n=16 points => p in R_15[x]


x3 = [linspace(-5,5,16)];
y3 = f(x3);
y3interp = polyval(polyfit(x3,y3,15),x);

% Affichage
plot(x,f(x),’r-’,’LineWidth’,2,...
x,y1interp,’b:’,’LineWidth’,2,...
x,y2interp,’m-.’,’LineWidth’,2,...
x,y3interp,’g--’,’LineWidth’,2,...
x3,y3,’*’,’MarkerSize’,10)
legend(’f’,’p_3’,’p_7’,’p_{15}’);
saveas (gcf, "runge_lagrange.png", "png");

% NOEUDS DE CHEBICHEF

% Construction des polynomes

% n=4 points => p in R_3[x]


x1 = -5*cos(pi*[0:3]/3);
y1 = f(x1);
y1interp = polyval(polyfit(x1,y1,3),x);

% n=8 points => p in R_7[x]


x2 = -5*cos(pi*[0:7]/7);
y2 = f(x2);
y2interp = polyval(polyfit(x2,y2,7),x);

% n=16 points => p in R_15[x]


x3 = -5*cos(pi*[0:15]/15);
y3 = f(x3);
y3interp = polyval(polyfit(x3,y3,15),x);

% Affichage
plot(x,f(x),’r-’,’LineWidth’,2,...
x,y1interp,’b:’,’LineWidth’,2,...
x,y2interp,’m-.’,’LineWidth’,2,...
x,y3interp,’g--’,’LineWidth’,2,...
x3,y3,’*’,’MarkerSize’,10)
legend(’f’,’p_3’,’p_7’,’p_{15}’);
saveas (gcf, "runge_lagrangeTGL.png", "png");

© 2020-2021 G. Faccanoni 135


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

Remarque (Splines : interpolation composite)


On a mis en évidence le fait que, quand les nœuds d’interpolation sont équirépartis, on ne peut pas garantir la convergence
uniforme du polynôme interpolatoire de L AGRANGE vers f . L’interpolation de L AGRANGE de bas degré est cependant
suffisamment précise quand elle est utilisée sur des intervalles assez petits, y compris avec des nœuds équirépartis (ce
qui est commode en pratique). Il est donc naturel d’introduire une partition de [a; b] en n sous-intervalles [x i , x i +1 ], tels
que [a; b] = ∪0≤i ≤n−1 [x i , x i +1 ] et d’utiliser l’interpolation de L AGRANGE sur chaque sous-intervalles [x i , x i +1 ] en utilisant m
nœuds équirépartis avec m petit (généralement m = 1 ou 3).
Ici nous allons considérer seulement le cas m = 1, i.e. des splines linéaires.
Spline linéaire : étant donné une distribution (non nécessairement uniforme) de nœuds x 0 < x 1 < · · · < x n , on approche f
par une fonction continue qui, sur chaque intervalle [x i , x i +1 ], est définie par le segment joignant les deux points (x i , f (x i ))
et (x i +1 , f (x i +1 )). Cette fonction est appelée interpolation linéaire par morceaux (ou spline linéaire).

Définition 3.1 (Splines linéaires)


Étant donné n + 1 points distincts x 0 , . . . , x n de [a; b] avec a = x 0 < x 1 < · · · < x n = b, la fonction ℓ : [a; b] → R est une spline
linéaire relative aux nœuds {x i } si (
ℓ(x)|[xi ;xi +1] ∈ R1 , i = 1, 1, . . . , n − 1,
ℓ ∈ C 0 ([a; b]).
Autrement dit, dans chaque sous-intervalle [x i ; x i + 1], la fonction ℓ : [x i , x i +1 ] → R est le segment qui connecte le point
(x i , y i ) au point (x i +1 , y i +1 ) ; elle s’écrit donc
y i +1 − y i
ℓ(x)|[xi ;xi +1] = y i + (x − x i )
x i +1 − x i

Il est intéressant de noter que la commande plot(x,y), utilisée pour afficher le graphe d’une fonction f sur un intervalle
donné [a, b], remplace en fait la fonction par une interpolée linéaire par morceaux, les points d’interpolation étant les
composantes du vecteur x.
Le principale défaut de cette interpolation par morceaux est que ℓ n’est que continue. Or, dans des nombreuses applications,
il est préférable d’utiliser des fonctions ayant au moins une dérivée continue. On peut construire pour cela une fonction
s 3 comme l’interpolation d’H ERMITE des points (x i , f (x i ), f ′ (x i )) et (x i +1 , f (x i +1 ), f ′ (x i +1 )) sur chaque [x i ; x i + 1] pour
i = 1, 1, . . . , n − 1.
E XEMPLE
On se propose de calculer le polynôme d’interpolation de l’ensemble de points { (−1, 1), (0, 0), (1, 1) }. On cherche donc
p 2 ∈ R2 [x] tel que p 2 (x i ) = y i pour i = 0, . . . , 2. On calculera enfin la spline linéaire associée aux mêmes points.
Méthode directe. Si on écrit p 2 (x) = α0 + α1 x + α2 x 2 , on cherche α0 , α1 , α2 tels que

1 α0
    
1 −1 1
1 0 0 α1  = 0
1 1 1 α2 1

En résolvant ce système linéaireon trouve α0 = 0, α1 = 0 et α2 = 1 ainsi p 2 (x) = x 2 .


Méthode de Lagrange. On a
x(x − 1) (x − (−1))(x − 0) 1 1
p 2 (x) = y 0 L 0 (x) + y 1 L 1 (x) + y 2 L 2 (x) = + = x(x − 1) + (x + 1)x = x 2
(−1 − 0)(−1 − 1) (1 − (−1))(1 − 0) 2 2

Méthode de Newton. On commence par construire le tableau des différences divisées :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ]
0 −1 1
1 0 0 −1
2 1 1 1 1
On a alors
2
ωi (x) f [x 0 , . . . , x i ]
X
p 2 (x) =
i =0
= ω0 (x) f [x 0 ] + ω1 (x) f [x 0 , x 1 ] + ω2 (x) f [x 0 , x 1 , x 2 ]
= ω0 (x) − ω1 (x) + ω2 (x)
= 1 − (x + 1) + x(x + 1) = x 2 .

136 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

Spline linéaire. (
−x si − 1 ≤ x ≤ 0,
s 1 (x) =
x si 0 ≤ x ≤ 1.

E XEMPLE
On se propose de calculer le polynôme d’interpolation de la fonction f (x) = sin(x) en les 3 points x i = π2 i avec i = 0, . . . , 2.
On cherche donc p 2 ∈ R2 [x] tel que p 2 (x i ) = sin(x i ) pour i = 0, . . . , 2. Calculer ensuite la spline linéaire associée aux même
points.
Méthode directe. Si on écrit p 2 (x) = α0 + α1 x + α2 x 2 , on cherche α0 , α1 , α2 tels que

1 0 0 α0
    
0
1 π π2  α  = 1
2 4 1
1 π π2 α2 0

4
En résolvant ce système linéaire 2 on trouve α0 = 0, α1 = π et α2 = − π42 ainsi p 2 (x) = π4 x − π42 x 2 = 4
π2
x(π − x).
Méthode de Lagrange. On a
x(x − π) 4
p 2 (x) = y 0 L 0 (x) + y 1 L 1 (x) + y 2 L 2 (x) = π π
¢ = − 2 x(x − π).
−π π
¡
2 2

Méthode de Newton. On commence par construire le tableau des différences divisées :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ]
0 0 0
π 2
1 2 1 π

2 π 0 − π2 − π42

On a alors
2
ωi (x) f [x 0 , . . . , x i ]
X
p 2 (x) =
i =0
= ω0 (x) f [x 0 ] + ω1 (x) f [x 0 , x 1 ] + ω2 (x) f [x 0 , x 1 , x 2 ]
2 4
= ω1 (x) − 2 ω2 (x)
π π
2 4 ³ π´
= x− 2x x−
π π 2
4
= − 2 x(x − π).
π

Spline linéaire.
si 0 ≤ x ≤ π2 ,
(
2
s 1 (x) = πx
2 π
π (x − π) si 2 ≤ x ≤ π.

Maintenant on veut calculer le polynôme d’interpolation de la même fonction en les 4 points x i = π2 i avec i = 0, . . . , 3, i.e. on
a juste ajouté le point x = 3π/2. On cherche donc p 3 ∈ R3 [x] tel que p 3 (x i ) = sin(x i ) pour i = 0, . . . , 3.
Méthode directe. Si on écrit p 3 (x) = α0 + α1 x + α2 x 2 + α3 x 3 , on cherche α0 , α1 , α2 , α3 tels que
 
1 0 0 0 α0 0
  
π π2 π3
1 α = 1 
    
2 4 8 
 1
1 π π2 π3  α2   0 

3π 9π2 27π3 α3 −1
1 2 4 8

2. Par la méthode du pivot de Gauss on obtient

1 0 0 0
     
1 0 0 0 L 2 ←L 2 −L 1 1 0 0 0
π π 2  L 3 ←L 3 −L 1  π π2  L 3 ←L 3 −2L 2  π π2
−−−−−−−−−→  0 1  −−−−−−−−−→  0 1
 
 1 2 4 1  2 4 2 4 
1 π π2 0 0 π π2 0 π2
0 0 2 −2

© 2020-2021 G. Faccanoni 137


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

16
En résolvant ce système linéaire on trouve α0 = 0, α1 = 3π , α2 = − π82 et α3 = 8
3π3
.
Méthode de Lagrange. On a

x(x − π) x − 3π x x − π2 (x − π)
¡ ¢ ¡ ¢
2
p 3 (x) = y 0 L 0 (x) + y 1 L 1 (x) + y 2 L 2 (x) + y 3 L 3 (x) = π ¡ π ¢ ¡ π 3π ¢ − 3π 3π π
¢ ¡ 3π
2 2 −π 2 − 2 2 −π
¡ ¢
2 2 − 2
π´
µ ¶
4 3π 4 ³
= 3 x(x − π) x − − 3x x− (x − π).
π 2 3π 2

Méthode de Newton. Il suffit de calculer une différence divisée en plus, i.e. ajouter une ligne au tableau :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ] f [x i −3 , x i −2 , x i −1 , x i ]
0 0 0
π 2
1 2 1 π

2 π 0 − π2 − π42

3 2 −1 − π2 0 8
3π3

On a alors
3
ωi (x) f [x 0 , . . . , x i ]
X
p 3 (x) =
i =0
= p 2 (x) + ω3 (x) f [x 0 , x 1 , x 2 , x 3 ]
4 8
= − 2 x(x − π) + 3 ω3 (x)
π 3π
4 8 ³ π´
= − 2 x(x − π) + 3 x x − (x − π)
π 3π 2
8
= 3 x(x 2 − 3πx + 2π2 ).

Spline linéaire.
si 0 ≤ x ≤ π2 ,
2
 πx

s 1 (x) = − π2 (x − π) si π2 ≤ x ≤ π

 2
− π (x − π) si π ≤ x ≤ 3π2 .

Remarque
Si n est petit il est souvent plus simple de calculer directement les coefficients a 0 , a 1 , . . ., a n en résolvant le système
linéaire (3.2).

3.2. Interpolation non polynomiale


Une généralisation de l’interpolation polynomiale consiste à chercher la fonction interpolant les n +1 points donnés non pas
dans Rn [x] mais dans un autre espace vectoriel V engendré par n + 1 fonctions libres ϕ j , j = 0, . . . , n . On peut considérer
© ª
jx
par exemple ª fonctions trigonométriques ϕ j (x) = cos( j x), des fonctions exponentielles ϕ j (x) = e etc. Le choix des
© des
fonctions ϕ j est en pratique dicté par la forme supposée de la loi décrivant les données.
ªn
On considère donc un ensemble de (n + 1) points (x i , y i ) i =0 et on cherche une fonction f (x) = nj=0 a j ϕ j (x) telle que
© P

f (x i ) = y i où a 0 , a 1 , a 2 , . . . , a n sont des coefficients qui devront être déterminés. Les (n + 1) relations s’écrivent alors

 a 0 ϕ0 (x 0 ) + a 1 ϕ1 (x 0 ) + . . . a n ϕn (x 0 ) = y 0


 a ϕ (x ) + a ϕ (x ) + . . . a ϕ (x ) = y

0 0 1 1 1 1 n n 1 1


 . . .
a 0 ϕ0 (x n ) + a 1 ϕ1 (x n ) + . . . a n ϕn (x n ) = y n

Puisque les valeurs x i et y i sont connues, ces relations forment un système linéaire de (n + 1) équations en les (n + 1)

138 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

inconnues a 0 , a 1 , a 2 , . . . , a n qu’on peut mettre sous la forme matricielle

ϕ0 (x 0 ) ϕ1 (x 0 ) . . . ϕn (x 0 ) a 0
    
y0
 ϕ (x ) ϕ (x ) . . . ϕ (x )   a   y 
 0 1 1 1 n 1  1  1
 .  =  . . (3.3)
 . .. ..     
 .
 . . .   ..   .. 
ϕ0 (x n ) ϕ1 (x n ) . . . ϕn (x n ) a n yn

Ainsi, le problème consistant à chercher la fonction f peut se réduire à résoudre le système linéaire (3.3).

Étant donné n + 1 points distincts x 0 , . . . , x©n et n + 1 valeurs correspondantes y 0 , . . . , y n , il existe une unique
fonction f de l’espace vectoriel V de base ϕ0 (x), ϕ1 (x), . . . , ϕn (x) telle que f (x i ) = y i , pour i = 0, . . . n qu’on
ª

peut écrire sous la forme

ϕ0 (x 0 ) ϕ1 (x 0 ) . . . ϕn (x 0 ) a 0
    
y0
n  ϕ (x ) ϕ (x ) . . . ϕ (x )   a   y 
 0 1 1 1 n 1  1  1
a i ϕ j (x)
X
f (x) = avec   .. .. ..   .  =  . .
   
i =0  . . .   ..   .. 
ϕ0 (x n ) ϕ1 (x n ) ... ϕn (x n ) an yn

Deux cas particuliers :

⋆ si ϕ j (x) = x j on retrouve le cas du fitting polynomial,


⋆ si ϕ j (x) = cos(x) ou φ j (x) = sin(x) on parle d’interpolation trigonométrique et il n’est pas nécessaire de calculer les
coefficients en résolvant le système linéaire (3.3).

3.2.1. Interpolation Trigonométrique


On veut approcher une fonction périodique f : [0; 2π] → C, i.e. satisfaisant f (0) = f (2π), par un polynôme trigonométrique
f˜, i.e. une combinaison linéaire de sinus et de cosinus, qui interpole f aux n + 1 nœuds équidistants x j = j h ∈ [0; 2π[ avec

j = 0, . . . , n et h = n+1 . On remarque que le point 2π est omis car redondant avec le point x = 0 étant donné que f (0) = f (2π).
La fonction d’interpolation trigonométrique f˜ peut s’écrire comme

K
f˜(x) = a 0 +
X
a k cos(kx) + b k sin(kx)
k=1

dont les inconnues sont le coefficient complexes a 0 et les 2K coefficients a k et b k . On peut remarquer que f˜ s’apparente à
une série de F OURIER tronquée, i.e. au lieu de sommer jusqu’à l’infini on tronque la somme à l’entier K .
Rappels :
( i kx −i kx (
cos(kx) = e +e 2 , e i kx = cos(kx) + i sin(kx),
i kx −i kx i kx −i kx et
sin(kx) = e −e 2i = −i e −e 2 , e −i kx = cos(kx) − i sin(kx).

Ainsi
K e i kx + e −i kx e i kx − e −i kx
f˜(x) = a 0 +
X
ak − i bk
k=1 2 2
K a −ib a k + i b k i (−k)x K
k k i kx
c k e i kx
X X
= a0 + e + e =
2
k=1 | {z } 2
| {z } k=−K
ck c −k

les inconnues sont maintenant les 2K + 1 coefficients c k ∈ C et l’on a les relations


 
 c0 = a0 ,
  a0 = c0 ,

a −i b
ck = k 2 k , k = 1, . . . , K ⇐⇒ a k = c k + c −k , k = 1, . . . , K
a +i b
 
c −k = c k = k 2 k , k = 1, . . . , K b k = i (c k − c −k ), k = 1, . . . , K .
 

Une autre écriture souvent utilisée se base sur l’écriture exponentielle des coefficients c k : pour tout k, c k ∈ C peut s’écrire
comme c k = 21 r k e i ϕk ainsi c −k = c k = 12 r k e −i ϕk et on trouve

1 1 1 ³ ´
a k cos(kx) + b k sin(kx) = c k e i kx + c k e −i kx = r k e i ϕk e i kx + r k e −i ϕk e −i kx = r k e i (ϕk +kx) + e −i (ϕk +kx) = r k cos(kx + ϕk ).
2 2 2

© 2020-2021 G. Faccanoni 139


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

Ainsi les inconnues sont maintenant le coefficient a 0 et les 2K couples “amplitude, phase” (r k , ϕk ) ∈ R :

K
f˜(x) = a 0 + r k cos(kx + ϕk )
X
k=1

En écrivant les n + 1 conditions d’interpolation aux nœuds x j on trouve

K
f (x j ) = f˜(x j ) = c k e i kx j .
X
k=−K

Quand n est pair, on pose K = n/2 ainsi nous avons n +1 conditions d’interpolation et 2K +1 = n +1 inconnues ; quand n est
impair, on pose K = (n + 1)/2 ainsi nous avons n + 1 conditions d’interpolation et 2K + 1 = n + 2 inconnues, pour fermer le
système on ajoute alors la condition c K = 0. Pour uniformiser la notation dans ces deux cas, nous pouvons écrire M = n/2 et
(
M 0 si n est pair,
i kx
f˜(x) = µ=
X
ck e ,
k=−(M +µ) 1 si n est impair,

et les n + 1 conditions d’interpolation aux nœuds x j = j h donnent les n + 1 conditions

M
f (x j ) = f˜(x j ) = ck e i k j h .
X
k=−(M +µ)

M
Pour calculer les n + 1 inconnues { c k }k=−M −µ
, on multiplie cette équation par e −i m j h où m = −M − µ, . . . M et on somme
sur j : Ã !
n ³ ´ Xn M
−i m j h i (k−m) j h
X X
f (x j )e = ck e .
j =0 j =0 k=−(M +µ)

En échangeant l’ordre de sommation on obtient


à à !!
n ³ ´ M n
−i m j h i (k−m) j h
X X X
f (x j )e = ck e .
j =0 k=−(M +µ) j =0

Pn j Pn j 1−q n+1
On se rappelle que j =0 q = (n + 1) si q = 1 et j =0 q = 1−q si q ̸= 1, ainsi en prenant q = e i (k−m)h on a

n
(e i (k−m)h ) j = (n + 1)δkm
X
j =0

Pn i (k−m)h j
car j =0 (e ) = n + 1 si k = m et si k ̸= m alors

n 1 − (e i (k−m)h )n+1 1 − e i (k−m)(n+1)h 1 − e i (k−m)2π 1 − cos((k − m)2π) − i sin((k − m)2π)


(e i (k−m)h ) j =
X
= = = = 0.
j =0 1 − (e i (k−m)h ) 1 − (e i (k−m)h ) 1 − (e i (k−m)h ) 1 − (e i (k−m)h )

Donc
n ³ ´ M
f (x j )e −i m j h = (n + 1) δkm c k
X X
j =0 k=−(M +µ)

i.e. seul le terme k = m est à prendre en considération


n ³ ´
f (x j )e −i m j h = (n + 1)c m m = −M − µ, . . . M .
X
j =0

ªn
Soit (x j = j h, f (x j )) j =0 un ensemble de n + 1 points avec h = 2π/(n + 1) et f : [0; 2π] → C une fonction
©

périodique. Le polynôme trigonométrique d’interpolation f˜ est donné par


(
M (n/2, 0) si n est pair,
−i kx
f˜(x) = (M , µ) =
X
ck e ,
k=−(M +µ) ((n − 1)/2, 1) si n est impair,

140 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

et, pour k = −(M + µ) . . . M ,


1 X n
ck = f (x j )e i kx j .
n + 1 j =0

De manière équivalente on peut écrire


(
MX

(n/2, 0) si n est pair,
f˜(x) = a 0 + a k cos(kx) + b k sin(kx), (M , µ) =
k=1 ((n − 1)/2, 1) si n est impair,

avec
1 Pn


 a 0 = n+1 j =0 f (x j )

 a = 2 Pn f (x ) cos(kx ), k = 1, . . . M + µ,

k n+1 j =0 j j
2 Pn


 b k = n+1 j =0 f (x j ) sin(kx j ), k = 1, . . . M + µ,

a M +µ = i b M +µ si µ = 1.

1
R 2π −i kx
Il est intéressant de noter que l’expression de c k est une approximation de l’intégrale 2π 0 f (x)e dx par la méthode
des rectangles à gauche composite. De la même manière, les coefficients a k et b k sont des approximations des intégrales
1 2π 1 2π
R R
π 0 f (x) cos(kx) dx et π 0 f (x) sin(kx) dx respectivement. Vu que ces intégrales définissent précisément les coefficients
de F OURIER, on déduit que nos sommes sont des approximations des coefficients de F OURIER et on parle alors d’une
transformation de F OURIER discrète. Le calcul des coefficients c k peut ainsi être effectué en utilisant la transformation de
Fourier rapide (FFT).
Notons que si f est une fonction à valeurs réelles, alors c −k = c k et donc f˜ aussi est une fonction à valeurs réelles.

E XEMPLE
Considérons la fonction f : [0; 2π] → R définie par f (x) = x(x − 2π)e −x . On a bien f (0) = f (2π).
⋆ On se propose de calculer f˜(x) lorsque n = 1. On a x j = j h avec j = 0, 1 et h = π. On interpole alors les deux points
(0, f (0)), (π, f (π)) = (0, 0), (π, −π2 e −π ) .
© ª © ª

Méthode directe On cherche a0 et a1 tels que f˜(x) = a0 + a1 cos(x) vérifie f˜(0) = 0 et f˜(π) = −π2 e −π :
µ ¶µ ¶ µ ¶ µ ¶µ ¶ µ ¶
1 cos(0) a 0 0 1 1 a0 0
= i.e. =
1 cos(π) a 1 −π2 e −π 1 −1 a1 −π2 e −π
2 e −π
ainsi a 0 = − π 2 = −a 1 et
π2 e −π
f˜(x) = (−1 + cos(x)).
2
Méthode “Fourier” n étant impair, M = (n − 1)/2 = 0 et µ = 1 et
0
f˜(x) = c k e i kx6 = c −1 e −i x + c 0
X
k=−1

On doit alors calculer les deux coefficients de F OURIER c −1 et c 0 :

1 X 1 1³ ´ 1³ ´ π2 e −π
c −1 = f (x j )e −i x j = f (x 0 )e −i x0 + f (x 1 )e −i x1 = −π2 e −π e −i π =
n + 1 j =0 2 2 2

1 X 1 1¡ ¢ 1¡ π2 e −π
f (x 0 ) + f (x 1 ) = −π2 e −π = −
¢
c0 = f (x j ) =
n + 1 j =0 2 2 2

ainsi
π2 e −π −i x
f˜(x) = (e − 1).
2
a 1 −i b 1 a1
Lien entre les deux solutions b1 = 0 (il n’y a pas de sin(x) dans la base choisie) donc c 0 = a0 , c 1 = 2 = 2 ,
a 1 −i b 1 a1 e i x +e −i x
c −1 = 2 = 2 et cos(x) = 2 ainsi on a bien

π2 e −π π2 e −π −i x
f˜(x) = (−1 + cos(x)) = (e − 1).
2 2

⋆ On se propose de calculer f˜(x) lorsque n = 2. On a x j = j h avec j = 0, 1, 2 et h = 2π


3 . On interpole alors les trois points
ª n 8π2 − 2π 8π2 − 4π
o
(0, f (0)), ( 2π 2π 4π 4π 2π 4π
©
3 , f ( 3 )), ( 3 , f ( 3 )) = (0, 0), ( 3 , − 9 e 3 ,− 9 e
3 ), ( 3 ) .

© 2020-2021 G. Faccanoni 141


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

n étant pair, M = n/2 = 1 et µ = 0 et

1
f˜(x) = c k e i kx = c −1 e −i x + c 0 + c 1 e i x
X
k=−1

On doit alors calculer les trois coefficients de F OURIER c −1 , c 0 et c 1 :

1 X 2 1³ ´ 1 µ 8π2 2π 8π2 −(i +1) 4π



c −1 = f (x j )e −i x j = f (x 0 )e −i x0 + f (x 1 )e −i x1 + f (x 2 )e −i x2 = − e −(i +1) 3 − e 3
n + 1 j =0 3 3 9 9
8π2 ³ −(i +1) 2π 4π
´ 8π2 −(i +1) 2π ³ 2π
´
=− e 3 + e −(i +1) 3 =− e 3 1 + e −(i +1) 3
27 27
2 8π2 − 2π 8π2 − 4π 8π2 − 2π ³
µ ¶
1 X 1¡ ¢ 1 2π
´
c0 = f (x j ) = f (x 0 ) + f (x 1 ) + f (x 2 ) = − e 3 − e 3 =− e 3 1 + e− 3
n + 1 j =0 3 3 9 9 27
2 8π (i −1) 2π 8π2 (i −1) 4π
2
µ ¶
1 X 1 ³ ´ 1
c1 = f (x j )e i x j = f (x 0 )e i x0 + f (x 1 )e i x1 + f (x 2 )e i x2 = − e 3 − e 3
n + 1 j =0 3 3 9 9
8π2 ³ (i −1) 2π 4π
´ 8π2 (i −1) 2π ³ 2π
´
=− e 3 + e (i −1) 3 =− e 3 1 + e (i −1) 3
27 27
ainsi

8π2 −(i +1) 2π ³ 2π


´ 8π2 − 2π ³ 2π
´ 8π2 2π
³ 2π
´
f˜(x) = − e 3 1 + e −(i +1) 3 e −i x − e 3 1 + e− 3 − e (i −1) 3 1 + e (i −1) 3 e i x
27 27 27
8π2 − 2π h −i 2π ³ 2π
´ ³ 2π
´ 2π
³ 2π
´ i
=− e 3 e 3 1 + e −(i +1) 3 e −i x + 1 + e − 3 + e i 3 1 + e (i −1) 3 e i x
27
8π2 − 2π h −i ( 2π +x) ³ 2π
´ ³ 2π
´ 2π
³ 2π
´i
=− e 3 e 3 1 + e −(i +1) 3 + 1 + e − 3 + e i ( 3 + x) 1 + e (i −1) 3 .
27

3.3. Exercices
Interpolation polynomiale
Exercice 3.1
On se propose d’écrire trois function pour évaluer le polynôme d’interpolation d’un ensemble de points, une pour
chaque méthode vue en cours (base canonique, base de L AGRANGE et base de N EWTON). Chaque function prend
en entrée P une matrice de n lignes et 2 colonnes qui contient les points d’interpolation et x le vecteur contenant les
points où on veut évaluer le polynôme d’interpolation et elle donne en sortie y le vecteur contenant l’évaluation du
polynôme d’interpolation.

Correction
① Dans le fichier naive.m on définit la fonction suivante
function [y]=naive(P,x)
[l,c]=size(P);
V = ones(l,l);
V(:,2:l) = P(:,1).^(1:l-1);
alpha = V\P(:,2);
y=zeros(size(x));
for i=1:l
y+=alpha(i)*x.^(i-1);
end
end

puis on teste comme suit : le seul polynôme de degré au plus 2 qui interpole l’ensemble de points { (−2, 4), (0, 0), (1, 1) }
est la parabole d’équation p(x) = x 2 et lorsqu’on évalue p en −1, en 0 et en 2 on trouve respectivement 1, 0 et 4 :
>> P=[-2 4; 0 0; 1 1];
>> y=naive(P,[-1 0 2])
y =

1 0 4

142 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

Remarque : la commande V(:,2:l)= P(:,1).^(1:l-1) correspond à la boucle


for j=1:l
V(:,j) = P(:,1).^(j-1);
end

Profitons de cet exercice pour décrire une méthode pour évaluer efficacement la valeur d’un polynôme en un point
donné x. D’un point de vue algébrique, nous pouvons écrire
n ³ ³ ¶
i −1
αi x = α1 + x α2 + x α3 + · · · + x(αn−1 + αn x) . . . .
X ¢
p(x) =
i =1

Tandis que ni=1 αi x i −1 nécessite n sommes et 2n − 1 produits pour évaluer le polynôme (pour un x donné), la
P

deuxième écriture ne requiert que n sommes et n produits. Cette dernière expression, parfois appelée méthode
des produits imbriqués, est la base de l’algorithme de H ÖRNER. Celui-ci permet d’évaluer de manière efficace un
polynôme en un point en utilisant l’algorithme de division synthétique suivant :
(
b n = αn
b k = αk + xb k+1 pou k = n − 1, . . . , 1

et b 0 = p(x). On modifie alors notre fonction comme suit


function [y]=naive(P,x)
[l,c]=size(P);
V = ones(l,l);
V(:,2:l) = P(:,1).^(1:l-1);
alpha = V\P(:,2);
y=zeros(size(x));
for k=l:-1:1
y=alpha(k)+x.*y;
end
end

On peut décomposer notre fonction en deux fonctions : la première rend les coefficient du polynôme dans la base
canonique, la deuxième évalue le polynôme lorsqu’on connaît ces coefficients :

function [alpha]=naivePoly(P) function [y]=naiveEval(alpha,x)


[l,c]=size(P); y=zeros(size(x));
V = ones(l,l); for k=size(alpha):-1:1
V(:,2:l) = P(:,1).^(1:l-1); y=alpha(k)+x.*y;
alpha = V\P(:,2); end
end end

② Dans le fichier lagrange.m on définit la fonction suivante


function [y]=lagrange(P,x)
[l,c]=size(P);
y=zeros(size(x));
for i=1:l
Li=ones(size(x));
for j=[1:i-1, i+1:l] % pour eviter le test "if (j~=i)"
Li.*=(x-P(j,1))/(P(i,1)-P(j,1));
end
y+=P(i,2)*Li;
end
end

puis on teste comme au point précédent :


>> P=[-2 4; 0 0; 1 1];
>> y=lagrange(P,[-1 0 2])
y =

1 0 4

© 2020-2021 G. Faccanoni 143


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

③ Dans le fichier newton.m on définit la fonction suivante


function [y]=newton(P,x)
[l,c]=size(P);
% calcul des coefficients beta(i)=A(i,i)
A=zeros(l);
A(:,1)=P(:,2);
for j=2:l
A(j:l,j)=(A(j:l,j-1)-A(j-1:l-1,j-1))./(P(j:l,1)-P(1:l-j+1,1));
end
% evaluation des polynomes omega(i) en x et calcul de p(x)
omegai=ones(size(x));
y=A(1,1)*omegai;
for i=2:l
omegai=omegai.*(x-P(i-1,1));
y=y+A(i,i)*omegai;
end
end

puis on teste comme au point précédent :


>> P=[-2 4; 0 0; 1 1];
>> y=newton(P,[-1 0 2])
y =

1 0 4

Remarque : la commande A(j:l,j)=(A(j:l,j-1)-A(j-1:l-1,j-1))./(P(j:l,1)-P(1:l-j+1,1)); correspond


à la boucle
for i=j:l
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(P(i,1)-P(i-j+1,1));
end

D’un point de vue algébrique, nous pouvons écrire


n
βi ωi (x) = β1 + β2 (x − x 1 ) + β3 (x − x 1 )(x − x 2 ) + · · · + βn (x − x 1 ) · · · (x − x n−1 )
X
p(x) =
i =1
³ ³ ¶
= β1 + (x − x 1 ) β2 + (x − x 2 ) β3 + · · · + (x − x n−2 )(βn−1 + βn (x − x n−1 )) . . . .
¢

Celui-ci permet d’évaluer de manière efficace un polynôme en un point en utilisant l’algorithme de division synthé-
tique suivant : (
b n = (x − x n−1 )βn
b k = βk + (x − x k )b k+1 pou k = n − 1, . . . , 1
et b 0 = p(x). On modifie alors notre fonction comme suit
function [y]=newton(P,x)
[l,c]=size(P);
% calcul des coefficients beta(i)=A(i,i)
A=zeros(l);
A(:,1)=P(:,2);
for j=2:l
A(j:l,j)=(A(j:l,j-1)-A(j-1:l-1,j-1))./(P(j:l,1)-P(1:l-j+1,1));
end
% calcul de p(x)
y=zeros(size(x));
for k=l:-1:1
y=A(k,k)+(x-P(k,1)).*y;
end
end

144 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

Exercice 3.2
Construire le polynôme P qui interpole les points (0, 2), (1, 1), (2, 2) et (3, 3).

Correction
On cherche un polynôme de degré au plus 3 tel que P (0) = 2, P (1) = 1, P (2) = 2 et P (3) = 3. Construire P signifie trouver ses
coordonnées dans une base de R3 [x]. On considère quatre méthodes qui sont basées sur trois choix différents de bases de
R3 [x] :
• Méthode astucieuse
On remarque due les points (1, 1), (2, 2) et (3, 3) sont alignés, ainsi le polynôme Q(x) = x de R2 [x] interpole ces points.
Introduisons le polynôme D(x) = P (x) −Q(x) de R3 [x]. Par construction, ce polynôme s’annule en x = 1, x = 2 et x = 3,
donc D(x) = λ(x − 1)(x − 2)(x − 3). De plus, D(0) = P (0) −Q(0) = 2 mais aussi D(0) = −6λ donc λ = −1/3 et on conclut
que
1
P (x) = D(x) +Q(x) = − (x − 1)(x − 2)(x − 3) + x.
3
• Méthode directe (naïve)
On considère C = 1, x, x 2 , x 3 la base canonique de R3 [x] et on cherche (a 0 , a 1 , a 2 , a 3 ) = coord(P, C ), i.e. a 0 , a 1 , a 2 , a 3
© ª

tels que P (x) = 3i =0 a i x i .


P

Il s’agit de trouver les 4 coefficients a 0 , a 1 , a 2 et a 3 solution du système linéaire


 

 P (0) = 2 
 a 0 + a 1 · 0 + a 2 · 02 + a 3 · 03 = 2 
1 0 0 0 a0
   
2
 

 P (1) = 1  a + a · 1 + a · 12 + a · 13 = 1

1 a 1  1
0 1 2 3 1 1 1
⇐⇒ ⇐⇒    =  


 P (2) = 2 

 a 0 + a 1 · 2 + a 2 · 2 + a 3 · 23 = 2
2 1 2 4 8  a 2  2


P (3) = 3


a 0 + a 1 · 3 + a 2 · 32 + a 3 · 33 = 3 1 3 9 27 a3 3

On peut utiliser la méthode de G AUSS -J ORDAN :


 L ←L −L   L ←L −0L 
1 0 0 0 2 1 0 0 0 2 1 0 0 0 2
 
2 2 1 1 1 2
L 3 ←L 3 −L 1 L 3 ←L 3 −2L 2
 1 1 1 1 1  L 4 ←L 4 −L 1 
 0 1 1 1 −1  L 4 ←L 4 −3L 2
 0 1 1 1 −1 
  −−−−−−−→  −−−−−−−−→  
 1 2 4 8 2   0 2 4 8 0   0 0 2 6 2 
1 3 9 27 3 0 3 9 27 1 0 0 6 24 4
L 1 ←L 1 −0L 3
 L
1 0 0 0 2 1 ←L 1 −0L 4 1 0 0 0 2
  
L 2 ←L 2 −L 3 /2 L ←L +L /3
L 4 ←L 4 −3L 3  0 1 0 −2 −2  L 32 ←L 32 −L 44  0 1 0 0 −8/3 
−−−−−−−−−→   0 0 2 6
 −−−−−−−−−→  
2   0 0 2 0 4 
0 0 0 6 −2 0 0 0 6 −2

donc a 3 = − 13 , a 2 = 2, a 1 = − 38 et a 0 = 2 et on trouve P (x) = 2 − 38 x + 2x 2 − 13 x 3 :


P=[0 2; 1 1; 2 2; 3 3];
alpha=naivePoly(P)
x=[0:0.1:3];
y=naiveEval(alpha,x);
plot(x,y)

Remarque : dans ce cas particulier, le système s’écrit




 a0 = 2

 a + a · 1 + a · 12 + a · 1 3 = 1

0 1 2 3
2 3


 a 0 + a 1 · 2 + a 2 · 2 + a 3 ·2 = 2
a 0 + a 1 · 3 + a 2 · 3 + a 3 · 33 = 3
2

ainsi on peut déjà poser a 0 = 2 et résoudre le système linéaire réduit suivant :

2 3

 a 1 · 1 + a 2 · 1 + a 3 · 1 = −1

2 3
a1 · 2 + a2 · 2 + a3 · 2 = 0

a 1 · 3 + a 2 · 32 + a 3 · 33 = 1

On peut utiliser la méthode de G AUSS -J ORDAN :

© 2020-2021 G. Faccanoni 145


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

       
1 1 1 −1 L 2 ←L 2 −2L 1 1 1 1 −1 L 1 ←L 1 −L 2 1 0 −2 −2 L 1 ←L 1 +2L 3 1 0 0 −8/3
L 3 ←L 3 −3L 1 L 3 ←L 3 −6L 2 L 2 ←L 2 −3L 3
 2 4 8 0  −−−−−−−−→  0 2 6 2  −−−−−−−−→  0 1 3 1  −−−−−−−−→  0 1 0 2 
L 2 ←L 2 /2 L 3 ←L 3 /6
3 9 27 1 0 6 24 4 0 0 6 −2 0 0 1 −1/3

donc a 3 = − 31 , a 2 = 2, a 1 = − 83 et a 0 = 2 et on trouve P (x) = 2 − 38 x + 2x 2 − 31 x 3 .

• Méthode de Lagrange
On considère L = { L 0 , L 1 , L 2 , L 3 } une base de R3 [x] telle que coord(P, L ) = (y 0 , y 1 , y 2 , y 3 ), i.e. P (x) = 3i =0 y i L i (x). On
P

a
n x −x
Y j
L i (x) =
j =0 x i − x j
j ̸=i

donc

(x − x 1 )(x − x 2 )(x − x 3 ) (x − x 0 )(x − x 2 )(x − x 3 ) 3


P (x) = y 0 + y1 P (x)
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )
(x − x 0 )(x − x 1 )(x − x 3 ) (x − x 0 )(x − x 1 )(x − x 2 )
+ y2 + y3 =
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 ) 2
(x − 1)(x − 2)(x − 3) (x − 0)(x − 2)(x − 3)
=2 +
(0 − 1)(0 − 2)(0 − 3) (1 − 0)(1 − 2)(1 − 3)
1
(x − 0)(x − 1)(x − 3) (x − 0)(x − 1)(x − 2)
+2 +3 =
(2 − 0)(2 − 1)(2 − 3) (3 − 0)(3 − 1)(3 − 2)
(x − 1)(x − 2)(x − 3) x(x − 2)(x − 3)
= + 0 1 2 3 x
−3 2
x(x − 1)(x − 2) 1 8
− x(x − 1)(x − 3) + = − x 3 + 2x 2 − x + 2.
2 3 3

• Méthode de Newton
On considère N = { ω0 , ω1 , ω2 , ω3 } une base de R3 [x] telle que coord(P, N ) = (y 0 , f [x 0 , x 1 ], f [x 0 , x 1 , x 2 ], f [x 0 , x 1 , x 2 , x 3 ]),
i.e. P (x) = 3i =0 f [x 0 , . . . , x i ]ωi (x).
P

La base de Newton est définie récursivement comme suit :

ω0 (x) = 1; pour k = 1, . . . , n ωk (x) = ωk−1 (x)(x − x k−1 ).

Les coordonnées sont les valeurs encadrées dans le tableau des différences divisées ci-dessous :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ] f [x i −3 , x i −2 , x i −1 , x i ]
0 0 2
1 1 1 −1
2 2 2 1 1
3 3 3 1 0 − 13

On a alors
3
X
P 3 (x) = f [x 0 , . . . , x i ]ωi (x)
i =1
= y 0 ω0 (x) + f [x 0 , x 1 ]ω1 (x) + f [x 0 , x 1 , x 2 ]ω2 (x) + f [x 0 , x 1 , x 2 , x 3 ]ω3 (x)
1
= 2ω0 (x) − ω1 (x) + ω2 (x) − ω3 (x)
3
1
= 2 − x + x(x − 1) − x(x − 1)(x − 2)
3
1 3 2 8
= − x + 2x − x + 2.
3 3

Remarque : on réordonne les points comme suit : (1, 1), (2, 2), (3, 3) et (0, 2).

146 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ] f [x i −3 , x i −2 , x i −1 , x i ]
0 1 1
1 2 2 1
2 3 3 1 0
3 0 2 − 13 − 31 − 13

On a alors
3
X
P 3 (x) = f [x 0 , . . . , x i ]ωi (x)
i =1
= y 0 ω0 (x) + f [x 0 , x 1 ]ω1 (x) + f [x 0 , x 1 , x 2 ]ω2 (x) + f [x 0 , x 1 , x 2 , x 3 ]ω3 (x)
1
= ω0 (x) + ω1 (x) − ω3 (x)
3
1
= 1 + (x − 1) − (x − 1)(x − 2)(x − 3)
3
1
= x − (x − 1)(x − 2)(x − 3).
3
On remarque que les points (1, 1), (2, 2) et (3, 3) sont alignés, ainsi le polynôme Q(x) = x de R2 [x] interpole ces points.

Partage d’un message secret : comment envoyer un message secret avec plusieurs espions sans pour autant que ceux-ci
ne connaissent le contenu du message envoyé ?
Imaginons que l’on désire envoyer un message secret. Par codage, on peut remplacer ce message par un nombre, appelons-
le n.
Considérons un polynôme P (X ) = a k X k + · · · + a 1 X + n de degré k dont le terme indépendant vaut exactement n, autrement
dit P (0) = n. Un corollaire du théorème fondamental de l’algèbre stipule que le polynôme P est complètement caractérisé
par les valeurs qu’il prend en k + 1 points, par exemple en X = 1, 2, . . . , k + 1.
On engage alors au moins k +1 espions (mieux en engager un peu plus au cas où certains seraient capturés par les «ennemis»).
On donne au i -ème espion le nombre P (i ). Les espions se dispersent (par exemple, pour passer les lignes ennemies). Une
fois qu’au moins k + 1 espions sont arrivés à destination, il est aisé de reconstituer le polynôme et ainsi retrouver la valeur
secrète n (on a un système d’au moins k + 1 équations linéaires pour retrouver les k + 1 coefficients de P ).
Si un espion est capturé et qu’il parle, les ennemis auront à leur disposition un des P (i ) mais cela ne leur permet nullement
de retrouver n.
De même, si un espion étaient en fait un agent double, connaître P (i ) seul ne sert à rien.
Source : [Link]

Exercice 3.3
Calculer le message secret n si k = 2 et on envoie 4 espions avec les messages suivants :

Espion 1 2 3 4
Message 45 50 57 66

Correction
On doit interpoler l’ensemble { (1, 45), (2, 50), (3, 57), (4, 66) } constitué de 4 points. Cependant on nous dit de chercher un
polynôme de degré au plus 2 (et non pas 3 comme on pourrait s’y attendre). Cela signifie qu’ils ont envoyé un espion de plus
en cas de “perte”. Donc, pour nos calculs, on utilisera seulement 3 points parmi les 4 données et on vérifiera à posteriori que
le polynôme obtenu interpole aussi le point négligé.
On choisit par exemple d’interpoler l’ensemble { (1, 45), (2, 50), (3, 57) } : on cherche un polynôme de degré au plus 2 tel
que P (1) = 45, P (2) = 50, P (3) = 57 et P (4) = 66. Construire P signifie trouver ses coordonnées dans une base de R2 [x]. On
considère trois méthodes qui sont basées sur trois choix différents de bases de R2 [x] :

• Méthode directe (naïve)


On considère C = 1, x, x 2 la base canonique de R2 [x] et on cherche (a, b, c) = coord(P, C ), i.e. a, b, c tels que
© ª

P (x) = a + bx + c x 2 . (le message secret est P (0) = a).

© 2020-2021 G. Faccanoni 147


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

Il s’agit de trouver les 3 coefficients a, b, c solution du système linéaire


 

 P (1) = 45, 
 a + b + c = 45
 

 P (2) = 50,  a + 2b + 22 c = 50

i.e.

 P (3) = 57,  a + 3b + 32 c = 57

 
a + 4b + 42 c = 66
 
P (4) = 66
 

Puisqu’on a envoyé un espion de trop, on a 4 équations et 3 inconnues : le système est sur-déterminé.


Négligeons pour le moment la dernière équation et résolvons avec Gauss
  
a +b +c = 45 L 2 ←L 2 −L 1 a+b +c = 45 a+b+c = 45 c =1
L 3 ←L 3 −L 1 L 3 ←L 3 −2L 2
a+2b+4c = 50 −−−−−−−→ b +3c = 5 −−−−−−−−→ b+3c = 5 =⇒ b = 5 − 3c = 2
a+3b+9c = 57 Étape j =1 2b+8c = 12 Étape j =2 2c = 2 a = 45 − b − c = 42
  

Vérifions si la dernière équation est bien satisfaite :

42 + 2 × 4 + 1 × 42 = 66.

Le polynôme recherché est ainsi P (x) = 42 + 2x + x 2 et le message secret est donc P (0) = a = 42.
• Méthode de Lagrange Puisqu’on a envoyé un espion de trop, négligeons pour l’instant le point (4, 66). On construit la
base de Lagrange de R2 [x] telle que (45, 50, 57) = coord(P, L ), i.e. 45, 50, 57 tels que P (x) = 45L 0 (x) + 50L 1 (x) + 57L 2 (x).
On a

P (x) = y 0 L 0 (x) + y 1 L 1 (x) + y 2 L 2 (x)


(x − 2)(x − 3) (x − 1)(x − 3) (x − 1)(x − 2)
= 45 + 50 + 57
(1 − 2)(1 − 3) (2 − 1)(2 − 3) (3 − 1)(3 − 2)
45 57
= (x − 2)(x − 3) − 50(x − 1)(x − 3) + (x − 1)(x − 2).
2 2
Bien sur P (4) = 66 (un espion était redondant) et le message secret est donc

45 57
P (0) = × 6 − 50 × 3 + × 2 = 135 − 150 + 57 = 42.
2 2

Méthode de Newton. Puisqu’on a envoyé un espion de trop, négligeons pour l’instant le point (4, 66).
On commence par construire le tableau des différences divisées :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ]
0 1 45
1 2 50 5
2 3 57 7 1

On a alors
2
ωi (x) f [x 0 , . . . , x i ]
X
P (x) =
i =1
= ω0 (x) f [x 0 ] + ω1 (x) f [x 0 , x 1 ] + ω2 (x) f [x 0 , x 1 , x 2 ]
= 45ω0 (x) + 5ω1 (x) + ω2 (x)
= 45 + 5(x − 1) + (x − 1)(x − 2).

Bien sur P (4) = 45 + 5 × 3 + 3 × 2 = 66 (un espion était redondant) et le message secret est donc

P (0) = 45 − 5 + 2 = 42.

Exercice 3.4
1. Calculer le polynôme d’interpolation de la fonction f (x) = cos(x) en les 3 points x i = π2 i avec i = 0, . . . , 2.
2. Calculer ensuite le polynôme d’interpolation de la même fonction en les 4 points x i = π2 i avec i = 0, . . . , 3, i.e. en
ajoutant le point x 3 = 3π/2.

148 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

Correction
1. On cherche p 2 ∈ R2 [x] tel que p 2 (x i ) = cos(x i ) pour i = 0, . . . , 2. On peut choisir l’une des quatre méthodes ci-dessous
(on préférera la méthode de N EWTON car elle permet de réutiliser les calculs de cette question pour répondre à la
question suivante).
Méthode directe (naïve). Si on écrit p 2 (x) = α0 + α1 x + α2 x 2 , on cherche α0 , α1 , α2 tels que

1 0 0 α0
    
1
1 π π2  α1  =  0 
2 4
1 π π2 α2 −1

En résolvant ce système linéaire on trouve α0 = 1, α1 = − π2 et α2 = 0 :


Px=[Link]*pi/2
Py=cos(Px);
P=[Px’ Py’]
alpha=naivePoly(P)

Méthode astucieuse. Le polynôme p 2 s’annule en π2 , ceci signifie qu’il existe un polynôme R(x) tel que
³ π´
p 2 (x) = R(x) x − .
2
Puisque p 2 (x) a degré 2, le polynôme R(x) qu’on a mis en facteur a degré 1, autrement dit R est de la forme
ax + b. On cherche alors a et b tels que

 R(0) = ¡p 2 (0)
 
 b = ¡ 1π ¢ ,
(
π , b = − π2 ,
¢
0− 2 0− 2
⇐⇒ ⇐⇒
 R(π) = ¡p 2 (π)
π .
 aπ + b = ¡ −1π ¢ . a = 0.
π− 2 π− 2
¢

Ainsi ³ π´ 2³ π´ 2
p 2 (x) = R(x) x − =− x− = − x + 1.
2 π 2 π
Méthode de Lagrange. On a

x − π2 (x − π) (x − 0) x − π2
¢ ¡ ¡ ¢
2
p 2 (x) = y 0 L 0 (x) + y 1 L 1 (x) + y 2 L 2 (x) = 1 ¡ −1 ¢ = 1 − x.
0 − π2 (0 − π) (π − 0) π − π2 π
¢ ¡

Méthode de Newton. On commence par construire le tableau des différences divisées :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ]
0 0 1
π
1 2 0 − π2
2 π −1 − π2 0
On a alors
2
ωi (x) f [x 0 , . . . , x i ]
X
p 2 (x) =
i =1
= ω0 (x) f [x 0 ] + ω1 (x) f [x 0 , x 1 ] + ω2 (x) f [x 0 , x 1 , x 2 ]
2
= ω0 (x) − ω1 (x)
π
2
= 1 − x.
π

2. On cherche donc p 3 ∈ R3 [x] tel que p 3 (x i ) = sin(x i ) pour i = 0, . . . , 3. On peut choisir l’une des quatre méthodes
ci-dessous (on préférera la méthode de N EWTON car elle permet d’utiliser les calculs précédents).
Méthode directe. Si on écrit p 3 (x) = α0 + α1 x + α2 x 2 + α3 x 3 , on cherche α0 , α1 , α2 , α3 tels que
 
1 0 0 0 α0 1
  
π π2 π3
1  α1   0 
    
2 4 8 =
2 3
1 π π π  α2  −1
 
3π 9π2 27π 3
α3 0
1 2 4 8

© 2020-2021 G. Faccanoni 149


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

2
En résolvant ce système linéaire on trouve α0 = 1, α1 = − 3π , α2 = − π42 et α3 = 8
3π3
:
Px=[Link]*pi/2
Py=cos(Px);
P=[Px’ Py’]
alpha=naivePoly(P)
π 3π
Méthode astucieuse. Le polynôme p 3 s’annule en 2 et en 2 , ceci signifie qu’il existe un polynôme R(x) tel que

π´
µ ¶
³ 3π
p 3 (x) = R(x) x − x− .
2 2

Puisque p 3 (x) a degré 3, le polynôme R(x) qu’on a mis en facteur a degré 1, autrement dit R est de la forme
ax + b. On cherche alors a et b tels que
p 3 (0)
 
 R(0) = ¢, b= ¡ π ¢¡1 3π ¢ ,
(
4
¡
0− π2 0− 3π
¢¡
2 0− 2 0− 2 b= 3π2
,
p 3 (π) ⇐⇒ ⇐⇒ 8
 R(π) = ¢. aπ + b = ¡ π −1 ¢. a= .
π− π2 π− 3π

π− 2 π− 3π 3π3
¡ ¢¡ ¢¡
2 2

Ainsi
π´ π´
µ ¶ µ ¶ µ ¶
³ 3π 8 4 ³ 3π 2 4 8
p 3 (x) = R(x) x − x− = x + x − x − = 1− x − 2 x2 + 3 x3.
2 2 3π 3 3π 2 2 2 3π π 3π
Méthode de Lagrange. On a

x − π2 (x − π) x − 3π (x − 0) x − π2 x − 3π
¡ ¢ ¡ ¢ ¡ ¢¡ ¢
2 2
p 3 (x) = y 0 L 0 (x) + y 1 L 1 (x) + y 2 L 2 (x) + y 3 L 3 (x) = 1 ¡ − 1
0 − π2 (0 − π) 0 − 3π (π − 0) π − π2 π − 3π
¢ ¡ ¢ ¡ ¢ ¡ ¢
2 2
π´
µ ¶
4 ³ 3π 2 4 8
= 3 x− x− (−x + π + 3x) = 1 − x − 2 x2 + 3 x3.
3π 2 2 3π π 3π

Méthode de Newton. Il suffit de calculer une différence divisée en plus, i.e. ajouter une ligne au tableau précédant :
i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ] f [x i −3 , x i −2 , x i −1 , x i ]
0 0 1
π
1 2 0 − π2
2 π −1 − π2 0
3π 2 4 8
3 2 0 π π2 3π3

On a alors
3
ωi (x) f [x 0 , . . . , x i ]
X
p 3 (x) =
i =1
= p 2 (x) + ω3 (x) f [x 0 , x 1 , x 2 , x 3 ]
2 8
= 1 − x + 3 ω3 (x)
π 3π
2 8 ³ π´
= 1− x + 3 x x − (x − π)
π 3π 2
2 4 8
= 1− x − 2 x2 + 3 x3.
3π π 3π

Exercice 3.5
1. Construire le polynôme P qui interpole les points (−1, 2), (0, 1), (1, 2) et (2, 3).
2. Soit Q le polynôme qui interpole les points (−1, 2), (0, 1), (1, 2). Montrer qu’il existe un réel λ tel que :

Q(x) − P (x) = λ(x + 1)x(x − 1).

Correction
1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 3 s’écrit

(x − x 1 )(x − x 2 )(x − x 3 ) (x − x 0 )(x − x 2 )(x − x 3 )


P (x) = y 0 + y1
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )

150 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

(x − x 0 )(x − x 1 )(x − x 3 ) (x − x 0 )(x − x 1 )(x − x 2 )


+ y2 + y3
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
x(x − 1)(x − 2) (x + 1)(x − 1)(x − 2) (x + 1)x(x − 1)
= + − (x + 1)x(x − 2) + =
−3 2 2
1 1
= − x 3 + x 2 + x + 1.
3 3

P=[-1 2; 0 1; 1 2; 2 3];
alpha=naivePoly(P)

2. Par construction

Q(−1) = P (−1),
Q(0) = P (0),
Q(1) = P (1),

donc le polynôme Q(x) − P (x) s’annule en −1, en 0 et en 1, ceci signifie qu’il existe un polynôme R(x) tel que

Q(x) − P (x) = R(x)(x + 1)x(x − 1).

Puisque P (x) a degré 3 et Q(x) a degré 2, le polynôme Q(x) − P (x) a degré 3, donc le polynôme R(x) qu’on a mis en
facteur a degré 0 (i.e. R(x) est une constante).

Si on n’a pas remarqué ça, on peut tout de même faire tous les calculs : dans ce cas n = 2 donc on a

(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 2 ) (x − x 0 )(x − x 1 )


Q(x) = y 0 + y1 + y2
(x 0 − x 1 )(x 0 − x 2 ) (x 1 − x 0 )(x 1 − x 2 ) (x 2 − x 0 )(x 2 − x 1 )
= x(x − 1) − (x + 1)(x − 1) + (x + 1)x

= x 2 + 1.

Ainsi
(x − x 1 )(x − x 2 ) x − x3 (x − x 0 )(x − x 2 ) x − x3
· ¸ · ¸
Q(x) − P (x) = y 0 1− + y1 1−
(x 0 − x 1 )(x 0 − x 2 ) x0 − x3 (x 1 − x 0 )(x 1 − x 2 ) x1 − x3
(x − x 0 )(x − x 1 ) x − x3 (x − x 0 )(x − x 1 )(x − x 2 )
· ¸
+ y2 1− − y3
(x 2 − x 0 )(x 2 − x 1 ) x2 − x3 (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
(x − x 0 )(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 1 )(x − x 2 )
= −y 0 − y1
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )
(x − x 0 )(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 1 )(x − x 2 )
− y2 − y3
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
y0 y1
·
=− +
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )
y2 y3
¸
+ + (x − x 0 )(x − x 1 )(x − x 2 )
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
(x + 1)x(x − 1)
=
3

et λ = 13 . Sinon directement

1 1 1 1 (x + 1)x(x − 1)
Q(x) − P (x) = x 2 + 1 + x 3 − x 2 + x − 1 = x 3 + x = = λx(x + 1)(x − 1)
3 3 3 3 3

avec λ = 13 .

© 2020-2021 G. Faccanoni 151


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

y
Q(x)

3
x3
2
x0 x2
P (x)
x1

−1 0 1 2 x

Exercice 3.6
1. Construire le polynôme P qui interpole les trois points (−1, e), (0, 1) et (1, e).
2. Sans faire de calculs, donner l’expression du polynôme Q qui interpole les trois points (−1, −1), (0, 0) et (1, −1).
3. Trouver le polynôme de l’espace vectoriel Vec{1, x, x 2 } qui interpole les trois points (−1, −1), (0, 0) et (1, −1).

Correction
1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 2 s’écrit

y P (x)
e
(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 2 ) (x − x 0 )(x − x 1 )
P (x) = y 0 + y1 + y2 =
(x 0 − x 1 )(x 0 − x 2 ) (x 1 − x 0 )(x 1 − x 2 ) (x 2 − x 0 )(x 2 − x 1 )
x(x − 1) (x + 1)x
=e − (x + 1)(x − 1) + e =
2 2
1
= (e − 1)x 2 + 1.

−1 1 x

2. Il suffit de changer les coefficients y i dans l’expression y


précédente : −1 0 1
x
x(x − 1) (x + 1)x
Q(x) = − − = −x 2 .
2 2

Q(x)

3. Il s’agit de trouver un polynôme p(x) qui soit combinaison linéaire des deux polynômes assignés (i.e. p(x) = α + βx +
γx 2 ) et qui interpole les trois points (−1, −1), (0, 0) et (1, −1) :

 α − β + γ = −1,
 
 p(−1) = 1,
 
p(0) = 0, ⇔ α = 0,
 
p(1) = −1, α + β + γ = −1,
 

d’où α = 0, β = 0 et γ = −1. Le polynôme cherché est donc le polynôme p(x) = −x 2 . En fait, il suffisait de remarquer
que le polynôme Q ∈ Vec{1, x, x 2 } pour conclure que le polynôme p cherché est Q lui même.

Exercice 3.7
1. Construire le polynôme P qui interpole les points (−1, 1), (0, 1), (1, 2) et (2, 3).
2. Soit Q le polynôme qui interpole les points (−1, 1), (0, 1), (1, 2). Montrer qu’il existe un réel λ tel que :

Q(x) − P (x) = λ(x + 1)x(x − 1).

152 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

Correction
1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 3 s’écrit

(x − x 1 )(x − x 2 )(x − x 3 ) (x − x 0 )(x − x 2 )(x − x 3 )


P (x) = y 0 + y1
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )
(x − x 0 )(x − x 1 )(x − x 3 ) (x − x 0 )(x − x 1 )(x − x 2 )
+ y2 + y3
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
x(x − 1)(x − 2) (x + 1)(x − 1)(x − 2) (x + 1)x(x − 1)
= + − (x + 1)x(x − 2) + =
−6 2 2
1 1 2
= − x 3 + x 2 + x + 1.
6 2 3

2. Par construction

Q(−1) = P (−1),
Q(0) = P (0),
Q(1) = P (1),

donc le polynôme Q(x) − P (x) s’annule en −1, en 0 et en 1, ceci signifie qu’il existe un polynôme R(x) tel que

Q(x) − P (x) = R(x)(x + 1)x(x − 1).

Puisque P (x) a degré 3 et Q(x) a degré 2, le polynôme Q(x) − P (x) a degré 3, donc le polynôme R(x) qu’on a mis en
facteur a degré 0 (i.e. R(x) est une constante).

Si on n’a pas remarqué ça, on peut tout de même faire tous les calculs : dans ce cas n = 2 donc on a

(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 2 ) (x − x 0 )(x − x 1 )


Q(x) = y 0 + y1 + y2
(x 0 − x 1 )(x 0 − x 2 ) (x 1 − x 0 )(x 1 − x 2 ) (x 2 − x 0 )(x 2 − x 1 )
x(x − 1)
= − (x + 1)(x − 1) + (x + 1)x
2
1 1
= x 2 + x + 1.
2 2
Ainsi
(x − x 1 )(x − x 2 ) x − x3 (x − x 0 )(x − x 2 ) x − x3
· ¸ · ¸
Q(x) − P (x) = y 0 1− + y1 1−
(x 0 − x 1 )(x 0 − x 2 ) x0 − x3 (x 1 − x 0 )(x 1 − x 2 ) x1 − x3
(x − x 0 )(x − x 1 ) x − x3 (x − x 0 )(x − x 1 )(x − x 2 )
· ¸
+ y2 1− − y3
(x 2 − x 0 )(x 2 − x 1 ) x2 − x3 (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
(x − x 0 )(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 1 )(x − x 2 )
= −y 0 − y1
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )
(x − x 0 )(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 1 )(x − x 2 )
− y2 − y3
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
y0 y1
·
=− +
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )
y2 y3
¸
(x + 1)x(x − 1)
+ + (x − x 0 )(x − x 1 )(x − x 2 ) =
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 ) 6

et λ = 61 . Sinon directement

1 1 1 1 2 1 1 1
Q(x) − P (x) = x 2 + x + 1 + x 3 − x 2 − x − 1 = x 3 − x = x(x 2 − 1) = λx(x + 1)(x − 1)
2 2 6 2 3 6 6 6

avec λ = 61 .

© 2020-2021 G. Faccanoni 153


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

Q(x)

y
3
x3
P (x)

2
x2

1
x0 x1

−1 0 1 2 x

Exercice 3.8
1. Construire le polynôme P qui interpole les trois points (−1, α), (0, β) et (1, α) où α et β sont des réels.
2. Si α = β, donner le degré de P .
3. Montrer que P est pair. Peut-on avoir P de degré 1 ?

Correction

1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 2 s’écrit

(x − x 1 )(x − x 2 ) (x − x 0 )(x − x 2 ) (x − x 0 )(x − x 1 )


P (x) = y 0 + y1 + y2 +
(x 0 − x 1 )(x 0 − x 2 ) (x 1 − x 0 )(x 1 − x 2 ) (x 2 − x 0 )(x 2 − x 1 )
x(x − 1) (x + 1)(x − 1) (x + 1)x
=α +β +α =
2 −1 2
α α
= x(x − 1) − β(x + 1)(x − 1) + x(x + 1)
2 2
= (α − β)x 2 + β.

Sinon, dans la base de N EWTON, on commence par construire le tableau des différences divisées :

i xi yi f [x i −1 , x i ] f [x i −2 , x i −1 , x i ]
0 −1 α
1 0 β (β − α)
2 1 α (α − β) (α − β)

On a alors
2
ωi (x) f [x 0 , . . . , x i ]
X
p 2 (x) =
i =0
= ω0 (x) f [x 0 ] + ω1 (x) f [x 0 , x 1 ] + ω2 (x) f [x 0 , x 1 , x 2 ]
= αω0 (x) + (β − α)ω1 (x) + (α − β)ω2 (x)
= α + (β − α)(x + 1) + (α − β)x(x + 1) = (α − β)x 2 + β.

2. Si α = β, P (x) = α qui est un polynôme de degré 0.


3. P (−x) = P (x) donc P est pair. Donc P ne peut pas être de degré 1 car un polynôme de degré 1 est de la forme a 0 + a 1 x
qui ne peut pas être pair.

154 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

Exercice 3.9
Trouver le polynôme de l’espace vectoriel Vec{1 + x 2 , x 4 } qui interpole les points (0, 1) et (1, 3).

Correction y
p(x)
Il s’agit de trouver un polynôme p(x) qui soit combinaison
3
linéaire des deux polynômes assignés (i.e. p(x) = α(1 + x 2 ) +
β(x 4 )) et qui interpole les deux points (0, 1) et (1, 3) :
( (
p(0) = 1, α(1 + 02 ) + β(04 ) = 1,

p(1) = 3, α(1 + 12 ) + β(14 ) = 3, 1

d’où α = 1 et β = 1. Le polynôme cherché est donc le poly-


nôme p(x) = 1 + x 2 + x 4 . 0 1 x

Exercice 3.10
Soit f : R → R la fonction définie par f (x) = 1 + x 3 .
1. Calculer le polynôme p 0 ∈ R0 [x] qui interpole f au point d’abscisse x 0 = 0.
2. Calculer le polynôme p 1 ∈ R1 [x] qui interpole f aux points d’abscisse { x 0 = 0, x 1 = 1 }.
3. Calculer le polynôme p 2 ∈ R2 [x] qui interpole f aux points d’abscisse { x 0 = 0, x 1 = 1, x 2 = 2 }.
4. Calculer le polynôme p 3 ∈ R3 [x] qui interpole f aux points d’abscisse { x 0 = 0, x 1 = 1, x 2 = 2, x 3 = 3 }.
5. Pour n > 3, calculer les polynômes p n ∈ Rn [x] qui interpolent f aux points d’abscisse { x 0 = 0, x 1 = 1, . . . , x n = n }.

Correction
1. On interpole l’ensemble { (0, 1) } donc p 0 (x) = 1.
2. On interpole l’ensemble { (0, 1), (1, 2) } donc p 1 (x) = 1 + x.
3. On interpole l’ensemble { (0, 1), (1, 2), (2, 9) } donc p 2 (x) = 1 − 2x + 3x 2 .
4. f ∈ R3 [x] et comme il existe un seul polynôme de degré au plus 3 qui interpole quatre points ce polynôme coïncide
forcement avec f donc p 3 ≡ f .
5. f ∈ Rn [x] pour tout n ≥ 3 et comme il existe un seul polynôme de degré au plus 3 qui interpole quatre points ce
polynôme coïncide forcement avec f donc p n ≡ f pour n ≥ 3.

Exercice 3.11
Soit f : R → R la fonction définie par f (x) = 1 + x 2 .
1. Calculer le polynôme de R0 [x] qui interpole f au point 0.
2. Calculer le polynôme de R1 [x] qui interpole f aux points { 0, 2 }.
3. Calculer le polynôme de R9 [x] qui interpole f aux points { 0, 2, . . . , 2i , . . . , 18 }0≤i ≤9 .

Correction
1. On interpole l’ensemble de points { (0, 1) } donc p 0 (x) = 1.
2. On interpole l’ensemble de points { (0, 1), (2, 5) } donc p 1 (x) = 1 + 2x.
3. f ∈ Rn [x] pour tout n ≥ 2 et comme il existe un seul polynôme de degré au plus 2 qui interpole trois points ce
polynôme coïncide forcement avec f donc p n ≡ f pour n ≥ 2.

Exercice 3.12
1. Calculer le polynôme qui interpole les points (0, 3), (1, 2), (2, 4), (3, −2).
2. Calculer le polynôme qui interpole les points (0, 2), (1, 3), (2, 4), (3, 5), (4, 6), (5, 7), (6, 8), (7, 9) (pas de calculs
inutiles !).
3. Calculer le polynôme qui interpole les points (0, 2), (1, 1), (2, 2), (3, 3), (4, 4) en le cherchant sous la forme p(x) =
x + q(x) (pas de calculs inutiles !).
4. Donner l’expression du polynôme p ∈ R3 [x] dont la dérivée k-ème vérifie p (k) (1) = 3 pour k = 0, 1, 2, 3. Est-il
unique dans p ∈ R3 [x] ? Soit f une fonction de classe C ∞ telle que f (k) (1) = 3. Quelle estimation de f (x) − p(x)

© 2020-2021 G. Faccanoni 155


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

a-t-on ?

Correction
1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 3 s’écrit

(x − x 1 )(x − x 2 )(x − x 3 ) (x − x 0 )(x − x 2 )(x − x 3 )


P (x) = y 0 + y1
(x 0 − x 1 )(x 0 − x 2 )(x 0 − x 3 ) (x 1 − x 0 )(x 1 − x 2 )(x 1 − x 3 )
(x − x 0 )(x − x 1 )(x − x 3 ) (x − x 0 )(x − x 1 )(x − x 2 )
+ y2 + y3
(x 2 − x 0 )(x 2 − x 1 )(x 2 − x 3 ) (x 3 − x 0 )(x 3 − x 1 )(x 3 − x 2 )
(x − 1)(x − 2)(x − 3) x(x − 2)(x − 3)
=3 +2
(0 − 1)(0 − 2)(0 − 3) (1 − 0)(1 − 2)(1 − 3)
x(x − 1)(x − 3) x(x − 1)(x − 2)
+4 −2
(2 − 0)(2 − 1)(2 − 3) (3 − 0)(3 − 1)(3 − 2)
37 11
= 3− x + 7x 2 − x 3 .
6 6

2. p(x) = x + 2 : en effet, on voit que les points sont alignés le long de la droite d’équation y = x + 2.
3. p ∈ R4 [x] et interpole les points (0, 2), (1, 1), (2, 2), (3, 3), (4, 4) donc p(0) = 2, p(1) = 1, p(2) = 2, p(3) = 3 et p(4) = 4.
⋆ Première méthode. On cherche le polynôme q ∈ R4 [x] tel que q(x) = p(x) − x, autrement dit le polynôme
q ∈ R4 [x] qui interpole les points (0, 2 − 0), (1, 1 − 1), (2, 2 − 2), (3, 3 − 3), (4, 4 − 4). Donc le polynôme q s’annule en
x = 1, x = 2, x = 3 et x = 4, ceci signifie qu’il existe un polynôme R tel que

q(x) = (x − 1)(x − 2)(x − 3)(x − 4)R(x).

Comme q ∈ R4 [x] alors R est une constante qu’on peut calculer en imposant q(0) = 2 et l’on obtient

1
q(x) = (x − 1)(x − 2)(x − 3)(x − 4).
12

⋆ Deuxième méthode. Notons x 0 = 1, x 1 = 2, x 2 = 3, x 3 = 4, x 4 = 0. On considère N = { ω0 , ω1 , ω2 , . . . , ωn−1 } une


base de Rn−1 [x] telle que coord(p, N ) = (y 0 , f [x 0 , x 1 ], f [x 0 , x 1 , x 2 ], . . . , f [x 0 , x 1 , x 2 , . . . , x n−1 ]), i.e. p(x) = n−1
P
i =0 f [x 0 , . . . , x i ]ω
La base de N EWTON est définie récursivement comme suit :

ω0 (x) = 0; ω1 (x) = x − x 0 ; pour k = 2, . . . , n ωk (x) = ωk−1 (x)(x − x k−1 ).

Le polynôme d’interpolation de degré n sur l’ensemble des n + 1 points {(x i , y i )}ni=1 dans la base de N EWTON
s’écrit
n
ωi (x) f [x 0 , ..., x i ]
X
p n (x) =
i =0
n−1
ωi (x) f [x 0 , ..., x i ] + ω4 (x) f [x 0 , x 1 , x 2 , x 3 , x 4 ]
X
=
i =1
= p n−1 (x) + ω4 (x) f [x 0 , x 1 , x 2 , x 3 , x 4 ]

où p n−1 est le polynôme d’interpolation de degré n − 1 sur l’ensemble des n points {(x i , y i )}n−1 i =0
.
Dans notre cas, on voit que les points { x 0 , x 1 , x 2 , x 3 } sont alignés le long de la droite d’équation y = x donc
p n−1 (x) = x et q(x) = ω4 (x) f [x 0 , x 1 , x 2 , x 3 , x 4 ] avec ω4 (x) = (x − 1)(x − 2)(x − 3)(x − 4). On doit donc calculer le
coefficient f [x 0 , x 1 , x 2 , x 3 , x 4 ] sachant que q(0) = 2, ce qui donne f [x 0 , x 1 , x 2 , x 3 , x 4 ] = 1/12.
On conclut que
1 1 4 5 3 35 2 19
p(x) = x + (x − 1)(x − 2)(x − 3)(x − 4) = x − x + x − x + 2.
12 12 6 12 6
4. Soit p(x) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 un polynôme de R3 [x]. On cherche les quatre coefficients a i tels que p (k) (1) = 3
pour k = 0, 1, 2, 3 :
  

 p(x) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 , 
 3 = p(1) = a 0 + a 1 + a 2 + a 3 , 
 a 3 = 1/2,
  
 p ′ (x) = a x + 2a x + 3a x 2 ,
  3 = p ′ (1) = a + 2a + 3a ,
 
 a = 0,
1 2 3 1 2 3 2
=⇒ =⇒
 p ′′ (x) = 2a 2 + 6a 3 x,
  3 = p ′′ (1) = 2a 2 + 6a 3 ,
 
 a 1 = 3/2,
  
 ′′′
3 = p ′′′ (1) = 6a 3 ,
  
p (x) = 6a 3 , a 0 = 1.
 

156 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

et ce polynôme est unique.


Soit f une fonction de classe C ∞ telle que f (k) (1) = 3. Alors la fonction g (x) ≡ f (x)−p(x) est de classe C ∞ et g (k) (1) = 0
pour k = 0, 1, 2, 3 (i.e. x = 1 est un zéro de multiplicité 4 pour g ). Écrivons le développement de TAYLOR avec le reste de
L AGRANGE de g en x = 1 à l’ordre 3 :

3 g (k) (1) g (4) (ξ) g (4) (ξ)


(x − 1)k + (x − 1)4 = (x − 1)4
X
g (x) =
k=0 k! 4! 4!

où ξ est entre x et 1. Le polynôme p étant de degré 3, on obtient

f (4) (ξ)
f (x) − p(x) = (x − 1)4 .
4!

Exercice 3.13
Calculer numériquement le polynôme caractéristique p A (λ) = det(A − λI) de la matrice suivante
def

 
2 1 0
A= 1
 2 1 .
0 1 2

Correction
Il s’agit d’une matrice d’ordre 3 donc son polynôme caractéristique appartient à R3 [λ] :

p A (λ) = α0 + α1 λ + α2 λ2 + α3 λ3 .

Si on connaît la valeur du polynôme caractéristique en 4 points, par exemple

λi −1 0 1 2
p A (λi ) det(A + I) det(A) det(A − I) det(A − 2I)

on pourra le déterminer de façon unique par interpolation :


clear all
A=[2 1 0; 1 2 1; 0 1 2]
Id=eye(size(A));
% Point d interpolation
Px=[-1 0 1 2];
% Valeur du polynome en les points d interpolation
for i=1:length(Px)
Py(i)=det(A-Px(i)*Id);
end
% Calcul des coefficients du polynome
P=[Px’,Py’]
alphaInt=naivePoly(P)

Donc
p A (λ) = 4 − 10λ + 6λ2 − λ3 .
On peut afficher l’allure du polynôme comme suit :
x=[-2:0.1:3];
yinterpol=naiveEval(alphaInt,x);
plot(x,yinterpol,’LineWidth’,2, P(:,1),P(:,2),’o’,’MarkerSize’,10);

Exercice 3.14
Soit f une fonction continue dont on connaît les valeurs uniquement pour t entier, c’est-à-dire on suppose connues
les valeurs f (κ) pour tout κ ∈ Z. Si t ∈ R \ Z, on définit une approximation p(t ) de f (t ) en interpolant la fonction f
par un polynôme de degré 3 aux quatre points entiers les plus proches de t . Calculer p(t ) et écrire un algorithme qui
fournit p(t ).

© 2020-2021 G. Faccanoni 157


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

Correction
Soit ℓ = E [t ] la partie entière 3 de t . Alors t ∈ [ℓ; ℓ + 1] et il s’agit de définir le polynôme p interpolant les points

(κ − 1, f (κ − 1)), (κ, f (κ)), (κ + 1, f (κ + 1)), (κ + 2, f (κ + 2)),

ce qui donne
   
X 3  Y 3 t − (κ − 1 + j )  X 3  Y 3 t −κ+1− j 
P (t ) =  f (κ − 1 + i ) =  f (κ − 1 + i ) 
j =0 (κ − 1 + i ) − (κ − 1 + j ) i−j
   
i =0 i =0 j =0
j ̸=i j ̸=i
f (κ − 1) f (κ)
=− (t − κ)(t − κ − 1)(t − κ − 2) + (t − κ + 1)(t − κ − 1)(t − κ − 2)
6 2
f (κ + 1) f (κ + 2)
− (t − κ + 1)(t − κ)(t − κ − 2) + (t − κ + 1)(t − κ)(t − κ − 1)
2 6
Require: f : Z → R, t
κ ← E [t ]
x0 ← κ − 1
x1 ← κ
x2 ← κ + 1
x3 ← κ + 2
y ←0
for i = 0 to 3 do
L←1
for j = 0 to 3 do
if j ̸= i then
t − xj
L← ×L
xi − x j
end if
end for
y ← y + f (x i ) × L
end for
return y

Exercice 3.15
Pour calculer le zéro d’une fonction y = f (x) inversible sur un intervalle [a; b] on peut utiliser l’interpolation : après
© ªn
avoir évalué f sur une discrétisation x i de [a; b], on interpole l’ensemble (y i , x i ) i =0 et on obtient un polynôme
x = p(y) tel que
f (x) = 0 ⇐⇒ x = p(0).
Utiliser cette méthode pour évaluer l’unique racine α de la fonction f (x) = e x − 2 dans l’intervalle [0; 1] avec trois points
d’interpolation.

Correction
Calculons d’abord les valeurs à interpoler
i xi yi
0 0 −1
1 p
1 2 e −2
2 1 e −2

Le polynôme d’interpolation de L AGRANGE de degré n sur l’ensemble des n + 1 points {(y i , x i )}ni=0 s’écrit
 
n 
X n
Y y − yj 
p n (y) = x i .
j =0 i − y j
y
 
i =0
j ̸=i

3. Pour tout nombre réel x, la partie entière notée E (x) est le plus grand entier relatif inférieur ou égal à x. Par exemple, E (2.3) = 2, E (−2) = −2 et
E (−2.3) = −3. La fonction partie entière est aussi notée [x] (ou ⌊x⌋ par les anglo-saxons). On a toujours E (x) ≤ x < E (x) + 1 avec égalité si et seulement si x
est un entier relatif. Pour tout entier relatif k et et pour tout nombre réel x, on a E (x + k) = E (x) + k. L’arrondi à l’entier le plus proche d’un réel x peut être
exprimé par E (x + 0.5).

158 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 3. Interpolation

Ici n = 2 donc on a
(y − y 1 )(y − y 2 ) (y − y 0 )(y − y 2 ) (y − y 0 )(y − y 1 )
p(y) = x 0 + x1 + x2
(y 0 − y 1 )(y 0 − y 2 ) (y 1 − y 0 )(y 1 − y 2 ) (y 2 − y 0 )(y 2 − y 1 )
p
1 (y + 1)(y − e + 2) (y + 1)(y − e + 2)
= p p + p .
2 ( e − 2 + 1)( e − 2 − e + 2) (e − 2 + 1)(e − 2 − e + 2)
p
− e+2
Par conséquent une approximation de la racine de f est p(0) = 12 (pe−2+1)(
−e+2
p
e−2−e+2)
+ (e−2+1)(e−2−pe+2) ≈ 0.7087486785.
Remarque : comme il n’y a que trois points d’interpolation, on pourrait calculer directement le polynôme interpolateur de f
plutôt que de sa fonction réciproque et chercher les zéros de ce polynôme directement car il s’agit d’un polynôme de degré
2. Cependant cette idée ne peut pas être généralisée au cas de plus de trois points d’interpolation car on ne connait pas de
formule générale pour le calcul des zéros d’un polynôme de degré n ≥ 3.

Interpolation trigonométrique
Exercice 3.16
Considérons la fonction f : [0; 2π] → R définie par f (x) = x(x − 2π)e −x . Calculer f˜(x) lorsque n = 9 et comparer
graphiquement les fonctions f et f˜.

Correction
On commence par définir la fonction f et calculer les valeurs de f aux nœuds x j = j π/5, j = 0, . . . , 9 à l’aide des instructions
suivantes
% fonction a interpoler
f=@(x)[x.*(x-2*pi).*exp(-x)];

% points d’interpolation
n=9; % n+1 points
Px=2*pi/(n+1)*[0:n];
Py=f(Px);

On calcule alors le vecteur des coefficients de F OURIER :


if rem(n,2)==0
M=n/2;
mu=0;
else
M=(n-1)/2;
mu=1;
end

% Il faut un shift car on ne peut pas utiliser des indices negatifs ou nuls
for k=-M-mu:M
c(k+M+mu+1)=1/(n+1)*sum(f(Px).*exp(-i*k*Px));
end

On peut comparer notre calcul avec celui effectué par Octave grâce à la FFT et vérifier que la norme de l’erreur est nulle :
C=fftshift(fft(f(Px)))/(n+1);
norm(c-C)

La valeur de f˜ en un point x est égale à


sum(c.*exp(i*[-M-mu:M]*x))

Pour comparer graphiquement f et son interpolée, on doit calculer f et f˜ sur [0; 2π] en S points :
S=100;
x=2*pi/S*[0:S-1];

% valeur exacte
fx=f(x);

% tilde_f calculee par Octave


z = interpft (Py ,S);

© 2020-2021 G. Faccanoni 159


Chapitre 3. Interpolation Mis à jour le Mercredi 31 mai 2023

% tilde_f calculee par notre formule


for s=1:S
ftildex(s)=sum(c.*exp(i*[-M-mu:M]*x(s)));
end

plot(x,fx,’LineWidth’,2,’r-’,...
x,ftildex,’LineWidth’,2,’b:’,...
x,z,’LineWidth’,2,’m.’,...
Px,Py,’o’);

160 © 2020-2021 G. Faccanoni


CHAPITRE 4

De l’interpolation à l’approximation d’intégrales :


formules de quadrature interpolatoires

4.1. Calcul analytique de primitives et intégrales


Une fonction F : [a; b] → R est une PRIMITIVE (ou INTÉGRALE INDÉFINIE) d’une fonction f : [a; b] → R si

F ′ (x) = f (x) pour tout x ∈ [a; b].

⋆ Si F existe on dit que f est INTÉGRABLE.


⋆ F est une primitive de f ssi la fonction F + c l’est pour tout réel c.
R
⋆ L’ensemble des primitives d’une fonction f est noté f (x) dx :
Z
f (x) dx = F (x) + c.

E XEMPLE
⋆ (x 2 )′ = 2x donc 2x dx = x 2 + c
R

1
R 1
⋆ (ln(x))′ = x donc x dx = ln(x) + c

⋆ (sin(x))′ = cos(x) donc cos(x) dx = sin(x) + c


R

Calcul de primitives
x n+1 1
Z Z
1. x n dx = + c pour n ̸= −1 2. dx = ln(x) + c
n +1 x
Z Z
3. e x dx = e x + c 4. sin(x) dx = − cos(x) + c

1
Z Z
5. cos(x) dx = sin(x) + c 6. dx = tan(x) + c
cos2 (x)
1 1 1
Z Z
7. 2
dx = − +c 8. p dx = arcsin(x) + c = − arccos(x) + c
sin (x) tan(x) 1 − x2
1
Z
9. dx = arctan(x) + c
1 + x2

Techniques d’intégration
Linéarité : Z Z Z Z Z
( f (x) + g (x)) dx = f (x) dx + g (x) dx et k f (x) dx = k f (x) dx , k ∈ R

Produit (= intégration par parties) :


Z Z
f (x)g ′ (x) dx = f (x)g (x) − f ′ (x)g (x) dx

161
Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

Astuce mnémotechnique : on se rappelle de la formule de dérivation d’un produit


¢′
f (x) × g (x) = f ′ (x) × g (x) + f (x) × g ′ (x),
¡

en intégrant cette expression


Z Z Z
¢′ ′
f (x) × g ′ (x) dx,
¡
f (x) × g (x) dx = f (x) × g (x) dx +

on obtient Z Z
f (x) × g (x) = f ′ (x) × g (x) dx + f (x) × g ′ (x) dx,

du
Composition (=intégration par changement de variable) : en posant u = f (x) on obtient dx = f ′ (x), soit encore

du = f (x) dx et donc
Z Z
g ( f (x)) f ′ (x) dx = g (u) du = G(u) + c = G( f (x)) + c
|{z} | {z }
=u =d u

Astuce mnémotechnique : soit G ′ = g alors


³ ¡ ¢´′
G f (x) = G ′ f (x) × f ′ (x),
¡ ¢

en intégrant cette expression Z ³ Z


¢´′
G f (x) dx = G ′ f (x) × f ′ (x) dx,
¡ ¡ ¢

on obtient Z
G ′ f (x) × f ′ (x) dx,
¡ ¢ ¡ ¢
G f (x) =

E XEMPLE
Voyons un exemple pour chaque méthode d’intégration :
x2 x3 x4 x5
Z Z Z
1. x(1 + x)3 dx = x(1 + 3x + 3x 2 + x 3 ) dx = x + 3x 2 + 3x 3 + x 4 dx = +3 +3 + +c
2 3 4 5
u 51 (x 2 + 1)51
Z Z
2 50 50
2. (x + 1 ) 2x dx = u du = + c = +c
| {z } | {z } 51 51
u du
Z Z
2x 1 2x
1 12 e 2x dx = 12 xe 2x − e 2x + c = 21 x − 1 e 2x + c
¡ ¢
3. x |{z}
|{z} e dx = |{z} x 2 e − |{z}

| {z } ′
| {z }
f g f g f g

E XEMPLE
L’intégration par changement de variables permet de calculer simplement les primitives suivantes :
Z Z
u ′ (x)
1. [u(x)]n u ′ (x) dx pour n ̸= −1 2. u(x) dx
Z Z
3. e u(x) u ′ (x) dx 4. sin(u(x))u ′ (x) dx
Z Z
u ′ (x)
5. cos(u(x))u ′ (x) dx 6. cos2 (u(x))
dx
Z Z
u ′ (x) ′
7. dx 8. p u (x) dx
sin2 (u(x)) 1−(u(x))2
Z
u ′ (x)
9. 1+(u(x))2
dx

En effet, il suffit de remplacer u(x) par t (ainsi u ′ (x) dx = dt ) :


1
Z Z
n+1
1. t n dt = [u(x)]
n+1 + c 2. dt = ln(|u(x)|) + c
t
Z Z
3. e t dt = e x + c 4. sin(t ) dt = − cos(u(x)) + c

1
Z Z
5. cos(t ) dt = sin(u(x)) + c 6. dt = tan(u(x)) + c
cos2 (t )

162 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

1
Z Z
1 1
7. dt = − tan(u(x)) +c 8. 1+t )2
dt = arctan(u(x)) + c
sin2 (t )
Z
9. p 1 dt = arcsin(u(x)) + c = − arccos(u(x) + c
1−t 2

E XEMPLE
ln(x)
Calculer une primitive de x avec les trois méthodes.

⋆ I NTÉGRATION DIRECTE :
1 [u(x)]2 ln2 (x)
Z Z
ln(x) dx = u(x)u ′ (x) dx = = +c
| {z } x 2 2
u(x)
|{z}
u ′ (x)

⋆ I NTÉGRATION PAR CHANGEMENT DE VARIABLE :

ln(x) u u u2 ln2 (x)


Z Z Z
dx = = u
e du = u du = +c = +c
x ↑ e 2 2
u=ln(x)
e u =x
e u du= dx

⋆ I NTÉGRATION PAR PARTIES :


1 ln(x)
Z Z Z Z
ln(x) dx = f (x)g ′ (x) dx = f (x)g (x) − f ′ (x)g (x) dx = ln2 (x) − dx
| {z } x ↑ x
f (x) ′ 1
f (x)=ln(x) =⇒ f (x)=
|{z}
g ′ (x) x
g ′ (x)= x1 =⇒ g (x)=ln(x)

ln(x) ln(x) ln2 (x)


dx = ln2 (x) + k et finalement
R R
i.e. 2 x x dx = 2 + c.

4.1.1. Intégrale définie et interprétation géométrique


L’INTÉGRALE DÉFINIE sur [a; b] d’une fonction f : [a; b] → R est

Z b
f (x) dx = [F (x)]ba = F (b) − F (a)
a

où F ′ (x) = f (x) (i.e. F est une primitive de f ) et l’on a les propriétés suivantes :
Z a
1. f (x) dx = 0
a
Z b Z a
2. f (x) dx = − f (x) dx
a b
Z c Z b Z b
3. f (x) dx + f (x) dx = f (x) dx (Relation de Chasles)
a c a

E XEMPLE · 3 ¸2
R2 2 x 2 3 13 7
⋆ 1 x dx = = − =
3 1 3 3 3
Re 1 e
⋆ 1 x dx = [ln(x)]1 = ln(e) − ln(1) = 1

E XEMPLE
Pour calculer l’intégrale d’une fonction définie par morceaux, on peut utiliser l’additivité de l’intégrale en sommant des
(
1, si x < 1,
intégrales où la fonction est définie simplement. Soit par exemple f (x) = alors
x, si x ≥ 1,

¸3
3 1 3 x2 32 12
Z Z Z ·
f (x) dx = 1 dx + x dx = [x]10 + = 1−0+ − =5
0 0 1 2 1 2 2

© 2020-2021 G. Faccanoni 163


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

(
x si x ≥ 0
Un autre exemple : sachant que |x| = on a
−x si x < 0
Z 2 Z 0 Z 2 Z 0 Z 2 Z 0 Z 2
|x| dx = |x| dx + |x| dx = −x dx + x dx = − x dx + x dx
−1 −1 0 −1 0 −1 0
¸0 ¸2
x2 x2
µ 2
(−1)2 22 02
· · ¶ µ ¶ µ ¶
0 1 4 5
=− + =− − + − = − 0− + −0 =
2 −1 2 0 2 2 2 2 2 2 2

Interprétation géométrique : aire, déplacement, vitesse, accélération


Z b
f (x) dx = (Aire au-dessus de l’axe des abscisses) − (Aire en dessous de l’axe des abscisses)
a

y
y = f (x)

1 2 3 x

Z 2
⋆ Aire = f (x) dx
1
Z 3
⋆ Aire =− f (x) dx
2

E XEMPLE

y y

9
y = x2 9
9
4 /2
3 3 ¸ /2
3
4 x+
4 f (x) = x 2
x
·
9
Z
=
2
x dx = = x)
0 3 0 8 g( Z /2
3
5
4 (g (x) − f (x)) dx
0

x x
3 3
2 2

E XEMPLE
Celui ci-dessous est le graphe de la vitesse d’un coureur en fonction du temps. Quelle distance a-t-il parcouru en 16 s ?

v
8
6
4
2

0 2 4 6 8 10 12 14 16 t

La vitesse v en fonction du temps t est la dérivée du déplacement s.


Calculer un déplacement en connaissant la vitesse, signifie chercher une fonction t 7→ s(t ) telle que s ′ (t ) = v(t ), autrement
dit, s est une primitive de v.

164 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

Z t final
La distance parcourue sera donnée par s(t final ) − s(t initial ), autrement dit par v(t ) dt :
t initial

Z 16
v(t ) dt = Aire sous la courbe = 100 m
0

E XEMPLE
1. Un train part de la station A et arrive à la station B en 6 min. Si la vitesse du train en mètres par minute est

v(t ) = 24t 2 (6 − t ),

quelle est la distance entre A et B ?


Z 6 ¤6
v(t ) dt = 48t 3 − 6t 4 0 = 2592 m
£
0

2. Une particule a une accélération de a(t ) = 2t . Si sa vitesse à l’instant t = 1 est v(1) = 6 et la distance parcourue à
l’instant t = 1 depuis le point initial est s(1) = 17, quelle distance aura-t-elle parcourue à l’instant t = 2 ?
a(t ) = v ′ (t ) = 2t donc v(t ) = t 2 + c 1 . Puisque v(1) = 6 alors c 1 = 5 et v(t ) = t 2 + 5.
3 t3
v(t ) = s ′ (t ) donc s(t ) = t3 + 5t + c 2 . Puisque s(1) = 17 alors c 2 = 35 35
3 et s(t ) = 3 + 5t + 3 .
73
Par conséquent, s(2) = 3 .

4.2. Calcul approché d’intégrales


Pour une fonction arbitraire, il n’est pas toujours possible de trouver la forme explicite d’une primitive. Par exemple,
comment peut-on tracer le graphe de la fonction erf (appelée fonction d’erreur de G AUSS) définie comme suit ?

erf : R → R
2
Z x 2
x 7→ p e −t dt
π 0

Mais même quand on la connaît, il est parfois difficile de l’utiliser. C’est par exemple le cas de la fonction f (x) = cos(4x) cos(3 sin(x))
pour laquelle on a
Z π ∞ (−9/4)k
81 X
f (x) dx = π .
0 16 k=0 k!(k + 4)!
On voit que le calcul de l’intégrale est transformé en un calcul, aussi difficile, de la somme d’une série. De plus, dans certains
cas, la fonction à intégrer n’est connue que par les valeurs qu’elle prend sur un ensemble fini de points (par exemple,
des mesures expérimentales). On se trouve alors dans la même situation que celle abordée au chapitre précédent pour
l’approximation des fonctions. Dans tous ces cas, il faut considérer des méthodes numériques afin d’approcher la quantité à
laquelle on s’intéresse, indépendamment de la difficulté à intégrer la fonction.
Dans les méthodes d’intégration, l’intégrale d’une fonction f continue sur un intervalle borné [a, b] est remplacée par une
somme finie. Le choix des nœuds et celui des coefficients qui interviennent dans la somme approchant l’intégrale sont des
critères essentiels pour minimiser l’erreur.

4.2.1. Principes généraux


Rb
Soit f une fonction réelle intégrable sur l’intervalle [a; b]. Le calcul explicite de l’intégrale définie I [a;b] ( f ) ≡ a f (x) dx peut
être difficile, voire impossible.
On appelle formule de quadrature ou formule d’intégration numérique toute formule permettant de calculer une approxima-
tion de I [a;b] ( f ). Par exemple, on peut remplacer f par une approximation f˜ et calculer I [a;b] ( f˜) au lieu de I [a;b] ( f ) :
Z b Z b
f (x) dx ≈ f˜(x) dx
|a {z } | a
{z }
I [a;b] ( f ) I [a;b] ( f˜)

Pour améliorer la précision, on pourra utiliser l’additivité des intégrales et utiliser la formule de quadrature pour approcher
chaque intégrale :
Z b Z c Z b Z c Z b
f (x) dx = f (x) dx + f (x) dx ≈ ˜
f 1 (x) dx + f˜2 (x) dx
a a c a c

© 2020-2021 G. Faccanoni 165


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

où f˜1 est une approximation de f sur [a; c] et f˜2 est une approximation de f sur [c; b]. Cela amène aux formules de
quadratures composites : on décompose l’intervalle d’intégration [a; b] en m sous-intervalles [y j ; y j +1 ] tels que y j = a + j H
où H = b−am pour j = 0, 1, . . . , m. On utilise alors sur chaque sous-intervalle une formule de quadrature (généralement la
même formule sur chaque sous-intervalle). Puisque
Z b m−1
X Z y j +1 m−1 m−1
(j)
( f˜).
X X
I [a;b] ( f ) = f (x) dx = f (x) dx = I [y j ;y j +1 ] ( f ) ≈ I [y
j ;y j +1 ]
a j =0 yj j =0 j =0

4.2.2. Exemples de formules de quadrature interpolatoires


L’approximation f˜ doit être facilement intégrable. Une approche naturelle consiste à prendre pour f˜ le polynôme p n qui
interpole f sur un ensemble de n + 1 nœuds distincts { x i }ii =n+1
=0
:
Z b Z b
f (x) dx ≃ p n (x) dx .
|a {z } | a {z }
I [a;b] ( f ) I [a;b] (p n )

On sait qu’augmenter le nombre des points où on interpole f pour calculer f˜ ne garantit pas qu’on améliore l’approximation
de f (se rappeler du phénomène de Runge). On utilisera donc des polynômes de degré petit (maximum 2) et pour améliorer
la précision on utilisera des formules composites.
① La formule du rectangle à gauche est obtenue en remplaçant f par le polynôme qui interpole f en le point (a, f (a)) ce
qui donne

p(x) = f (a)
I [a;b] ( f ) ≈ I [a;b] (p) = (b − a) f (a).

② La formule du rectangle à droite est obtenue en remplaçant f par le polynôme qui interpole f en le point (b, f (b)) ce
qui donne

p(x) = f (b)
I [a;b] ( f ) ≈ I [a;b] (p) = (b − a) f (b).

③ La
³ formule
³ du´´ rectangle ou du point milieu est obtenue en remplaçant f par le polynôme qui interpole f en le point
a+b a+b
2 ,f 2 ce qui donne
³ ´
a+b
p(x) = f 2
³ ´
a+b
I [a;b] ( f ) ≈ I [a;b] (p) = (b − a) f 2 .

④ La formule du trapèze est obtenue en remplaçant f par le polynôme qui interpole f en les points (a, f (a)) et (b, f (b))
ce qui donne
f (b)− f (a)
p(x) = b−a (x − a) + f (a)
b−a ¡ ¢
I [a;b] ( f ) ≈ I [a;b] (p) = f (a) + f (b) .
2

166 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023

© 2020-2021 G. Faccanoni
Rb
Nom Points d’interpolation Polynôme p n ∈ Rn [t ] a p n (t ) dt

Rectangle à gauche a p 0 (t ) = f (a) ∈ R0 [t ] (b − a) f (a)

a b x

Rectangle à droite b p 0 (t ) = f (b) ∈ R0 [t ] (b − a) f (b)

a b x

³ ´ µ ¶
a+b a+b a +b
Point milieu 2 p 0 (t ) = f 2 ∈ R0 [t ] (b − a) f
2
a+b
2
a b x

f (b)− f (a) (b−a)


Trapèze a, b p 1 (t ) = b−a (t − a) + f (a) ∈ R1 [t ] 2 (f (a) + f (b))

a b x

167
Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires
Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

Toutes ces formules peuvent bien sûr se généraliser pour obtenir des formules de quadrature composites. Pour chaque
méthode, nous écrirons aussi une function qui prend en entrée a, b (avec a < b), f la fonction à intégrer et m (≥ 1) le
nombre de sous-intervalles et donne en sortie Int la valeur de l’intégrale (et on ajoute un test).
Formule du rectangle à gauche. La formule du rectangle à gauche est obtenue en remplaçant f par le polynôme qui
interpole f en le point (a, f (a)), ce qui donne

p(x) = f (a) ∀x ∈ [a; b]


Z b Z b
f (x) dx ≈ p(x) dx = (b − a) f (a).
a a

Pour obtenir la formule composite on décompose l’intervalle d’intégration [a; b] en m sous-intervalles de largeur
H = b−a
m avec m ≥ 1. En introduisant les nœuds de quadrature x k = a +k H pour k = 0, 1, . . . , m −1 on obtient la formule
composite du rectangle à gauche
Z b m−1
X Z xk+1 m−1
X Z xk+1 m−1
X m−1
X
f (x) dx = f (x) dx ≃ p(x) dx = H f (x k ) = H f (a + k H ).
a k=0 x k k=0 x k k=0 k=0

1;

function [Int]=gauche(a,b,f,m)
h=(b-a)/m;
x=[a:h:b-h];
y=f(x);
Int=h*sum( y );
% en une ligne:
% Int=(b-a)/m*sum(f([a:(b-a)/m:b](1:end-1)));
end

% TEST :
f=@(x)[3*x.^2];
gauche(0,1,f,10000)
% La valeur exacte est = 1

y
4

R2
2
1 x 2 dx

1 2 x
0

Formule du rectangle à droite. La formule du rectangle à droite est obtenue en remplaçant f par le polynôme qui
interpole f en le point (b, f (b)), ce qui donne

p(x) = f (b) ∀x ∈ [a; b]


Z b Z b
f (x) dx ≈ p(x) dx = (b − a) f (b).
a a

Pour obtenir la formule composite on décompose l’intervalle d’intégration [a; b] en m sous-intervalles de largeur
H = b−a
m avec m ≥ 1. En introduisant les nœuds de quadrature x k = a + (k + 1)H pour k = 0, 1, . . . , m − 1 on obtient la
formule composite du rectangle à droite
Z b m−1
X Z xk+1 m−1
X Z xk+1 m−1
X m−1
X
f (x) dx = f (x) dx ≃ p(x) dx = H f (x k+1 ) = H f (a + (k + 1)H ).
a k=0 x k k=0 x k k=0 k=0

168 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

1;

function [Int]=droite(a,b,f,m)
h=(b-a)/m;
x=[a+h:h:b];
y=f(x);
Int=h*sum( y );
end

% TEST :
f=@(x)[3*x.^2];
droite(0,1,f,10000)
% La valeur exacte est = 1

y
4

R2
2
1 x 2 dx

1 2 x
0

Formule du rectangle ou du point milieu. La formule


³ ³du rectangle
´´ ou du point milieu est obtenue en remplaçant f par
a+b a+b
une le polynôme qui interpole f en le point 2 ,f 2 , ce qui donne
³ ´
a+b
p(x) = f 2
Z b Z b ³ ´
a+b
f (x) dx ≈ p(x) dx = (b − a) f 2 .
a a

Pour obtenir la formule composite on décompose maintenant l’intervalle d’intégration [a; b] en m sous-intervalles
de largeur H = b−a H
m avec m ≥ 1. En introduisant les nœuds de quadrature x k = a + 2 + k H pour k = 0, 1, . . . , m − 1 on
obtient la formule composite du point milieu
Z b m−1
X Z xk+1 m−1
X Z xk+1 m−1
X m−1
X
µ
H

f (x) = f (x) dx ≃ p(x) dx = H f (x k ) = H f a + +kH .
a k=0 x k k=0 x k k=0 k=0 2

1;

function [Int]=milieu(a,b,f,m)
h=(b-a)/m;
x=[a+h/2:h:b];
y=f(x);
Int=h*sum( y );
end

% TEST :
f=@(x)[3*x.^2];
milieu(0,1,f,10000)
% La valeur exacte est = 1

© 2020-2021 G. Faccanoni 169


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

y
4

R2
2
1 x 2 dx

1 2 x
0

Formule du trapèze. La formule du trapèze est obtenue en remplaçant f par le segment qui relie (a, f (a)) à (b, f (b)), i.e.
le polynôme qui interpole f en les points (a, f (a)) et (b, f (b)), ce qui donne

f (b)− f (a)
p(x) = b−a (x − a) + f (a)
Z b Z b b−a ¡ ¢
f (x) dx ≈ p(x) dx = f (a) + f (b) .
a a 2

Pour obtenir la formule composite on décompose maintenant l’intervalle d’intégration [a; b] en m sous-intervalles de
largeur H = b−a
m avec m ≥ 1. En introduisant les nœuds de quadrature x k = a + k H pour k = 0, 1, . . . , m − 1 on obtient
la formule composite des trapèzes
Z b m−1
X Z xk+1 m−1
X Z xk+1
f (x) = f (x) dx ≃ p(x) dx
a k=0 x k k=0 x k
à !
H m−1
X¡ ¢ 1 m−1
X 1
= f (x k ) + f (x k+1 ) = H f (a) + f (a + k H ) + f (b) .
2 k=0 2 k=1 2

1;

function [Int]=trapeze(a,b,f,m)
h=(b-a)/m;
x=[a:h:b];
y=f(x);
Int=h*( 0.5*y(1)+sum(y(2:end-1))+0.5*y(end) );
end

% TEST :
f=@(x)[3*x.^2];
trapeze(0,1,f,10000)
% La valeur exacte est = 1

y
4

R2
2
1 x 2 dx

1 2 x
0

170 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

4.3. Exercices
4.3.1. Calcul analytique de primitives et intégrales
Primitives : techniques d’intégration

Exercice 4.1 (Par intégration directe)


Calculer les primitives suivantes :
p p 1
Z Z Z Z p
4
1. 2x 3 − 3x + 1 dx 2. x + 3 x dx 3. p dx 4. (x − 1)3 dx
x +1
1 x x3 + x + 1
Z Z Z Z
5. p dx 6. (1 + 2x 3 )2 dx 7. dx 8. dx
x3x x +1 x2 + 1

Correction

x4 x2 1 x 3/2 x 4/3
1. 2 − 3 + x + c = x(x 3 − 3x + 2) + c 2. + +c
4 2 2 3/2 4/3
(x + 1)1/2 p 4
3. +c = 2 x +1+c 4. (x − 1)7/4 + c
1/2 7
3 4 7 4
5. − p3
+c 6. 7x +x +x +c
x
x +1−1 1 x(x 2 + 1) + 1 1 x2
Z Z Z Z
7. dx = 1 − dx = x − ln(x + 1) + c 8. dx = x+ dx = + arctan(x) + c
x +1 x +1 x2 + 1 x2 + 1 2

Exercice 4.2
Calculer les primitives suivantes :

1 1 1 1
Z Z Z Z
1. dx 2. dx 3. dx 4. dx
1+x 1−x 1 + x2 1 − x2

Correction Z ′
u (x)
1. u(x) = 1 + x et u ′ (x) = 1 donc dx = ln |1 + x| + c
u(x)
Z ′
u (x)
2. u(x) = 1 − x et u ′ (x) = −1 donc − dx = − ln |1 − x| + c
u(x)
3. arctan(x) + c
1+x
µZ ¶ µ ¶
1 1/2 1/2 1 1 1 1 1
Z
4. = + donc dx + dx = (ln |1 + x| − ln |1 − x|) + c = ln +c
1 − x2 1 − x 1 + x 2 1−x 1+x 2 2 1−x

Exercice 4.3 (Par transformations Rélémentaires) R



Calculer les primitives suivantes en utilisant f (u(x))u (x) dx = f (t ) dt :

ex ln3 (x) e −1/x


Z p
1
Z Z Z Z
1. dx 2. 2x + 1 dx 3. dx 4. dx 5. dx
1 + ex 1 + ex x x2
1 1 + cos(x) 2x sin(2x)
Z Z Z Z Z
6. dx 7. dx 8. dx 9. dx 10. sin3 (x) cos(x) dx
x ln3 (x) x + sin(x) 1 + x4 1 + sin2 (x)
Z tan(x)
1 e 1 − 2x x +1
Z Z Z Z
11. dx 12. dx 13. p dx 14. dx 15. x(x 2 + 1)2 dx
sin(x) cos(x) cos2 (x) 1 − x2 x 2 + 2x + 2
p
e x
Z Z p Z Z Z
2 3
16. e 2x+1 dx 17. x 5 + x 2 dx 18. p dx 19. xe x dx 20. x 2 e x dx
x
¡p ¢
sin x x x3
Z Z Z Z
21. p dx 22. p dx 23. dx 24. sin(3x) dx
x 3
x2 + 3 1 + x4

© 2020-2021 G. Faccanoni 171


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

Correction R ′ (x)
1. u(x) = 1 + e x , u ′ (x) = e x , uu(x) dx = ln(1 + e x ) + c
Rp p
3/2 (2x+1)3
2. u(x) = 2x + 1, u ′ (x) = 2, 21 u(x)u ′ (x) dx = 12 [u(x)]1/2 u ′ (x) dx = [u(x)]
R
3 = 3 +c
x x ′
u (x)
3. u(x) = 1 + e x , u ′ (x) = e x , 1+e −e x
R R R
1+e x dx = 1 dx − u(x) dx = x − ln(1 + e ) + c
ln4 (x)
4. u(x) = ln(x), u ′ (x) = 1/x, (u(x))3 u ′ (x) dx =
R
+c
4
5. u(x) = −1/x, u ′ (x) = 1/x 2 , e u(x) u ′ (x) dx = e −1/x + c
R
R u ′ (x) 1
6. u(x) = ln(x), u ′ (x) = 1/x, (u(x)) 3 dx = − +c
2 ln2 (x)

7. u(x) = x + sin(x), u ′ (x) = 1 + cos(x), uu(x) (x)
R
dx = ln |x + sin(x)| + c
u ′ (x)
2
8. u(x) = x , u (x) = 2x, 1+(u(x))2 dx = arctan(x 2 ) + c

R

R ′ (x)
9. u(x) = 1 + sin2 (x), u ′ (x) = 2 sin(x) cos(x) = sin(2x), uu(x) dx = ln(1 + sin2 (x)) + c
4
10. u(x) = sin(x), u ′ (x) = cos(x), (u(x))3 u ′ (x) dx = sin4(x) + c
R
R ′ (x)
11. u(x) = tan(x), u ′ (x) = 1/ cos2 (x), sin(x) cos(x)
dx = uu(x)
R
cos2 (x)
dx = ln | tan(x)| + c
′ 2
R u(x) ′ tan(x)
12. u(x) = tan(x), u (x) = 1/ cos (x), e u (x) dx = e +c
R 1 p
2 ′ −1/2 ′
R
13. u(x) = 1 − x , u (x) = −2x, p 2 dx + (u(x)) u (x) dx = arcsin(x) + 2 1 − x 2 + c
1−x
R ′ (x)
14. u(x) = x 2 + 2x + 1, u ′ (x) = 2x + 2, 12 uu(x) dx = 21 ln(x 2 + 2x + 1) + c
2 3
15. u(x) = x 2 + 1, u ′ (x) = 2x, 12 (u(x))2 u ′ (x) dx = (x +1)
R
6 +c
2x+1
16. u(x) = 2x + 1, u ′ (x) = 2, 12 e u(x) u ′ (x) dx = 12 e u(x) + c = e 2 + c
R

17. u(x) = 5 + x 2 , u ′ (x) = 2x, 21 (u(x))1/2 u ′ (x) dx = 31 (5 + x 2 )3/2 + c


R
p p
18. u(x) = x, u ′ (x) = 2p1 x , 2 e u(x) u ′ (x) dx = 2e x + c
R

x2
19. u(x) = x 2 , u ′ (x) = 2x, 1
e u(x) u ′ (x) dx = e 2 + c
R
2
x3
u(x) = x 3 , u ′ (x) = 3x 2 , 31 e u(x) u ′ (x) dx = e 3 + c
R
20.
p p
u(x) = x, u ′ (x) = 2p1 x , 12 sin (u(x)) u ′ (x) dx = −2 cos x + c
R
21.
3p
u(x) = x 2 + 3, u ′ (x) = 2x, 12 (u(x))−1/3 u ′ (x) dx =
3
R
22. (x 2 + 3)2 + c
4
R u ′ (x) 4)
23. u(x) = 1 + x 4 , u ′ (x) = 4x 3 , 41 dx = ln(1+x
4 +c
u(x)
u(x) = 3x, u ′ (x) = 3, 31 sin(u(x))u ′ (x) dx = − 31 cos(3x) + c
R
24.

Exercice 4.4
Calculer les primitives suivantes :

cos2 (x) sin(x) + cos(x) 1


Z Z Z
1. dx 2. dx 3. 2
dx
1 − sin(x) sin(x) − cos(x) sin (x) cos2 (x)
1 1 1
Z Z Z
4. dx 5. dx 6. dx
cos(x) sin(x) sin(x) cos(x)

Correction
(1−sin(x))(1+sin(x))
1. cos2 (x) = 1 − sin2 (x) = (1 − sin(x))(1 + sin(x)),
R
1−sin(x) dx = x − cos(x) + c
R u ′ (x)
1 = cos2 (x)+sin2 (x), u(x) = sin(x)−cos(x), u ′ (x) = sin(x)+cos(x), sin(x)+cos(x)
R
2. sin(x)−cos(x) dx = u(x) dx = ln(sin(x)−cos(x))+c
2 2 1
1 = cos2 (x) + sin2 (x), sin (x)+cos (x)
dx = cos12 (x) dx + sin12 (x) dx = tan(x) −
R R R
3. sin2 (x) cos2 (x)
+c
tan(x)
2 (x)+sin2 (x)
1 = cos2 (x) + sin2 (x), cos(x)1sin(x) dx = cos
R R R sin(x) cos(x)
4. cos(x) sin(x) dx = cos(x) + sin(x) dx = − ln | cos(x)| + ln | sin(x)| + c
R 1
sin(x) = 2 sin(x/2) cos(x/2), u(x) = x/2, u ′ (x) = 1/2, sin(x) dx = cos(u(x))1sin(u(x)) u ′ (x) dx = − ln | cos(x/2)|+ln | sin(x/2)|+
R
5.
c = ln | tan(x/2)| + c.
cos(x) = sin π − x , u(x) = π − x, u ′ (x) = −1, ¡1 ¢ u ′ (x) dx = ln | cos( π − x )| − ln | sin( π − x )| + c =
¡ ¢ R 1 R
6. 2 2 cos(x)dx = − 4 2 4 2
sin u(x)
ln(sin(x) − cos(x)) + c

172 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

Exercice 4.5 (Intégration par changement de variable)


Calculer les primitives suivantes :
p
x
sin(ln(x)) 1+e 1 1
Z Z Z Z
1. dx 2. p dx 3. p dx 4. p p dx
x x x− x x(1 + x)
ex 1 1
Z Z Z Z
5. dx 6. dx 7. ¡ 1 ¢ dx 8. e x ln(1 + e x ) dx
1 + ex
q
x ln(x) x ln x
3
x5
Z p
1 x
Z Z Z
9. dx 10. p dx 11. p dx 12. e x − 1 dx
x(2 + ln2 (x)) 1 − x2 x3 − 1
tan(x)
ln(x) 1 e x
Z Z Z Z
13. dx 14. dx 15. dx 16. p dx
x e x + e −x cos2 (x) 1 + x2
1 e 1/x cos(x)
Z p Z Z Z
17. x a + x 2 dx 18. dx 19. dx 20. dx
x2
p
x 2
1 − ln (x) 1 + sin(x)
x3 x
µ ¶
1 1 1
Z Z Z Z
21. cos dx 22. p dx 23. dx 24. dx
x2 x 1 + x2 3 + x2 1 + x4

Correction
1. Pour x > 0, si on pose t = ln(x) alors x1 dx = dt et on obtient − cos(ln(x)) + c
p p p
2. Pour x > 0, si on pose t = x alors dx = 2t dt et on obtient 2( x + e x ) + c
p p
3. Pour x > 0, si on pose t = x alors dx = 2t dt et on obtient 2 ln( x − 1) + c
p p p
4. Pour x > 0, si x > 0. Si on pose t = x alors dx = 2t dt et on obtient 4 1 + x + c
5. Si on pose t = e x alors e x dx = dt et on obtient ln(1 + e x ) + c
6. Pour x > 0, si on pose t = ln(x) alors x1 dx = dt et on obtient ln | ln(x)| + c
q ¡ ¢
7. Pour x > 0, si on pose t = ln x1 = − ln(x) alors − x1 dx = dt et on obtient −2 ln x1 + c
¡ ¢

8. Si on pose t = 1 + e x alors e x dxR = dt ainsiR e x ln(1 + e x ) dx = ln(t ) dt . Sans utiliser l’intégration par partie, si on pose
R R

t = e w alors dt = e w dw ainsi ln(t ) dt = we w dw = (w − 1)e w et on obtient (1 + e x ) ln(1 + e x ) − e x + c.


³ ´
9. Pour x > 0, si on pose t = ln(x) alors x1 dx = dt et on obtient p1 arctan ln(x) p +c
2 2
p
10. Si on pose t 2 = 1 − x 2 alors −x dx = t dt et on obtient − 13 (x 2 + 2) 1 − x 2 + c
p
11. Si on pose t 2 = x 3 − 1 alors 3x 2 dx = 2t dt et on obtient 92 (x 3 + 2) x 3 − 1 + c
p
12. Si on pose t 2 = e x − 1 alors dx = t 22t+1 dt et on obtient 2 e x − 1 − arctan( e x − 1)) + c
¡p ¢

13. Pour x > 0, si on pose t = ln(x) alors dx = e t dt et on obtient 12 ln2 (x) + c


1
14. Si on pose t = e x alors dx = t dt et on obtient arctan e x + c
1 tan(x)
15. Si on pose t = tan(x) alors dx = 1+t 2 dt et on obtient e +c
p p
16. Si on pose t = 1 + x 2 alors 2x dx = 2t dt et on obtient 1 + x 2 + c
p p
17. Pour a + x 2 ≥ 0, si on pose t = a + x 2 alors 2x dx = 2t dt et on obtient 13 (a + x 2 )3 + c
1
18. Pour x > 0, si on pose t = ln(x) alors x dx = dt et on obtient arcsin(ln(x)) + c
1
19. Si on pose t = x alors − x12 dx = dt et on obtient −e 1/x + c
20. Si on pose t = 1 + sin(x) alors cos(x) dx = dt et on obtient ln |1 + sin(x)| + c
21. Si on pose t = x1 alors − x12 dx = dt et on obtient − sin x1 + c
¡ ¢
p
22. Si on pose t 2 = 1 + x 2 alors x dx = t dt et on obtient 13 (x 2 − 2) x 2 + 1 + c
p p p p
3
R 1 1
R 1
23. 3+x 2 dx = 3 ³ ´2 dx. Si on pose t = x/ 3 alors dx = 3t dt et on obtient arctan(x/ 3) + c
3
1+ px
3

24. Si on pose t = x 2 alors 2 dx = dt et on obtient 12 arctan(x 2 ) + c

© 2020-2021 G. Faccanoni 173


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

Exercice 4.6 (Intégration par parties)


Calculer les primitives suivantes en utilisant f (x)g ′ (x) dx = f (x)g (x) − f ′ (x)g (x) dx :
R R

ln(x) ln(x)
Z Z Z Z
2 x
1. dx 2. ln(1 + x) dx 3. x e dx 4. p dx
x2 x
sin(x)
Z Z Z Z
5. x sin(x) dx 6. x ln(x) dx 7. x 2 cos(x) dx 8. e tan(x) dx
cos3 (x)
ln(x)
Z Z Z Z
9. x 3 ln(x) dx 10. p4
dx 11. ln 2
(x) dx 12. x 3 sin(x 2 ) dx
x

Correction
1. On pose f (x) = ln(x) et g ′ (x) = 1
f ′ (x) = 1
et g (x) = − x1 . On obtient f (x)g (x) − f ′ (x)g (x) dx = − 1+ln(x)
R
x2
. Alors x x +c
1
2. On pose f (x) = ln(1 + x) et g ′ (x) = 1. Alors f ′ (x) =
R ′
1+x et g (x) = x. On obtient f (x)g (x) − f (x)g (x) dx = (1 + x) ln(1 +
x) − x + c
3. On pose f (x) = x 2 et g ′ (x) = e x . Alors f ′ (x) = 2x et g (x) = e x . On obtient f (x)g (x) − f ′ (x)g (x) dx = e x ((x − 2)x + 2) + c
R
p p
4. On pose f (x) = ln(x) et g ′ (x) = p1x . Alors f ′ (x) = x1 et g (x) = 2 x. On obtient f (x)g (x) − f ′ (x)g (x) dx = 2 x(ln(x) −
R

2) + c
5. On pose f (x) = x et g ′ (x) = sin(x). Alors f ′ (x) = 1 et g (x) = − cos(x). On obtient f (x)g (x)− f ′ (x)g (x) dx = −x cos(x)+
R

sin(x) + c
6. On pose f (x) = ln(x) et g ′ (x) = x. Alors f ′ (x) = 1/x et g (x) = x 2 /2. On obtient f (x)g (x) − f ′ (x)g (x) dx = 12 x 2 ln(x) −
R
1 2
4x +c
7. On pose f (x) = x 2 et g ′ (x) = cos(x). Alors f ′ (x) = 2x et g (x) = sin(x). On obtient f (x)g (x)− f ′ (x)g (x) dx = x 2 sin(x)−
R

2[−x cos(x) + sin(x)] + c


8. On pose f (x) = sin(x)/cos(x) et g ′ (x) = e tan(x)/x 2 . Alors f ′ (x) = 1/cos 2 x et g (x) = e tan(x) . On obtient f (x)g (x) − f ′ (x)g (x) dx =
R

e tan(x) (tan(x) − 1) + c
4
9. On pose f (x) = ln(x) et g ′ (x) = x 3 . Alors f ′ (x) = x1 et g (x) = x4 . On obtient f (x)g (x) − f ′ (x)g (x) dx = 16 1 4
R
x (4 ln(x) −
1) + c
1 1 4x 3/4 4 3/4 ¡
10. On pose f (x) = ln(x) et g ′ (x) = p ′
ln(x) − 34 +
R ′ ¢
4 . Alors f (x) = x et g (x) = 3 . On obtient f (x)g (x)− f (x)g (x) dx = 3 x
x
c
11. On pose f (x) = ln(x) et g ′ (x) = ln(x). Alors f ′ (x) = x1 et g (x) = x ln(x) − x. On obtient f (x)g (x) − f ′ (x)g (x) dx =
R

x(ln2 (x) − 2 ln(x) + 2) + c


12. On pose d’abord t = x 2 ainsi dt = 2x dx. Alors x 3 sin(x 2 ) dx = 12 x 2 sin(x 2 )2x dx = 21 t sin(t ) dt . On pose f (t ) =
R R R

−t cos(t ) + sin(t )
t et g ′ (t ) = sin(t ). Alors f ′ (t ) = 1 et g (t ) = − cos(t ). On obtient f (t )g (t ) − f ′ (t )g (t ) dt =
R
+c =
2
2 2 2
−x cos(x ) + sin(x )
+c
2

Exercice 4.7
Calculer la primitive suivante en utilisant un changement de variable. Comparer ensuite au résultat obtenu en utilisant
l’intégration par parties :
x arcsin(x)
Z
p dx
1 − x2

Correction
CV Si on pose t = arcsin(x) alors p 1 dx = dt et x = sin(t ) et on obtient
1−x 2

x arcsin(x)
Z Z
p dx = t sin(t ) dt
1 − x2
On a calculé cette intégrale à l’exercice 4.6(5.) :
Z
t sin(t ) dt = −t cos(t ) + sin(t ) + c = − arcsin(x) cos(arcsin(x)) + x + c

174 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

IPP
x arcsin(x)
Z p
p dx = = − 1 − x 2 · arcsin(x) + x + c
1 − x2 f (x) = arcsin(x) ⇒ f ′ (x) = p 1
p 1−x 2
g (x) = − 1 − x 2 ⇐ g ′ (x) = p x
1−x 2
p p
Les deux calculs donnent le même résultat car cos(arcsin(x)) = ± 1 − sin2 (arcsin(x)) = ± 1 − x 2

Exercice 4.8 (cf. P. H ALMOS)


Si f , g : R → R sont deux fonctions dérivables quelconques, on sait que la dérivée du produit n’est pas le produit des
dérivées, autrement dit ( f g )′ ̸= f ′ g ′ . Cependant, il existe des fonctions f et g pour lesquelles on a bien ( f g )′ = f ′ g ′ ,
par exemple si f et g sont toutes deux égales à une constante (pas nécessairement la même). Pouvez-vous en trouver
d’autres ?

Correction
⋆ Si f (x) = k 1 pour tout x ∈ R et g (x) = k 2 pour tout x ∈ R, alors ( f g )′ (x) = (k 1 k 2 )′ = 0 pour tout x ∈ R et f ′ (x)g ′ (x) =
0 × 0 = 0 pour tout x ∈ R.
⋆ Si g = f , on cherche f telle que ( f 2 )′ = ( f ′ )2 , c’est-à-dire 2 f (x) f ′ (x) = ( f ′ (x))2 pour tout x ∈ R. Donc, soit f ′ (x) = 0
pour tout x ∈ R et on trouve à nouveau f (x) = g (x) = k pour tout x ∈ R, soit 2 f (x) = f ′ (x) pour tout x ∈ R et on trouve
f (x) = g (x) = ke 2x pour tout x ∈ R.
⋆ Dire que ( f g )′ = f ′ g ′ revient à dire que f ′ g + f g ′ = f ′ g ′ . En divisant par le produit f g (il est inutile à ce stade de se
préoccuper de la possibilité de diviser par 0, nous cherchons seulement formellement des conditions nécessaires) on
a
f ′ (x) g ′ (x) f ′ (x) g ′ (x)
+ = ·
f (x) g (x) f (x) g (x)
g ′ (x)
f ′ (x) g (x)
c’est-à-dire f (x) = g ′ (x)
, soit encore
1− g (x)
g ′ (x)
[ln( f (x))]′ = .
g ′ (x) − g (x)
g ′ (x)
Si on choisit g , il suffit de poser f = e G où G est une primitive de g ′ (x)−g (x)
.
Voyons quelques exemples :
1 1
g )′ = f ′ g ′ :
R
⋆ si on pose g (x) = x alors G(x) = 1−x dx = − ln(1 − x) et f (x) = 1−x . Vérifions si on a bien ( f
³ x ´′ 1
( f g )′ (x) = =
1−x (1 − x)2
1
f ′ (x)g ′ (x) =
(1 − x)2

ax a−1 ax a−1 1
si on pose g (x) = x a alors G(x) =
R R

ax a−1 −x a
dx = ax a−1 −x a
dx = −a ln(a − x) et f (x) = (a−x)a . Vérifions si on a
bien ( f g )′ = f ′ g ′ :
¶′
xa
µ
( f g )′ (x) = = a 2 x a−1 (a − x)−a−1
(a − x)a
f ′ (x)g ′ (x) = a(a − x)−a−1 · ax a−1 = a 2 x a−1 (a − x)−a−1

ae ax a
si on pose g (x) = e ax alors G(x) = et f (x) = e bx où b = a/(a − 1). Vérifions si on a bien
R

ae ax −e ax dx = a−1 x
( f g )′ = f ′ g ′ :

( f g )′ (x) = (e bx e ax )′ = (e (a+b)x )′ = (a + b)e (a+b)x


f ′ (x)g ′ (x) = be bx ae ax = (ab)e (a+b)x = (a + b)e (a+b)x

Exercice 4.9 (Formules de réduction)


Les formules de réduction dérivent de l’application répétée de la règle d’intégration par parties.

© 2020-2021 G. Faccanoni 175


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

1. Soit n ∈ N et α ∈ R∗ , montrer que


¶ αx
n n−1 n(n − 1) n−2 n n! e
Z µ
n αx n
x e dx = x − x + x · · · + (−1) n +c
α α2 α α

2. Soit n ∈ N. Montrer que

− sinn−1 (x) cos(x) n − 1


Z Z
n
sin (x) dx = + sinn−2 (x) dx,
n n
cosn−1 (x) sin(x) n − 1
Z Z
cosn (x) dx = + cosn−2 (x) dx.
n n

3. Soit n ∈ N. Montrer que


Z Z
x n sin(x) dx = −x n cos(x) + nx n−1 sin(x) − n(n − 1) x n−2 sin(x) dx,
Z Z
n n n−1
x cos(x) dx = x sin(x) + nx cos(x) − n(n − 1) x n−2 cos(x) dx.

4. Soit n ∈ N∗ , α ̸= −1 et x > 0. Montrer que


¶ α+1
n n(n − 1) n−2 n! x
Z µ
x α lnn (x) dx = lnn (x) − lnn−1 (x) + ln (x) · · · + (−1) n
+ c.
α+1 (α + 1)2 (α + 1)n α + 1

Correction
1. On pose I n = x n e αx dx. En intégrant par parties ( f (x) = x n et g ′ (x) = e αx ) on trouve
R

e αx n e αx n n−1 e αx n − 1
¶ αx
n n(n − 1) n−2 n n! e
µ ¶ µ
In = xn − I n−1 = x n − x − I n−2 = · · · = x n − x n−1 + x · · · + (−1) +c
α α α α α α α α2 αn α

2. On pose I n = sinn (x) dx. En intégrant par parties ( f (x) = sinn−1 (x) et g ′ (x) = sin(x)) on trouve
R

− sinn−1 (x) cos(x) n − 1


I n = − sinn−1 (x) cos(x) + (n − 1)I n−2 − (n − 1)I n = + I n−2
n n

De la même manière, on pose I n = cosn (x) dx. En intégrant par parties ( f (x) = cosn−1 (x) et g ′ (x) = cos(x)) on trouve
R

cosn−1 (x) sin(x) n − 1


In = + I n−2
n n

3. On pose I n = x n sin(x) dx et J n = x n cos(x) dx. En intégrant par parties ( f (x) = x n et g ′ (x) = sin(x) dans la première
R R

intégrale et f (x) = x n et g ′ (x) = cos(x) dans la deuxième intégrale) on trouve

I n = −x n cos(x) + n J n−1 J n = x n sin(x) − nI n−1

Par conséquence

I n = −x n cos(x) + n x n−1 sin(x) − (n − 1)I n−2 = −x n cos(x) + nx n−1 sin(x) − n(n − 1)I n−2
¡ ¢

J n = x n sin(x) − n −x n−1 cos(x) + (n − 1)J n−2 = x n sin(x) + nx n−1 cos(x) − n(n − 1)J n−2
¡ ¢

4. On pose I n = x α lnn (x) dx. En intégrant par parties ( f (x) = lnn (x) et g ′ (x) = x α ) on trouve
R

x α+1 n
¶ α+1
n n n(n − 1) n−2 n! x
µ
n n−1 n
In = ln (x) − I n−1 = · · · = ln (x) − ln (x) + ln (x) · · · + (−1) + c.
α+1 α+1 α+1 (α + 1)2 (α + 1)n α + 1

Intégrales : aires, déplacements, vitesses, accélérations

Exercice 4.10 (Vitesse et accélération)


Soit V > 0 une constante. Une voiture roule à une vitesse de v(t ) = V t (1−t ) km h−1 durant l’intervalle de temps 0 ≤ t ≤ 1
h. Quelle a été sa vitesse maximale ? Que vaut l’accélération instantanée ? Quelle distance a-t-elle parcouru ?

176 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

Correction
1
= V4 .
¡1¢
⋆ Vitesse maximale : v(t ) = V t (1 − t ) = V (t − t 2 ), v ′ (t ) = V (1 − 2t ), v ′ (t ) = 0 ssi t = 2 et v 2
⋆ Accélération instantanée : a(t ) = v ′ (t = V (1 − 2t ) donc a > 0 si t < 1/2 et a < 0 si t > 1/2
Z 1
V
⋆ Distance parcourue : v(t ) = x ′ (t ) donc x parcourue = v(t ) dt = .
0 6

Exercice 4.11
Calculer
p
Z
11 Z 1/ 3 1
Z 1 2x − 5
A= 2
dx, B= p dx, C= dx.
−1 1 + x −1/ 3 1 + 3x 2 −1 x 2 − 5x + 6

Correction

π −π π
A = [arctan(x)]1−1 = arctan(1) − arctan(−1) = − = ,
4 4 2
A π
Z 1
1 1
B= p dt = p = p ,
3 −1 1 + t 2 3 2 3
Z 1
2x − 5 ¤1
C= dx = ln |x 2 − 5x + 6| −1 = ln(2) − ln(12) = ln(2) − ln(3) − 2 ln(2) = − ln(2) − ln(3).
£
2
−1 x − 5x + 6

Exercice 4.12 (Calcul de l’aire)


Calculer l’aire comprise entre le graphe de la fonction f (x) et le graphe de la fonction g (x) :

a) f (x) = −x 2 + x + 2 et g (x) = x 2 − 3x + 2 b) f (x) = x3


et g (x) = x 2 − x
4

Correction
a) Comme f (x) = g (x) ssi x ∈ {0, 2} et f (x) ≥ g (x) pour x ∈ [0, 2], l’aire comprise entre le graphe de la fonction f (x) et le
¸2
x3 x2
Z 2 Z 2 ·
2 8
graphe de la fonction g (x) est ( f (x) − g (x)) dx = −2x + 4x dx = −2 + 4 = .
0 0 3 2 0 3
b) Comme f (x) = g (x) ssi x ∈ {0, 2} et f (x) ≥ g (x) pour x ∈ [0, 2], l’aire comprise entre le graphe de la fonction f (x) et le
Z 2 3 · 4 ¸2
x3 x2
Z 2
x 2 x 1
graphe de la fonction g (x) est ( f (x) − g (x)) dx = − x + x dx = − + = .
0 0 4 16 3 2 0 3

x3
f (x) = −x 2 + x + 2 = −(x + 1)(x − 2) et g (x) = x 2 − 3x + 2 = (x − 1)(x − 2) f (x) = 4 et g (x) = x 2 − x = x(x − 1)

y y

2 2

g (x)
g (x)
1 2 x f (x) 1 2 x
f (x)

Exercice 4.13 (Calcul de l’aire)


Calculer l’aire de A et de B ainsi définis :
½ ¯ ¾ ½ ¯ ¾
1 1
A = (x, y) ∈ R2 ¯¯ 0 ≤ x ≤ 2π, ≤ y ≤ cos3 (x) , B = (x, y) ∈ R2 ¯¯ −π ≤ x ≤ π, ≤ y ≤ cos3 (x) .
¯ ¯
8 8

© 2020-2021 G. Faccanoni 177


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

Correction
Remarquons d’abord que
Z Z
cos2 (x)=1−sin2 (x)
cos3 (x) dx = (1 − sin2 (x)) cos(x) dx =
Z Z t =sin(x)
dt =cos(x) dx
= cos(x) − cos(x) sin2 (x) dx = sin(x) − cos x sin2 (x) dx =

t3 sin3 (x)
Z
= sin(x) − t 2 dt = sin(x) − + k = sin(x) − +k , k ∈ R.
3 3
1 π 5π
Comme cos3 (x) = 8 ssi x = 3 ou x = 3 alors
ÃZ π π
! Ãp p ! p
3
3 3 −0 3 3 π 9 3−π
Aire (A) = 2 cos (x) dx − =2 − − =
0 8 2 8 24 12

et Ãp p p
π π
!
−0 3 3 π 9 3−π
Z
3 3
3
Aire (B ) = cos (x) dx − 2 · =2 − − = .
− π3 8 2 8 24 12

Exercice 4.14
La valeur moyenne de la fonction f (x) = x 3 sur l’intervalle [0; k] est 9. Calculer k.

Correction p
1 k4
Rk
valeur moyenne de f = k1 0 x 3 dx = 9
def 3
=⇒ k 4 =9 =⇒ k= 36.

Exercice 4.15 y
Dans la figure ci-contre on a tracé le graphe de la fonction
g : [0; w] → R définie par
Z x
g (x) = f (t ) dt y = g (x)
0 x
0 h k w
avec f : [0; w] → R une fonction continue et dérivable. Le
graphe de g a tangente horizontale en x = 0 et présente
un changement de concavité en x = h et un maximum en
x = k.

1. Calculer f (0) et f (k).


2. Tracer un graphe plausible de f et montrer qu’elle admet un maximum.
3. Dorénavant on suppose que g est une fonction polynomiale de degré 3.
3.1. Montrer que h = w/3 et k = 2h.
3.2. Pour w = 3 et g (1) = 2/3 trouver l’expression de g .

Correction
1. g ′ (x) = f (x) pour tout x ∈ [0; w]. Puisque x = 0 et x = k sont des points à tangente horizontale pour le graphe de g ,
alors g ′ (0) = g ′ (k) = 0 donc f (0) = f (k) = 0.

2. f est continue par hypothèse. D’après le théorème de W EIERSTRASS elle admet un maximum et un minimum sur
[0; w].
On a vu au point précédent que f (0) = f (k) = 0 et que g ′ (x) = f (x) pour tout x ∈ [0; w]. g est croissante (g ′ (x) > 0) sur
[0; k] et décroissante (g ′ (x) < 0) sur [k; w], donc f est positive sur [0; h] et négative sur [h; w].
De plus, g ′′ (x) = f ′ (x) pour tout x ∈ [0; w]. g est convexe (g ′′ (x) > 0) sur [0; h] et concave (g ′′ (x) < 0) sur [h; w], donc f
est croissante sur [0; h] et décroissante sur [h; w]. x = h est un maximum absolu pour f et x = w un minimum absolu.
Un graphe plausible de f est donc le suivant :

178 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

w
0 h k x

y = f (x)

3. g est une fonction polynomiale de degré 3, x = w est un zéro simple et x = 0 est un zéro double (car g ′ (0) = 0), donc
g (x) = a(x − w)(x − 0)2 = ax 2 (x − w) avec a ∈ R∗ un paramètre.
3.1. On a f (x) = g ′ (x) = ax(3x − 2w) : il s’agit d’une parabole. Comme f (0) = f (k) = 0 alors k = 2w/3. De plus,
le sommet de la parabole se trouve en x = k/2 et f ′ (k/2) = 0. Comme x = h est le maximum de f , alors
h = k/2 = w/3.
3.2. Si w = 3 alors g (x) = ax 2 (x − 3) et la condition g (1) = 2/3 implique a = −1/3. On obtient ainsi g (x) = − 13 x 3 + x 2 .

Exercice 4.16 (Probabilité géométrique)


1. On sélectionne un point au hasard sur une cible circulaire. Quelle est la probabilité que le point choisi soit plus
prêt du centre que de la circonférence de la cible ?
2. On sélectionne un point au hasard sur une cible carrée. Quelle est la probabilité que le point sélectionné soit plus
prêt du centre du carré que d’un de ses côtés ?
Source : [Link]

Correction
1. Il semble assez évident de délimiter correctement de manière intuitive les zones par deux disques concentriques.

O A B

Attention néanmoins à ne pas répondre que la probabilité de choisir un point dans la zone hachurée est 1/2 (parce
que le rayon du disque hachuré correspond à la moitié du rayon du grand disque). Or, si le petit disque possède un
rayon de r et le grand 2r , on a
Aire du petit disque hachuré πr 2 1
P= = = .
Aire du grand disque π(2r )2 4
2. L’ensemble de points équidistants d’un point et d’une droite est une parabole. La région à considérer est donc
délimitée par quatre paraboles qui ont pour foyer le centre du carré et comme droites directrices les droites qui
supportent les côtés du carré. On s’affaire donc à trouver l’aire de cette région hachurée. On place d’abord le tout
dans un repère cartésien. Les sommets du carré sont (1, 1), (−1, 1), (−1, −1) et (1, −1) (cf. figure à gauche). En vertu des
symétries de la figure, il nous est possible de nous concentrer seulement sur la partie située dans le premier quadrant.
Qui plus est, il est possible de ne s’attarder qu’à la moitié de cette dernière région (cf. figure à droite).
(0, 1) (1, 1)
(−1, 1) (0, 1) (1, 1)

1)
(0, 2

1)
(0, 2 C
(−1, 1) (− 1
2 , 1)
(0, 1) (1
2 , 1)
(1, 1)

(0, − 1
2)

(0, 1) 1 , 1)
(2 (1, 1)
(−1, 1) (0, 1) (1, 1)

© 2020-2021 G. Faccanoni 179


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

Ce «croissant de parabole» correspond à la moitié de la région à considérer dans le premier quadrant. On note au
passage que l’aire du carré dans ce premier quadrant est 1. Le «croissant» est à son tour divisé en deux parties : la zone
de forme triangulaire T et la zone A . On cherche l’aire de ces zones. Pour y arriver, on aura besoin des coordonnées
2
de C . L’équation de la parabole qui
p nous intéresse est y = 1 − 2x. On ne s’intéressera qu’à la branche située au dessus
de l’axe des abscisses. Ainsi
p y = 1 − 2x. On cherche ensuite les coordonnées de C p, le point d’intersection entre la
courbe d’équation y = 1 − 2x et la droite d’équation y = x et on p
obtient x = −1 + 2. Il nous est donc déjà possible
3−2 2
de trouver l’aire du triangle, que l’on a identifié comme T = 2 . Il reste à trouver l’aire de la région sous la courbe :

1 p
p ´3 (−1 + 2)3
r
p 1 0 p 1
Z Z
2
³
A= p 1 − 2x dx = − p t dt = 3−2 2 = .
−1+ 2 2 3−2 2 3 3

L’aire totale est donc p


−5 + 4 2
T +A = .
6
Comme le carré du premier quadrant à une aire de 1, il ne reste qu’à doubler ce résultat afin d’obtenir la probabilité
recherchée p
−5 + 4 2
P=
3
ce qui correspond à un peu moins de 22%.

4.3.2. Calcul approché d’intégrales


Exercice 4.17
R 5/2
Estimer 0 f (x) dx à partir des données

x 0 /2
1
1 3
/2 2 5
/2
f (x) /2
3
2 2 1.6364 1.2500 0.9565

en utilisant
1. la méthode des rectangles à gauche composite,
2. la méthode des rectangles à droite composite,
3. la méthode des trapèzes composite.

Correction
5 b−a
On a a = 0, b = 2 et m = 5 donc h = m = 21 .
h=1/2;
x=[0:h:5/2]
y=[3/2 2 2 1.6364 1.2500 0.9565]
Gauche=h*sum( y(1:end-1) )
Droite=h*sum( y(2:end) )
Trapeze=0.5*h*( y(1)+2*sum(y(2:end-1))+y(end) )
Z b
Méthode f (t )d t ≃
a
m−1
X
µ
1 3

Méthode 1 h f (a + i h) = + 2 + 2 + 1.6364 + 1.2500 = 4.1932
i =0 2 2
m−1
X 1
Méthode 2 h f (a + (i + 1)h) = (2 + 2 + 1.6364 + 1.2500 + 0.9565) = 3.92145
à i =0 2!
1 m−1
X 1
µ
1 3 0.9565

Méthode 3 h f (a) + f (a + i h) + f (b) = + 2 + 2 + 1.6364 + 1.2500 + = 4.057325
2 i =1 2 2 4 2

180 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

Exercice 4.18
Étant donnée l’égalité
µZ +∞ ¶2 µZ 10 ¶2
2 2
π=4 e −x dx =4 e −x dx + ϵ ,
0 0

avec 0 < ϵ < 10 −44


, utiliser la méthode des trapèzes composite à 10 intervalles pour estimer la valeur de π.

Correction
La méthode des trapèzes composite à m intervalles pour calculer l’intégrale d’une fonction f sur l’intervalle [a, b] s’écrit
à !
Z b 1 m−1
X 1 b−a
f (t )d t ≃ h f (a) + f (a + i h) + f (b) avec h = .
a 2 i =1 2 m

2
Ici on a f (x) = e −x , a = 0, b = 10, m = 10 d’où h = 1 et on obtient

1 X10 2 1 1 1 1 1 1 1 1 1 1 1 1
I≃ + e −i + 100 = + + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81 + 100 ,
2 i =1 2e 2 e e e e e e e e e 2e

ainsi en utilisant la fonction trapeze(a,b,f,m) comme suit


f=@(x)[exp(-x.^2)];
Int=trapeze(0,10,f,10)
mypi=4*Int^2
on obtient π ≈ 4I 2 = 3.1422.

Exercice 4.19
On considère l’intégrale
Z 2 1
I= dx.
1 x
1. Calculer la valeur exacte de I .
2. Évaluer numériquement cette intégrale par la méthode des trapèzes avec m = 3 sous-intervalles.
3. Pourquoi la valeur numérique obtenue à la question précédente est-elle supérieure à ln(2) ? Est-ce vrai quelque
soit m ? Justifier la réponse. (On pourra s’aider par un dessin.)

Correction h ix=2
1
1. Une primitive de x est F (x) = ln(x). La valeur exacte est alors I = ln(x) = ln(2).
x=1
2. La méthode des trapèzes composite à m + 1 points pour calculer l’intégrale d’une fonction f sur l’intervalle [a, b]
s’écrit à !
Z b
1 m−1
X 1 b−a
f (t )d t ≃ h f (a) + f (a + i h) + f (b) avec h = .
a 2 i =1 2 m

Ici on a f (x) = x1 , a = 1, b = 2, m = 3 d’où h = 1


3 et on obtient
µ ¶ µ ¶
1 1 1 1 1 3 3 1 21
I≃ f (1) + f (1 + 1/3) + f (1 + 2/3) + f (2) = + + + = = 0,7.
3 2 2 3 2 4 5 4 30

f=@(x)[1./x];
Int=trapeze(1,2,f,3)

3. La valeur numérique obtenue à la question précédente est supérieure à ln(2) car la fonction f (x) = x1 est convexe. On
peut se convaincre à l’aide d’un dessin que les trapèzes sont au-dessus de la courbe y = 1/x, l’aire sous les trapèzes
sera donc supérieure à l’aire sous la courbe. Pour bien visualiser la construction considérons m = 1 :
1
1
0.5 0.5
0
0.5 1 1.5 2

0
© 2020-2021 G. Faccanoni
0.5 1 1.5 2 181
Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

Cela reste vrai quelque soit le pas h choisi car la fonction est convexe ce qui signifie qu’une corde définie par deux
points de la courbe y = 1/x sera toujours au-dessus de la courbe et par le raisonnement précédant l’aire sous les
trapèzes sera supérieure à l’aire exacte.

Exercice 4.20 (Interpolation, Quadrature et EDO)


1. Soit f une fonction de classe C 1 ([−1, 1]). Écrire le polynôme p ∈ R2 [τ] qui interpole f aux points −1, 0 et 1.
2. Construire une méthode de quadrature comme suit :
Z 1 Z 1
f (τ) dτ ≈ p(τ) dτ.
0 0

NB : on intègre sur [0, 1] mais on interpole en −1, 0 et 1.


3. À l’aide d’un changement de variable affine entre l’intervalle [0, 1] et l’intervalle [a, b], en déduire une formule de
quadrature pour l’intégrale
Z b
f (x) dx
a

lorsque f est une fonction de classe C 1 ([2a − b, b]).


Remarque : [2a − b, b] = [a − (b − a), a + (b − a)]
4. Considérons le problème de C AUCHY : trouver y : [t 0 , T ] ⊂ R → R tel que
(
y ′ (t ) = ϕ(t , y(t )), ∀t ∈ [t 0 , T ],
y(t 0 ) = y 0 ,

dont on suppose l’existence d’une unique solution y.


T − t0
On subdivise l’intervalle [t 0 ; T ] en N intervalles [t n ; t n+1 ] de largeur h = avec t n = t 0 + nh pour n = 0, . . . , N .
N
Utiliser la formule obtenue au point 3 pour approcher l’intégrale
Z t n+1
ϕ(t , y(t )) dt .
tn

En déduire un schéma à deux pas implicite pour l’approximation de la solution du problème de C AUCHY.

Correction
1. On cherche les coefficients α, β et γ du polynôme p(τ) = α + βτ + γτ2 tels que

 α − β + γ = f (−1),
 
 p(−1) = f (−1),
 
p(0) = f (0), c’est à dire α = f (0),
 
p(1) = f (1), α + β + γ = f (1).
 

f (1)− f (−1) f (1)−2 f (0)+ f (−1)


Donc α = f (0), β = 2 et γ = 2 .
2. On en déduit la méthode de quadrature
1 1 β γ − f (−1) + 8 f (0) + 5 f (1)
Z Z
f (τ) dτ ≈ p(τ) dτ = α + + = .
0 0 2 3 12

3. Soit x = mτ + q, alors
( (
Z b Z 1 a = q, m = b − a,
f (x) dx = m f (mτ + q) dτ avec i.e.
a 0 b = m + q, q = a,

d’où le changement de variable x = (b − a)τ + a. On en déduit la formule de quadrature


Z b Z 1 − f (2a − b) + 8 f (a) + 5 f (b)
f (x) dx = (b − a) f ((b − a)τ + a) dτ ≈ (b − a) .
a 0 12

4. On pose a = t n et b = t n+1 d’où la formule de quadrature


Z t n+1 − f (2t n − t n+1 ) + 8 f (t n ) + 5 f (t n+1 ) − f (t n−1 ) + 8 f (t n ) + 5 f (t n+1 )
f (t ) dt ≈ (t n+1 − t n ) =h .
tn 12 12

182 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires

En utilisant la formule de quadrature pour l’intégration de l’EDO y ′ (t ) = ϕ(t , y(t )) entre t n et t n+1 on obtient
Z t n+1 −ϕ(t n−1 , y(t n−1 )) + 8ϕ(t n , y(t n )) + 5ϕ(t n+1 , y(t n+1 ))
y(t n+1 ) = y(t n ) + ϕ(t , y(t )) dt ≈ h .
tn 12

Si on note u n une approximation de la solution y au temps t n , on obtient le schéma à deux pas implicite suivant :


 u 0 = y(t 0 ) = y 0 ,

u 1 à définir,


u −ϕ(t n−1 , u n−1 ) + 8ϕ(t n , u n ) + 5ϕ(t n+1 , u n+1 )
n+1 = u n + h n = 1, 2, . . . N − 1
12
On peut utiliser une prédiction d’Euler explicite pour initialiser u 1 :


 u 0 = y(t 0 ) = y 0 ,

u 1 = u 0 + hϕ(t 0 , u 0 ),


u −ϕ(t n−1 , u n−1 ) + 8ϕ(t n , u n ) + 5ϕ(t n+1 , u n+1 )
n+1 = u n + h n = 1, 2, . . . N − 1
12

Exercice 4.21 (Interpolation, Quadrature et EDO)


1. Soit h > 0 et f : [a − h, a + h] → R une fonction de classe C 1 ([a − h, a + h]). Écrire le polynôme p ∈ R2 [x] qui
interpole f aux points a −h et a, i.e. l’équation de la droite p ∈ R2 [x] qui passe par les deux points (a −h, f (a −h))
et (a, f (a)).
2. Construire une méthode de quadrature comme suit :
Z a+h Z a+h
f (x) dx ≈ p(x) dx.
a a

NB : on intègre sur [a, a + h] mais on interpole en a − h et a.


3. Considérons le problème de C AUCHY : trouver y : [t 0 , T ] ⊂ R → R tel que
(
y ′ (t ) = ϕ(t , y(t )), ∀t ∈ [t 0 , T ],
y(t 0 ) = y 0 ,

dont on suppose l’existence d’une unique solution y.


T − t0
On subdivise l’intervalle [t 0 ; T ] en N intervalles [t n ; t n+1 ] de largeur h = avec t n = t 0 + nh pour n = 0, . . . , N .
N
Utiliser la formule obtenue au point 2 pour approcher l’intégrale
Z t n+1
ϕ(t , y(t )) dt .
tn

En déduire un schéma à deux pas explicite pour l’approximation de la solution du problème de C AUCHY.

Correction
f (a) − f (a − h) f (a) − f (a − h)
1. p(x) = (x − a) + f (a) = (x − a) + f (a).
a − (a − h) h
2. On en déduit la méthode de quadrature
Z a+h Z a+h
f (x) dx ≈ p(x) dx
a a
¸a+h
f (a) − f (a − h) (x − a)2
·
= + f (a) [x]a+h
a
h 2 a
f (a) − f (a − h) ¡
(a + h − a)2 − (a − a)2 + f (a)(a + h − a)
¢
=
2h
f (a) − f (a − h) 2
= h + h f (a)
2h
3 f (a) − f (a − h)
=h .
2

© 2020-2021 G. Faccanoni 183


Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023

3. On pose a = t n et a + h = t n+1 d’où la formule de quadrature


Z t n+1 3 f (t n ) − f (2t n − t n+1 ) 3 f (t n ) − f (t n−1 )
f (t ) dt ≈ (t n+1 − t n ) =h .
tn 2 2

En utilisant la formule de quadrature pour l’intégration de l’EDO y ′ (t ) = ϕ(t , y(t )) entre t n et t n+1 on obtient
t n+1 3ϕ(t n , y(t n )) − ϕ(t n−1 , y(t n−1 ))
Z
y(t n+1 ) = y(t n ) + ϕ(t , y(t )) dt ≈ h .
tn 2

Si on note u n une approximation de la solution y au temps t n , on obtient le schéma à deux pas implicite suivant :


 u 0 = y(t 0 ) = y 0 ,

u 1 à définir,


u 3ϕ(t n−1 , u n−1 ) − ϕ(t n , u n )
n+1 = u n + h n = 1, 2, . . . N − 1
2
On peut utiliser une prédiction d’Euler explicite pour initialiser u 1 :


 u 0 = y(t 0 ) = y 0 ,

u 1 = u 0 + hϕ(t 0 , u 0 ),


u 3ϕ(t n−1 , u n−1 ) − ϕ(t n , u n )
n+1 = u n + h n = 1, 2, . . . N − 1
2

184 © 2020-2021 G. Faccanoni


CHAPITRE 5

De l’interpolation à l’approximation d’EDO

Les équations différentielles décrivent l’évolution de nombreux phénomènes dans des domaines variés. Une équation
différentielle est une équation impliquant une ou plusieurs dérivées d’une fonction inconnue. Si toutes les dérivées sont
prises par rapport à une seule variable, on parle d’équation différentielle ordinaire (EDO). Une équation mettant en jeu des
dérivées partielles est appelée équation aux dérivées partielles (EDP).

5.1. EDO : généralités


Une EDO (voir par exemple [1, Ch. 8]) est une équation exprimée sous la forme d’une relation

F (y(t ), y ′ (t ), y ′′ (t ), . . . , y (p) (t )) = g (t )

⋆ dont les inconnues sont une fonction y : I ⊂ R → R et son intervalle de définition I


⋆ dans laquelle cohabitent à la fois la fonction inconnue y et ses dérivées y ′ , y ′′ , . . .,y (p) (p est appelé l’ordre de
l’équation).
Si la fonction g , appelée «second membre» de l’équation, est nulle, on dit que l’équation en question est homogène.
Nous pouvons nous limiter aux équations différentielles du premier ordre, car une équation d’ordre p > 1 peut toujours se
ramener à un système de p équations d’ordre 1.
Dans la suite nous ne considérerons que des EDO d’ordre 1 écrite sous la forme

y ′ (t ) = ϕ(t , y(t )).

Si ϕ ne dépend pas explicitement de t (i.e. si ϕ(t , y(t )) = ϕ(y(t ))), l’EDO est dite autonome.
Résoudre une équation différentielle. C’est chercher toutes les fonctions, définies sur un intervalle I ⊂ R, qui satisfont
l’équation (on dit aussi intégrer l’équation différentielle). 1
Solution générale, solution particulière. Par le terme solution générale d’une EDO on désigne un représentant de l’en-
semble des solutions. L’une des solutions de l’EDO sera appelée solution particulière. On appelle courbes intégrales
d’une EDO les courbes représentatives des solutions de l’équation.
Condition initiale pour une EDO d’ordre 1. Une EDO admet généralement une infinité de solutions. Pour choisir, entre
les différentes solutions, celle qui décrit le problème physique, il faut considérer d’autres données qui dépendent de
la nature du problème, par exemple la valeur prise par la solution en un point de l’intervalle d’intégration : y(t 0 ) = y 0
impose en t 0 la valeur y 0 de la fonction inconnue. En pratique, se donner une CI revient à se donner le point (t 0 , y 0 )
par lequel doit passer le graphe de la fonction solution et la valeur de ses dérivées en ce même point.

E XEMPLE
Résoudre l’équation différentielle y ′ (t ) = −y(t ) signifie chercher toutes les fonctions

y: I ⊂R→R
t 7→ y = f (t )

telles que f ′ (t ) = − f (t ) pour tout t ∈ I . On peut vérifier que y(t ) = ce −t pour tout t ∈ R (où c est constante réelle quelconque)
est solution de l’EDO, elle est même la solution générale. Si parmi toutes ces solutions, on cherche celle qui vérifie y(0) = 0,
on trouve que c doit être nul : c’est une solution particulière.
1. Résoudre une équation c’est chercher toutes les valeurs de l’inconnue qui satisfont l’égalité. Dans les équations rencontrées jusqu’à présent, les
inconnues étaient des nombres. Par exemple, résoudre l’équation 2x + 4 = 10 signifie chercher toutes les valeurs de x ∈ R telles que 2x + 4 = 10. Dans les
équations différentielles, les inconnues sont des fonctions.

185
Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Définition 5.1 (Problème de C AUCHY)


Soit I ⊂ R un intervalle, t 0 un point de I , ϕ : I × R → R une fonction donnée continue par rapport aux deux variables et y ′ la
dérivée de y par rapport à t . On appelle problème de C AUCHY le problème
trouver une fonction réelle y ∈ C 1 (I ) telle que
(
y ′ (t ) = ϕ(t , y(t )), ∀t ∈ I ,
(5.1)
y(t 0 ) = y 0 ,

avec y 0 une valeur donnée appelée donnée initiale.

Résoudre un problème de C AUCHY, c’est chercher toutes les fonctions, définies sur un intervalle I ⊂ R, qui satisfont l’équation
et qui vérifient la condition initiale. On aura donc des questions naturelles telles
⋆ trouver toutes les fonctions solutions de l’EDO (i.e. la solution générale),
⋆ parmi toutes ces fonctions, choisir celles qui vérifient la CI (existence ? unicité ?),
⋆ parmi toutes ces fonctions, étudier le domaine de définition (pour chaque fonction trouvée, quel est le plus grande
domaine de définition qui contient le point t 0 ?)

Proposition 5.2
Le problème de Cauchy (5.1) est équivalent à l’équation intégrale
Z t
y(t ) = y 0 + ϕ(s, y(s)) ds. (5.2)
t0

P REUVE
En intégrant l’EDO entre t 0 et t et en considérant la donnée initiale (5.1) on obtient
Z t
y(t ) = y 0 + ϕ(s, y(s)) ds.
t0

La solution du problème de Cauchy est donc de classe C 1 (I ) sur I et satisfait l’équation intégrale (5.2).
Inversement, si y est définie par (5.2), alors elle est continue sur I et y(t 0 ) = y 0 . De plus, en tant que primitive de la fonction
continue ϕ(·, y(·)), la fonction y est de classe C 1 (I ) et satisfait l’équation différentielle y ′ (t ) = ϕ(t , y(t )).
Ainsi, si ϕ est continue, le problème de Cauchy (5.1) est équivalent à l’équation intégrale (5.2).

Nous verrons plus loin comment tirer parti de cette équivalence pour les méthodes numériques.

5.1.1. Existence et unicité


Considérons un exemple de problème de Cauchy :

E XEMPLE (E XISTENCE ET UNICITÉ SUR R DE LA SOLUTION D ’ UN PROBLÈME DE C AUCHY )


On se donne ϕ(t , y(t )) = 3t − 3y(t ) et y 0 = α (un nombre quelconque). On cherche une fonction y : t ∈ R 7→ y(t ) ∈ R qui
satisfait (
y ′ (t ) = 3t − 3y(t ), ∀t ∈ R,
y(0) = α.

Sa solution, définie sur R, est donnée par y(t ) = (α + 1/3)e −3t + t − 1/3. En effet on a bien

y(0) = (α + 1/3)e 0 + 0 − 1/3 = α, y ′ (t ) = −3(α + 1/3)e −3t + 1 = −3(α + 1/3)e −3t + 1 − 3t + 3t = −3y(t ) + 3t .

Cet exemple montre le cas où il existe une et une seule solution du problème de C AUCHY définie sur R. Les choses ne se
passent pas toujours si bien. Les exemples ci-dessous montrent que l’étude mathématique de l’existence et de l’unicité des
solutions d’un problème de C AUCHY peut être une affaire délicate.

E XEMPLE (N ON UNICITÉ p DE LA SOLUTION D ’ UN PROBLÈME DE C AUCHY )


On se donne ϕ(t , y(t )) = 3 y(t ) et y 0 = 0. On cherche une fonction y : t ∈ R+ 7→ y(t ) ∈ R qui satisfait
(
y ′ (t ) =
p
3
y(t ), ∀t > 0,
y(0) = 0.

186 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

p
On vérifie que les fonctions y 1 (t ) = 0 et y 2,3 (t ) = ± 8t 3 /27, pour tout t ≥ 0, sont toutes les trois solution du problème de
C AUCHY donné. Cet exemple montre qu’un problème de C AUCHY n’a pas nécessairement de solution unique.

E XEMPLE (N ON UNICITÉ DE LA SOLUTION D ’ UN PROBLÈME DE C AUCHY )


On se donne ϕ(t , y(t )) = |y(t )|α avec α ∈]0; 1[ et y 0 = 0. On cherche une fonction y : t ∈ R+ 7→ y(t ) ∈ R qui satisfait

y ′ (t ) = |y(t )|α , ∀t > 0,


(

y(0) = 0.

On vérifie que, pour tout c ∈ R+ , les fonctions


(
(1 − α)1/(1−α) (x − c)1/(1−α) si x ≥ c,
y c (t ) =
0 si 0 ≤ x ≤ c

sont solution du problème de C AUCHY donné.


Cet exemple montre qu’un problème de C AUCHY peut admettre une infinité de solutions.
Notons que pour α ≥ 1 le problème de C AUCHY donné admet une et une seule solution, la fonction y(t ) = 0 pour tout t ∈ R+ .

E XEMPLE (E XISTENCE ET UNICITÉ SUR I ⊂ R ( MAIS NON EXISTENCE SUR R) DE LA SOLUTION D ’ UN PROBLÈME DE C AUCHY )
On se donne ϕ(t , y(t )) = (y(t ))3 et y 0 = 1. On cherche une fonction y : t ∈ R+ 7→ y(t ) ∈ R qui satisfait
(
y ′ (t ) = (y(t ))3 , ∀t > 0,
y(0) = 1.

On vérifie que la solution y est donnée par y(t ) = p 1 qui n’est définie que pour t ∈ [0; 1/2[. Cet exemple montre qu’un
1−2t
problème de C AUCHY n’a pas toujours une solution pour tout t ∈ [0; +∞[ puisqu’ici la solution explose lorsque t tend vars la
valeur 1/2 (en effet, nous avons lim − y(t ) = +∞) : le graphe de la solution a une asymptote verticale en t = 1/2. On parle
t →(1/2)
d’explosion de la solution en temps fini ou encore de barrière.

Ceci est un phénomène général : pour une solution d’une EDO, la seule façon de ne pas être définie sur R est d’avoir un
asymptote verticale.

De façon générale, lorsqu’on se donne une équation différentielle et une condition initiale y(t 0 ) = y 0 , on cherche un
intervalle I , contenant t 0 , sur lequel une solution existe, et qui soit «le plus grand possible» : il n’existe pas d’intervalle plus
grand sur lequel l’équation différentielle ait une solution.

Dans ce cours, nous ne considérerons que des problèmes de C AUCHY admettant une et une seule solution sur l’intervalle
indiqué.

5.2. Calcul analytique des solutions de quelques types d’EDO d’ordre 1


5.2.1. EDO d’ordre 1 à variables séparables
Lorsque l’équation est de la forme
f (y(x))y ′ (x) = g (x)
où f et g sont des fonctions données dont on connaît des primitives F et G, on a
Z Z
f (y(x))y ′ (x) dx = g (x) dx
| R {z } | {z }
= f (u) du=F (u) G(x)+C

donc
F (y(x)) = G(x) +C où C ∈ R,
et si F possède une fonction réciproque F −1 , on en déduit

y(x) = F −1 (G(x) +C ),

relation qui donne toutes les solutions de l’équation. Cette solution générale dépend de la constante d’intégration C .

© 2020-2021 G. Faccanoni 187


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Astuce (Astuce mnémotechnique)


En pratique, étant donné que y ′ (x) = dy/ dx, on peut écrire l’équation f (y(x))y ′ (x) = g (x) sous la forme

f (y) dy = g (x) dx,

puis intégrer formellement les deux membres


Z Z
f (y) dy = g (x) dx,

pour obtenir F (y) = G(x) +C et exprimer y en fonction de x.

E XEMPLE
On veut résoudre l’équation différentielle y ′ (x) = x y(x) sur des intervalles à préciser. Il s’agit d’une EDO du premier ordre à
variables séparables :
⋆ Recherche des solutions constantes. Si y(x) = A pour tout x alors y ′ (x) = 0 pour tout x et l’EDO devient 0 = x A pour
tout x. Par conséquent A = 0 : la fonction y(x) = 0 pour tout x est l’unique solution constante de l’EDO.
⋆ Recherche des solutions non constantes. La fonction y(x) = 0 pour tout x étant solution, toute autre solution x 7→ y(x)
sera donc non nulle. On peut alors diviser l’EDO par y et procéder formellement comme suit :

dy
y ′ (x) dy 1 x2
Z Z
dx
=x =⇒ =x =⇒ = x dx =⇒ dy = x dx =⇒ ln |y| = +C avec C ∈ R.
y(x) y(x) y y 2

Ainsi, toute solution non nulle est de la forme


2 /2
y(x) = De x avec D ∈ R∗ .

5.2.2. EDO d’ordre 1 linéaire


Elles sont de la forme
a(x)y ′ (x) + b(x)y(x) = g (x)
où a, b et g sont des fonctions données, continues sur un intervalle I ⊂ R. Pour la résolution, on se place sur un intervalle
J ⊂ I tel que la fonction a ne s’annule pas sur J .
Pour x ∈ Db ∩Dg ∩{ x ∈ Da | a(x) ̸= 0 }, toute solution y(x) de cette EDO peut être écrite soit comme somme de deux fonctions
(y H et y P ) soit comme produit de deux fonctions (u et v) :
−A(x)
y(x) = C
| e {z } + B (x)e −A(x)
| {z }
y H (x) y P (x)

avec
b(x)
⋆ A(x) une primitive de ,
a(x)
g (x) A(x)
⋆ B (x) une primitive de e .
a(x)
P REUVE
Pour vérifier que c’est bien une solution il suffit de dériver :

y ′ (x) = C A ′ (x)e −A(x) − B (x)A ′ (x)e −A(x) + B ′ (x)e −A(x)


= −A ′ (x) C e −A(x) + B (x)e −A(x) + B ′ (x)e −A(x)
¡ ¢

= −A ′ (x)y(x) + B (x)e −A(x)


b(x) g (x) A(x) −A(x) b(x) g (x)
=− y(x) + e e =− y(x) +
a(x) a(x) a(x) a(x)

donc a(x)y ′ (x) = −b(x)y(x) + g (x).

Remarque
On peut montrer que

188 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

⋆ y H est la solution générale de l’EDO homogène associée, c’est-à-dire de l’EDO a(x)y ′ (x) + b(x)y(x) = 0 (qui est à
variables séparables) ;
En effet, la fonction y(x) = 0 pour tout x étant solution, toute autre solution x 7→ y(x) sera donc non nulle. On peut
alors diviser l’EDO homogène associée par y et procéder formellement comme suit :

y ′ (x) b(x) 1 b(x) b(x)


Z Z Z
=− =⇒ dy = − − dx =⇒ ln |y| = − dx.
y(x) a(x) y a(x) a(x)

Ainsi, toute solution non nulle de l’équation homogène associée est de la forme

b(u)
Z
y H (x) = C e −A(x) où A(x) = du
a(u)

avec C constante arbitraire.


⋆ y P est une solution particulière.
Cette solution particulière peut être une solution «évidente», par exemple une solution constante. Dans la quête d’une
solution évidente (non constante) le principe de superposition peut être utile : soient a et b deux réels et g 1 , g 2 , . . . , g n
n des applications continues sur un intervalle I de R. Si y k est une solution particulière de l’EDO a y ′ (x)+b y(x) = g k (x)
alors nk=1 y k est une solution particulière de l’EDO a y ′ (x) + b y(x) = nk=1 g k (x).
P P

Si on ne trouve pas de solution particulière on peut en chercher une par la méthode de L AGRANGE ou de variation de la
constante. Si y 1 (x) est une solution non nulle de l’EDO homogène, on introduit une fonction auxiliaire inconnue B (x)
telle que y(x) = B (x)y 1 (x) soit solution de notre EDO. On calcule alors y ′ (x) et on reporte y ′ (x) et y(x) dans notre EDO.
On observe que K (x) disparaît, ce qui fournit une auto-vérification. Il ne reste que B ′ (x), ce qui permet de calculer
B (x) et donc y P (x).

E XEMPLE
Considérons l’EDO
y ′ (x) − y(x) = x.
On a

a(x) = 1, b(x) = −1, g (x) = x.

Pour x ∈ R on a
R
⋆ A(x) = −1 dx = −x,

⋆ B (x) = xe −x dx = −(1 + x)e −x ,


R

donc
y(x) = C − (1 + x)e −x e x = C e x − (1 + x).
¡ ¢

E XEMPLE (L OI DE N EWTON K)
Considérons une tasse de café à la température de 75◦ C dans une salle à 25◦ C. Après 5 minutes le café est à 50◦ C. Si on
suppose que la vitesse de refroidissement du café est proportionnelle à la différence des températures (i.e. que la température
du café suit la loi de Newton), cela signifie qu’il existe une constante γ < 0 telle que la température vérifie l’EDO du premier
ordre
T ′ (t ) = γ(T (t ) − 25)
avec la CI
T (5) = 50,
ayant convenu qu’une unité de temps correspond à une minute et la température est mesuré en degré Celsius.
1. On commence par calculer toutes les solutions de l’EDO. Étant une équation différentielle du premier ordre, la
famille de solutions dépendra d’une constante qu’on fixera en utilisant la CI. Si on réécrit l’EDO sous la forme
T ′ (t ) − γT (t ) = −25γ, on a une EDO linéaire d’ordre 1 avec a(t ) = 1, b(t ) = −γ et g (t ) = −25γ. Donc
R
⋆ A(t ) = −γ dt = −γt ,

⋆ B (t ) = −25γe A(t ) dt = 25 −γe −γt dt = 25e −γt .


R R

Toutes les solutions de l’EDO sont les fonctions T (t ) = De γt + 25 pour D ∈ R.


Notons que la seule solution constante est la fonction T (t ) = 25 pour tout t > 0.
2. La valeur numérique de la constante d’intégration D est obtenue grâce à la CI :

75 = T (0) = 25 + De γ·0 =⇒ D = 50 =⇒ T (t ) = 25 + 50e γt .

© 2020-2021 G. Faccanoni 189


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

3. Il ne reste qu’à établir la valeur numérique de la constante de refroidissement γ grâce à l’«indice» :

ln(2) ln(2)
50 = T (5) = 25 + 50e γt =⇒ γ=− =⇒ T (t ) = 25 + 50e − 5 t
5

On peut donc conclure que la température du café évolue selon la fonction


ln(2)
T (t ) = 25 + 50e − 5 t .

T [◦ C]
75

50

25

0 t [minutes]
5 10 15

5.2.3. EDO d’ordre 1 de Bernoulli


Elles sont du premier ordre et de la forme

u(x)y ′ (x) + v(x)y(x) = w(x)(y(x))α , α ∈ R \ { 0; 1 }

où u, v et w sont des fonctions données, continues sur un intervalle I ⊂ R. Pour la résolution, on se place sur un intervalle
J ⊂ I tel que la fonction u ne s’annule pas sur J et on définit une nouvelle fonction x 7→ z(x) = (y(x))1−α . L’EDO initiale est
alors équivalente à l’EDO linéaire du premier ordre suivante : 2

u(x) z ′ (x) + (1 − α)v(x) z(x) = (1 − α)w(x) .


|{z} | {z } | {z }
a(x) b(x) g (x)

Par conséquent, pour x ∈ Dv ∩ Dw ∩ { x ∈ Du | u(x) ̸= 0 }, toute solution y s’écrit comme y(x) = [z(x)]1/(1−α) avec
−A(x) −A(x)
⋆ z(x) = C
| e {z } + |B (x)e
{z }
,
y H (x) y P (x)
v(x)
⋆ A(x) une primitive de (1 − α) ,
u(x)
w(x) A(x)
⋆ B (x) une primitive de (1 − α) e .
u(x)

E XEMPLE
On se propose de résoudre l’équation différentielle

1 1
y ′ (x) + y(x) = (x − 1)y 3 (x).
2 2
Il s’agit d’une équation différentielle de B ERNOULLI. Comme u(x) = 1 pour tout x ∈ R, on cherche sa solution générale sur R.
v(x) 1/2
Z Z
⋆ A(x) = (1 − α) dx = −2 dx = −x,
u(x) 1
w(x) A(x) (x − 1)/2 −x
Z Z Z Z
⋆ B (x) = (1 − α) e dx = −2 e dx = (1 − x)e −x dx = −(1 − x)e −x − e −x dx = xe −x ,
u(x) 1
⋆ z(x) = (C + B (x)) e −A(x)
= (C + xe )e = C e x + x,
−x x

et on conclut que la solution générale de l’EDO de B ERNOULLI assignée est

1
y(x) = p .
x +C e x

Notons que y n’est définie que si x +C e x > 0.

2. Formellement z = y 1−α implique d’une part y = z y α et d’autre part z ′ = (1 − α)y −α y ′ et donc y ′ = (1 − α)z ′ y α .

190 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

5.2.4. Équations différentielles linéaires homogène d’ordre 2


Considérons l’équation différentielle
x ′′ (t ) + Ax ′ (t ) + B x(t ) = 0.
Si on pose y 1 (t ) = x(t ) et y 2 (t ) = x ′ (t ), elle est équivalente au système
def def

(
y 1′ (t ) = x ′ (t ) = y 2 (t ),
µ ¶
0 1
soit encore y′ (t ) = y(t )
y 2′ (t ) = x ′′ (t ) = −Ax ′ (t ) − B x(t ) = −B y 1 (t ) − Ay 2 (t ), −B −A

On peut prouver que la solution générale de ce système s’écrit

y(t ) = e λ1 t v1 + e λ2 t v2

où λi est une valeur propre de µ ¶


0 1
A=
def

−B −A

et vi la vecteur propre associée.


On trouve ainsi que λi est une solution de λ2 + Aλ + B = 0.

E XEMPLE
Calculer la solution générale t 7→ x(t ) de l’équation différentielle

x ′′ (t ) + 2x ′ (t ) − 3x(t ) = 0.

La matrice A est
¡0 1
¢
3 −2 . Le polynôme caractéristique est donc

0−λ
µ ¶
1
p(λ) = det = (0 − λ)(−2 − λ) − 3 = λ2 + 2λ − 3 = (λ − 1)(λ + 3)
3 −2 − λ

donc on a les deux valeurs propres λ1 = 1 et λ2 = −3.


Calculons maintenant les vecteurs propres associés : vi est un vecteur propre associé à la valeur propre λi si

0 − λi
µ ¶ µ ¶
1 i 0
v =
3 −2 − λi 0

⋆ Pour λ1 = 1 on doit résoudre


v 11
µ ¶µ ¶ µ ¶
−1 1 0
=
3 −3 v 21 0

donc v1 = (κ1 , κ1 )T .
⋆ Pour λ2 = −3 on doit résoudre
v 12
µ ¶µ ¶ µ ¶
3 1 0
=
3 1 v 22 0

donc v2 = (κ2 , −3κ2 )T .


On conclut que
(
κ1 t κ2 y 1 (t ) = κ1 e t + κ2 e −3t ,
¶ µ µ ¶ µ ¶
y1
y(t ) = (t ) = e λ1 t v1 + e λ2 t v2 = e + e −3t soit encore
y2 κ1 −3κ2 y 2 (t ) = κ1 e t − 3κ2 e −3t ,

et enfin
x(t ) = κ1 e t + κ2 e −3t .
Vérifions notre résultat :

x(t ) = κ1 e t + κ2 e −3t ,
x ′ (t ) = κ1 e t − 3κ2 e −3t ,
x ′′ (t ) = κ1 e t + 9κ2 e −3t ,
x ′′ (t ) + 2x ′ (t ) − 3x(t ) = κ1 e t + 9κ2 e −3t + 2κ1 e t − 6κ2 e −3t − 3κ1 e t − 3κ2 e −3t = 0 ∀κ1 , κ2 ∈ R.

© 2020-2021 G. Faccanoni 191


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

5.3. Quelques schémas numériques


En pratique, on ne peut expliciter les solutions analytiques que pour des équations différentielles ordinaires très particulières.
Dans certains cas, on ne peut exprimer la solution que sous forme implicite.

E XEMPLE
y(t )−t
C’est le cas par exemple de l’EDO y ′ (t ) = y(t )+t dont les solutions vérifient la relation implicite

y(t )
µ ¶
1
ln(t 2 + y 2 (t )) + arctan = C,
2 t

où C est une constante arbitraire.

Dans d’autres cas, on ne parvient même pas à représenter la solution sous forme implicite.

E XEMPLE
2
C’est le cas par exemple de l’EDO y ′ (t ) = e −t dont les solutions ne peuvent pas s’écrire comme composition de fonctions
élémentaires.

Pour ces raisons, on cherche des méthodes numériques capables d’approcher la solution de toutes les équations différen-
tielles qui admettent une solution.

Considérons le problème de C AUCHY (5.1) :


trouver une fonction y : I ⊂ R → R définie sur un intervalle I telle que
(
y ′ (t ) = ϕ(t , y(t )), ∀t ∈ I =]t 0 , T [,
y(t 0 ) = y 0 ,

avec y 0 une valeur donnée et supposons que l’on ait montré l’existence et l’unicité d’une solution y pour t ∈ I .
On subdivise l’intervalle I = [t 0 ; T ], avec T < +∞, en N intervalles [t n ; t n+1 ] de largeur h = T N −t 0
avec t n = t 0 + nh pour
n = 0, . . . , N . La longueur h est appelé le pas de discrétisation.
Pour chaque©nœud t n , on note ª y n = y(t n ) et on cherche la valeur inconnue u n qui approche la valeur exacte
© y n ; l’ensembleª
des valeurs y 0 , y 1 , . . . , y N représente la solution exacte discrète tandis que l’ensemble des valeurs u 0 = y 0 , u 1 , . . . , u N
représente la solution numérique. Cette solution approchée sera obtenue en construisant une suite définie par récurrence.
Les schémas qu’on va construire permettent de calculer (explicitement ou implicitement) u n+1 à partir de u n , u n−1 , . . . , u n−k
et il est donc possible de calculer successivement u 1 , u 2 ,. . ., en partant de u 0 par une formule de récurrence de la forme
(
u0 = y 0 ,
u n+1 = Φ(u n+1 , u n , u n−1 , . . . , u n−k ), ∀n ∈ N.

Définition 5.3 (Méthodes explicites et méthodes implicites)


Une méthode est dite explicite si la valeur u n+1 peut être calculée directement à l’aide des valeurs précédentes u k , k ≤ n (ou
d’une partie d’entre elles) : (
u0 = y 0 ,
u n+1 = Φ(
X X, u n , u n−1 , . . . , u n−k ), ∀n ∈ N.
u n+1


X
Une méthode est dite implicite si u n+1 n’est définie que par une relation implicite faisant intervenir la fonction ϕ :
(
u0 = y 0 ,
u n+1 = Φ(u n+1 , u n , u n−1 , . . . , u n−k ), ∀n ∈ N.

Définition 5.4 (Méthodes à un pas et méthodes multi-pas)


Une méthode numérique pour l’approximation du problème de C AUCHY (5.1) est dite à un pas si pour tout n ∈ N, u n+1 ne
dépend que de u n et éventuellement de lui-même :
(
u0 = y 0 ,
u n+1 = Φ(u n+1 , u n ), ∀n ∈ N.

192 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

Autrement, on dit que le schéma est une méthode multi-pas (ou à pas multiples) :
(
u0 = y 0 ,
u n+1 = Φ(u n+1 , u n , u n−1 , . . . , u n−k ), ∀n ∈ N.

5.3.1. Schémas classiques


Si nous intégrons l’EDO y ′ (t ) = ϕ(t , y(t )) entre t n et t n+1 nous obtenons
Z t n+1
y n+1 − y n = ϕ(t , y(t ))d t .
tn

On peut construire différentes schémas selon la formule d’approximation utilisée pour approcher le membre de droite.
Cette solution approchée sera obtenue en construisant une suite récurrente comme suit :

 u0 = y 0 ,
Z t n+1 ¡
un polynôme d’interpolation de ϕ(t , u) dt .
¢
 u n+1 = u n +
tn

① Si on remplace une fonction f par une constante égale à la valeur de f en la borne gauche de l’intervalle [a; b]
(polynôme qui interpole f en le point (a, f (a)) et donc de degré 0), on a

f˜(x) = f (a)
Z b Z b
f (x) dx ≈ f˜(x) dx = (b − a) f (a).
a a

En utilisant cette formule pour approcher la fonction t 7→ ϕ(t , y(t )) on a


Z t n+1
ϕ(t , y(t ))d t ≈ hϕ(t n , y(t n ))
tn

et on obtient le schéma d’E ULER progressif


(
u 0 = y(t 0 ) = y 0 ,
(5.3)
u n+1 = u n + hϕ(t n , u n ) n = 0, 1, 2, . . . N − 1

Il s’agit d’un schéma à 1 pas explicite car il permet d’expliciter u n+1 en fonction de u n .
La function eulerexplicite prend en entrée t0 et T les extrêmes de l’intervalle d’intégration, y0 la donnée initiale,
N le nombre de sous-intervalles qu’on va considérer et phi une chaîne contenant l’expression de ϕ(t , y) et elle donne
en sortie t le vecteur contenant la discrétisation et u le vecteur contenant l’approximation de y en chaque point t n .
1;

function [t,u]=eulerexplicite(t0,T,y0,N,phi)
t=linspace(t0,T,N);
u=zeros(N,1);
u(1)=y0;
h=t(2)-t(1);
for n=1:N-1
u(n+1) = u(n)+h*phi(t(n),u(n));
end
end

% TEST :
phi=@(t,y)[-y];
[t,u]=eulerexplicite(0,10,100,11,phi);
plot(t,u,’o-’,t,100*exp(-t))

② Si on remplace une fonction f par une constante égale à la valeur de f en la borne droite de l’intervalle [a; b]
(polynôme qui interpole f en le point (b, f (b)) et donc de degré 0), on a

f˜(x) = f (b)

© 2020-2021 G. Faccanoni 193


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Z b Z b
f (x) dx ≈ f˜(x) dx = (b − a) f (b).
a a

En utilisant cette formule pour approcher la fonction t 7→ ϕ(t , y(t )) on a


Z t n+1
ϕ(t , y(t ))d t ≈ hϕ(t n+1 , y(t n+1 ))
tn

et on obtient le schéma d’E ULER rétrograde


(
u 0 = y(t 0 ) = y 0 ,
(5.4)
u n+1 − hϕ(t n+1 , u n+1 ) = u n n = 0, 1, 2, . . . N − 1

Il s’agit d’un schéma à 1 pas implicite car il ne permet pas d’expliciter directement u n+1 en fonction de u n lorsque
la fonction f n’est pas triviale. Pour calculer u n+1 il faudra utiliser un schéma pour le calcul du zéro d’une fonction
quelconque (par exemple la méthode de la dichotomie).
La function prend en entrée t0 et T les extrêmes de l’intervalle d’intégration, y0 la donnée initiale, N le nombre de
sous-intervalles qu’on va considérer et phi une chaîne contenant l’expression de ϕ(t , y) et elle renvoit t le vecteur
contenant la discrétisation de l’intervalle [t 0 , T ] et u le vecteur contenant l’approximation de y en chaque point t n .
Comme il s’agit d’un schéma implicite on calcule u n+1 en utilisant la fonction prédéfinie fzero :
⋆ à chaque étape n on doit résoudre une équation du type u n+1 = G(u n ) + F (u n+1 ) d’inconnue u n+1 ;
⋆ on définit une fonction y 7→ G(u n ) + F (y) − y comme une fonction anonyme temp=@(y)[G(u(n))+F(y)-y] ;
⋆ résoudre l’équation équivaut à chercher un zéro de la fonction anonyme, on utilise alors la fonction fzero et
comme point de départ on prendra u n : fzero(temp(y),u(n)).

1;

function [t,u]=eulerimplicite(t0,T,y0,N,phi)
t=linspace(t0,T,N);
u=zeros(N,1);
u(1)=y0;
h=t(2)-t(1);
for n=1:N-1
u(n+1)=fzero(@(y) u(n)+h*phi(t(n+1),y)-y, u(n));
end
end

% TEST :
phi=@(t,y)[-y];
[t,u]=eulerimplicite(0,10,100,11,phi);
plot(t,u,’o-’,t,100*exp(-t))

③ Si on remplace une fonction


³ f ³par une
´´ constante égale à la valeur de f au milieu de l’intervalle [a; b] (polynôme qui
a+b a+b
interpole f en le point 2 ,f 2 et donc de degré 0), on a
³ ´
f˜(x) = f a+b
2
Z b Z b ³ ´
f (x) dx ≈ f˜(x) dx = (b − a) f a+b
2 .
a a

En utilisant cette formule pour approcher la fonction t 7→ ϕ(t , y(t )) on a


Z t n+1 µ
h
µ
h
¶¶
ϕ(t , y(t ))d t ≈ hϕ t n + , y t n +
tn 2 2

et on obtient (
u 0 = y(t 0 ) = y 0 ,
³ ´
u n+1 = u n + hϕ t n + h2 , u n+1/2 n = 0, 1, 2, . . . N − 1

où u n+1/2 est une approximation de y(t n + h/2). Nous pouvons utiliser une prédiction d’E ULER progressive sur un
demi-pas pour approcher le u n+1/2 dans le terme ϕ(t n + h/2, u n+1/2 ) par ũ n+1/2 = u n + (h/2)ϕ(t n , u n ). Nous avons

194 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

construit ainsi un nouveau schéma appelé schéma d’E ULER modifié qui s’écrit

 u 0 = y(t 0 ) = y 0 ,


ũ n+1/2 = u n + (h/2)ϕ(t n , u n ), (5.5)
³ ´
h

u
n+1 = u n + hϕ t n + 2 , ũ n+1/2 n = 0, 1, 2, . . . N − 1

Il s’agit d’un schéma à 1 pas explicite car il permet d’expliciter u n+1 en fonction de u n .
1;

function [t,u]=eulermodifie(t0,T,y0,N,phi)
t=linspace(t0,T,N);
u=zeros(N,1);
u(1)=y0;
h=t(2)-t(1);
for n=1:N-1
utemp=u(n)+h/2*phi(t(n),u(n));
u(n+1)=u(n)+h*phi(t(n)+h/2,utemp);
end
end

% TEST :
phi=@(t,y)[-y];
[t,u]=euleremodifie(0,10,100,11,phi);
plot(t,u,’o-’,t,100*exp(-t))

④ Si on remplace une fonction f par le segment qui relie (a, f (a)) à (b, f (b)) (polynôme qui interpole f en les points
(a, f (a)) et (b, f (b)) et donc de degré 1), on a

f (b)− f (a)
f˜(x) = b−a (x − a) + f (a)
Z b Z b
b−a ¡
f˜(x) dx =
¢
f (x) dx ≈ f (a) + f (b) .
a a 2

En utilisant cette formule pour approcher la fonction t 7→ ϕ(t , y(t )) on a


Z t n+1 h¡
ϕ(t , y(t ))d t ≈ ϕ(t n , y(t n )) + ϕ(t n+1 , y(t n+1 ))
¢
tn 2

et on obtient le schéma du trapèze ou de C RANK -N ICOLSON


(
u 0 = y(t 0 ) = y 0 ,
(5.6)
u n+1 − h2 ϕ(t n+1 , u n+1 ) = u n + h2 ϕ(t n , u n ) n = 0, 1, 2, . . . N − 1

Il s’agit à nouveau d’un schéma à 1 pas implicite car il ne permet pas d’expliciter directement u n+1 en fonction de
u n lorsque la fonction f n’est pas triviale. En fait, ce schéma fait la moyenne des schémas d’E ULER progressif et
rétrograde.
1;

function [t,u]=cranknicolson(t0,T,y0,N,phi)
t=linspace(t0,T,N);
u=zeros(N,1);
u(1)=y0;
h=t(2)-t(1);
for n=1:N-1
u(n+1)=fzero(@(y) -y+u(n)+(h/2)*(phi(t(n),u(n))+phi(t(n+1),y)), u(n));
end
end

% TEST :
phi=@(t,y)[-y];
[t,u]=cranknicolson(0,10,100,11,phi);
plot(t,u,’o-’,t,100*exp(-t))

© 2020-2021 G. Faccanoni 195


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

⑤ Pour éviter le calcul implicite de u n+1 dans le schéma du trapèze, nous pouvons utiliser une prédiction d’E ULER
progressive et remplacer le u n+1 dans le terme ϕ(t n+1 , u n+1 ) par ũ n+1 = u n + hϕ(t n , u n ). Nous avons construit ainsi
un nouveau schéma appelé schéma de H EUN. Plus précisément, la méthode de H EUN s’écrit

 u 0 = y(t 0 ) = y 0 ,

ũ n+1 = u n + hϕ(t n , u n ), (5.7)

u n+1 = u n + h2 ϕ(t n , u n ) + ϕ(t n+1 , ũ n+1 ) n = 0, 1, 2, . . . N − 1
 ¡ ¢

Il s’agit à nouveau d’un schéma à 1 pas explicite.


1;

function [t,u]=heun(t0,T,y0,N,phi)
t=linspace(t0,T,N);
u=zeros(N,1);
u(1)=y0;
h=(T-t0)/N;
for n=1:N-1
u(n+1) = u(n)+(h/2)*( phi(t(n),u(n)) + phi( t(n+1), u(n)+h*phi(t(n),u(n)) ));
end
end

% TEST :
phi=@(t,y)[-y];
[t,u]=heun(0,10,100,11,phi);
plot(t,u,’o-’,t,100*exp(-t))

196 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023

Z t n+1 Z t n+1

© 2020-2021 G. Faccanoni
Nom Points d’interpolation Polynôme p ϕ(t , y(t )) dt ≃ p(t ) dt Schéma
tn tn

(
u 0 = y(t 0 ) = y 0 ,
Euler Explicite tn p(t ) = ϕ(t n , y n ) hϕ(t n , y n )
u n+1 = u n + hϕ(t n , u n )

(
u 0 = y(t 0 ) = y 0 ,
Euler Implicite t n+1 p(t ) = ϕ(t n+1 , y n+1 ) hϕ(t n+1 , y n+1 )
u n+1 = u n + hϕ(t n+1 , u n+1 )



 u 0 = y(t 0 ) = y 0 ,
³ ´ ³ ´ 
Euler modifié t n + h2 p(t ) = ϕ t n + h2 , y n+1/2 hϕ t n + h2 , y n+1/2 ũ n+1/2 = u n + h2 ϕ(t n , u n ),
³ ´


u
n+1 n
= u + hϕ t + h , ũn 2 n+1/2

(
Trapèze ou ϕ(t n+1 ,y n+1 )−ϕ(t n ,y n ) h
¡ ¢ u 0 = y(t 0 ) = y 0 ,
t n et t n+1 p(t ) = t n+1 −t n (t − t n ) + ϕ(t n , y n ) 2 ϕ(t n , y n ) + ϕ(t n+1 , y n+1 )
Crank-Nicolson u n+1 = u n + h2 ϕ(t n , u n ) + h2 ϕ(t n+1 , u n+1 )



 u 0 = y(t 0 ) = y 0 ,
ϕ(t n+1 ,y n+1 )−ϕ(t n ,y n ) h
¡ ¢
Heun t n et t n+1 p(t ) = t n+1 −t n (t − t n ) + ϕ(t n , y n ) 2 ϕ(t n , y n ) + ϕ(t n+1 , y n+1 ) ũ n+1 = u n + hϕ(t n , u n ),


u n+1 = u n + h2 ϕ(t n , u n ) + h2 ϕ(t n+1 , ũ n+1 )

197
Chapitre 5. De l’interpolation à l’approximation d’EDO
Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Remarque
Pour la mise en application d’un schéma il faut aussi prendre en compte l’influence des erreurs d’arrondi. En effet, afin de
minimiser l’erreur globale théorique, on pourrait être tenté d’appliquer une méthode avec un pas très petit, par exemple de
l’ordre de 10−16 , mais ce faisant, outre que le temps de calcul deviendrait irréaliste, très rapidement les erreurs d’arrondi
feraient diverger la solution approchée. En pratique il faut prendre h assez petit pour que la méthode converge assez
rapidement, mais pas trop petit non plus pour que les erreurs d’arrondi ne donnent pas lieu à des résultats incohérent et
pour que les calculs puissent être effectués en un temps raisonnable.

Remarque (Stabilités des schémas numériques)


De manière générale, un schéma numérique est dit stable s’il permet de contrôler la solution quand on perturbe les données.
Il existe de nombreuses notions de stabilité.
Considérons le problème de C AUCHY (5.1) et supposons que l’on ait montré l’existence d’une solution y. Deux questions
naturelles se posent :
⋆ que se passe-t-il lorsqu’on fixe le temps final T et on fait tendre le pas h vers 0 ?
⋆ que se passe-t-il lorsqu’on fixe le pas h > 0 mais on fait tendre T vers l’infini ?
Dans les deux cas le nombre de nœuds tend vers l’infini mais dans le premier cas on s’intéresse à l’erreur en chaque point,
dans le deuxième cas il s’agit du comportement asymptotique de la solution et de son approximation.
A première vue, il semble que le schéma d’E ULER progressif et le schéma de H EUN soient préférable au schéma d’E ULER
rétrograde et de C RANK -N ICOLSON puisque ces derniers ne sont pas explicites. Cependant, les méthodes d’E ULER implicite
et de C RANK -N ICOLSON sont inconditionnellement A-stables. C’est aussi le cas de nombreuses autres méthodes implicites.
Cette propriété rend les méthodes implicites attractives, bien qu’elles soient plus coûteuses que les méthodes explicites.

E XEMPLE (A- STABILITÉ DES MÉTHODES D ’E ULER EN FONCTION DU PAS )


On considère le problème de C AUCHY
(
y ′ (t ) = −y(t ),
y(0) = 1,
sur l’intervalle [0; 12].
1. Il s’agit d’une EDO à variables séparables. L’unique solution constante de l’EDO est la fonction y(t ) ≡ 0, toutes les
autres solutions sont du type y(t ) = C e −t . Donc l’unique solution du problème de C AUCHY est la fonction y(t ) = e −t
définie pour tout t ∈ R.
2. La méthode d’E ULER explicite pour cette EDO s’écrit

u n+1 = (1 − h)u n .

En procédant par récurrence sur n, on obtient

u n+1 = (1 − h)n+1 .

La suite obtenue est une suite géométrique de raison q = 1 − h. On sait qu’une telle suite
⋆ diverge si |q| > 1 ou q = −1,
⋆ est stationnaire si q = 1,
⋆ converge vers 0 si |q| < 1.
De la formule u n+1 = (1 − h)n+1 on déduit que
⋆ si 0 < h < 1 alors la solution numérique est stable et convergente,
⋆ si h = 1 alors la solution numérique est stationnaire u n = 0 pour tout n ∈ N∗ ,
⋆ si 1 < h < 2 alors la solution numérique oscille mais est encore convergente,
⋆ si h = 2 alors la solution numérique oscille, plus précisément on a u 2n = 1 et u 2n+1 = −1 pour tout n ∈ N∗ ,
⋆ si h > 2 alors la solution numérique oscille et diverge.
Cela signifie que la méthode est A-stable si et seulement si |1 − h| < 1.
Voyons ce que cela donne avec différentes valeurs de h > 0 :
⋆ si h = 4 alors t n = 4n et u n = (−4)n tandis que y(t n ) = e −4n ,
⋆ si h = 2 alors t n = 2n et u n = (−1)n tandis que y(t n ) = e −2n ,
⋆ si h = 1 alors t n = n et u n = 0 tandis que y(t n ) = e −n ,

198 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

µ ¶n
1 1
⋆ si h = 2 alors t n = n/2 et u n = tandis que y(t n ) = e −n/2 ,
2
µ ¶n
1 3
⋆ si h = 4 alors t n = n/4 et u n = tandis que y(t n ) = e −n/4 .
4

Ci-dessous sont tracées sur l’intervalle [0; 10], les courbes représentatives de la solution exacte et de la solution
calculée par la méthode d’E ULER explicite. En faisant varier le pas h nous pouvons constater que si h > 1 l’erreur
commise entre la solution exacte et la solution calculée est amplifiée d’un pas à l’autre.

3
Exacte
2 h = 0.25
h = 0.5
1 h=1
h=2
0 h=4
1 2 3 4 5 6 7 8 9 t

−1

−2

−3

NB : la première itérée a la même pente quelque soit le pas h (se rappeler de la construction géométrique de la
méthode d’E ULER).

3. La méthode d’E ULER implicite pour cette EDO s’écrit

1
u n+1 = un .
1+h
En procédant par récurrence sur n, on obtient

1
u n+1 = .
(1 + h)n+1

Voyons ce que cela donne avec différentes valeurs de h > 0 :

¡ 1 ¢n
⋆ si h = 4 alors t n = 4n et u n = 5 tandis que y(t n ) = e −4n ,
¡ 1 ¢n
⋆ si h = 2 alors t n = 2n et u n = 3 tandis que y(t n ) = e −2n ,
¡ 1 ¢n
⋆ si h = 1 alors t n = n et u n = 2 tandis que y(t n ) = e −n ,
µ ¶n
1 2
⋆ si h = 2 alors t n = n/2 et u n = tandis que y(t n ) = e −n/2 ,
3
µ ¶n
1 4
⋆ si h = 4 alors t n = n/4 et u n = tandis que y(t n ) = e −n/4 .
5

Ci-dessous sont tracées sur l’intervalle [0; 10], les courbes représentatives de la solution exacte et de la solution
calculée par la méthode d’E ULER implicite.

© 2020-2021 G. Faccanoni 199


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

y
Exacte
1 h = 0.25
h = 0.5
0 h=1
1 2 3 4 5 6 7 8 9 t
h=2
h=4

De la formule u n+1 = (1 + h)−(n+1) on déduit que la solution numérique est stable et convergente pour tout h. En effet,
la méthode est inconditionnellement A-stable.
Remarque : la suite obtenue est une suite géométrique de raison q = 1/(1 + h) ∈]0; 1[.

5.3.2. Schémas d’Adam


Si nous intégrons l’EDO y ′ (t ) = ϕ(t , y(t )) entre t n et t n+1 nous obtenons
Z t n+1
y n+1 − y n = ϕ(t , y(t ))d t .
tn

On peut construire différentes schémas selon la formule de quadrature utilisée pour approcher le membre de droite. Cette
solution approchée sera obtenue en construisant une suite récurrente comme suit :

 u0 = y 0 ,
Z t n+1
 u n+1 = u n + un polynôme d’interpolation de ϕ(t , u) dt .
tn
Rt
Les schémas d’A DAM approchent l’intégrale tnn+1 ϕ(t , y(t )) dt par l’intégrale d’un polynôme p interpolant ϕ en des points
donnés qui peuvent être à l’extérieur de l’intervalle [t n ; t n+1 ]. On peut construire différentes schémas selon les points
d’interpolation choisis. Ils se divisent en deux familles : les méthodes d’A DAM -B ASHFORTH qui sont explicites et les méthodes
d’A DAM -M OULTON qui sont implicites :
schémas AB-q : les schémas d’A DAM -B ASHFORTH d’ordre q approchent l’intégrale ttnn+1 ϕ(t , y(t )) dt par l’intégrale ttnn+1 p(t ) dt
R R

où p est le polynôme interpolant ϕ en t n−i pour 0 ≤ i ≤ q − 1 ;


schémas AM-q : les schémas d’A DAM -M OULTON d’ordre q approchent l’intégrale ttnn+1 ϕ(t , y(t )) dt par l’intégrale ttnn+1 p(t ) dt
R R

où p est le polynôme interpolant ϕ en t n+1−i pour 0 ≤ i ≤ q.


Notons qu’il est donc possible de calculer successivement u q , u q+1 ,. . ., en partant de u 0 , u 1 , . . . , u q−1 (qui doivent donc être
initialisés par des approximations adéquates car seul u 0 est donné).

E XEMPLE (AB-1)
On a

p(t ) = ϕ(t n , y(t n ))


Z t n+1
p(t ) dt = hϕ(t n , y(t n ))
tn

et on obtient le schéma (
u 0 = y(t 0 ) = y 0 ,
u n+1 = u n + hϕ(t n , u n ) n = 0, 1, . . . N − 1
La méthode AB1 coïncide avec la méthode d’E ULER progressive.

200 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

E XEMPLE (AB-2)
On a

ϕ(t n , y(t n )) − ϕ(t n−1 , y(t n−1 ))


p(t ) = (t − t n−1 ) + ϕ(t n−1 , y(t n−1 ))
h
Z tn+1

3ϕ(t n , y(t n )) − ϕ(t n−1 , y(t n−1 ))
¢
p(t ) dt =
tn 2

et on obtient le schéma 
 u 0 = y(t 0 ) = y 0 ,

u 1 = u 0 + hϕ(t 0 , u 0 ) ≈ y(t 1 )

u n+1 = u n + h2 3ϕ(t n , u n ) − ϕ(t n−1 , u n−1 ) n = 1, 2, . . . N − 1
 ¡ ¢

où u 1 est une approximation de y(t 1 ) obtenue en utilisant une prédiction AB1 .

E XEMPLE (AB-3)
On a

ϕ(t n−2 , y(t n−2 )) ϕ(t n−1 , y(t n−1 )) ϕ(t n , y(t n ))
p(t ) = (t − t n−1 )(t − t n ) − (t − t n−2 )(t − t n ) + (t − t n−2 )(t − t n−1 )
2h 2 h2 2h 2
Z tn+1
h ¡ ¢
p(t ) dt = 23ϕ(t n , y(t n )) − 16ϕ(t n−1 , y(t n−1 )) + 5ϕ(t n−2 , y(t n−2 ))
tn 12

et on obtient le schéma


 u 0 = y(t 0 ) = y 0 ,


 u = u + hϕ(t , u ) ≈ y(t )
1 0 0 0 1
h
ϕ(t
¡ ¢


 u 2 = u 1 + 2 3ϕ(t 1 , u 1 ) − 0 , u 0 ) ≈ y(t 2 )
h
 ¡ ¢
u n+1 = u n + 12 23ϕ(t n , u n ) − 16ϕ(t n−1 , u n−1 + 5ϕ(t n−2 , u n−2 ) n = 2, 3, . . . N − 1

où u 1 est une approximation de y(t 1 ) obtenue en utilisant une prédiction AB1 et u 2 est une approximation de y(t 2 ) obtenue
en utilisant la méthode AB2 .

E XEMPLE (AM-0)
On a

p(t ) = ϕ(t n+1 , y(t n+1 ))


Z t n+1
p(t ) dt = hϕ(t n+1 , y(t n+1 ))
tn

et on obtient le schéma (
u 0 = y(t 0 ) = y 0 ,
u n+1 = u n + hϕ(t n+1 , u n+1 ) n = 0, 1, . . . N − 1
La méthode AM1 coïncide avec la méthode d’E ULER régressive.

E XEMPLE (AM-1)
On a

ϕ(t n+1 , y(t n+1 )) − ϕ(t n , y(t n ))


p(t ) = (t − t n ) + ϕ(t n , y(t n ))
h
Z tn+1

ϕ(t n+1 , y(t n+1 )) + ϕ(t n , y(t n ))
¢
p(t ) dt =
tn 2

et on obtient le schéma (
u 0 = y(t 0 ) = y 0 ,
u n+1 = u n + h2 ϕ(t n , u n ) + ϕ(t n+1 , u n+1 ) n = 1, 2, . . . N − 1
¡ ¢

La méthode AM2 coïncide avec la méthode de C RANK -N ICOLSON.

© 2020-2021 G. Faccanoni 201


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

E XEMPLE (AM-2)
On a

ϕ(t n−1 , y(t n−1 )) ϕ(t n , y(t n )) ϕ(t n+1 , y(t n+1 ))
p(t ) = (t − t n )(t − t n+1 ) − (t − t n−1 )(t − t n+1 ) + (t − t n−1 )(t − t n )
2h 2 h2 2h 2
Z tn+1
h ¡
5ϕ(t n+1 , y(t n+1 )) + 8ϕ(t n , y(t n )) − ϕ(t n−1 , y(t n−1 ))
¢
p(t ) dt =
tn 12

et on obtient le schéma

 u 0 = y(t 0 ) =¡y 0 ,

u 1 = u 0 + h2 ϕ(t 1 , u 1 ) + ϕ(t 0 , u 0 )
¢

h
5ϕ(t n+1 , u n+1 ) + 8ϕ(t n , u n ) − ϕ(t n−1 , u n−1 n = 1, 2, . . . N − 1
¡ ¢
u n+1 = u n + 12

où u 1 est une approximation de y(t 1 ) obtenue en utilisant une prédiction AM1 .

5.3.3. Schémas de Nyström et de Milne-Simpson


Les méthodes d’Adam peuvent être facilement généralisées en intégrant l’EDO y ′ (t ) = ϕ(t , y(t )) entre t n−r et t n+1 avec r ≥ 1.
Par exemple, avec r = 1 on obtient les schémas de N YSTRÖM, qui sont explicites, et les schémas de M ILNE -S IMPSON, qui
sont implicites :
schémas N-q : les schémas de N YSTRÖM d’ordre q approchent l’intégrale ttn−1
R tn+1
ϕ(t , y(t )) dt par l’intégrale tn−1
R n+1
p(t ) dt où
p est le polynôme interpolant ϕ en t n−i pour 0 ≤ i ≤ q − 1 ;
schémas MS-q : les schémas de M ILNE -S IMPSON d’ordre q approchent l’intégrale ttn−1
R tn+1
ϕ(t , y(t )) dt par l’intégrale tn−1
R n+1
p(t ) dt
où p est le polynôme interpolant ϕ en t n+1−i pour 0 ≤ i ≤ q.

E XEMPLE (N-1)
On a

p(t ) = ϕ(t n , y(t n ))


Z t n+1
p(t ) dt = 2hϕ(t n , y(t n ))
t n−1

et on obtient le schéma 
 u 0 = y(t 0 ) = y 0 ,

u 1 = u 0 + hϕ(t 0 , u 0 ) ≈ y(t 1 )

u n+1 = u n−1 + 2hϕ(t n , u n ) n = 0, 1, . . . N − 1

où u 1 est une approximation de y(t 1 ) obtenue en utilisant une prédiction d’Euler explicite. La méthode N1 coïncide avec la
méthode du point milieu (appelée aussi Saute-mouton ou Leapfrog).

E XEMPLE (MS-0)
On a

p(t ) = ϕ(t n+1 , y(t n+1 ))


Z t n+1
p(t ) dt = 2hϕ(t n+1 , y(t n+1 ))
t n−1

et on obtient le schéma 
 u 0 = y(t 0 ) = y 0 ,

u 1 = u 0 + hϕ(t 0 , u 0 ) ≈ y(t 1 )

u n+1 = u n−1 + 2hϕ(t n+1 , u n+1 ) n = 0, 1, . . . N − 1

où u 1 est une approximation de y(t 1 ) obtenue en utilisant une prédiction d’Euler explicite.

5.4. Exercices
Étude qualitative d’un problème de Cauchy

202 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

Exercice 5.1 (Étude qualitative d’un problème de C AUCHY) y


y 2 (t )
On considère l’équation différentielle
y 5 (t )
et y 3 (t )
y ′ (t ) = 2 y(t )
t +1
Sans résoudre l’équation différentielle, déterminer, parmi
les courbes tracées ci-contre, celles qui ne représentent
sûrement pas une fonction solution de cette EDO et celles t
qui sont susceptibles d’en représenter une.
y 4 (t )

y 1 (t )

Correction L’équation impose aussi que y(t ) et y ′ (t ) sont de même


et
On remarque que t 2 +1
> 0 pour tout t ∈ R. signe :

Sens de variation
Une solution y de l’EDO doit vérifier y ′ (t ) = 0 si et seulement y
si y(t ) = 0 : si la courbe coupe l’axe des abscisses, alors elle a
une tangente horizontale en ce point. Les courbes y 2 (orange)
et y 3 (verte) ne coupent pas l’axe des abscisses. Les courbes t
y 1 (rouge), y 4 (violette) et y 5 (bleu) sont les seules courbes
qui coupent l’axe des abscisses ; les courbes y 1 (rouge) et y 5
(bleu) n’ayant pas de tangente horizontale en ce point, elles Parmi les courbes restantes, cette condition n’est pas satis-
ne conviennent pas. faite par les courbes y 3 (verte) et y 4 (violette).

La courbe y 2 (orange) est la seule susceptible de représenter une solution à l’EDO.

Exercice 5.2 y
Pour t ∈ R, on considère les quatre équations différen- y 2 (t )
tielles
(a) y ′ (t ) = −t y(t )
(b) y ′ (t ) = t y(t )
y 3 (t )
(c) y ′ (t ) = −t 2 y(t ) y 1 (t )
(d) y ′ (t ) = −t 3 y(t ) y 3 (t ) t
Les graphes de ces fonctions sont tracés sur le graphique à
coté. Sans résoudre d’équations différentielles, déterminer
pour chaque fonction laquelle des courbes suivantes la
représente.

Correction
Pour chaque EDO on décompose le plan cartésien en quatre partie et on trace le sens de variation de sa solution :

Sens de variation pour (a) Sens de variation pour (b) Sens de variation pour (c) Sens de variation pour (d)
y y y y

t t t t

La courbe y 3 (rouge) est la seule où la fonction et sa dérivée sont de signes contraires ; elle ne peut correspondre qu’à la
fonction (c). La courbe y 2 (orange) correspond à une fonction ayant même signe que sa dérivée pour t > 0 ; il s’agit donc du
graphe de (b). Pour t > 1, on a −t 3 < −t , donc le graphe de l’équation (d) est en dessous du graphe de l’équation (a) pour
tout t > 1 ; on en déduit que la courbe y 1 (bleue) représente la fonction (a) et que la courbe y 4 (verte) représente la fonction
(d).

© 2020-2021 G. Faccanoni 203


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Exercice 5.3 (Étude qualitative d’une EDO)


On considère le problème de Cauchy
(
y ′ (t ) = 1 − y(t ), t ∈ R
y(0) = 2.
Supposons que le problème admet une et une seule solution t 7→ y(t ) continue et définie sur R.
1. Montrer que la solution est minorée ;
2. étudier la monotonie de la solution ;
3. calculer la limite pour t → +∞ de la solution ;
4. calculer y ′′ en fonction de y ;
5. calculer les changements de concavité de la solution ;
6. tracer le graphe de la solution.

Correction
1. y(t ) = 1 pour tout t ∈ R est la seule solution constante de l’EDO mais n’est pas solution du problème de Cauchy car
y(0) ̸= 1. On sait que la solution du problème de Cauchy est unique, continue, définie sur R et passe par le point (0, 2),
par conséquent
y(t ) > 1 ∀t ∈ R.

2. Comme y(t ) > 1 pour tout t ∈ R, alors y ′ (t ) = 1− y(t ) < 0 pour tout t ∈ R, ainsi y est monotone strictement décroissante.
3. La solution est décroissante et minorée donc les limites existent et limt →+∞ y(t ) = ℓ ≥ 1. Cela signifie que la droite
d’équation y = ℓ est une asymptote horizontale pour le graphe de la solution du problème de Cauchy.
Si ℓ > 1 alors limt →+∞ y ′ (t ) = limt →+∞ 1 − y(t ) = α > 0, i.e. y a une asymptote oblique en +∞, ce qui n’est pas possible.
Par conséquent limt →+∞ y(t ) = 1.
4. y ′′ (t ) = (y ′ (t ))′ = (1 − y(t ))′ = −y ′ (t ) = y(t ) − 1.
5. Comme y(t ) > 1 pour tout t ∈ R, alors y ′′ (t ) > 0 pour tout t ∈ R : la solution est convexe.
6. Graphe de la solution :
y
2

Exercice 5.4 (Étude qualitative d’une EDO)


On considère le problème de C AUCHY
(
y ′ (t ) = 4 − y 2 (t ),
y(0) = 0.
Supposons que le problème admet une et une seule solution t 7→ y(t ) continue et définie sur R.
1. Montrer que la solution est bornée et calculer ces bornes ;
2. étudier la monotonie de la solution ;
3. calculer les limites pour t → ±∞ de la solution ;
4. calculer y ′′ en fonction de y ;
5. calculer les changements de concavité de la solution ;
6. tracer le graphe de la solution.

Correction
1. L’EDO se réécrit y ′ (t ) = (2 − y(t ))(2 + y(t )), donc y 1 (t ) = 2 et y 2 (t ) = −2 sont deux solutions constantes de l’EDO mais
ne sont pas solution du problème de Cauchy car y 1,2 (0) ̸= 0. On sait que la solution du problème de Cauchy est unique,
elle est continue, définie sur R et passe par le point (0, 0), par conséquent

y(t ) ∈] − 2; 2[ ∀t ∈ R.

2. Comme y(t ) ∈] − 2; 2[ pour tout t ∈ R, alors y ′ (t ) = 4 − y 2 (t ) > 0 pour tout t ∈ R, ainsi y est monotone strictement
croissante.

204 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

3. La solution est croissante et bornée donc les limites existent et limt →+∞ y(t ) = ℓ ≤ 2. Si ℓ < 2 alors limt →+∞ y ′ (t ) =
limt →+∞ 4 − y 2 (t ) = 4 − ℓ2 > 0, i.e. y a une asymptote oblique en +∞, ce qui n’est pas possible car y est bornée. Par
conséquent limt →+∞ y(t ) = 2.
Avec le même type de raisonnement on prouve que limt →−∞ y(t ) = −2.
4. y ′′ (t ) = (y ′ (t ))′ = (4 − y 2 (t ))′ = −2y(t )y ′ (t ) = −2y(t )(4 − y 2 (t )).
5. Comme y(t ) ∈] − 2; 2[ pour tout t ∈ R, alors y ′′ (t ) = 0 ssi y(t ) = 0 et y ′′ (t ) > 0 ssi y(t ) < 0, y ′′ (t ) < 0 ssi y(t ) > 0. Comme
y(t ) = 0 ssi t = 0, la solution est convexe pour t < 0 et concave pour t > 0.
6. Graphe de la solution :
y

−2

Calcul analytique des solutions d’une EDO d’ordre 1 à variables séparables


Exercice 5.5
Résoudre le problème de C AUCHY
(
y ′ (x) + 2x y 2 (x) = 0,
y(0) = 2.

Correction
Il s’agit d’une EDO à variables séparables. La fonction y(x) = 0 pour tout x est solution de l’EDO mais elle ne vérifie pas la CI.
Toute autre solution de l’EDO sera non nulle et se trouve formellement comme suit :

y ′ (x) 1
Z Z
y ′ (x) + 2x y 2 (x) = 0 =⇒ = −2x =⇒ y −2
dy = −2 x dx =⇒ y(x) = 2 , c ∈ R.
y 2 (x) x +c
2
En imposant la CI on obtient 2 = 1/C d’où l’unique solution du problème de Cauchy : y(x) = 2x 2 +1
.

Exercice 5.6
Résoudre le problème de Cauchy
(
y ′ (x) − 4x y 2 (x) = 0,
y(0) = 2.

Correction
Il s’agit d’une EDO à variables séparables. La fonction y(x) = 0 pour tout x est solution de l’EDO mais elle ne vérifie pas la CI.
Toute autre solution de l’EDO est non nulle et se trouve formellement comme suit :

y ′ (x) 1
Z Z
′ 2 −2
y (x) − 4x y (x) = 0 =⇒ = 4x =⇒ y dy = 4 x dx =⇒ y(x) = , c ∈ R.
y 2 (x) −2x 2 + c
2
En imposant la CI on obtient 2 = 1/C d’où l’unique solution du problème de Cauchy y(x) = 1−4x 2
.

© 2020-2021 G. Faccanoni 205


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Exercice 5.7
Résoudre le problème de Cauchy
(
y ′ (t ) = t y 2 (t ),
y(0) = y 0 ,
en fonction de la donnée initiale y 0 .

Correction
Il s’agit d’un problème de Cauchy avec une CI y(0) = y 0 et une EDO du premier ordre à variables séparable.
On cherche d’abord les solutions constantes, i.e. les fonctions y(x) ≡ A ∈ R qui vérifient l’EDO, c’est-à-dire qui vérifient
0 = t A 2 pour tout y ∈ R ; l’unique solution constante est donc la fonction y(x) ≡ 0.
Comme deux trajectoires ne s’intersectent pas, toutes les autres solution ne s’annulent jamais. Soit donc y(x) ̸= 0 ; on peut
alors écrire

y ′ (t ) 1 1 1 t2 1
Z Z
2
= t =⇒ 2
dy = t dt =⇒ 2
dy = t dt =⇒ − = +C =⇒ y(x) = − 2 , pour C ∈ R.
y (t ) y y y 2 t
2 +C

Cette fonction n’est définie que si t 2 ̸= −2C , donc


⋆ si C > 0 alors y(t ) est définie pour tout t ∈ R,
p p p p
⋆ si C < 0 alors y(t ) est définie pour tout t ∈] − ∞; − −2C [ ou t ∈] − −2C ; −2C [ ou t ∈] −2C ; ∞[,
⋆ si C = 0 alors y(t ) est définie pour tout t ∈] − ∞; 0[ ou t ∈]0; +∞[.
Comme y 0 = y(0) = − C1 , la solution du problème de Cauchy est :
⋆ la fonction y(t ) ≡ 0 pour tout t ∈ R si y 0 = 0 ;
⋆ la fonction y(t ) = − t 2 1 pour t ∈ R si y 0 < 0 ;
2 − y1
0
i q q h
⋆ la fonction y(t ) = − t 2 1 pour t ∈ − y20 ; y20 si y 0 > 0 (c’est-à-dire l’intervalle plus large possible qui contient
2 − y1
0
t = 0).

Exercice 5.8
Soit m ∈ N∗ . Montrer que le problème de C AUCHY
(
y ′ (t ) = y 2m/(2m+1) (t ),
y(0) = 0,

admet une infinité de solutions de classe C 1 (R). Pourquoi ne peut-on appliquer le théorème de C AUCHY-L IPSCHITZ ?

Correction
La solution y(t ) = 0 pour tout t ∈ R est une solution du problème donnée.
Pour trouver une autre solution commençons par chercher toutes les autres solutions de l’EDO et on imposera ensuite la CI.
Il s’agit d’une EDO à variables séparables ainsi, si y(t ) ̸= 0, on peut écrire formellement
Z Z
y −2m/(2m+1) (t ) dy = 1 dt

d’où la fonction ¶(2m+1)


t +c
µ
y(t ) =
2m + 1
qui est solution de l’EDO y ′ (t ) = y 2m/(2m+1) (t ) pour tout c ∈ R. On vérifie alors aisément que, pour tout b ∈ R+ , les fonctions
³ ´(2m+1)
t +b

 2m+1
 , si t ≤ −b,

y b (t ) = 0, si − b ≤ t ≤ b,
 t −b (2m+1) , si t ≥ b,

 ³ ´

2m+1

sont de classe C 1 (R) et sont solution du problème de C AUCHY donné.

206 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

En effet, on ne peut pas appliquer le théorème de C AUCHY-L IPSCHITZ car la fonction ϕ(t , y) = y 2m/(2m+1) n’est pas unifor-
mément lipschitzienne par rapport à y au voisinage de 0 car, pour tout y ̸= 0 et pour tout L > 0 on a

|ϕ(t , y) − ϕ(t , 0)| = |y 2m/(2m+1) | = |y|2m/(2m+1) > L × |y|.

Exercice 5.9 (Datation au carbone 14)


Le carbone 14 est un isotope présent dans tout organisme vivant. Le nombre d’atomes de carbone 14 est constant tant
que l’organisme est en vie. À la mort de l’organisme, le nombre d’atomes décroît avec une vitesse proportionnelle au
nombre d’atomes. On note n(t ) > 0 le nombre d’atomes au temps t , exprimé en années, après la mort de l’organisme.
Ce mécanisme se traduit par l’équation
n ′ (t ) = −kn(t )
où k est une constante positive.
1. Trouver toutes les solutions de l’EDO.
2. Sachant qu’il faut 5700 ans pour que la quantité de carbone 14 diminue de moitié dans un organisme mort,
calculer k.
3. Des ossements anciens récemment exhumés contiennent 9 fois moins de carbone 14 que des ossements
similaires d’aujourd’hui. Déterminer l’âge des ossements exhumés.

Correction
1. Il s’agit d’une «EDO du premier ordre à variables séparables». Si n(t ) ≡ c est solution alors 0 = −kc d’où c = 0 : l’unique
solution constante est la solution n(t ) = 0 quelque soit t ∈ R+ .
Si n(t ) ̸= 0, on peut écrire
n ′ (t )
= −k
n(t )
d’où la famille de solutions
n(t ) = De −kt , D ∈ R+ .
On conclut que, quelque soit la condition initiale n(0) = n 0 ≥ 0, l’unique solution est n(t ) = n 0 e −kt pour tout t ∈ R+ .
2. Puisque n 0 /2 = n(5700) = n 0 e −5700t k, on obtient k = ln 2−5700 ≈ 1.216 10−4 .
3. Puisque n 0 /9 = n(t̂ ) = n 0 e −k t̂ , on obtient t̂ = 5700 ln 9
ln 2 ≈ 18000 ans.

Exercice 5.10
Deux produits chimiques présents dans une cuve avec une concentration de 1g/l à l’instant t = 0 interagissent et
produisent une substance dont la concentration est notée y(t ) à l’instant t ≥ 0. On suppose que y(t ) est régie par
l’équation différentielle
y ′ (t ) = (1 − y(t ))2 pour tout t ≥ 0.
1. Montrer que toute solution de l’EDO est une fonction croissante.
2. Chercher les solutions constantes de l’EDO.
3. Considérons la solution y telle que y(0) = 0. Montrer que l’on a 0 < y(t ) < 1 pour tout t > 0. (On admettra que les
graphes de deux solutions distinctes ne se coupent pas et on pourra s’aider d’un dessin.)
4. Considérons la solution y telle que y(0) = 0. Montrer que lim y(t ) = ℓ existe. Puis, en admettant que lim y ′ (t ) =
t →+∞ t →+∞
0, déterminer ℓ.
5. Calculer la solution lorsque y(0) = 0, lorsque y(0) = 1 et lorsque y(0) = 2. Dans chacun de ces cas établir l’intervalle
maximale d’existence.

Correction
1. Pour montrer qu’une fonction est croissante il suffit de montrer que sa dérivée est de signe positif. Si y est solution de
l’EDO on a
y ′ (t ) = (1 − y(t ))2 ≥ 0 pour tout t ≥ 0
car un carré est toujours positif. y est donc une fonction croissante.
2. On cherche les fonctions constantes solution de l’EDO. Si f (t ) = c est solution de l’EDO alors puisque f ′ (t ) = 0 on
obtient
0 = (1 − c)2
soit c = 1. La seule fonction constante solution de l’EDO est la fonction constante égale à 1.

© 2020-2021 G. Faccanoni 207


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

3. Considérons la solution y telle que y(0) = 0. Tout d’abord on a montré que la fonction y était croissante donc y(0) ≤ y(t )
pour tout t ≥ 0, par conséquent, puisque 0 ≤ y(0), y(t ) ≥ 0 pour tout t ≥ 0. Supposons qu’il existe un t 0 tel que y(t 0 ) ≥ 1,
alors le graphe de y qui relie continument les points (0, y(0)) et (t 0 , y(t 0 )) coupe nécessairement le graphe de f , i.e.
la droite d’équation y = 1. Ceci est impossible, car les graphes de deux solutions distinctes ne se coupent jamais. Il
n’existe donc pas de t 0 tel que y(t 0 ) ≥ 1, c’est-à-dire pour tout t ≥ 0, y(t ) < 1.
4. Considérons la solution y telle que y(0) = 0.
La fonction y est croissante et majorée par 1, elle admet donc une limite pour t → +∞. On note lim y(t ) = ℓ. On
t →+∞
suppose que lim y ′ (t ) = ℓ. En passant à la limite dans l’EDO on obtient :
t →+∞

0 = (1 − ℓ)2

soit ℓ = 1.
5. ⋆ Si y(0) = 1 on sait que y(t ) = 1 pour tout t > 0.
⋆ Si y(0) = 0 on sait que la fonction y est croissante et lim y ′ (t ) = 1. En effet, il s’agit d’une EDO à variables
t →+∞
séparables et on peut écrire
t +c −1
Z
(1 − y)−2 dy = t , i.e. y(t ) =
t +c
qui existe sur ] − ∞; −c[ ∪ ] − c; +∞[, d’où, en imposant y(0) = 0, la solution

t
y(t ) = , ∀t ≥ 0.
1+t

⋆ Si y(0) = 2 on sait que la fonction y est croissante mais elle n’existe que pour 0 < t < 1 et on a

t −2
y(t ) = .
t −1
y

0
x
1 2 3

Exercice 5.11 (Logistique)


Soit k et h deux constantes positives. Calculer p(t ) pour t > 0 solution du problème de Cauchy
(
p ′ (t ) = kp(t ) − hp 2 (t ),
p(0) = p 0 .

Ce modèle, qui décrit l’évolution d’une population de p individus à l’instant t , suppose que le taux de croissance du
nombre d’individus n’est pas constant mais diminue si la population augment (les ressources se réduisent).

Correction
On doit résoudre l’EDO à variables séparables

p ′ (t ) = p(t )(k − hp(t )).

On cherche d’abord les solutions constantes, i.e. des fonctions p(t ) = A :

k
0 = A(k − h A) ⇐⇒ A = 0 ou A = .
h
On trouve ainsi deux solutions constantes :
k
p(t ) ≡ 0 et p(t ) ≡ .
h

208 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

Si on suppose que p(t ) ̸= 0 et p(t ) ̸= hk , l’EDO se réécrit comme

p ′ (t )
= 1;
p(t )(k − hp(t ))

on doit alors calculer


dp
Z Z
= 1 dt
p(k − hp)
i.e.
1 dp h
Z Z Z
+ dp = 1 dt .
k p k − hp
On obtient
1 |p|
ln = (t +C )
k |k − hp|
et en on déduit
kDe kt
p(t ) = .
1 + hDe kt
En imposant la condition initiale p(0) = p 0 on trouve la constante d’intégration D :

p0 1
D= = k
.
k − hp 0 −h
p0

On conclut que toutes les solutions du problème de Cauchy pour t ≥ 0 sont





 0 si p 0 = 0,
k
p(t ) = h si p 0 = hk ,
 ³ 1 h ´1 −kt h sinon.


−k e +k

p0

Remarquons que limt →+∞ p(t ) = hk : une population qui évolue à partir de p 0 individus à l’instant initiale selon la loi
logistique tend à se stabiliser vers un nombre d’individus d’environ k/h, ce qui représente la capacité de l’environnement.
D’autre part, déjà en analysant l’EDO on aurait pu déduire que les solutions sont des fonctions strictement croissantes si
p(t ) ∈]0, k/h[, décroissantes si p(t ) > k/h.
p

k
p(t ) > h

k
h
k
0 < p0 < h

0
t

Exercice 5.12 («Urgence»)


On étudie la progression d’une maladie contagieuse dans une population donnée. On note x(t ) la proportion des
personnes malades à l’instant t et y(t ) celle des personnes non atteintes. On a donc x(t ) + y(t ) = 1 pour tout t ≥ 0. On
suppose que la vitesse de propagation de la maladie x(t ) est proportionnelle au produit x(t )y(t ) (ce qui signifie que la
maladie de propage par contact). Si on note I (t ) le nombre d’individus infectés à l’instant t et I T le nombre d’individus
total, il existe une constante k ∈ R telle que I ′ (t ) = k I (t )(I T − I (t )). Si la ville est isolée et compte 5 000 individus dont
160 sont malades et 1 200 le sont 7 jours après, à partir de quel jour l’infection touchera 80% de la population ? Et 100% ?

Correction
On a le problème de C AUCHY
(
I ′ (t ) = k I (t )(5000 − I (t )), (EDO)
I (0) = 160. (CI)
Vu la nature de la question on ne s’intéresse qu’aux solutions positive et que pour t > 0.

© 2020-2021 G. Faccanoni 209


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

1. Tout d’abord on observe qu’il y a deux solutions constantes de l’EDO : la fonction I (t ) ≡ 0 et la fonction I (t ) ≡ 5000.
2. Pour chercher toutes les solutions non constantes on remarque qu’il s’agit d’une EDO à variables séparables donc
formellement on a

I ′ (t )
I ′ (t ) = k I (t )(5000 − I (t )) =⇒ =k =⇒
I (t )(5000 − I (t ))
dI 1
Z Z
= k dt =⇒ d I = k dt =⇒
I (5000 − I ) I (5000 − I )
1 1
Z Z Z
dI − d I = 5000k dt =⇒ ln(I ) + ln(5000 − I ) = 5000kt + c =⇒
I 5000 − I
I I
ln = 5000kt + c =⇒ = De 5000kt =⇒
5000 − I 5000 − I
5000De 5000kt 5000
I (t ) = =⇒ I (t ) =
1 + De 5000kt De −5000kt + 1

3. La valeur numérique de la constante d’intégration D est obtenue grâce à la CI :

5000 5000 4 20000


160 = I (0) = =⇒ 160 = =⇒ D= =⇒ I (t ) = .
De 0 + 1 1+D 121 4 + 121e −5000kt

4. Il ne reste qu’à établir la valeur numérique de la constante k grâce à l’information sur le nombre d’individus infectés
après 7 jours :

20000 1 363 20000


1200 = I (7) = =⇒ k= ln =⇒ I (t ) = t
¡ 363 ¢ .
4 + 121e −35000k 35000 38 4 + 121e − 7 ln 38

80×5000
5. On cherche t̄ tel que I (t̄ ) = 80%I T = 100 = 4000 :

20000
4000 = t̄
¡ 363 ¢
4 + 121e − 7 ln 38

1
d’où t̄ = 5000 ln(121) ≈ 15 jours.
6. Avec ce modèle lim I (t ) = 5000 mais I ne peut jamais atteindre exactement 100% de la population en un temps fini
t →+∞
(deux solution ne s’intersectent jamais).

I
5000
4000

1200
160
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 t

Exercice 5.13
On note y(t ) le nombre de ménages vivant en France équipés d’un ordinateur (t est exprimé en années et y(t ) en
millions de ménages). Le modèle de VARHULST estime que sur la période 1980 − 2020, y(t ) est solution de l’équation
différentielle
y ′ (t ) = 0, 022y(t )(20 − y(t )).
1. Calculer toutes les solutions de l’équation différentielle.
2. On pose t = 0 en 1980 et on sait que y(0) = 0, 01. Combien de ménages vivant en France seront équipés d’un
ordinateur en 2020 ?

Correction
1. On doit résoudre l’EDO à variables séparables

y ′ (t ) = 0, 022y(t )(20 − y(t )).

210 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

On cherche d’abord les solutions constantes, i.e. des fonctions y(t ) = A pour tout t ∈ R :

0 = 0, 022A(20 − A) ⇐⇒ A = 0 ou A = 20.

On trouve ainsi deux solutions constantes :

y(t ) ≡ 0 et y(t ) ≡ 20.

Si on suppose que y(t ) ̸= 0 et y(t ) ̸= A, l’EDO se réécrit comme

y ′ (t )
= 0, 022;
y(t )(20 − y(t ))

on doit alors calculer


dy
Z Z
= 0, 022 dt ,
y(20 − y)
i.e. µZ ¶ Z
1 dy 1
Z
− dy = 0, 022 dt .
20 y y − 20
On obtient
|y|
ln = 0, 44t +C pour tout C ∈ R
|y − 20|
et on en déduit
20
y(t ) = pour tout D ∈ R+ .
1 + 20De −0,44t
2. Si t = 0 correspond à l’année 1980 et si y(0) = 0, 01 alors

20
0, 01 = =⇒ D = 1999
1 + 20De −0,44×0
et la fonction qui estime le nombre de ménages en France équipés d’un ordinateur t années après 1980 est

20
y(t ) = .
1 + 1999e −0,44t
Pour prévoir combien de ménages vivant en France seront équipés d’un ordinateur en 2020 il suffit de calculer y(40)

20
y(40) = ≈ 19.99.
1 + 1999e −0,44×40

Exercice 5.14 (Modèle de G OMPERTZ)


Lorsqu’une nouvelle espèce s’introduit dans un écosystème, elle évolue d’abord lentement ; son rythme de croissance
s’accélère ensuite à mesure qu’elle s’adapte, puis ralentit quand la population devient trop importante compte tenu
des ressources disponibles. Pour ce type d’évolution, on utilise le modèle de G OMPERTZ suivant :

y ′ (t ) = −y(t ) ln(y(t )).

Calculer toute les solutions de cette équation différentielle pour t > 0 (ne pas oublier les solutions constantes). La
population va-t-elle survivre ?

Correction
1. On doit résoudre l’EDO à variables séparables

y ′ (t ) = −y(t ) ln(y(t )).

On cherche d’abord les solutions constantes, i.e. des fonctions y(t ) = A pour tout t ∈ R :

0 = A ln(A) ⇐⇒ A = 1.

On trouve ainsi une solution constante :


y(t ) ≡ 1.

© 2020-2021 G. Faccanoni 211


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Si on suppose que y(t ) ̸= 1, l’EDO se réécrit comme

y ′ (t )
= −1;
y(t ) ln(y(t ))

on doit alors calculer


dy
Z Z
= −1 dt .
y ln(y)
On obtient 3
ln | ln(y(t ))| = −t +C pour tout C ∈ R
et on en déduit
−t
y(t ) = e De pour tout D ∈ R.

2. Si y(0) > 1 alors y ′ (t ) < 0 (la population décroît) ; si 0 < y(0) < 1 alors y ′ (t ) > 0 (la population croît) ; comme y(t ) = 1 est
solution et comme deux solutions ne peuvent pas se croiser, sans faire de calcul on voit que lorsque t tend vers l’infini,
la population tend vers la valeur d’équilibre y(t ) = 1 quelque soit le nombre d’individus à l’instant initial.

Calcul analytique des solutions d’une EDO d’ordre 1 linéaire


Exercice 5.15
Résoudre l’équation différentielle
(x + 1)y ′ (x) + y(x) = (x + 1) sin(x)
sur des intervalles à préciser.

Correction
L’équation différentielle est linéaire du premier ordre. On la résout sur un intervalle où le coefficient de y ′ (x) n’est pas nul,
soit sur I 1 =] − ∞; −1[ ou sur I 2 =] − 1; +∞[. Sur chaque intervalle I 1 ou I 2 , l’équation s’écrit
£ ¤′
(x + 1)y(x) = (x + 1) sin(x).

En intégrant par parties, on obtient (attention, la constante dépend de l’intervalle)


Z
(x + 1)y(x) = (x + 1) sin(x) dx = −(x + 1) cos(x) + sin(x) +C .

La solution générale sur I 1 , ou sur I 2 , est donc

sin(x) +C
y(x) = − cos(x) + avec C ∈ R.
(x + 1)

Exercice 5.16
Résoudre le problème de Cauchy
(
y ′ (x) + (3x 2 + 1)y(x) = x 2 e −x ,
y(0) = 1.

Correction
On a a(x) = 1, b(x) = 3x 2 + 1 et g (x) = x 2 e −x , donc pour x ∈ R on a
R 3x 2 +1
⋆ A(x) = 1 dx = x 3 + x,
R x 2 e −x A(x) 3 3 x3
dx = x 2 e x dx = 31 3x 2 e x dx = 13 e u(x) u ′ (x) dx = 13 e u(x) = e 3 .
R R R
⋆ B (x) = 1 e
µ ¶
x3 3
Toutes les solutions de l’EDO sont donc les fonctions y(x) = C + e 3 e −x −x pour C ∈ R.
On cherche parmi ces solutions celle qui vérifie y(0) = 1 ; comme y(0) = C + 13 , l’unique solution du problème de C AUCHY
µ ¶
x3 3
donné est la fonction y(x) = 23 + e 3 e −x −x .

1
dx = 1z dz = ln |z| + c = ln | ln(x)| +C
R R
3. x ln(x)

212 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

Exercice 5.17
Résoudre le problème de Cauchy
(
y ′ (x) + (3x 2 − 1)y(x) = x 2 e x ,
y(0) = −1.

Correction
On a a(x) = 1, b(x) = 3x 2 − 1 et g (x) = x 2 e x , donc pour x ∈ R on a
R 3x 2 −1
⋆ A(x) = 1 dx = x 3 − x,
R x 2 e x A(x) 3 x3
dx = x 2 e x dx = e 3 .
R
⋆ B (x) = 1 e
µ ¶
x3 3
Toutes les solutions de l’EDO sont donc les fonctions y(x) = C + e 3 e −x +x pour C ∈ R.
On cherche parmi ces solutions celle qui vérifie y(0) = −1 ; comme y(0) = C + 31 , l’unique solution du problème de C AUCHY
µ ¶
x3 3
donné est la fonction y(x) = − 43 + e 3 e −x +x .

Exercice 5.18
Résoudre le problème de Cauchy
(x−2)2
(
1
y ′ (x) + x−1 y(x) = x−1 ,
y(0) = 1.

Correction
2
On a a(x) = 1, b(x) = x−11
et g (x) = (x−2)
x−1 . b est défini pour x ̸= 1 et comme on cherche un solution qui passe par le point
(0, 1), nous allons chercher une solution que pour x < 1. On a
R 1
⋆ A(x) = x−1 dx = ln(1 − x),
R (x−2)2 A(x) 3
dx = − (x − 2)2 dx = (x−2)
R
⋆ B (x) = x−1 e 3 .
3
³ ´
Toutes les solutions de l’EDO pour x < 1 s’écrivent y(x) = C + (x−2) 3
1
x−1 pour C ∈ R. On cherche parmi ces solutions
celle qui vérifie y(0) = 1 ; comme y(0) = −C + 83 , l’unique solution du problème de C AUCHY donné est la fonction y(x) =
(x−2)3
³ ´
5 1
3 + 3 x−1 .

Exercice 5.19
Résoudre le problème de Cauchy
(
y ′ (x) + (4x 3 + 5)y(x) = x 3 e −5x ,
y(0) = 1.

Correction
On a a(x) = 1, b(x) = 4x 3 + 5 et g (x) = x 3 e −5x . On a
⋆ A(x) = 4x 3 + 5 dx = x 4 + 5x,
R

4
4 ex
⋆ B (x) = x 3 e −5x e A(x) dx = − x 3 e x dx = 4 .
R R
µ 4

e −x 4
Toutes les solutions de l’EDO sont donc les fonctions y(x) = C − 4 e −x −5x pour C ∈ R.
On cherche parmi ces solutions celle qui vérifie y(0) = 1 ; comme y(0) = C + 14 , l’unique solution du problème de C AUCHY
µ 4

3 ex 4
donné est la fonction y(x) = 4 + 4 e −x −5x .

Exercice 5.20
Établir s’il existe des solutions de y ′ (x) = −2y(x) + e −2x qui ont dérivée nulle en x = 0.

© 2020-2021 G. Faccanoni 213


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

Correction
On a a(x) = 1, b(x) = 2 et g (x) = e −2x . On a
R
⋆ A(x) = 2 dx = 2x,

⋆ B (x) = e −2x e A(x) dx = 1 dx = x.


R R

Toutes les solutions de l’EDO sont donc les fonctions y(x) = (C + x)e −2x pour C ∈ R.
On cherche si parmi ces solutions il en existe qui vérifient y ′ (0) = 0 ; comme y ′ (x) = (1 − 2C − 2x)e −2x et y ′ (0) = 1 − 2C ,
l’unique solution de l’EDO qui a dérivée nulle en x = 0 est la fonction y(x) = ( 21 + x)e −2x .

Exercice 5.21
Établir s’il existe des solutions de y ′ (x) = −2x y(x) + x.

Correction
On a a(x) = 1, b(x) = 2x et g (x) = x. La solution de cette EDO est du type y(x) = y H (x) + y P (x) où y H (x) est la famille de
solutions de l’EDO homogène y ′ (x) = −2x y(x) et y P (x) est une solution particulière de l’EDO complète y ′ (x) = −2x y(x) + x.
On a y H (x) = C e −A(x) et, par exemple, on cherche y P sous la forme y P (x) = K (x)e −A(x) avec
R b(x)
⋆ A(x) = a(x) dx = 2x dx = x 2 ,
R

R g (x) 2 1 2
⋆ B (x) = a(x) e A(x) dx = xe A(x) dx = xe x dx = 2 e x ,
R R

2
donc toutes les solutions de l’EDO sont les fonctions y(x) = C e −x + 12 pour C ∈ R.
Notons qu’il n’est même pas nécessaire de calculer B (x) ; en effet, il suffit de trouver une solution particulière évidente, par
exemple une solution constante. Si y(x) = α pour tout x est une solution de l’EDO complète, alors 0 = −2xα + x, i.e. α = 1/2.
2
On pose alors y P (x) = 1/2 et on a y(x) = y H (x) + y P (x) = C e −x + 12 .
2
Toutes les solutions de l’EDO sont donc les fonctions y(x) = C e −x + 21 pour C ∈ R.

Exercice 5.22
Dans un circuit électrique de type résistance-inductance, le courant I évolue avec le temps selon

R V
I ′ (t ) + I (t ) =
L L
où R, L et V sont des constantes associées aux composantes électriques. Résolvez l’équation différentielle. La solution
I tend-elle vers une limite finie ?

Correction
On a une EDO linéaire d’ordre 1 avec a(t ) = 1, b(t ) = RL et g (t ) = VL . Donc
R R R
⋆ A(t ) = L dt = L t ,
R V A(t ) R R R R
dt = VL e L t dt = VL RL RL e − L t dt = VR e L t ,
R
⋆ B (t ) = L e
R
donc toutes les solutions de l’EDO sont les fonctions I (t ) = αe −A(t ) + B (t )e −A(t ) = αe − L t + VR pour α ∈ R et I (t ) −−−−−→ VR .
t →+∞

Exercice 5.23 («Les experts - Toulon»)


Le corps de la victime a été trouvé sur le lieu du crime à 2H20 de nuit. Après une demi-heure la température du corps
est de 15◦ C. Quand a eu lieu l’homicide si à l’heure de la découverte la température du corps est de 20◦ C et si la
température externe est de −5◦ C ?

Correction
La loi de Newton affirme qu’il existe une constante γ < 0 telle que la température du corps suit l’EDO

T ′ (t ) = γ(T (t ) − Text ).

On commence par calculer toutes les solutions de l’EDO. Étant une équation différentielle du premier ordre, la famille de
solutions dépendra d’une constante D qu’on fixera en utilisant la CI.
Si on réécrit l’EDO sous la forme T ′ (t ) − γT (t ) = −γText , on a une EDO linéaire d’ordre 1 avec a(t ) = 1, b(t ) = −γ et
g (t ) = −γText . Donc

214 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

R
⋆ A(t ) = −γ dt = −γt ,
⋆ B (t ) = −γText e A(t ) dt = Text −γe −γt dt = Text e −γt ,
R R

donc toutes les solutions de l’EDO sont les fonctions T (t ) = De γt + Text pour D ∈ R.
La valeur numérique de la constante d’intégration D est obtenue grâce à la CI : T0 = T (0) = Text + De γ·0 donc D = T0 − Text .
Ici Text = −5◦ C et T0 = 20◦ C donc la température du cadavre suit la loi

T (t ) = −5 + 25e γt .
ln(4/5)
On sait que 15 = T (30) = −5 + 25e 30γ d’où γ = 30 . La température du corps suit donc la loi

ln(4/5)
T (t ) = −5 + 25e 30 t .

Pour déterminer l’heure du meurtre il faut donc résoudre l’équation


ln(4/5)
37 = −5 + 25e 30 t

d’où t = 30 ln(42/25)
ln(4/5) ∼ −69,7 minutes, c’est-à-dire à 1H10 de la nuit.

T (◦ C)
crime
40◦ C
découverte
30◦ C
du cadavre après 30
minutes
20◦ C

10◦ C

0◦ C
-70 -50 -30 -10 10 30 t (minutes)
1H10 1H30 1H50 2H10 2H30 2H50

Exercice 5.24 («Un gâteau presque parfait»)


Un gâteau est sorti du four à 17H00 quand il est brûlant (100◦ C). Après 10 minutes sa température est de 80◦ C et de
65◦ C à 17H20. Déterminer la température de la cuisine.

Correction
La loi de Newton affirme qu’il existe une constante γ < 0 telle que la température du gâteau suit l’EDO

T ′ (t ) = γ(T (t ) − Text ).

On commence par calculer toutes les solutions de l’EDO. Étant une équation différentielle du premier ordre, la famille de
solutions dépendra d’une constante D qu’on fixera en utilisant la CI.
Si on réécrit l’EDO sous la forme T ′ (t ) − γT (t ) = −γText , on a une EDO linéaire d’ordre 1 avec a(t ) = 1, b(t ) = −γ et
g (t ) = −γText . On pose
R
⋆ A(t ) = −γ dt = −γt ,

⋆ B (t ) = −γText e A(t ) dt = Text −γe −γt dt = Text e −γt ,


R R

donc toutes les solutions de l’EDO sont les fonctions T (t ) = De γt + Text pour D ∈ R.
La valeur numérique de la constante d’intégration D est obtenue grâce à la CI :

T0 = T (0) = Text + De γ·0 =⇒ D = T0 − Text =⇒ T (t ) = Text + (T0 − Text )e γt .

Ici l’inconnue est Text . On sait que T (t = 0) = 100◦ C et γ, D, Text :


T (t = 10) = 80◦ C et T (t = 20) = 65◦ C. Il s’agit donc de ré-

 100 = Text + D,

soudre le système de trois équations en les trois inconnues 80 = Text + De 10γ ,

65 = Text + De 20γ .

La première équation se réécrit D = 100 − Text , la seconde

© 2020-2021 G. Faccanoni 215


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

80−Text 80−Text
équation se réécrit e 10K = D = 100−Text , la troisième T (◦ C) T (0) = 100◦ C
65−Text 65−Text
e 20K = D = 100−Text donc
100◦ C
20K
80 − Text e 65 − Text
= e 10K = 10K =
100 − Text e 80 − Text 90◦ C T (10) = 80◦ C
d’où (80 − Text )2 = (65 − Text )(100 − Text ), ainsi Text =
65×100−802
5 = 20. La cuisine est donc à 20◦ C et, plus générale- 80◦ C
ment, la température du gâteau évolue selon la loi T (20) = 65◦ C
ln(3/4) 70◦ C
T (t ) = 20 + 80e 10 t .

60◦ C

50◦ C

40◦ C
10 20 30 t (minutes)

Exercice 5.25

On considère un réservoir de capacité 5000 L rempli d’une solution

Taux : ? kg min−1
Concentration : 0.03 kg L−1
Débit : 25 L min−1
sel/eau parfaitement mélangée contenant 20 kg de sel. Un mélange qui
contient 0.03 kg de sel par litre d’eau entre dans le réservoir à un débit
de 25 L min−1 . La solution est maintenue bien mélangés. Si y(t ) désigne
la quantité (en kilos) de sel dissoute dans le réservoir à l’instant t , y ′ (t )
représente le taux de variation de la quantité de sel, i.e. la différence
entre le taux auquel le sel entre et le taux auquel il en sort.
1. Après avoir calculé les taux auxquels le sel entre et sort du réser-
voir, montrer que cette situation est décrite par le problème de
Cauchy ( y(t ) Sel : y(t ) kg, y(0) = 20 kg
y ′ (t ) = 0.75 − 200 , Taux : y ′ (t ) kg min−1 Débit : 25 L min−1
y(t )
Capacité : 5000 L Concentration : 5000 kg L−1
y(0) = 20. y(t )
Concentration : 5000 kg L−1
Taux : ? kg min−1
2. Calculer l’unique solutions de ce problème.
3. Combien de sel reste dans le réservoir après une demi-heure ?

Correction
1. Le taux auquel le sel entre est (0.03 kg)(25 L min−1 )=0.75 kg min−1 . Comme le réservoir contient constamment 5000 L
de liquide, la concentration est égale à y(t )/5000 (exprimée en kg L−1 ). Le débit du mélange qui sort est alors de
y(t ) y(t )
25 L min−1 , donc le taux auquel le sel sort est ( 5000 kg L−1 )(25 L min−1 )= 200 kg min−1 . L’équation différentielle qui décrit
cette variation s’écrit alors
y(t )
y ′ (t ) = 0.75 −
200
2. On a une EDO linéaire d’ordre 1 avec a(t ) = 1, b(t ) = 1/200, g (t ) = 0.75. On pose
R b(t ) R 1 1
⋆ A(t ) = a(t ) dt = 200 dt = 200 t ,
R g (t )
⋆ B (t ) = a(t ) e A(t ) dt = 0.75 e t /200 dt = 150e t /200 ,
R

donc toutes les solutions de l’EDO sont les fonctions y(t ) = E e −t /200 + 150 pour E ∈ R.
La valeur numérique de la constante d’intégration E est obtenue grâce à la CI : 20 = y(0) = E + 150 donc E = −130 et
l’unique solution du problème de C AUCHY est

y(t ) = 150 − 130e −t /200 .

3. Reste à calculer la quantité de sel après 30 minutes : y(30) = 150 − 130e −3/20 ≃ 38.1 kg.

216 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

Exercice 5.26
L’air d’un garage de 3 m × 5 m × 2 m est initialement chargée de 0.001% de monoxyde de carbone (CO). À l’instant t = 0,
on fait tourner un moteur et des fumées toxiques contenant 5% de CO se dégagent de la pièce à raison de 3 litres par
minute. Heureusement, l’air de la pièce est éliminée à la même vitesse de 3 L min−1 . On note v(t ) le volume de CO
présent dans la pièce au temps t .
1. En supposant que le mélange se fait instantanément, montrer que cette situation est décrite par le problème de
Cauchy
v(t )
(
v ′ (t ) = 0.15 − 10000 ,
v(0) = 0.3.

2. Déterminer le volume v(t ) de CO présent dans la pièce au temps t . Calculer vers quelle valeur limite v(t ) tend
lorsque t tend vers l’infini.
3. Le seuil critique pour la santé est de 0.015% de CO. Après combien de temps ce taux est-il atteint ?

Débit : 3 L min−1
Concentration : 5%
Taux : ? L min−1

CO : v(t ) L, v(0) = ? L Débit : 3 L min−1


Taux : v ′ (t ) L min−1 v(t )
Concentration :
Capacité : 3 m × 5 m × 2 m = 30 000 L 30 000
v(t )
Concentration : Taux : ? L min−1
30 000

Correction
1. Le taux de CO produit par minute est 0.05 × 3 L min−1 = 0.15 L min−1 . Le débit de l’air qui sort est de 3 L min−1 , donc le
v(t ) v(t )
taux auquel le CO sort est 30 000 × 3 L min−1 = −1
10 000 L min . L’équation différentielle qui décrit cette variation s’écrit
alors
v(t )
v ′ (t ) = 0.15 − .
10 000
À l’instant t = 0 le volume de CO présent dans le garage est 0.001% × 30 000 L = 0.3 L.
2. On a une EDO linéaire d’ordre 1 avec a(t ) = 1, b(t ) = 1/10 000, g (t ) = 0.15. On pose
R b(t ) R 1 1
⋆ A(t ) = a(t ) dt = 10 000 dt = 10 000 t ,
R g (t )
⋆ B (t ) = a(t ) e A(t ) dt = 0.15 e t /10 000 dt = 1 500e t /10 000 ,
R

donc toutes les solutions de l’EDO sont les fonctions v(t ) = E e −t /10 000 + 1 500 pour E ∈ R.
La valeur numérique de la constante d’intégration E est obtenue grâce à la CI : 0.3 = v(0) = E + 1 500 donc E =
−(1 500 − 0.3). L’unique solution du problème de C AUCHY est donc

v(t ) = 1 500 − (1 500 − 0.3)e −t /10 000 −−−−−→ 1 500.


t →+∞

−t /10000
3. Reste à calculer après
¡ 1500−0.3 ¢ combien de minutes le taux de CO atteint 0.015% : 0.00015 = 1500 − (1500 − 0.3)e ssi
t = 10000 ln 1500−4.5 ≃ 28.04 min.

Exercice 5.27 (Un escargot sur un élastique)


Un escargot avance d’un mètre par jour sur un élastique d’un kilomètre de long. Mais l’élastique s’étire d’un kilomètre
par jour. L’escargot arrivera-t-elle au bout de l’élastique ?
Source : [Link]

Correction
On note L(t ) la longueur de l’élastique à l’instant t et ℓ(t ) la distance parcourue par l’escargot à l’instant t . Pour les unités de
mesure, on convient qu’une unité de temps correspond à un jour et les longueurs sont mesurées en mètres. On a L(0) = 1000,
ℓ(0) = 0 et il s’agit de voir si ℓ(t ) = L(t ) pour un certain t .
Pour tout t ≥ 0,
L(t ) = 1000t + 1000

© 2020-2021 G. Faccanoni 217


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

et on peut définir y(t ) la fraction de l’élastique parcourue par l’escargot à l’instant t :

ℓ(t )
y(t ) = ∀t ≥ 0.
L(t )

La vitesse ℓ′ de l’escargot par rapport à l’extrémité fixe de l’élastique est la somme de deux vitesses : la vitesse de l’escargot
sur l’élastique, soit 1 mètre par jour, et la vitesse du point de l’élastique où se trouve l’escargot (on peut faire l’hypothèse que
cette vitesse est proportionnelle à l’abscisse de l’escargot) :

ℓ′ (t ) = 1 + y(t )L ′ (t ) ∀t ≥ 0,

donc
ℓ′ (t ) L ′ (t ) 1 + y(t )L ′ (t ) L ′ (t ) 1
y ′ (t ) = − y(t ) = − y(t ) = ∀t ≥ 0.
L(t ) L(t ) L(t ) L(t ) L(t )
Puisque y(0) = 0, on en conclut que
Z t 1 1
Z t 1 1 1
y(t ) = dτ = dτ = [ln(1 + τ)]0t = ln(1 + t )
0 L(τ) 1000 0 1+τ 1000 1000

et donc
1000t + 1000
ℓ(t ) = y(t )L(t ) = ln(1 + t ) = (1 + t ) ln(1 + t ) ∀t ≥ 0.
1000
L’escargot touchera l’extrémité mobile de l’élastique lorsque ℓ(t ) = L(t ), c’est-à-dire à l’instant t f = e 1000 − 1 ≃ 1.97 × 10434
jours ≃ 5.397 × 10431 années (ce qui correspond à ≃ 3.9 × 10421 fois l’age de l’univers).
En étudiant la fonction t 7→ d (t ) = L(t ) − ℓ(t ), on trouve que cette distance est maximale 4 à l’instant t 0 = e 999 − 1 ; après cet
instant l’escargot commence à se rapprocher de l’extrémité de l’élastique pour en arriver au but à l’instant t f = e 1000 − 1. À
l’instant t 0 l’escargot se déplace à une vitesse de 1000 kilomètre par jour et a parcouru y(t 0 ) = 99.9% de l’élastique, elle a
parcouru 99.9% de l’élastique mais elle n’a jamais été aussi loin de son but !

Calcul analytique des solutions d’une EDO de type Bernoulli


Exercice 5.28
Déterminer la solution générale des EDO suivantes après avoir indiqué sur quelle intervalle la solution est définie :

1. y ′ (t ) − 1t y(t ) = (y(t ))3 sin(t ) 2. y ′ (t ) + t y(t ) = t 3 (y(t ))2

Correction
(a) L’EDO y ′ (t ) − 1t y(t ) = (y(t ))3 sin(t ) est une équation différentielle de B ERNOULLI. Comme u(t ) = 1 pour tout t ∈ R∗ , on
cherche sa solution générale sur ] − ∞; 0[ et sur ]0; +∞[.
v(t ) 1
Z Z
⋆ A(t ) = (1 − α) dt = dt = 2 ln |t |,
u(t ) t
w(t ) A(t )
Z Z
⋆ B (t ) = (1 − α) e dt = − t 2 sin(t ) dt = 2t 2 cos(t ) − 4t sin(t ) − 4 cos(t ),
u(t )
C 1,2 +2t 2 cos(t )−4t sin(t )−4 cos(t )
⋆ z(t ) = C 1,2 + B (t ) e −A(t ) = C 1,2 + 2t 2 cos(t ) − 4t sin(t ) − 4 cos(t ) e −2 ln |t | =
¡ ¢ ¡ ¢
t2
,
⋆ y(t ) = (z(t ))−1/2 = p1
z(t )
et on conclut que la solution générale de l’EDO de B ERNOULLI assignée est

y : R∗ → R
t
avec C 1 ∈ R+ ,

p si t < 0
C 1 +2t 2 cos(t )−4t sin(t )−4 cos(t )
t 7→ −t
p si t > 0 avec C 2 ∈ R+ ,
C 2 +2t 2 cos(t )−4t sin(t )−4 cos(t )

(b) L’EDO y ′ (t )+ t y(t ) = t 3 (y(t ))2 est une équation différentielle de B ERNOULLI. Comme u(t ) = 1 pour tout t ∈ R, on cherche
sa solution générale sur R.
⋆ Solution nulle : la fonction y(t ) = 0 pour tout t ∈ R est solution de l’EDO donnée. Toute autre solution ne s’annule
jamais. Supposons dans la suite que y(t ) ̸= 0 pour tout t ∈ R.
4. d ′ (t ) = 999 − ln(1 + t )

218 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

v(t ) t2
ZZ
⋆ A(t ) = (1 − α) dt = − t dt = − ,
u(t ) 2
w(t ) A(t )
Z Z Z
3 −t 2 /2 2
⋆ B (t ) = (1 − α) e dt = − t e dt = −2 xe x dx = −2(x − 1)e x = (2 + t 2 )e −t /2 ,
u(t )
2 /2
⋆ z(t ) = ce t + 2 + t 2,
1
⋆ y(t ) = (z(t ))−1 = z(t )
et on conclut que la solution générale de l’EDO de B ERNOULLI assignée est

y: R→R
1
t 7→ 2 /2
avec C ∈ R
Cet + t2 +2

Approximation numérique d’EDO


Exercice 5.29
Considérons le problème de C AUCHY
trouver une fonction y : I ⊂ R → R définie sur un intervalle I = [t 0 , T ] telle que
(
y ′ (t ) = ϕ(t , y(t )), ∀t ∈ I = [t 0 , T ],
y(t 0 ) = y 0 ,

avec y 0 une valeur donnée et supposons que l’on ait montré l’existence et l’unicité d’une solution y pour t ∈ I .
Pour h = (T − t 0 )/N > 0 soit t n ≡ t 0 + nh avec n = 0, 1, 2, . . . , N une suite de nœuds de I induisant une discrétisation de I
en sous-intervalles I n = [t n ; t n+1 ]. La longueur h est appelé le pas de discrétisation.
Pour
© chaque nœudªt n , on cherche la valeur inconnue u n qui approche la valeur exacte y(t n ). L’ensemble des valeurs
u 0 = y 0 , u 1 , . . . , u N représente la solution numérique.
−y(t )
Tracer, avec les classiques, la solution de l’équation différentielle y ′ (t ) = 2(t +1) et y(0) = 1 sur l’intervalle [0; 8].

Correction p
La solution exacte est y(t ) = 1/ t + 1 qu’on va comparer aux solutions obtenues avec les méthodes indiquées dans le cours :
t0=0;
T=8;
y0=1;
phi=@(t,y)[-y/(2*(t+1))];

N=10;
[t,uE]=eulerexplicite(t0,T,y0,N,phi);
[t,uI]=eulerimplicite(t0,T,y0,N,phi);
[t,uM]=eulermodifie(t0,T,y0,N,phi);
[t,uCN]=cranknicolson(t0,T,y0,N,phi);
[t,uH]=heun(t0,T,y0,N,phi);
y=1./sqrt(t+1);

plot(t,y,’-’,t,uE,’*-’,t,uM,’o-’,t,uI,’+-’,t,uCN,’.-’,t,uH,’x-’)
legend([’Exacte’;’Euler Explicite’; ’Euler Modifiee’; ’Euler Implicite’;’Crank-Nicolson’;’Heun’])

Exercice 5.30
Considérons le problème de C AUCHY
trouver la fonction y : I ⊂ R → R définie sur l’intervalle I = [0, 1] telle que
(
y ′ (t ) = y(t ), ∀t ∈ I = [0, 1],
y(0) = 1

dont la solution est y(t ) = e t . On le résout avec la méthode d’E ULER explicite avec différentes valeurs de N , à savoir 2,
22 , 23 , . . ., 212 (ce qui correspond à différentes valeurs de h, à savoir 1/2, 1/4, 1/8, . . ., 1/4096). Pour chaque valeur de N ,
on ne sauvegarde que l’erreur commise au point final t = 1 et on stocke tous ces erreurs dans le vecteurs err de sort

© 2020-2021 G. Faccanoni 219


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

que err[k] contient |y(t = 1) − u N (k) | avec N (k) = 2k+1 .


Pour estimer l’ordre de convergence p on calculera la pente de la droite de régression sur l’ensemble de points
N
{ (ln(h k ), ln(errk )) }k=1 .

En effet, si l’erreur err est égale à C h p alors ln(err) = ln(C ) + p ln(h) : en échelle logarithmique, p représente donc la
pente de la ligne droite ln(err).

Correction
On initialise les données :
t0=0;
T=1;
y0=1;
phi=@(t,y)[y];
exacte=@(t)[exp(t)];
Pour N = 2k , k = 1, . . . , 12, on calcule la solution approchée par la méthode d’Euler explicite et on évalue l’erreur en t = 1 :
for k=1:12
[t,u]=eulerexplicite(t0,T,y0,2^k,phi); % approximation de y(t) pour t=[t0,t0+h,...,T]
uFIN=u(end) % approximation de y(t=T)
errFIN(K)=abs(exacte(T)-uFIN);
end
Pour afficher l’ordre de convergence p on utilise une échelle logarithmique, i.e. on représente ln(h) sur l’axe des abscisses
et ln(e) sur l’axe des ordonnées. Le but de cette représentation est clair : si e = C h p alors ln(e) = ln(C ) + p ln(h). En échelle
logarithmique, p représente donc la pente de la ligne droite ln(e) :
h=2.^(-[1:Kmax]);
plot(log(h),log(errFIN),’LineWidth’,2,’r-’) % equivalent a loglog(h,errFIN,’LineWidth’,2,’r-’)
polyfit(log(h),log(errFIN),1)(1) % premier coefficient = pente de la droite
title(’ln(err(h))~ln(h)’)
xlabel(’ln(h)’)
ylabel(’ln(err)’)
grid

Exercice 5.31
L’évolution de la concentration de certaines réactions chimiques au cours du temps peut être décrite par l’équation
différentielle
1
y ′ (t ) = − y(t ).
1+ t2
Sachant qu’à l’instant t = 0 la concentration est y(0) = 5, déterminer la concentration à t = 2 à l’aide de la méthode
d’E ULER implicite avec un pas h = 0.5.

Correction
La méthode d’E ULER implicite est une méthode d’intégration numérique d’EDO du premier ordre de la forme y ′ (t ) =
F (t , y(t )). C’est une méthode itérative : en choisissant un pas de discrétisation h, la valeur y à l’instant t + h se déduit de la
valeur de y à l’instant t par l’approximation linéaire

y(t + h) ≈ y(t ) + h y ′ (t + h) = y(t ) + hF (t + h, y(t + h)).

220 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

On pose alors t n = t 0 + nh, n ∈ N. En résolvant l’équation non-linéaire

u n+1 = u n + hF (t n+1 , u n+1 ),

on obtient une suite (u n )n∈N qui approche les valeurs de la fonction y en t n . Dans notre cas, l’équation non-linéaire s’écrit

h
u n+1 = u n − 2
u n+1 .
1 + t n+1

Elle peut être résolue algébriquement et cela donne la suite


un
u n+1 = .
1 + 1+th2
n+1

Si à l’instant t = 0 la concentration est y(0) = 5, et si h = 1/2, alors t n = n/2 et

4 + (n + 1)2
u n+1 = un .
6 + (n + 1)2

On obtient donc
n tn un

0 0 5
4+12
1 0.5 6+12
5 = 57 5 = 25
7 ≈ 3.57
2
4+2 25 8 25 20
2 1.0 6+22 7
= 10 7 = 7 ≈ 2.86
4+32 20
3 1.5 6+32 7
= 13 20 52
15 7 = 21 ≈ 2.48
4+42 52
4 2.0 6+42 21
= 20 52 520
22 21 = 231 ≈ 2.25

La concentration à t = 2 est d’environ 2.25 qu’on peut comparer avec le calcul exact y(2) = 5e − arctan(2) ≈ 1.652499838.

y
5

2 Exacte
E ULER implicite
1

1 2 3 t

Exercice 5.32 (Loi de N EWTON K)


Considérons une tasse de café à la température de 75◦ C dans une salle à 25◦ C. On suppose que la température du
café suit la loi de Newton, c’est-à-dire que la vitesse de refroidissement du café est proportionnelle à la différence
des températures. En formule cela signifie qu’il existe une constante K < 0 telle que la température vérifie l’équation
différentielle ordinaire (EDO) du premier ordre.

T ′ (t ) = K (T (t ) − 25).

La condition initiale (CI) est donc simplement


T (0) = 75.
Pour calculer la température à chaque instant on a besoin de connaître la constante K . Cette valeur peut être déduite

© 2020-2021 G. Faccanoni 221


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

en constatant qu’après 5 minutes le café est à 50◦ C, c’est-à-dire

T (5) = 50.

On peut montrer que la température du café évolue selon la fonction


ln(2)
T (t ) = 25 + 50e − 5 t .

Comparer cette solution avec la solution approchée obtenue par la méthode d’E ULER explicite.

Correction
Supposons de connaître K mais de ne pas vouloir/pouvoir calculer la fonction T (t ). Grâce à la méthode d’E ULER on peut
estimer la température à différentes instantes t i en faisant une discrétisation temporelle du futur (i.e. on construit une suite
de valeurs {t i = 0 + i ∆t }i ) et en construisant une suite de valeurs {Ti }i où chaque Ti est une approximation de T (t i ). Si on
utilise la méthode d’E ULER, cette suite de température est ainsi construite :
(
Ti +1 = Ti − ln(2)
5 ∆t (Ti − 25),
T0 = 75,

qu’on peut réécrire comme (


Ti +1 = (1 − ln(2)
5 ∆t )Ti + 5 ln(2)∆t ,
T0 = 75.
1. Exemple avec ∆t = 5 :
T
75

ti T (t i ) Ti T (t i ) − Ti
50 0.000000 75.000000 75.000000 0.000000
5.000000 50.000000 40.342641 9.657359
10.000000 37.500000 29.707933 7.792067
25 15.000000 31.250000 26.444642 4.805358

0
5 10 15 t

2. Exemple avec ∆t = 1 :

ti T (t i ) Ti T (t i ) − Ti
0.000000 75.000000 75.000000 0.000000
1.000000 68.527528 68.068528 0.459000
T 2.000000 62.892914 62.097962 0.794952
75 3.000000 57.987698 56.955093 1.032605
4.000000 53.717459 52.525176 1.192283
5.000000 50.000000 48.709377 1.290623
50 6.000000 46.763764 45.422559 1.341205
7.000000 43.946457 42.591391 1.355066
8.000000 41.493849 40.152707 1.341142
25 9.000000 39.358729 38.052095 1.306634
10.000000 37.500000 36.242691 1.257309
11.000000 35.881882 34.684123 1.197759
0 12.000000 34.473229 33.341618 1.131610
5 10 15 t
13.000000 33.246924 32.185225 1.061700
14.000000 32.179365 31.189141 0.990224
15.000000 31.250000 30.331144 0.918856

222 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

Exercice 5.33 («Les experts - Toulon»)


La loi de Newton affirme que la vitesse de refroidissement d’un corps est proportionnelle à la différence entre la
température du corps et la température externe, autrement dit qu’il existe une constante K < 0 telle que la température
du corps suit l’équation différentielle (
T ′ (t ) = K (T (t ) − Text ),
T (0) = T0 .

1. Soit ∆t le pas temporel. Écrire le schéma d’E ULER implicite pour approcher la solution de cette équation
différentielle.
2. Soit Text = 0◦ C. En déduire une forme du type

Tn+1 = g (∆t , n, T0 )

avec g (∆t , n, T0 ) à préciser (autrement dit, l’itéré en t n ne dépend que de ∆t , de n et de T0 ). Que peut-on en
déduire sur la convergence de la méthode ?
3. Problème. Un homicide a été commis. On veut établir l’heure du crime sachant que
⋆ pour un corps humaine on peut approcher K ≈ −0.007438118376 (l’échelle du temps est en minutes et la
température en Celsius),
⋆ le corps de la victime a été trouvé sur le lieu du crime à 2H 20 du matin,
⋆ à l’heure du décès la température du corps était de 37◦ C,
⋆ à l’heure de la découverte la température du corps est de 20◦ C,
⋆ la température externe est Text = 0◦ C.
Approcher l’heure de l’homicide en utilisant le schéma d’E ULER implicite avec ∆t = 10 minutes.

Correction
1. La méthode d’E ULER implicite (ou régressive) est une méthode d’intégration numérique d’EDO du premier ordre de
la forme T ′ (t ) = F (t , T (t )). En choisissant un pas de discrétisation ∆t , nous obtenons une suite de valeurs (t n , Tn ) qui
peuvent être une excellente approximation de la fonction T (t ) avec
(
t n = t 0 + n∆t ,
Tn+1 = Tn + F (t n+1 , Tn+1 )∆t .

La méthode d’E ULER implicite pour cette EDO s’écrit donc

Tn+1 = Tn + K ∆t (Tn+1 − Text ).

2. Si Text = 0◦ C, en procédant par récurrence sur n on obtient

1 1
Tn+1 = g (∆t , n) = Tn = T0 ,
1 − K ∆t (1 − K ∆t )n+1

autrement dit, l’itérée en t n ne dépend que de ∆t et de n mais ne dépend pas de Tn . Comme 0 < 1−K1 ∆t < 1 pour tout
∆t > 0, la suite est positive décroissante ce qui assure que la solution numérique est stable et convergente.
3. On cherche combien de minutes se sont écoulés entre le crime et la découverte du corps, autrement dit on cherche n
tel que

ln 37
µ ¶ ¡ ¢
1 n+1 37 37 20
20 = 37 =⇒ (1 − K ∆t ) = =⇒ n + 1 = log (1−K ∆t ) = =⇒ n ≈ 8.
(1 − K ∆t )n+1 20 20 ln(1 − K ∆t )

Comme t n = t 0 + n∆t , si t n = 2H 20 alors t 0 = t n − n∆t = 2H 20 − 1H 20 = 01H 00.


Pour cette équation différentielle, il est possible de calculer analytiquement ses solutions : la température du cadavre suit la
loi
T (t ) = 37e K t .
Pour déterminer l’heure du meurtre il faut alors résoudre l’équation

20 = 37e K t
1
d’où t = K ln 20
37 ≈ 82,70715903 minutes, c’est-à-dire 83 minutes avant 2H20 : le crime a été commit à 00H57.

© 2020-2021 G. Faccanoni 223


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

T [◦ C]

t
1H00

1H10

1H20

1H30

1H40

1H50

2H00

2H10

2H20
Exercice 5.34
Montrer que le problème de C AUCHY
(
y ′ (t ) = y 1/2 (t ), t > 0
y(0) = 0,

admet une infinité de solutions de classe C 1 (R+ ). Parmi ces solutions, quelle solution approche-t-on si on utilise la
méthode d’Euler explicite ? et la méthode d’Euler implicite ? Que se passe-t-il si la donnée initiale est y(0) = y 0 > 0 ?

Correction
p
La fonction ϕ(t , y) = y n’est pas lipschitzienne par rapport à y, donc le théorème d’existence et unicité locale n’est pas
valable au voisinage de (0, 0). L’EDO est a variables séparables, on peut donc expliciter toutes les solutions du problème de
C AUCHY. Elle admet une solution constante, la fonction y(t ) = 0 pour tout t ∈ R+ , et des solutions de la forme y(t ) = 14 (t + c)2
pour tout t ≥ c. En imposant la CI on trouve que, pour tout b ∈ R+ , les fonctions
(
0, si 0 ≤ t ≤ b,
y b (t ) = 1
4 (t − b)2 , si t ≥ b,

sont de classe C 1 (R+ ) et sont solution du problème de C AUCHY donné.


y

0 b t

La méthode d’Euler explicite construit la suite


(
u 0 = y 0 = 0,
u n+1 = u n + hϕ(t n , u n ) = u n + hu n1/2 , n = 0, 1, 2, . . . N − 1

par conséquent u n = 0 pour tout n. La méthode d’Euler explicite approche la solution constante y(t ) = pour tout t ∈ R+ .
La méthode d’Euler implicite construit la suite
(
u 0 = y 0 = 0,
1/2
u n+1 = u n + hϕ(t n+1 , u n+1 ) = u n + hu n+1 , n = 0, 1, 2, . . . N − 1.
p
par conséquent u 0 = 0 mais u 1 dépend de la méthode de résolution de l’équation implicite x = 0 + h x. Bien sur x = 0 est
une solution mais x = h 2 est aussi solution. Si le schéma choisi u 1 = h 2 , alors u n > 0 pour tout n ∈ N∗ .
p
Notons que le problème de Cauchy avec une CI y(0) = y 0 > 0 admet une et une seule solution, la fonction y(t ) = 14 (t −2 y 0 )2 .
Dans ce cas, les deux schémas approchent forcement la même solution.

224 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 5. De l’interpolation à l’approximation d’EDO

Exercice 5.35
Considérons une population de bactéries. Soit p(t ) le nombre d’individus (≥ 0) à l’instant t ≥ 0. Un modèle qui décrit
l’évolution de cette population est l’«équation de la logistique» : soit k et h deux constantes positives, alors p(t ) vérifie
l’équation différentielle ordinaire (EDO) du premier ordre

p ′ (t ) = kp(t ) − hp 2 (t ).

On veut calculer p(t ) à partir d’un nombre initiale d’individus donné

p(0) = p 0 ≥ 0.

Correction
Solution exacte

1. On commence par calculer toutes les solutions de l’EDO. Étant une équation différentielle du premier ordre,
la famille de solutions dépendra d’une constante qu’on fixera en utilisant la CI. Il s’agit d’une EDO à variables
séparables.
On cherche d’abord les solutions constantes, c’est-à-dire les solutions du type p(t ) ≡ c pour tout t ∈ R+ :

0 = kc − hc 2 .

On a donc deux solutions constantes :


k
p(t ) ≡ 0 et p(t ) ≡ .
h

Étant donné que deux solutions d’une EDO ne s’intersectent jamais, dorénavant on supposera p(t ) ̸= 0 et
p(t ) ̸= hk pour tout t ∈ R+ , ainsi
p ′ (t )
= 1.
kp(t ) − hp 2 (t )
Formellement on a
dp 1
Z Z
= 1 dt =⇒ dp = 1 dt =⇒
kp − hp 2 p(k − hp)
1 1 1 −h 1 1
Z Z Z
dp − dp = 1 dt =⇒ ln(p) − ln(k − hp) = t + c =⇒
k p k k − hp k k
p p
µ ¶
ln = kt + kc =⇒ = De kt =⇒
k − hp k − hp
k
p(t ) = 1 .
De kt
+h

2. La valeur numérique de la constante d’intégration D est obtenue grâce à la CI :

kD p0
p 0 = p(0) = =⇒ D= .
1 + hDe 0k k − hp 0

On peut donc conclure que la population évolue selon la fonction



0
 si p 0 = 0,

k
p(t ) = h si p 0 = hk ,
k
sinon.


 k−hp 0
 +h
p 0 e kt

Une simple étude de la fonction p montre que

⋆ si p 0 ∈ ]0; k/h[ alors p ′ (t ) > 0 et limt →+∞ p(t ) = k/h,

⋆ si p 0 ∈ ]k/h; +∞[ alors p ′ (t ) < 0 et limt →+∞ p(t ) = k/h.

© 2020-2021 G. Faccanoni 225


Chapitre 5. De l’interpolation à l’approximation d’EDO Mis à jour le Mercredi 31 mai 2023

p
5

4
Exemple avec k = 3, h = 1
3 et différentes valeurs de
p0.
2

0
1 2 3 t

Solution approchée Supposons de ne pas vouloir/pouvoir calculer la fonction p(t ). Grâce à la méthode d’E ULER on peut
estimer le nombre d’indivus à différentes instantes t i en faisant une discrétisation temporelle du futur (i.e. on construit
une suite de valeurs {t i = 0 + i ∆t }i ) et en construisant une suite de valeurs {p i }i où chaque p i est une approximation
de p(t i ). Si on utilise la méthode d’E ULER, cette suite est ainsi construite :
(
p i +1 = p i + ∆t p i (k − hp i ),
p 0 donné,

qu’on peut réécrire comme (


p i +1 = (1 + k∆t − h∆t p i )p i ,
p 0 donné.
On veut appliquer cette méthode au cas de la figure précédente, i.e. avec k = 3, h = 1 et les valeurs initiales p 0 = 5 et
p 0 = 2. Si on choisit comme pas temporelle ∆t = 0,15, on obtient les figures suivantes :
ti p(t i ) pi p(t i ) − p i p
0.00 5.000000 5.000000 0.000000 5
0.15 4.027123 3.500000 0.527123
0.30 3.582637 3.237500 0.345137
4
0.45 3.347079 3.122164 0.224915
0.60 3.212403 3.064952 0.147451
0.75 3.132046 3.035091 0.096956 3
0.90 3.082874 3.019115 0.063759
1.05 3.052319 3.010459 0.041861 2
1.20 3.033151 3.005736 0.027415
1.35 3.021054 3.003150 0.017904 1
1.50 3.013390 3.001731 0.011659
1.65 3.008524 3.000952 0.007573 0
1.80 3.005430 3.000523 0.004907 1 2 3 t
ti p(t i ) pi p(t i ) − p i p
0.00 2.000000 2.000000 0.000000 5
0.15 2.274771 2.300000 −0.025229
0.30 2.493175 2.541500 −0.048325
4
0.45 2.655760 2.716292 −0.060532
0.60 2.770980 2.831887 −0.060907
0.75 2.849816 2.903298 −0.053483 3
0.90 2.902469 2.945411 −0.042942
1.05 2.937070 2.969529 −0.032459 2
1.20 2.959567 2.983102 −0.023535
1.35 2.974092 2.990663 −0.016571 1
1.50 2.983429 2.994852 −0.011423
1.65 2.989412 2.997164 −0.007752 0
1.80 2.993240 2.998439 −0.005199 1 2 3 t

226 © 2020-2021 G. Faccanoni


CHAPITRE 6

Fonctions de plusieurs variables

⋆ Une fonction f de Rn et à valeurs réelles fait correspondre à tout point x ≡ (x 1 , x 2 , . . . , x n ) de Rn au plus un réel f (x).
x ∈ Rn se note aussi x ou x. Si n = 2, on utilise souvent la notation (x, y), si n = 3 la notation (x, y, z).
⋆ Le domaine de définition de f est l’ensemble D f ⊂ Rn des points x ≡ (x 1 , x 2 , . . . , x n ) qui ont une image par f .
⋆ L’image par f de D est l’ensemble Im f (D f ) = r ∈ R ¯ r = f (x), x ∈ Rn ⊂ R.
© ¯ ª

⋆ L’ensemble des points S = (x, f (x)) ¯ x ∈ D f de Rn+1 est la surface représentative de f ; c’est l’analogue de la courbe
© ¯ ª

représentative d’une fonction d’une variable. Évidemment, la représentation géométrique devient plus lourde que
pour les fonctions d’une seule variable : une fonction de n variables se visualise à priori dans un espace à n + 1
dimensions (n pour les variables, 1 pour le résultat de la fonction), alors que les pages d’un livre sont, par nature,
bidimensionnelles. Pour contourner cette impossibilité technique, nous nous limiterons aux représentations des
fonctions de deux variables, soit sous forme de dessins en perspective, soit sous forme de coupes par des plans hori-
zontaux ou verticaux qui donnent des informations souvent utiles, quoique parcellaires. Ce problème de visualisation
introduit une rupture nette par rapport aux fonctions d’une variable étudiées antérieurement.

Lorsque n = 2, le graphe
G f ≡ (x, y, z = f (x, y)) ¯ (x, y) ∈ D f
© ¯ ª

est tridimensionnel. On peut considérer le graphe d’une fonction de deux variables comme étant le relief d’une région (par
exemple, l’altitude en fonction de la longitude et de la latitude).

On visualise le graphe d’une fonction

f : R2 → R
(x, y) 7→ f (x, y)

par l’altitude z = f (x, y).

Les axes relatifs aux variables, x et y, sont conventionnellement situés dans un plan horizontal (le domaine D f apparaît
alors comme un sous-ensemble de ce plan), tandis que la dimension verticale est réservée aux valeurs de z. Ainsi, à tout
(x, y) ∈ D f , dont l’image est f (x, y) ∈ R, correspond le point suivant du graphe : (x, y, f (x, y)) ∈ R3 . Une mise en perspective
permet la visualisation des surfaces à trois dimensions. Dans ce cas, l’axe z est toujours placé verticalement. Toutefois, pour
des raisons de lisibilité, les axes x et y ne sont pas toujours présentés selon la même orientation.

E XEMPLE
Le graphe de la fonction f : R2 → R définie par f (x, y) = x 2 − y 2 est une surface de R3 qui a la forme d’une selle de cheval,
comme l’indique la représentation en perspective de la figure ci-dessous.

227
Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

Voici d’autres exemples :


sin(x) sin(y)
2 2 −x 2 −y 2 sin(x) + sin(y) xy
(x + 3y )e

Si on considère des coupes horizontales on obtient, de façon générale, des courbes planes, dites courbes ou lignes de niveau.

Définition 6.1 (Lignes de niveau)


Soit k ∈ R et f une fonction de R2 dans R ; la courbe de niveau k de la fonction f est la projection©sur le plan¯d’équation ªz = 0
de l’intersection de la surface représentative de f avec le plan horizontal z = k, i.e. l’ensemble (x, y) ∈ D ¯ f (x, y) = k .

En pratique, on représente simultanément différentes courbes de niveau pour visualiser la progression du graphe. Cette
représentation s’apparente aux cartes géographiques où le niveau correspond à l’altitude. Les courbes de niveau d’une
fonction f (x, y) fournissent une représentation géométrique de f sur le plan, alors que son graphe en donne une dans
l’espace.

E XEMPLE
L’image ci-contre montre les courbes de niveaux d’une fonc-
tion f . On peut alors se faire une idée de l’allure de la fonction
supposée continue. Par exemple f (1; 3) ≈ 72, f (4; 5) ≈ 56, soit
40 < f (3; 3) < 50 soit 50 < f (3; 3) < 60, etc.

E XEMPLE (C ARTES TOPOGRAPHIQUES )


On peut considérer le relief d’une région comme étant le graphe d’une fonction de deux variables (par exemple, l’altitude en
fonction de la longitude et de la latitude). Une courbe de niveau nous indique les points de même altitude (ici, l’altitude du
point A est 940 + d = 940 + cb/a). En dessinant les courbes de niveau avec leur altitude correspondante, on obtient la carte
topographique du relief. La lecture d’une carte topographique permet non seulement d’obtenir des mesures quantitatives
du relief, mais aussi de faire rapidement des observations qualitatives sur sa nature. Par exemple, localiser les points de
plus haute et de plus basse altitude ; les crêtes, les fonds, les vallées, les cols, etc. ; les endroits du relief où les pentes sont
plus escarpées ou plus douces, puisqu’ils correspondent respectivement aux courbes de niveau très rapprochées ou très
distantes.
Attention : dans cette représentation les couleurs ne correspondent pas à la représentation planaire mais servent à reproduire
les ombres.

228 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

6.1. Dérivées partielles du premier ordre et gradient


Rappels Soit f une fonction à valeurs réelles définie sur I un intervalle ouvert de R. On dit que f est dérivable en x 0 ∈ I
s’il existe finie la limite
f (x) − f (x 0 )
lim
x→x 0 x − x0
ce qui équivaut, en posant h = x − x 0 , à
f (x 0 + h) − f (x 0 )
lim .
h→0 h
Cette limite est notée f ′ (x 0 ) et appelée dérivée de f en x 0 .

L’unique dérivée d’une fonction d’une variable réelle, lorsqu’elle existe, est liée aux variations de la fonction tandis que
la variable parcourt l’axe des abscisses. Pour une fonction f : R2 → R, dont le graphe est une surface de R3 , la situation
est très différente. En effet, l’axe réel n’offre que deux types de mouvements possibles : de gauche à droite et de droite à
gauche tandis que le plan R2 possède une infinité de directions. Il peut s’avérer intéressant d’étudier comment une fonction
f : R2 → R évolue lorsque la variable suit l’une ou l’autre direction du plan. À cet égard, considérons d’abord la direction à
y fixé. Prenons le point (x 0 , y 0 ) du domaine de f . Son image est f (x 0 , y 0 ) ∈ R et le graphe de la fonction, qui est la surface
d’équation z = f (x, y) de R3 , comporte le point (x 0 , y 0 , f (x 0 , y 0 )). L’intersection du graphe de f avec le plan vertical y = y 0 est
la courbe d’équation z = f (x, y 0 ) de R2 . Le point (x 0 , y 0 ) étant fixé, on peut alors interpréter cette courbe comme le graphe
de la fonction f y=y 0 d’une seule variable définie par f y=y 0 (x) = f (x, y 0 ) dans le repère x0z. Si f y=y 0 est dérivable en x 0 , alors
sa dérivée nous renseigne sur la variation de la fonction f lorsque (x, y) se déplace le long de la droite horizontale de R2
passant par le point (x 0 , y 0 ). Par analogie on peut répéter le même raisonnement à x fixé. En conclusion, lorsqu’on pose
toutes les variables d’une fonction égales à une constante, sauf une, on obtient alors une fonction d’une seule variable qui
peut être dérivée suivant les règles habituelles.

Définition 6.2 (Dérivées partielles premières)


Soit f une fonction à valeurs réelles définie sur une partie ouverte D de R2 . Soit (x 0 , y 0 ) ∈ D. Les dérivées partielles de f en
(x 0 , y 0 ) sont les dérivées des fonctions partielles f y 0 et f x0 évaluées en (x 0 , y 0 ), i.e. les fonctions

∂f f (x, y 0 ) − f (x 0 , y 0 ) f (x 0 + h, y 0 ) − f (x 0 , y 0 ) dérivée partielle de f


(x 0 , y 0 ) = lim = lim par rapport à x au point (x 0 , y 0 )
∂x x→x 0 x − x0 h→0 h
∂f f (x 0 , y) − f (x 0 , y 0 ) f (x 0 , y 0 + k) − f (x 0 , y 0 ) dérivée partielle de f
(x 0 , y 0 ) = lim = lim par rapport à y au point (x 0 , y 0 )
∂y y→y 0 y − y0 k→0 k

Il s’agit de limites d’une fonction réelle de variable réelle !


Si f admet toutes les dérivées partielles premières, on dit que f est dérivable.

Remarque (Notation)
∂f ∂f ¯
¯
La dérivée ∂x se note aussi ∂x f ou f ,x ou encore ∂x ¯ y en insistant sur la variable qu’on considère constante.
(Attention à ne pas confondre f ,x la dérivée de f par rapport à x avec f x=x0 la fonction partielle associée à f .)

Astuce
En pratique, pour calculer la dérivée partielle ∂x f (resp. ∂ y f ), on dérive f comme si elle était une fonction de la seule
variable x (resp. y) et que l’autre variable, y (resp. x), était une constante.

© 2020-2021 G. Faccanoni 229


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

E XEMPLE
Soit f (x, y) = 4 − x 2 − 2y 2 . Le graphe de f est le paraboloïde z = 4 − x 2 − 2y 2 . On a ∂x f (x, y) = −2x et ∂ y f (x, y) = −4y.
Le plan vertical y = 1 intersecte le paraboloïde dans la parabole d’équation z(x) = 2 − x 2 (et on appelle cette courbe C 1
comme dans la figure à gauche). La pente de la droite tangente à cette parabole au point (1, 1) est ∂x f (1, 1) = −2.
De la même façon, le plan vertical x = 1 intersecte le paraboloïde dans la parabole z(y) = 2 − 2y 2 (et on appelle cette courbe
C 2 comme dans la figure à droite). La pente de la droite tangente à cette parabole au point (1, 1) est ∂ y f (1, 1) = −4.

E XEMPLE
1. Soit la fonction f (x, y) = 3x 2 +x y −2y 2 . Alors D f ≡ R2 , f est continue, ∂x f (x, y) = 6x+y (car y est considérée constante)
et ∂ y f (x, y) = x − 4y (car x est considérée constante).
2. Soit la fonction f (x, y, z) = 5xz ln(1 + 7y). Alors D f ≡ {(x, y, z) | y > −1/7}, f est continue et ∂x f (x, y, z) = 5z ln(1 + 7y),
35xz
∂ y f (x, y, z) = 1+7y et ∂z f (x, y, z) = 5x ln(1 + 7y).
3. La résistance totale R d’un conducteur produite par trois conducteurs de résistances R 1 , R 2 R 3 , connectés en parallèle,
est donnée par la formule
1 1 1 1
= + + .
R R1 R2 R3
On a alors ∂Ri R(R 1 , R 2 , R 3 ) = R 2 /R i2 .

Définition 6.3 (Vecteur gradient)


Le gradient de la fonction f : Rn → R évalué au point x̂ = (x̂ 1 , x̂ 2 , . . . , x̂ n ), noté ∇ f (x̂) ou encore grad f (x̂), est le vecteur dont
les composantes sont les dérivées partielles premières :

∂x1 f (x̂)
 
 ∂ f (x̂) 
 x2 
∇ f (x̂) =  .. 
.
 
 
∂xn f (x̂)

Il est orthogonal à la courbe de niveau de f passant par x̂.

Définition 6.4 (Plan tangent)


Soit D une partie ouverte de Rn et soit f : D → R une fonction différentiable en x̂. L’équation du plan tangent au graphe de
la fonction f (x) en x̂ est
L(x) = f (x̂) + (x − x̂)T · ∇ f (x̂).
Pour n = 2, en notant x̂ ≡ (x 0 , y 0 ), l’équation du plan tangent au graphe de la fonction f (x, y) en (x 0 , y 0 ) s’écrit

L(x, y) = f (x 0 , y 0 ) + (x − x 0 )∂x f (x 0 , y 0 ) + (y − y 0 )∂ y f (x 0 , y 0 )

ce qui équivaut, en notant (h, k) = (x − x 0 , y − y 0 ), à

L(x 0 + h, y 0 + k) = f (x 0 , y 0 ) + h∂x f (x 0 , y 0 ) + k∂ y f (x 0 , y 0 ).

E XEMPLE
Considérons la fonction de R2 dans R définie ©par f (x, y) =¯ x 2 + y. Le gradient de f est le vecteur ∇ f (x, y) = (2x, 1)T . La courbe
de niveau k de la fonction f est l’ensemble (x, y) ∈ R2 ¯ x 2 + y = k , autrement dit la parabole d’équation y = −x 2 + k. Le
ª

gradient est orthogonal à la courbe de niveau de f qui passe par le point (x, y).
Dans la figure ci-dessous on considère le point (−1, 1). Le vecteur gradient de f dans ce point vaut (−2, 1)T . Le point donné
appartient à la courbe de niveau 2 qui a pour équation y = −x 2 + 2. La droite tangente à cette courbe au point (−1, 1) a pour
équation y = 2x + 3 qui est orthogonale au gradient.

230 © 2020-2021 G. Faccanoni


k =5

Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables


k =4

µ ¶ y
−2
∇ f (−1, 1) =
1
k =2

1
k =1

−1 k =0 x

k = −1

k = −2

Le plan tangent à f en x̂ = (−1, 1) s’écrit


µ ¶
T 2 −2
L(x) = f (x̂) + (x − x̂) · ∇ f (x̂) = (−1) + 1 + (x + 1, y − 1) · = 2 − 2(x + 1) + (y − 1) = −2x + y − 1.
1

Cette notion se généralise naturellement pour n > 2 : il s’agit en fait d’un plan tangent pour n = 2 et d’un hyperplan tangent
pour n > 2. Dans un espace de dimension n, un hyperplan est une variété linéaire de dimension n − 1.

E XEMPLE
On peut calcule le plan tangent à la fonction f : R2 → R définie par f (x, y) = xe x y en (1, 0) et utiliser sa linéarisation pour
approcher f (1.1, −0.1). On a

f (x, y) = xe x y f (1, 0) = 1
xy xy
∂x f (x, y) = e + x ye ∂x f (1, 0) = 1
2 xy
∂ y f (x, y) = x e ∂ y f (1, 0) = 1

Les trois fonctions f , ∂x f et ∂ y f sont continues, donc f est différentiable. Sa linéarisation donne

f (x, y) ≃ f (1, 0) + (x − 1)∂x f (1, 0) + (y − 0)∂ y f (1, 0) = 1 + (x − 1) + y = x + y,

autrement dit xe x y ≃ x + y lorsque (x, y) ≃ (1, 0), ainsi f (1.1, −0.1) ≃ 1.1 − 0.1 = 1. En effet, f (1.1, −0.1) = 1.1e −0.11 ≈ 0.98542

6.2. Dérivées partielles de deuxième ordre et matrice hessienne


Si les fonctions dérivées partielles admettent elles-mêmes des dérivées partielles en (x 0 , y 0 ), ces dérivées sont appelées
dérivées partielles secondes, ou dérivées partielles d’ordre 2, de f en (x 0 , y 0 ). On peut, de la même façon, introduire les
dérivées partielles d’ordres supérieurs. Les définitions suivantes s’énoncent dans des ensembles ouverts pour éviter les
problèmes liés au calcul de limites au bord du domaine.

Définition 6.5 (Dérivées partielles d’ordre 2 pour une fonction de deux variables)
Soit la fonction f : D ⊂ R2 → R où D f est un ouvert de R2 . On a 2 dérivées partielles d’ordre 1 et donc 4 dérivées partielles
d’ordre 2 ainsi notées :

∂2 f ∂ ∂f
µ ¶
(x 0 , y 0 ) = (x 0 , y 0 ) (notée aussi ∂xx f (x 0 , y 0 )),
∂x 2 ∂x ∂x
∂2 f ∂ ∂f
µ ¶
(x 0 , y 0 ) = (x 0 , y 0 ) (notée aussi ∂x y f (x 0 , y 0 )),
∂x ∂y ∂x ∂y

© 2020-2021 G. Faccanoni 231


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

∂2 f ∂ ∂f
µ ¶
(x 0 , y 0 ) = (x 0 , y 0 ) (notée aussi ∂ y x f (x 0 , y 0 )),
∂y ∂x ∂y ∂x
∂2 f ∂ ∂f
µ ¶
(x ,
0 0 y ) = (x 0 , y 0 ) (notée aussi ∂ y y f (x 0 , y 0 )).
∂y 2 ∂y ∂y

Les dérivées partielles d’ordre supérieur à 2 se définissent par récurrence de façon analogue. Soit la fonction f : Rn → R ; on
aura n dérivées partielles d’ordre 1, n 2 dérivées partielles d’ordre 2, etc. donc n k dérivées partielles d’ordre k.

Théorème 6.6 (Théorème de S CHWARZ (ou de C LAIRAUT))


Si les dérivées partielles mixtes ∂x y f et ∂ y x f sont continues en (x 0 , y 0 ) alors ∂x y f (x 0 , y 0 ) = ∂ y x f (x 0 , y 0 ).

Définition 6.7 (Matrice hessienne)


Soit la fonction f : D ⊂ R2 → R où D f est un ouvert de R2 . La matrice hessienne de f en (x 0 , y 0 ) est la matrice de taille 2 × 2
dont les entrées sont les dérivées partielles secondes :

∂xx f (x 0 , y 0 ) ∂x y f (x 0 , y 0 )
µ ¶
H f (x 0 , y 0 ) = .
∂ y x f (x 0 , y 0 ) ∂ y y f (x 0 , y 0 )

Son déterminant est le réel dét(H f (x 0 , y 0 )) ≡ ∂xx f (x 0 , y 0 )∂ y y f (x 0 , y 0 ) − ∂x y f (x 0 , y 0 )∂ y x f (x 0 , y 0 ).

Cette notion se généralise naturellement pour n > 2.

E XEMPLE
Les dérivées premières et secondes de la fonction f (x, y) = −2x 2 + 3x y 2 − y 3 sont

∂x f (x, y) = −4x + 3y 2 , ∂ y f (x, y) = 6x y − 3y 2 ,


∂xx f (x, y) = −4, ∂x y f (x, y) = 6y, ∂ y x f (x, y) = 6y, ∂ y y f (x, y) = 6x − 6y.

La matrice hessienne est µ ¶


−4 6y
H f (x, y) = .
6y 6x − 6y
Dans cet exemple, on remarque que la matrice hessienne de f est symétrique du fait que les dérivées secondes mixtes, ∂x y f
et ∂ y x f , sont égales.

Comme la dérivée seconde pour les fonctions d’une seule variable, la matrice hessienne permet d’étudier la convexité des
fonctions de plusieurs variables et joue, dès lors, un rôle important dans leur optimisation.

6.3. Optimisation (dans un ouvert et sans contraintes)


Un optimum ou extremum est soit un maximum soit un minimum, c’est-à-dire la valeur la plus haute ou la plus faible que
prend la fonction sur son ensemble de définition ou tout sous-ensemble de son ensemble de définition.

Définition 6.8
Soit f une fonction de D ⊂ Rn dans R. On dit que
⋆ f est bornée dans D s’il existe un nombre réel M ≥ 0 tel que

∀x ∈ D, | f (x)| ≤ M ;

⋆ f admet un maximum (resp. minimum) global (ou absolu) en x0 ∈ D si

∀x ∈ D, f (x) ≤ f (x0 ) (resp. f (x) ≥ f (x0 )) ;

⋆ f admet un maximum (resp. minimum) local (ou relatif) en x0 ∈ D s’il existe une boule de rayon non nul B(x0 , r ) telle
que
∀x ∈ D ∩ B(x0 , r ), f (x) ≤ f (x0 ) (resp. f (x) ≥ f (x0 )).

Théorème 6.9 (de F ERMAT : condition nécessaire du premier ordre)


Soit D un sous-ensemble ouvert de Rn , x0 un point contenu dans D et f : D → R une fonction de classe C 1 en ce point. Si f
présente un extrémum local alors
∇ f (x0 ) = 0.

232 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

Définition 6.10 (Point stationnaire ou critique)


À l’instar des fonctions d’une variable réelle, un point x0 vérifiant ∇ f (x0 ) = 0 est appelé point stationnaire ou point critique
de f .

Nature d’un point critique : étude directe La condition du premier ordre signifie géométriquement que le plan tangent
à la surface d’équation z = f (x, y) au point (x 0 , y 0 ) de coordonnées (x 0 , y 0 , f (x 0 , y 0 )) est horizontal. Après avoir déterminé
un point stationnaire x0 , on peut alors déterminer sa nature en étudiant le signe de la différence

d (h) = f (x0 + h) − f (x0 ).

Si cette différence est de signe constant pour h voisin de 0, il s’agit d’un extrémum local (un maximum si d < 0, un minimum
si d > 0). Sinon, il s’agit d’un point-col (ou point-selle). Mieux, si le signe est constant pour h quelconque, alors l’extrémum
est global.
La figure à gauche illustre le cas d’un maximum et la figure au centre le cas d’un minimum. La figure à droite illustre le fait
que la condition nécessaire d’optimalité n’est pas une condition suffisante ; dans ce cas on dit que f présente un col en
(x 0 , y 0 ) ou que (x 0 , y 0 ) est un point-selle de f . Le mot col vient de l’exemple de la fonction altitude et de la configuration
(idéalisée) d’un col de montagne : minimum de la ligne de crête, maximum de la route, sans être un extremum du paysage.
Le mot selle vient de l’exemple d’une selle de cheval.

5,0 -1,5 5,24

4,9 -1,6 5,14

4,8 -1,7 5,04

4,7 -1,8 4,94

4,6 -1,9 4,84


1,5 1,5 1,5

4,5 -2,0 4,74


2,0 2,0
2,0 -0,5 -0,5 x
-0,5 x x

0,0 0,0
0,0
2,5 2,5
2,5 y 0,5
y 0,5 y 0,5

E XEMPLE
On cherche les extrema de la fonction f (x, y) = x 2 + y 2 dans le disque ouvert centré en (0, 0) de rayon 1, représenté
2¯ 2 2
par D = (x, y) ∈ R x + y < 1 . Le seul candidat extremum est l’unique point critique (0, 0) qu’on trouve en résolvant
© ¯ ª

∂x f (x, y) = 0 et ∂ y f (x, y) = 0. La définition implique de façon immédiate que f admet un minimum global en (0, 0). En effet

f (x, y) = x 2 + y 2 ≥ 0 = f (0, 0) ∀(x, y) ∈ D f .

En revanche, la fonction n’admet aucun maximum.

Théorème 6.11 (Condition suffisante d’extrémum local dans un ouvert (cas de 2 variables))
Soit f une fonction de classe C 2 sur un ouvert D ⊂ R2 et (x 0 , y 0 ) un point stationnaire ; posons
¢2
dét(H f (x 0 , y 0 )) ≡ ∂xx f (x 0 , y 0 ) · ∂ y y f (x 0 , y 0 ) − ∂x y f (x 0 , y 0 ) ,
¡

le déterminant de la matrice hessienne de f évalué en (x 0 , y 0 ).


⋆ Si dét(H f (x 0 , y 0 )) > 0, alors f présente un extrémum relatif en (x 0 , y 0 ) ; il s’agit
⋆ d’un maximum si ∂xx f (x 0 , y 0 ) < 0
⋆ d’un minimum si ∂xx f (x 0 , y 0 ) > 0 ;
⋆ si dét(H f (x 0 , y 0 )) < 0, alors f présente un point-selle (ou point-col) en (x 0 , y 0 ) ; ce n’est pas un extrémum ;
⋆ si dét(H f (x 0 , y 0 )) = 0, on ne peut pas conclure à partir des dérivées secondes.
En résumé, si ∂x f (x 0 , y 0 ) = 0 et ∂ y f (x 0 , y 0 ) = 0, la nature du point critique (x 0 , y 0 ) est déterminée par le tableaux suivant :

© 2020-2021 G. Faccanoni 233


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

(a) Point de maximum (b) Point de selle

dét(H f (x 0 , y 0 )) ∂xx f (x 0 , y 0 ) Nature de (x 0 , y 0 )


+ + minimum local
+ − maximum local
− point-selle
0 on ne peut pas conclure

E XEMPLE
On veut étudier la fonction f (x, y) = x 2 + y 2 − 2x − 4y sur R2 . Elle a pour dérivées partielles ∂x f (x, y) = 2x − 2 et ∂ y f (x, y) =
2y − 4 qui ne s’annulent qu’en (1, 2), seul point où il peut donc y avoir un extremum local. On étudie directement le signe de
la différence
d (h, k) = f (1 + h, 2 + k) − f (1, 2) = h 2 + k 2 > 0.
Comme cette différence est positive pour h et k voisins de 0 il s’agit d’un minimum. En effet, ∂xx f (1, 2) = 2 > 0, ∂ y y f (1, 2) = 2,
∂x y f (1, 2) = 0 donc dét(H f (1, 2)) = 4 > 0 et il s’agit bien d’un minimum.

E XEMPLE
Pour déterminer les extrema libres de la fonction f (x, y) = x 2 + y 3 − 2x y − y dans R2 , on constate d’abord que f est un
polynôme, donc différentiable dans l’ouvert R2 . Les seuls candidats extrema locaux sont les points critiques. Toutefois, nous
ne disposons d’aucune garantie à priori sur le fait que les éventuels extrema locaux soient globaux.
Recherche des points critiques On a
µ ¶ µ ¶ µ ¶
2x − 2y 0 1 1
∇f = 0 ⇐⇒ = ⇐⇒ (x, y) = − , − ou (x, y) = (1, 1).
3y 2 − 2x − 1 0 3 3

Les deux candidats sont donc − 13 , − 13 et (1, 1).


¡ ¢

Classification La matrice hessienne de f en un point (x, y) ∈ R2 est

∂xx f (x, y) ∂x y f (x, y)


µ ¶ µ ¶
2 −2
H f (x, y) = = .
∂ y x f (x, y) ∂ y y f (x, y) −2 6y

Comme dét H f − 13 , − 13 < 0 et D(1, 1) > 0, alors (− 31 , − 13 ) est un point-selle et f admet en (1, 1) un minimum local de
¡ ¡ ¢¢

valeur f (1, 1) = −1. Ce minimum n’est cependant pas global puisque, par exemple, f (0, −2) = −6 < f (1, 1) = −1.

6.4. Exercices

234 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

Exercice 6.1
Dans la figure ci-contre on a tracé les isobares de l’Amé-
rique du Nord au 12 août 2008. La pression indiquée est
mesurée en millibars (mbar).
1. Donner une estimation de la pression
⋆ à Nashville (point N),
⋆ à Chicago (point C),
⋆ à San Francisco (point S)

et à Vancouver (point V).
2. Dans quelle ville le vent est le plus fort ?

Correction
1. ⋆ Au point N la pression est de 1012 mbar environ,
⋆ au point C la pression est de 1013 mbar environ,
⋆ au point S la pression est de 1010 mbar environ,
⋆ au point V la pression est comprise entre 1016 mbar et 1020 mbar ou entre 1012 mbar et 1016 mbar.
2. Le vent est plus fort à San Francisco car les lignes de pression sont le plus rapprochées.

Exercice 6.2
Déterminer les courbes de niveau des fonctions suivantes :
2
f (x, y) = x, f (x, y) = y + 1, f (x, y) = x + y − 1, f (x, y) = e y−x , f (x, y) = y − cos(x).

Esquissez ensuite leurs graphes (le graphe peut être vu comme un empilement de courbes de niveau qui forment une
surface dans R3 ).

Correction

⋆ f (x, y) = x : ⋆ f (x, y) = y + 1 : ⋆ f (x, y) = x + y − 1 :


f (x, y) = κ ssi x = κ, les courbes f (x, y) = κ ssi y = κ − 1, les f (x, y) = κ ssi y = −x + (κ + 1),
de niveau sont des droites verti- courbes de niveau sont des les courbes de niveau sont des
cales et la surface représentative droites horizontales et la sur- droites de pente −1 et la surface
de f est un plan. face représentative de f est un représentative de f est un plan.
plan.
2 2 2

1 1 1

y 0 y 0 y 0

-1 -1 -1

-2 -2 -2

-2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2

x x x

2 3

1 2 3,2

0 1 1,2

-1 0 -0,8

2 2 2

1 1 -2,8 1
-2 -1
2 0 2 0 2 0
1 x 1 x 1 x

0 -1 0 -1 0 -1
y -1 y -1 y -1
-2 -2 -2
-2 -2 -2

2
⋆ f (x, y) = e y−x :
f (x, y) = κ ssi y = x 2 + ln(κ), les courbes de niveau sont des paraboles. On observe notamment la croissance exponen-
tielle marquée lorsque les valeurs prises par y sont grandes et celles prises par |x| sont petites.

© 2020-2021 G. Faccanoni 235


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

3 000

1
2 500

2 000

1 500
0

-2 -1 0 1 2 -2 8,0
1 000
y
x 5,5

-1 500 3,0
x
0,5
y -1 0
-2,0 0

2
-2

⋆ f (x, y) = y − cos(x) :
f (x, y) = κ ssi y = cos(x) + κ
10

9
4 -10 -10
y x
-5 4 -5
2

0 0
0
-1
-10 -8 -6 -4 -2 0 2 4 6 8 10
5 5
-2
x
-6
10 10
-4

y -11
-6

-8

-10

Exercice 6.3
Associer chaque fonction (1-6) à sa surface (A-F) et à ses courbes de niveau (I-VI) :

1. f (x, y) = sin(x y) 2. f (x, y) = sin(x − y) 3. f (x, y) = (1 − x 2 )(1 − y 2 )


x−y
4. f (x, y) = 5. f (x, y) = e x cos(y) 6. f (x, y) = sin(x) − sin(y)
1 + x2 + y 2

236 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

Correction

1. C-II : la fonction est périodique en x et en y ; f ne change pas quand on échange x et y, i.e. le graphe est symétrique
par rapport au plan d’équation y = x ; f (0, y) = f (x, 0) = 0.
2. F-I : la fonction est périodique en x et en y ; f est constante si y = x + κ.
3. B-VI : f (±1, y) = f (x, ±1) = 0 ; la trace dans le plan xz est z = 1 − x 2 et dans le plan y z est z = 1 − y 2 .
4. D-V : f (x, x) = 0 ; f (x, y) > 0 si x > y ; f (x, y) < 0 si x < y.
5. A-IV : la fonction est périodique en y ;
6. E-III : la fonction est périodique en x et en y.

Exercice 6.4 (Cartes topographiques du relief )

Sur une carte topographique, les courbes de niveau dési-


gnent les points de même altitude. On observe sur l’ex-
trait de carte ci-contre de l’institut Géographique Natio-
nal (IGN), des courbes qui donnent une idée du relief
(Massif du Sancy). Elles représentent des coupes horizon-
tales successives du terrain à des altitudes qui varient de
10 mètres en 10 mètres. Tous les points de même altitude
sont situés sur la même courbe de niveau.

1. Compléter le tableau
Point A B C D E F G
Altitude 1370
2. Lorsque les courbes de niveau se resserrent, que peut-on dire du relief ?

© 2020-2021 G. Faccanoni 237


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

3. La rivière coule-t-elle d’est en ouest ou vice-versa ?

Correction
1. On a
Point A B C D E F G
Altitude 1470 1370 1380 1470 1400 1460 1520
2. Les endroits du relief où les pentes sont plus escarpées ou plus douces correspondent respectivement aux courbes de
niveau très rapprochées ou très distantes.
3. La rivière coule de l’est à l’ouest.

Exercice 6.5
Calculer toutes les dérivées partielles d’ordre 1 des fonctions données :
x
1. f (x, y) = y 5 − 3x y 2. f (x, y) = x 2 +3x y 2 −6y 5 3. f (x, y) = x cos(e x y ) 4. f (x, y) = y

5. f (x, y) = x y 6. f (x, y, z) = x cos(xz) + ln(2 − sin2 (y + z)) 7. f (x, t ) = e −t cos(πx)


ax+b y Rx
8. z(x, y) = (2x + 3y)10 9. f (x, y) = c x+d y 10. F (x, y) = y cos(e t ) dt

Correction
1. ∂x f (x, y) = −3y et ∂ y f (x, y) = 5y 4 − 3x
2. ∂x f (x, y) = 2x + 3y 2 et ∂ y f (x, y) = 6x y − 30y 4
3. ∂x f (x, y) = cos(e x y ) − x ye x y sin(e x y ) et ∂ y f (x, y) = −x 2 e x y sin(e x y )
4. ∂x f (x, y) = 1/y et ∂ y f (x, y) = −x/y 2
5. ∂x f (x, y) = y x y /x et ∂ y f (x, y) = ln(x)x y "x y = e y ln(x) donc x > 0
−2 sin(y + z) cos(y + z) −2 sin(y + z) cos(y + z)
6. ∂x f (x, y, z) = cos(xz)−xz sin(xz), ∂ y f (x, y, z) = et ∂z f (x, y, z) = −x 2 sin(xz)+
2 − sin2 (y + z) 2 − sin2 (y + z)
7. ∂x f (x, t ) = −πe −t
sin(πx) et ∂t f (x, t ) = −e −t
cos(πx)
8. ∂x z(x, y) = 20(2x + 3y) et ∂ y z(x, y) = 30(2x + 3y)9
9

(ad −bc)y (bc−ad )x


9. ∂x f (x, y) = (cx+d y)2
et ∂ y f (x, y) = (cx+d y)2
x y
10. ∂x F (x, y) = cos(e ) et ∂ y F (x, y) = − cos(e )

Exercice 6.6 x+y


Soit f : R2 → R la fonction définie par f (x, y) = .
1 + x2 + y 2
1. Déterminer et représenter ses courbes de niveau.
2. Calculer ses dérivées partielles premières.
3. Écrire l’équation du plan tangent à f en (0, 0).

Correction
1. Les courbes de niveau de f sont les courbes d’équation f (x, y) = k, i.e. la droite d’équation y = −x pour k = 0 et les
q
courbes d’équation x 2 + y 2 − k1 x − k1 y +1 = 0 pour 0 < k 2 < 1/2 qui sont des cercles de centre 2k
¡1 1¢
, 2k et rayon 2k1 2 − 1.

y
2 0,55

0,3

0,05

K4 K2 0 2 4
x -0,2

K2
-0,45

5,0
-0,7 2,5
0,0
-5,0 y
-2,5 -2,5

K4
0,0 -5,0
2,5
x 5,0

238 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

2. Les deux dérivées premières partielles de f sont

1 − x 2 − 2x y + y 2 1 + x 2 − 2x y − y 2
∂x f (x, y) = , ∂ y f (x, y) = .
(1 + x 2 + y 2 )2 (1 + x 2 + y 2 )2

3. L’équation du plan tangent à f en (0, 0) est

z = f (0, 0) + x∂x (0, 0) + y∂ y (0, 0) = x + y.

Exercice 6.7
Soit f : R2 → R une fonction de classe C 2 (R2 ) et (a, b) un point de R2 . On suppose que

f (a, b) = 0, ∂x f (a, b) = 0, ∂ y f (a, b) = 0, ∂xx f (a, b) = 1, ∂ y y f (a, b) = 2, ∂x y f (a, b) = 3.

Le point (a, b) est-il un point critique ? Si oui, de quelle nature ?

Correction
Il est un point critique et plus particulièrement il s’agit d’un point-selle car dét(H f (a, b)) < 0.

Exercice 6.8
On suppose que (1, 1) est un point critique d’une fonction f dont les dérivées secondes sont continues. Dans chaque
cas, que peut-on dire au sujet de f ?

1. ∂xx f (1, 1) = 4, ∂x y f (1, 1) = 1, ∂ y y f (1, 1) = 2 ; 2. ∂xx f (1, 1) = 4, ∂x y f (1, 1) = 3, ∂ y y f (1, 1) = 2.

Correction
1. D’abord on calcule dét(H f (1, 1)) = ∂xx f (1, 1)∂ y y f (1, 1) − (∂x y f (1, 1))2 = 7. Comme dét(H f (1, 1)) > 0 et ∂xx f (1, 1) > 0, f
a un minimum local en (1, 1).
2. D’abord on calcule dét(H f (1, 1)) = ∂xx f (1, 1)∂ y y f (1, 1)−(∂x y f (1, 1))2 = −1. Comme dét(H f (1, 1)) < 0, f a un point-selle
en (1, 1).

Exercice 6.9
À partir de la carte des courbes de niveau de la figure ci-
contre, localiser les points critiques de f : R2 → R et préci-
ser pour chacun de ces points s’il s’agit d’un point-selle ou
d’un maximum ou d’un minimum local.

Vérifier ensuite le raisonnement sachant que

f (x, y) = 4 + x 3 + y 3 − 3x y.

Correction
Dans la figure, le point (1, 1) est entouré par des courbes de niveau qui sont de forme ovale et qui indiquent que si nous nous
éloignons du point dans n’importe quelle direction les valeurs de f augmentent. Ainsi on pourrait s’attendre à un minimum
local en ou à proximité de (1, 1).
Les courbes de niveau proches du point (0, 0) ressemblent à des hyperboles, et si nous nous éloignons de l’origine, les valeurs
de f augmentent dans certaines directions et diminuent dans d’autres, donc nous nous attendons à trouver un point selle.
Vérifions cette analyse :
Points critiques : ∂x f (x, y) = 3x 2 −3y, ∂ y f (x, y) = 3y 2 −3x. On a un point critique si les deux dérivées partielles s’annulent
en même temps ; on trouve deux points critiques : (1, 1) et (0, 0).
Études des points critiques : les dérivées secondes sont ∂xx f (x, y) = 6x, ∂x y f (x, y) = −3, ∂ y y f (x, y) = 6y, ainsi dét(H f (x, y)) =
∂xx f (x, y)∂ y y f (x, y) − (∂x y f (x, y))2 = 36x y − 9. Comme dét(H f (1, 1)) > 0 et ∂xx f (1, 1) > 0, f a un minimum local en
(1, 1). Comme dét(H f (0, 0)) < 0, f a un point-selle en (0, 0).

© 2020-2021 G. Faccanoni 239


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

Exercice 6.10
À partir de la carte des courbes de niveau de la figure ci-
contre, localiser les points critiques de f : R2 → R et préci-
ser pour chacun de ces points s’il s’agit d’un point-selle ou
d’un maximum ou d’un minimum local.

Vérifier ensuite le raisonnement sachant que

f (x, y) = 3x − x 3 − 2y 2 + y 4 .

Correction
Dans la figure, les points (−1, −1) et (−1, 1) sont entourés par des courbes de niveau qui sont de forme ovale et qui indiquent
que si nous nous éloignons du point dans n’importe quelle direction les valeurs de f augmentent. Ainsi on pourrait s’attendre
à des minima locaux en ou à proximité de (−1, ±1).
De la même manière, le point (1, 0) est entouré par des courbes de niveau qui sont de forme ovale et qui indiquent que si
nous nous éloignons du point dans n’importe quelle direction les valeurs de f diminuent. Ainsi on pourrait s’attendre à un
maximum local en ou à proximité de (1, 0).
Les courbes de niveau proche des points (−1, 0), (1, 1) et (1, −1) ressemblent à des hyperboles, et si nous nous éloignons de
ces points, les valeurs de f augmentent dans certaines directions et diminuent dans d’autres, donc nous nous attendons à
trouver des points de selle.
Vérifions cette analyse : (
3 − 3x 2 = 0
∇ f = 0 ⇐⇒
−4y + 4y 3 = 0
donc les points critiques sont (1, 0), (1, 1), (1, −1), (−1, 0), (−1, 1), (−1, −1). Les dérivées secondes sont ∂xx f (x, y) = −6x,
∂x y f (x, y) = 0, ∂ y y f (x, y) = 12y 2 − 4, ainsi dét(H f (x, y)) = ∂xx f (x, y)∂ y y f (x, y) − (∂x y f (x, y))2 = −72x y 2 + 24x.

Point critique (x 0 , y 0 ) dét(H f (x 0 , y 0 )) ∂xx f (x 0 , y 0 ) Conclusion


(1, 0) 24 > 0 −6 < 0 f a un maximum local en (1, 0)
(1, 1) −48 < 0 f a un point-selle en (1, 1)
(1, −1) −48 < 0 −6 < 0 f a un point-selle en (1, −1)
(−1, 0) −24 < 0 f a un point-selle en (−1, 0)
(−1, 1) 48 > 0 6>0 f a un minimum local en (−1, 1)
(−1, −1) 48 > 0 6>0 f a un minimum local en (−1, −1)

Exercice 6.11
Une montagne a la forme de la surface z(x, y) = 2x y − 2x 2 − y 2 − 8x + 6y + 4 (l’unité de mesure est de 100 mètres). Si le
niveau de la mer correspond à z = 0, quelle est la hauteur de la montagne ?

Correction
Il s’agit d’évaluer z(x, y) dans le point de maximum. Cherchons d’abord les points critiques :
µ ¶
2y − 4x − 8
∇z(x, y) =
2x − 2y + 6

et ∇z(x, y) = 0 ssi (x, y) = (−1, 2). On établie la nature du point critique en étudiant le déterminant de la matrice hessienne :

∂xx f (x, y) = −4 < 0, ∂ y y f (x, y) = −2, ∂x y f (x, y) = 2,

et ∂xx f (−1, 2)∂ y y f (−1, 2) − (∂x y f (−1, 2))2 = 4 > 0 donc (−1, 2) est un maximum. Comme z(−1, 2) = 14, la montagne est haute
1400 mètre.

Exercice 6.12
Si f est une fonction continue d’une seule variable réelle et si f admet deux maxima sur un intervalle alors il existe un
minimum compris entre les deux maxima. Le but de cet exercice est de montrer que ce résultat ne s’étend pas en deux
dimensions.

240 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

Considérons la fonction f : R2 → R définie par f (x, y) = 4y 2 e x − 2y 4 − e 4x . Montrer que cette fonctions admet deux
maxima mais aucun autre point critique.

Correction
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .

⋆ Recherche de points critiques :


(
y =0
( (
2 x 4x x 2 3x
4y e − 4e =0 4e (y − e ) = 0 −4e 4x = 0
µ ¶
0 ↗
∇ f (x, y) = ⇐⇒ x
⇐⇒ x
(
0 8ye − 8y = 0 3
8y(e − y ) = 0 2 ↘ ex = y2
⇐⇒ (x, y) = (0, ±1) .
y 2 = e 3x = y 6

On a deux points critiques : (0, 1) et (0, −1).


⋆ Nature des points critiques :
µ 2 x
4y e − 16e 4x 8ye x

dét(H f (x, y)) = 32e x (e x − 3y 2 )(y 2 − 4e 3x ) − 2y 2 e x .
¡ ¢
H f (x, y) = ,
8ye x 8e x − 24y 2

det H f (0, ±1) = 128 > 0 et ∂xx f (0, ±1, ) = −12 < 0 donc les points (0, ±1) sont des maxima.
¡ ¢

Exercice 6.13
Déterminer et établir la nature des points critiques des fonction f : R2 → R définies par

1. f (x, y) = x 2 + x y + y 2 + y 2. f (x, y) = x y − 2x − 2y − x 2 − y 2 3. f (x, y) = (x − y)(1 − x y)


3 2 2 2 3 3
4. f (x, y) = y + 3x y − 6x − 6y + 2 5. f (x, y) = x + y − 3x y + 3 6. f (x, y) = x y(1 − x − y)
7. f (x, y) = x 3 − 12x y + 8y 3 8. f (x, y) = x y + x1 + 1y 9. f (x, y) = e x cos(y)
x2 y y3
10. f (x, y) = y cos(x) 11. f (x, y) = y 2 + x y ln(x) 12. f (x, y) = 2 + x2 + 3 − 4y
x2 y y3 x y2 x3 (−x 2 −y 2 )
13. f (x, y) = 2 − x2 + 3 − 4y 14. f (x, y) = 2 + 3 − 4x + y 2 15. f (x, y) = (x 2 − y 2 )e
2 −y 2 )
16. f (x, y) = (y 2 − x 2 )e (−x 17. f (x, y) = x 4 + y 4 − 2(x − y)2 18. f (x, y) = x 4 + y 4 − 4(x − y)2
x2
19. f (x, y, z) = 2 + xyz − z + y 20. f (x, y) = (x − 1)2 + 2y 2 21. f (x, y) = x 2 + x y + y 2 − 2x − y
22. f (x, y) = x y (6 − x − y)3 2
23. f (x, y) = e x−y (x 2 − 2y 2 ) 24. f (x, y) = 8
x + xy + y
2 +y 2 )
25. f (x, y) = x 2 − cos(y) 26. f (x, y) = (x 2 + y 2 )e −(x 27. f (x, y) = x 3 + y 2 − 6(x 2 − y 2 )
28. f (x, y) = (x 2 + y 2 − y 3 )e −y

Correction
1. f (x, y) = x 2 + x y + y 2 + y
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
2x + y = 0
µ ¶ µ ¶
0 1 2
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = ,− .
0 x + 2y + 1 = 0 3 3
¡1 2
¢
On a un unique point critique : 3,−3 .
⋆ Nature du point critique : µ ¶
2 1
H f (x, y) = , dét(H f (x, y)) = 3.
1 2

dét H f 13 , − 23 > 0 et ∂xx f 31 , − 23 > 0 donc 13 , − 23 est un minimum.


¡ ¡ ¢¢ ¡ ¢ ¡ ¢

2. f (x, y) = x y − 2x − 2y − x 2 − y 2
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .

© 2020-2021 G. Faccanoni 241


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

⋆ Recherche de points critiques :


(
y − 2 − 2x = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = (−2, −2).
0 x − 2 − 2y = 0

On a un unique point critique : (−2, −2).


⋆ Nature du point critique : µ ¶
−2 1
H f (x, y) = , dét(H f (x, y)) = 3.
1 −2
dét(H f (−2, −2)) > 0 et ∂xx f (−2, −2) < 0 donc (−2, −2) est un maximum.
3. f (x, y) = (x − y)(1 − x y)
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
1 − 2x y + y 2 = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (−1, −1), (1, 1) } .
0 −1 − x 2 + 2x y = 0

On a deux points critiques : (−1, −1) et (1, 1).


⋆ Nature des points critiques :
µ ¶
−2y −2x + 2y
H f (x, y) = , dét(H f (x, y)) = −4x y − 4(y − x)2 .
−2x + 2y 2x

dét(H f (−1, −1)) < 0 donc (−1, −1) est un point-selle ;


dét(H f (1, 1)) < 0 donc (1, 1) est un point-selle.
4. f (x, y) = y 3 + 3x 2 y − 6x 2 − 6y 2 + 2
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
6x y − 12x = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (0, 0), (0, 4), (2, 2), (−2, 2) } .
0 3y 2 + 3x 2 − 12y = 0

On a quatre points critiques : (0, 0), (0, 4), (2, 2) et (−2, 2).
⋆ Nature des points critiques :
µ ¶
6y − 12 6x ³ ´
H f (x, y) = , dét(H f (x, y)) = (6y − 12)2 − 36x 2 = 36 (y − 2)2 − x 2 .
6x 6y − 12

dét(H f (0, 0)) > 0 et ∂xx f (0, 0) < 0 donc (0, 0) est un maximum ;
dét(H f (0, 4)) > 0 et ∂xx f (0, 4) > 0 donc (0, 4) est un minimum ;
dét(H f (2, 2)) < 0 donc (2, 2) est un point-selle ;
dét(H f (−2, 2)) < 0 donc (−2, 2) est un point-selle.
5. f (x, y) = x 3 + y 3 − 3x y + 3.
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
3(x 2 − y) = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (0, 0), (1, 1) } .
0 3(y 2 − x) = 0

On a deux points critiques : (0, 0) et (1, 1).


⋆ Nature des points critiques :
µ ¶
6x −3
H f (x, y) = , dét(H f (x, y)) = 36x y − 9.
−3 6y

dét(H f (0, 0)) = −9 < 0 donc (0, 0) est un point-selle ;


dét(H f (1, 1)) = 27 > 0 et ∂xx f (1, 1) = 6 > 0, donc (1, 1) est un minimum.

242 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

6. f (x, y) = x y(1 − x − y)
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
y − 2x y − y 2 = 0
µ ¶ ½ µ ¶¾
0 1 1
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ (0, 0), (1, 0), (0, 1), , .
0 x − x 2 − 2x y = 0 3 3
¡1 1
¢
On a quatre points critiques : (0, 0), (1, 0), (0, 1) et 3, 3 .
⋆ Nature des points critiques :
µ ¶
−2y 1 − 2x − 2y
H f (x, y) = , dét(H f (x, y)) = 4x y − (1 − 2x − 2y)2
1 − 2x − 2y −2x

dét(H f (0, 0)) < 0 donc (0, 0) est un point-selle ;


dét(H f (1, 0)) < 0 donc (1, 0) est un point-selle ;
dét(H f (0, 1)) < 0 donc (0, 1) est un point-selle ;
dét H f 31 , 13 > 0 et ∂xx f 31 , 13 < 0 donc 13 , 13 < 0 est un maximum.
¡ ¡ ¢¢ ¡ ¢ ¡ ¢

7. f (x, y) = x 3 − 12x y + 8y 3
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
3x 2 − 12y = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (0, 0), (2, 1) } .
0 −12x + 24y 2 = 0

On a deux points critiques : (0, 0), et (2, 1).


⋆ Nature des points critiques :
µ ¶
6x −12
H f (x, y) = , dét(H f (x, y)) = 144(2x y − 1)
−12 48y

dét(H f (0, 0)) < 0 donc (0, 0) est un point-selle ;


dét(H f (2, 1)) > 0 et ∂xx f (2, 1) > 0 donc (2, 1) est un minimum.
8. f (x, y) = x y + x1 + 1y
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 \ { (0, κ) | κ ∈ R } \ { (κ, 0) | κ ∈ R }.
⋆ Recherche de points critiques :

y − x12 = 0
µ ¶ (
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = (1, 1).
0 x − y12 = 0

On a un unique point critique : (1, 1).


⋆ Nature du point critique :
2
à !
x3
1 4
H f (x, y) = 2 , dét(H f (x, y)) = −1
1 y3 (x y)3
dét(H f (1, 1)) > 0 et ∂xx f (1, 1) > 0 donc (1, 1) est un minimum.
9. f (x, y) = e x cos(y)
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
e x cos(y) = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ ̸ ∃(x, y) ∈ R2 .
0 −e x sin(y) = 0

Cette fonction n’admet aucun point critique.


10. f (x, y) = y cos(x)
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .

© 2020-2021 G. Faccanoni 243


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

⋆ Recherche de points critiques :


(
µ ¶
0 −y sin(x) = 0 ³π ´
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = + κπ, 0 , κ ∈ Z.
0 cos(x) = 0 2

π
On a une infinité de points critiques alignés sur la droite d’équation y = 0 et qui ont ordonnée x = 2 + κπ avec
κ ∈ Z.
⋆ Nature des points critiques :
µ ¶
−y cos(x) − sin(x)
H f (x, y) = , dét(H f (x, y)) = − sin2 (x)
− sin(x) 0

dét H f π2 + κπ, 0 < 0 donc ils sont tous des points-selle.


¡ ¡ ¢¢

11. f (x, y) = y 2 + x y ln(x)


f est de classe C 2 dans son domaine de définition, l’ouvert D = (x, y) ∈ R2 ¯ x > 0 .
© ¯ ª

⋆ Recherche de points critiques :


(
y(ln(x) + 1) = 0
µ ¶ ½ µ ¶¾
0 1 1
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ (1, 0); ,
0 2y + x ln(x) = 0 e 2e
¡1 1
¢
On a deux points critiques : (1, 0) et e , 2e .
⋆ Nature des points critiques :
y
y
µ ¶
1 + ln(x)
H f (x, y) = x , dét(H f (x, y)) = 2 − (1 + ln(x))2
1 + ln(x) 2 x

dét(H f (1, 0)) < 0 donc (1, 0) est un point-selle ;


dét H f 1e , 2e
¡ ¡ 1 ¢¢
> 0 et ∂xx f 1e , 2e
¡ 1¢
> 0 donc 1e , 2e
¡ 1¢
est un minimum.
x2 y y3
12. f (x, y) = 2 + x2 + 3 − 4y
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
x y + 2x = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ x 2 2
⇐⇒ (x, y) ∈ { (0, −2), (0, 2) } .
0
2 + y −4 = 0

On a deux points critiques : (0, −2) et (0, 2).


⋆ Nature des points critiques :
µ ¶
y +2 x
H f (x, y) = , dét(H f (x, y)) = 2y(y + 2) − x
x 2y

dét(H f (0, 2)) > 0 et ∂xx f (0, 2) = 4 > 0 donc (0, 2) est un minimum pour f ;
comme dét(H f (0, −2)) = 0, on ne peut pas conclure en utilisant la matrice hessienne (l’étude du signe de la
distance dans ce cas est trop compliquée).
x2 y y3
13. f (x, y) = 2 − x2 + 3 − 4y
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
x y − 2x = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ x 2 2
⇐⇒ (x, y) ∈ { (0, −2), (0, 2) } .
0
2 + y −4 = 0

On a deux points critiques : (0, −2) et (0, 2).


⋆ Nature des points critiques :
µ ¶
y −2 x
H f (x, y) = , dét(H f (x, y)) = 2y(y − 2) − x
x 2y

244 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

dét(H f (0, −2)) > 0 et ∂xx f (0, −2) < 0 donc (0, −2) est un maximum pour f ;
comme dét(H f (0, 2)) = 0, on ne peut pas conclure en utilisant la matrice hessienne (l’étude du signe de la
distance dans ce cas est trop compliquée).
x y2 3
14. f (x, y) = 2 + x3 − 4x + y 2
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
( 2
µ ¶ y 2
∇ f (x, y) =
0
⇐⇒ 2 +x −4 = 0 ⇐⇒ (x, y) ∈ { (−2, 0), (2, 0) } .
0 x y + 2y = 0

On a deux points critiques : (0, −2) et (0, 2).


⋆ Nature des points critiques :
µ ¶
2x y
H f (x, y) = , dét(H f (x, y)) = 2x(x + 2) − y
y x +2

dét(H f (2, 0)) > 0 et ∂xx f (2, 0) = 4 > 0 donc (2, 0) est un minimum pour f ;
comme dét(H f (−2, 0)) = 0, on ne peut pas conclure en utilisant la matrice hessienne (l’étude du signe de la
distance dans ce cas est trop compliquée).
2 −y 2 )
15. f (x, y) = (x 2 − y 2 )e (−x
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
( 2 2
2x(1 − x 2 + y 2 )e (−x −y ) = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ 2 2 ⇐⇒ (x, y) ∈ { (0, 0), (0, 1), (0, −1), (1, 0), (−1, 0) } .
0 2y(−1 − x 2 + y 2 )e (−x −y ) = 0

On a 5 points critiques : (0, 0), (0, 1), (0, −1), (1, 0) et (−1, 0).
⋆ Nature des points critiques :
2 −y 2 )
∂xx f (x, y) = 2e (−x (1 − 5x 2 + y 2 + 2x 4 − 2x 2 y 2 ),
2 −y 2 )
∂x y f (x, y) = 4x y(x 2 − y 2 )e (−x ,
(−x 2 −y 2 )
∂ y y f (x, y) = 2e (−1 − x + 5y 2 + 2x 2 y 2 − 2y 4 ).
2

∂xx f (x, y) ∂x y f (x, y)


µ ¶
H f (x, y) = , dét(H f (x, y)) = ∂xx f (x, y)∂ y y f (x, y) − (∂x y f (x, y))2
∂x y f (x, y) ∂ y y f (x, y)
On a alors

(x 0 , y 0 ) ∂xx f (x 0 , y 0 ) ∂x y f (x 0 , y 0 ) ∂ y y f (x 0 , y 0 ) dét(H f (x 0 , y 0 ))
(0, 0) 2 0 −2 −4 c’est un point-selle
(1, 0) − 4e 0 − 4e 16
e2
c’est un maximum
(−1, 0) − 4e 0 − 4e 16
e2
c’est un maximum
4 4 16
(0, 1) e 0 e e2
c’est un minimum
4 4 16
(0, −1) e 0 e e2
c’est un minimum

2 −y 2 )
16. f (x, y) = (y 2 − x 2 )e (−x
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
( 2 2
2x(−1 + x 2 − y 2 )e (−x −y ) = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ 2 2 ⇐⇒ (x, y) ∈ { (0, 0), (0, 1), (0, −1), (1, 0), (−1, 0) } .
0 2y(1 + x 2 − y 2 )e (−x −y ) = 0

On a 5 points critiques : (0, 0), (0, 1), (0, −1), (1, 0) et (−1, 0).

© 2020-2021 G. Faccanoni 245


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

⋆ Nature des points critiques :


2 −y 2 )
∂xx f (x, y) = −2e (−x (1 − 5x 2 + y 2 + 2x 4 − 2x 2 y 2 ),
2 −y 2 )
∂x y f (x, y) = −4x y(x 2 − y 2 )e (x ,
(−x 2 −y 2 )
∂ y y f (x, y) = −2e (−1 − x 2 + 5y 2 + 2x 2 y 2 − 2y 4 ).

∂xx f (x, y) ∂x y f (x, y)


µ ¶
H f (x, y) = , dét(H f (x, y)) = ∂xx f (x, y)∂ y y f (x, y) − (∂x y f (x, y))2
∂x y f (x, y) ∂ y y f (x, y)
On a alors

(x 0 , y 0 ) ∂xx f (x 0 , y 0 ) ∂x y f (x 0 , y 0 ) ∂ y y f (x 0 , y 0 ) dét(H f (x 0 , y 0 ))
(0, 0) −2 0 2 −4 c’est un point-selle
4 4 16
(1, 0) e 0 e e2
c’est un minimum
4 4 16
(−1, 0) e 0 e e2
c’est un minimum
(0, 1) − 4e 0 − 4e 16
e2
c’est un maximum
(0, −1) − 4e 0 − 4e 16
e2
c’est un maximum

17. f (x, y) = x 4 + y 4 − 2(x − y)2


⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 . Comme la restriction f (x, 0) = x 4 − 2x 2 tend vers
+∞ pour x qui tend vers ±∞, il n’y a pas de maximum global sur R2 . Comme R2 est ouvert, un extrémum relatif
de f vérifie la condition nécessaire ∇ f (x, y) = 0.
⋆ Recherche de points critiques :
(
4(x 3 − x + y) = 0 p p p p o
µ ¶
0 n
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ (0, 0), ( 2, − 2), (− 2, 2) .
0 4(y 3 + x − y) = 0
p p p p
On a 3 points critiques : 1 (0, 0), ( 2, − 2) et (− 2, 2) (on note que f (x, y) = f (−x, −y)).
⋆ Nature des points critiques :

12x 2 − 4
µ ¶
4 ³ ´
H f (x, y) = , dét(H f (x, y)) = 16 (3x 2 − 1)(3y 2 − 1) − 1 .
4 12y 2 − 4
p p p p p p
dét(H f ( 2, − 2)) = 384 > 0 et ∂xx f ( 2, − 2) = 20 > 0 donc ( 2, − 2) est un minimum pour f ;
p p p p p p
dét(H f (− 2, 2)) = 384 > 0 et ∂xx f (− 2, 2) = 20 > 0 donc (− 2, 2) est un minimum pour f ;
comme dét(H f (0, 0)) = 0, on ne peut pas conclure en utilisant la matrice hessienne.
Pour connaître la nature du point (0, 0) on étudie le signe de d (h, k) = f (h, k) − f (0, 0) pour h et k voisins de 0 :

d (h, k) = h 4 + k 4 − 2(h − k)2 ;

comme d (h, 0) = (h 2 − 2)h 2 < 0 lorsque h est voisin de 0 mais d (h, h) = 2h 4 > 0, alors (0, 0) est un point-selle.
Remarquons qu’avec des transformations algébriques, on peut réécrire la fonction sous la forme

f (x, y) = (x 2 − 2)2 + (y 2 − 2)2 + 2(x + y)2 − 8 ≥ 8 ∀(x, y) ∈ R2 .


p p p p p p p p
Comme f ( 2, − 2) = f (− 2, 2) = −8, les points ( 2, − 2) et (− 2, 2) sont des minima globaux.
18. f (x, y) = x 4 + y 4 − 4(x − y)2
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 . Comme la restriction f (x, 0) = x 4 − 4x 2 tend vers
+∞ pour x qui tend vers ±∞, il n’y a pas de maximum global sur R2 . Comme R2 est ouvert, un extrémum relatif
de f vérifie la condition nécessaire ∇ f (x, y) = 0.
⋆ Recherche de points critiques :
(
4(x 3 − 2x + 2y) = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (0, 0), (2, −2), (−2, 2) } .
0 4(y 3 + 2x − 2y) = 0
( ( (
4x 3 − 4x + 4y = 0 x3 + y 3 = 0 x = −y
1. =⇒ =⇒
4y 3 + 4x − 4y = 0 y3 + x − y = 0 (y 2 − 2)y = 0

246 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

On a 3 points critiques : 2 (0, 0), (2, −2) et (−2, 2) (on note que f (x, y) = f (−x, −y)).
⋆ Nature des points critiques :

12x 2 − 8
µ ¶
8 ³ ´
H f (x, y) = 2 , dét(H f (x, y)) = 48 3x 2 y 2 − 2(x 2 + y 2 ) .
8 12y − 8

⋆ dét(H f (2, −2)) = 1536 > 0 et ∂xx f (2, −2) = 40 > 0 donc (2, −2) est un minimum local pour f ;
⋆ dét(H f (−2, 2)) = 1536 > 0 et ∂xx f (−2, 2) = 40 > 0 donc (−2, 2) est un minimum local pour f ;
⋆ comme dét(H f (0, 0)) = 0, on ne peut pas conclure en utilisant la matrice hessienne. Pour connaître la nature
du point (0, 0) on étudie le signe de d (h, k) = f (h, k) − f (0, 0) pour h et k voisins de 0 :

d (h, k) = h 4 + k 4 − 4(h − k)2 ;

comme d (h, 0) = (h 2 − 4)h 2 < 0 lorsque h est voisin de 0 mais d (h, h) = 2h 4 > 0, alors (0, 0) est un point-selle.
Remarquons qu’avec des transformations algébriques, on peut réécrire la fonction sous la forme

f (x, y) = (x 2 − 4)2 + (y 2 − 4)2 + 4(x + y)2 − 32 ≥ −32 ∀(x, y) ∈ R2 .

Comme f (2, −2) = f (−2, 2) = −32, les points (2, −2) et (−2, 2) sont des minima globaux.
x2
19. f (x, y, z) = 2 + xyz − z + y
⋆ f est définie sur R3 à valeur dans R ; comme la restriction f (0, 0, z) = −z tend vers ±∞ pour z qui tend vers
∓∞, il n’y a pas d’extremum global sur R3 . Comme R3 est ouvert, un extrémum relatif de f vérifie la condition
nécessaire ∇ f (x, y, z) = 0.
⋆ Recherche de points critiques :

µ ¶  x + yz = 0
0

∇ f (x, y, z) = ⇐⇒ xz + 1 = 0 ⇐⇒ (x, y, z) = (1, 1, −1).
0 
xy −1 = 0

Il n’y a qu’un point critique : (1, 1, −1).


⋆ Nature du point critique : on étudie le signe de ∆ f (h, k, l ) ≡ f (1 + h, 1 + k, −1 + l ) pour h, k et l voisins de 0 (les
termes de degré 1 en h, k et l doivent disparaître) :

h 2 + 1 + 2h 3 h2
∆ f (h, k, l ) = + (1 + h)(1 + k)(−1 + l ) − (−1 + l ) + (1 + k) − = + hkl + hl − hk + kl .
2 2 2
Il ne reste que transformer ∆ f si on pense qu’il s’agit d’un extrémum ou fournir des restrictions qui se contre-
disent si on pense que ce n’est pas un extrémum. Comme les deux restrictions à deux courbes continues passant
par l’origine ∆ f (h, 0, h) = 32 h 2 > 0 et ∆ f (h, h, 0) = − 12 h 2 < 0 donnent des signes différents, on conclut que ce n’est
pas un extrémum.
20. f (x, y) = (x − 1)2 + 2y 2
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
2x − 2 = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = (1, 0).
0 4y = 0

On a un seul point critique : (1, 0).


⋆ Nature du point critique : µ ¶
2 0
H f (x, y) = , dét(H f (x, y)) = 8.
0 4
dét(H f (1, 0)) = 8 > 0 et ∂xx f (1, 0) = 2 > 0 donc (1, 0) est un minimum pour f .
21. f (x, y) = x 2 + x y + y 2 − 2x − y
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
( ( ( ( (
4x 3 − 8x + 8y = 0 x 3 − 2(x − y) = 0 x3 + y 3 = 0 x = −y x = −y
2. =⇒ =⇒ =⇒ =⇒
4y 3 + 8x − 8y = 0 y 3 + 2(x − y) = 0 y 3 + 2x − 2y = 0 (y 2 − 4)y = 0 y = 0 ou y = 2 ou y = −2

© 2020-2021 G. Faccanoni 247


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

⋆ Recherche de points critiques :


(
2x + y − 2 = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = (1, 0).
0 x + 2y − 1 = 0

On a un seul point critique : (1, 0).


⋆ Nature du point critique : µ ¶
2 1
H f (x, y) = , dét(H f (x, y)) = 7.
1 4
dét(H f (1, 0)) = 8 > 0 et ∂xx f (1, 0) = 2 > 0 donc (1, 0) est un minimum pour f .
22. f (x, y) = x 3 y 2 (6 − x − y)
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
3x 2 y 2 (6 − x − y) − x 3 y 2 = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (3, 2), (t , 0), (0, t ) | t ∈ R } .
0 2x 3 y(6 − x − y) − x 3 y 2 = 0

On a une infinité de points critiques : les points (t , 0) et (0, t ) pour t ∈R sont des points critiques ainsi que le point
(3, 2).
⋆ Nature des points critiques :

∂xx f (x, y) = 6x y 2 (6 − x − y) − 6x 2 y 2 ,
∂x y f (x, y) = 6x 2 y(6 − x − y) − 3x 2 y 2 − 2x 3 y,
∂ y y f (x, y) = 2x 3 (6 − x − y) − 4x 3 y.

∂xx f (x, y) ∂x y f (x, y)


µ ¶
H f (x, y) = , dét(H f (x, y)) = ∂xx f (x, y)∂ y y f (x, y) − (∂x y f (x, y))2
∂x y f (x, y) ∂ y y f (x, y)
dét(H f (3, 2)) > 0 et ∂xx f (3, 2) < 0 donc (3, 2) est un maximum pour f .
dét(H f (t , 0)) = 0 pour tout t ∈ R : l’étude de la matrice hessienne ne permet pas de conclure pour les points sur
l’axe d’équation y = 0. Pour connaître la nature de ces points on étudie le signe de d (h, k) = f (t +h, 0+k)− f (t , 0) =
(t + h)3 k 2 (6 − t − h − k) pour h et k proches de 0. On conclut que les points (t , 0) pour t < 0 ou t > 6 sont des
maxima, les points (t , 0) pour 0 < t < 6 sont des minima et les points (0, 0) et (6, 0) sont des points-selle.
dét(H f (0, t )) = 0 pour tout t ∈ R : l’étude de la matrice hessienne ne permet pas de conclure pour les points
sur les axes. Pour connaître la nature de ces points on étudie le signe de d (h, k) = f (0 + h, t + k) − f (0, t ) =
h 3 (t + k)2 (6 − t − h − k) pour h et k proches de 0. On conclut que les points (0, t ) sont des points-selle pour tout
t ∈ R.
23. f (x, y) = e x−y (x 2 − 2y 2 )
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
(x 2 − 2y 2 + 2x)e x−y = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (0, 0), (−4, −2) } .
0 (−x 2 + 2y 2 − 4y)e x−y = 0

On a deux points critiques : (0, 0) et (−4, −2).


⋆ Nature des points critiques :

∂xx f (x, y) = e x−y (x 2 −2y 2 +4x+2), ∂x y f (x, y) = e x−y (−x 2 +2y 2 −2x−4y), ∂ y y f (x, y) = e x−y (x 2 −2y 2 +8y−4);

∂xx f (x, y) ∂x y f (x, y)


µ ¶
H f (x, y) = , dét(H f (x, y)) = ∂xx f (x, y)∂ y y f (x, y) − (∂x y f (x, y))2 .
∂x y f (x, y) ∂ y y f (x, y)
On en déduit que

(x 0 , y 0 ) ∂xx f (x 0 , y 0 ) ∂x y f (x 0 , y 0 ) ∂ y y f (x 0 , y 0 ) dét(H f (x 0 , y 0 ))
−2 −2 −2
(−4, −2) −6e 8e −12e 8e −4 maximum
(0, 0) 2 0 −4 −8 point-selle

248 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

24. f (x, y) = 8
x + xy + y
f est de classe C 2 dans son domaine de définition, l’ouvert R2 \ (x, y) ¯ x y = 0 .
© ¯ ª

⋆ Recherche de points critiques :
(1 8
y − x2 = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = (4, 2).
0 1 − yx2 = 0

On a un unique point critique : (4, 2).


⋆ Nature du point critique :
16
− y12
à ! µ ¶
x3 1 16 1
H f (x, y) = , dét(H f (x, y)) = − .
− y12 2x
y3 y 3 x2 y

dét(H f (4, 2)) > 0 et ∂xx f (4, 2) > 0 donc (4, 2) est un minimum pour f .
25. f (x, y) = x 2 − cos(y)
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
2x = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ ⇐⇒ (x, y) ∈ { (0, κπ) | κ ∈ Z } .
0 sin(y) = 0

On a une infinité de points critiques qui s’écrivent (0, κπ) avec κ ∈ Z.


⋆ Nature du point critique :
µ ¶
2 0
H f (x, y) = , dét(H f (x, y)) = 2 cos(y).
0 cos(y)

dét(H f (0, κπ)) = (−1)κ et ∂xx f (0, κπ) > 0 pour toutκ ∈ Z donc (0, κπ) est un minimum si κ est pair et un point-
selle si κ est impair.
2 +y 2 )
26. f (x, y) = (x 2 + y 2 )e −(x .
2
On peut remarquer que si on passe aux coordonnées polaire on obtient w(r ) ≡ f (r cos(ϑ), r sin(ϑ)) = r 2 e −r , autrement-
2
dit on obtient une fonction de la seule variable r > 0 et on a w ′ (r ) = 2r (1 − r 2 )e −r qui s’annule pour r = 1 et dont
l’étude des variations montre qu’il s’agit d’un minimum. Il faut étudier séparément le cas (x = 0, y = 0) car il n’est pas
pris en compte lorsqu’on passe aux coordonnées polaire. Si on n’a pas remarqué cette symétrie, on étudie la fonction
comme dans les cas précédents :
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
( 2 2
2x(1 − x 2 − y 2 )e −(x +y ) = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ 2 2
0 2y(1 − x 2 − y 2 )e −(x +y ) = 0

On a une infinité de points critiques : le point (0, 0) et les points (x, y) qui appartiennent au cercle x 2 + y 2 = 1.
⋆ Nature du point critique : comme f (x, y) ≥ 0 pour tout (x, y) ∈ R2 et f (x, y) = 0 ssi (x, y) ̸= (0, 0) ou (x, y) est tel
que x 2 + y 2 − 1 = 0, on en déduit qu’ils sont des minima (le calcul des dérivées secondes porte à des calculs très
longues et inutiles dans ce cas).
27. f (x, y) = x 3 + y 2 − 6(x 2 − y 2 )
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
3x(x − 4) = 0
µ ¶
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ { (0, 0), (0, −4), (4, 0), (4, −4) } .
0 3y(y + 4) = 0

On a quatre points critiques : (0, 0), (0, −4), (4, 0) et (4, −4).
⋆ Nature des points critiques :
µ ¶
6(x − 2) 0
H f (x, y) = , dét(H f (x, y)) = 36(x − 2)(y + 2).
0 6(y + 2)

© 2020-2021 G. Faccanoni 249


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

dét(H f (0, 0)) < 0 donc (0, 0) est un point-selle ;


dét(H f (0, −4)) > 0 et ∂xx f (0, −4) < 0 donc (0, −4) est un maximum ;
dét(H f (4, 0)) > 0 et ∂xx f (4, 0) > 0 donc (4, 0) est un minimum ;
dét(H f (4, −4)) < 0 (4, −4) est un point-selle.
28. f (x, y) = (x 2 + y 2 − y 3 )e −y
⋆ f est de classe C 2 dans son domaine de définition, l’ouvert R2 .
⋆ Recherche de points critiques :
(
2xe −y = 0 p p o
µ ¶
0 n
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) ∈ (0, 0), (0, 2 − 2), (0, 2 + 2) .
0 (−x 2 + 2y − 4y 2 + y 3 )e −y = 0
p p
On a quatre trois critiques : (0, 0), (0, 2 − 2) et (0, 2 + 2).
⋆ Nature des points critiques :
µ −y
−2xe −y

2e
dét(H f (x, y)) = 4 − 2x 2 − 20y + 14y 2 − 2y 3 e −2y .
¡ ¢
H f (x, y) = ,
−2xe −y (2 + x 2 − 10y + 7y 2 − y 3 )e −y

dét(H f (0, 0)) > 0 et ∂xx f (0, 0) > 0 donc (0, 0) est un minimum ;
p p
dét(H f (0, 2 − 2)) < 0 donc (0, 2 − 2) est un point-selle ;
p p p
dét(H f (0, 2 + 2)) > 0 et ∂xx f (0, 2 + 2) > 0 donc (0, 2 + 2) est un minimum.

Exercice 6.14
La société d’Adèle produit deux types d’ampoules : E17 et E24. Indiquons par x le nombre de milliers d’ampoules de
type E17 produites et supposons que la demande pour ce type de lampes est donnée par p 1 = 50 − x, où p 1 est le prix
de vente en euros. De même, indiquons par y le nombre de milliers d’ampoules de type E24 produites et supposons
que la demande pour ce type est donnée par p 2 = 60 − 2y, où p 2 est aussi le prix de vente en euros. Les coûts communs
de production de ces ampoules est C = 2x y (en milliers d’euros). Par conséquent, le bénéfice de la société d’Adèle (en
milliers d’euros) est une fonction de deux variables x et y. Déterminer le profit maximal d’Adèle.

Correction
La fonction profit en milliers d’euros est p(x, y) = p 1 x + p 2 y −C (x, y) = 50x − x 2 + 60y − 2y 2 − 2x y. Pour maximiser le profit,
on cherche d’abord les points stationnaires :
(
x = 20,
µ ¶ µ ¶
50 − 2x − 2y 0
∇p = 0 ⇐⇒ = ⇐⇒
60 − 4y − 2x 0 y = 5.

Pour établir la nature de ces points, on étudie la matrice hessienne :

∂xx p(x, y) = −2, ∂xx p(20, 5) = −2 < 0,


∂x y p(x, y) = −2, ∂x y p(20, 5) = −2,
∂ y y p(x, y) = −4, ∂ y y p(20, 5) = −4,

et dét(H f (20, 5)) = (−2)(−4) − (−2)2 = 4 > 0 donc (20, 5) est un point de maximum pour p et le profit maximal vaut p(20, 5) =
650. La société d’Adèle réalise le profit maximal de 650000 euros lorsqu’elle vend 20000 ampoules E17 à 30 euros l’une et
5000 ampoules E24 à 50 euros l’une.

Exercice 6.15
Vous êtes le directeur financier de la firme S ANBON & F ILS. Cette entreprise a investi 3000 euros pour mettre au point
un nouveau parfum. Le coût de la production est de 3 euros par flacon de 100 mL. L’expert consulté par M. S ANBON
père a établi que si la firme consacre x euros en publicité pour son parfum et que le prix de vente d’un flacon est de y
p
euros, la firme vendra exactement 300 + 6 x − 10y pièces. La firme S ANBON & F ILS fixe évidemment x et y de manière
à maximiser son profit. En tant que directeur financier, il vous incombe de déterminer ces valeurs.

Correction
p
⋆ Revenu de la vente : y(300 + 6 x − 10y)

250 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 6. Fonctions de plusieurs variables

p
⋆ Coût de production : 3(300 + 6 x − 10y)
⋆ Coût de développement et de publicité : 3000 + x
⋆ Profit = (Revenu de la vente) - (Coût de production) - (Coût de développement et de publicité)
Le profit de la firme à maximiser est donc la fonction

f : (R∗+ )2 → R
p
x 7→ f (x, y) = (y − 3)(300 + 6 x − 10y) − x − 3000

La condition nécessaire s’écrit


( 3(y−3)
∂x f (x, y) = p−1 = 0
x
p =⇒ (x 0 , y 0 ) = (164025, 138).
∂ y f (x, y) = 330 + 6 x − 20y = 0

La hessienne en ce point est définie négative :


 3(y−3)
∂ f (x, y) = − p 3
 xx

 2 x
241
∂x y f (x, y) = p3x =⇒ dét(H f (x 0 , y 0 )) = − .
 ∂ f (x, y) = 30(y−3)
 32805
− p3

yy p
x3 x

Comme ∂xx f (x 0 , y 0 ) = −20, on a bien un maximum. La firme S ANBON & F ILS va donc consacrer 164025 euros à la pro-
motion de son nouveau parfum et vendre le flacon de 100 mL à 138 euros. Elle réalisera de la sorte le profit maximal de
f (164025, 138) = 15225 euros.

Exercice 6.16 (Une fabrication optimale)


Votre société s’occupe de la fabrication d’une pièce mécanique. Celle-ci dépend de deux paramètres réels x et y (à
priori non-contraints) de la façon suivante : le coût unitaire de fabrication d’une pièce est égal à

c(x, y) = x 2 + 2y 2

tandis que le taux de pièces défectueuses (compris entre 0 et 1) est égal à

1
t (x, y) = .
1 + (x y)2

On cherche à maximiser la rentabilité totale du processus de fabrication. On prendra pour fonction objectif le coût
unitaire moyen d’une pièce non-défectueuse, qui est égal au coût de fabrication d’une pièce divisé par le taux de pièces
non-défectueuses, et on tentera de le simplifier autant que possible.

Correction
c(x,y) x 2 +2y 2 (x 2 +2y 2 )(1+x 2 y 2 ) 1
La fonction à minimiser s’écrit f (x, y) = = = = + x 2 + x22 + 2y 2 . La condition nécessaire
1−t (x,y) 1− 1 2 x2 y 2 y2
1+(x y)
s’écrit
4
∂x f (x, y) = 2 x x−2
(
3 =0 p
4
p
4
2y 4 −1 =⇒ (x 0 , y 0 ) = ( 2, 1/ 2).
∂y f (x, y) = 2 y 3 =0

La hessienne en ce point est définie positive :

x 4 +6

 ∂xx f (x, y) = 2 x 4


2+6 1+3
∂x y f (x, y) = 0 =⇒ dét(H f (x 0 , y 0 )) = 4 > 0.
 ∂ f (x, y) = 2 2y 4 +3

 2 1/2
yy y4
p
4
p
4
Comme ∂xx f (x 0 , y 0 ) > 0, on a bien un minimum.
p En choisissant (x, y) = ( 2, 1/ 2), le coût unitaire moyen d’une pièce
non-défectueuse est minimale et égal à 4 2.

Exercice 6.17
Une boîte a la forme d’un parallélépipède surmonté par un demi-cylindre comme dans la figure ci-dessous

© 2020-2021 G. Faccanoni 251


Chapitre 6. Fonctions de plusieurs variables Mis à jour le Mercredi 31 mai 2023

y
x

On cherche les valeurs x, y, z ∈ R∗+ qui minimisent la surface totale S de la boîte pour un volume V égal à C .
1. Écrire S(x, y, z)
2. Écrire V (x, y, z)
3. Exprimer z(x, y) comme solution de l’équation V (x, y, z) = C
4. Écrire S̃(x, y) = S(x, y, z(x, y)). Calculer et établir la nature des points critiques de S̃(x, y)

Correction ¡ y ¢2
1. S(x, y, z) = x y + 2xz + 2y z + π 2 + π 2 x = 1 + π2 x y + π4 y 2 + 2(x + y)z
y ¡ ¢

¡ y ¢2
2. V (x, y, z) = x y z + 21 π 2 x = x y z + π8 x y 2
C − π8 x y 2
3. V (x, y, z) = C ⇐⇒ z = xy donc z(x, y) = xCy − π8 y
³ ´ ¡
4. S̃(x, y) = S(x, y, z(x, y)) = 1 + π2 x y + π4 y 2 + 2(x + y) xCy − π8 y = 1 + π4 x y + 2C 2C
¡ ¢ ¢
x + y
⋆ Calcul des points critiques :

1 + π4 y − 2C
¡ ¢  Ãs s !
x2
µ ¶
0 3
2C 3 2C
∇S̃(x, y) = ¡ donc ∇S̃(x, y) = ⇐⇒ (x, y) = ,
1 + π4 1 + π4

1 + π4 x − 2C 0
¢
y2
³q q ´
2C 2C
Il existe un seul point critique qui est 3
1+ π4
, 3
1+ π4
.
⋆ Nature des points critiques :
4C
1 + π4
à !
x3 16C 2 ³ π ´2
HS̃ (x, y) = π 4C et det(HS̃ (x, y)) = − 1 +
1+ 4 y3 x3 y 3 4

donc
2 1 + π4 π ¶ π ´2
µr r ¶ µ ¡ ¢
µ µr r ¶¶
¡1 + 4π ¢
³
3 2C 3 2C 2C 2C
HS̃ , = det HS̃ 3 1+ π ,
3
= 3 1 + et .
1+ π4 1+ π4 1 + π4
π
4 1+ 4
2 1+ 4 4
³q ´ ³ ´2/3
= µ C ¶2/3 − π8 1+
q
2C 2C 2C
On conclut que l’unique point critique est bien un minimum et l’on a z 3 1+ π ,
3
1+ π π
4 4 2C 4
1+ π4

252 © 2020-2021 G. Faccanoni


CHAPITRE 7

Approximation au sens des moindres carrées :


fonction de meilleur approximation (fitting )

Nous avons déjà vu que si n est grand, le polynôme d’interpolation de Rn [x] n’est pas toujours une bonne approximation
d’une fonction donnée/cherchée. De plus, si les données sont affectées par des erreurs de mesure, l’interpolation peut
être instable. Ce problème peut être résolu avec l’interpolation composite (avec des fonctions linéaires par morceau ou
des splines). Néanmoins, aucune de ces méthodes n’est adaptée à l’extrapolation d’informations à partir des données
disponibles, c’est-à-dire, à la génération de nouvelles valeurs en des points situés à l’extérieur de l’intervalle contenant
les nœuds d’interpolation. On introduit alors la méthode des moindres carrés : soit d i = y i − f (x i ) l’écart vertical du point
(x i , y i ) par rapport à la fonction f . La méthode des moindres carrés est celle qui choisit f de sorte que la somme des carrés
de ces écarts soit minimale.
© ªn
Dans tout le chapitre nous considérons un nuage de n + 1 points (x i , y i ) i =0 .

7.1. Fitting par une relation affine


Supposons que deux grandeurs x et y sont liées approximativement par une relation affine, i.e. f (x) = α0 + α1 x (autrement
dit, lorsqu’on affiche ces points dans un plan cartésien, les points ne sont pas exactement alignés mais cela semble être dû à
des erreurs de mesure). On souhaite alors trouver les constantes α0 et α1 pour que la droite d’équation y = α0 + α1 x s’ajuste
le mieux possible aux points observés. Pour cela, introduisons d i (α0 , α1 ) ≡ y i − (α0 + α1 x) l’écart vertical du point (x i , y i ) par
rapport à la droite :

f (x) = α0 + α1 x
y
y3
d3 d4
y4
y2
d2
y0
d0 d1
y1

x0 x1 x2 x3 x4 x

La méthode des moindres carrés est celle qui choisit α0 et α1 de sorte que la somme des carrés de ces écarts soit minimale.
Pour cela, on doit minimiser la fonction E : R2 → R+ définie par
n n
E (α0 , α1 ) = d i2 = (y i − α0 − α1 x i )2 .
X X
i =0 i =0

∂E ∂E
Pour minimiser E on cherche d’abord les points stationnaires, i.e. les points (α0 , α1 ) qui vérifient ∂α0 = ∂α1 = 0. Puisque
à ! à !
∂E n ∂E n
(α0 , α1 ) = −2 (y i − α0 − α1 x i ) , (α0 , α1 ) = −2 x i (y i − α0 − α1 x i ) ,
X X
∂α0 i =0 ∂α1 i =0

253
Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

alors

∂E
( (P (P
∂α0 (α0 , α1 ) = 0
n n Pn Pn
(y i − α0 − α1 x i ) = 0 i =0 y i − α0 i =0 1 − α1 i =0 x i = 0
∂E
⇐⇒ Pin=0 ⇐⇒ Pn Pn Pn 2
∂α1 (α0 , α1 ) = 0 i =0 x i (y i − α0 − α1 x i ) = 0 i =0 x i y i − α0 i =0 x i − α1 i =0 x i = 0
(
(n + 1)α0 + ni=0 x i α1 = ni=0 y i
¡P ¢ P · Pn ¸ · ¸ · Pn ¸
(n + 1) x a0 yi
⇐⇒ ¡Pn ¡Pn Pn ⇐⇒ Pn Pni =0 2i = Pni =0
2
i =0 x i α0 + i =0 x i α1 = i =0 y i x i
xi x a1 xi y i
¢ ¢
| i =0 {z i =0 i } | {z } | i =0{z }
F a b

NB : les points sont indicés de 0 à n ainsi n + 1 est le nombre de points !


On peut résoudre à la main ce système linéaire et on trouve
 ¡Pn ¢ ¡ Pn ¢ ¡Pn ¢ ¡ Pn 2
¢
i =0 x i i =0 x i y i − i =0 y i i =0 x i
 α0 =


¡Pn ¢2 ,
x i −¢ (n + 1) ¡ ni=0 x i2

 ¡P ¢
¡Pn ¢ i¡=0
Pn Pn ¢
 α1 =
 i =0 x i i =0 y i − (n + 1) i =0 x i y i
.

 ¡Pn ¢2 ¡Pn 2
¢
i =0 x i − (n + 1) i =0 x i

On a trouvé un seul point stationnaire. La fonction étant convexe pour tout (a 0 , a 1 ), on peut conclure qu’il s’agit d’un
minimum.
La droite d’équation y = α1 x + α0 ainsi calculée s’appelle droite de régression de y par rapport à x.

E XEMPLE
Soit les 5 points { (1, 1), (2, 2), (3, 1), (4, 2), (5, 3) } (donc n = 4). On cherche la droite de meilleure approximation y = α0 + α1 x.
Il s’agit de chercher α0 et α1 solution du système linéaire
Pn ¶ µ ¶ µ Pn
x α0
µ ¶
(n + 1) yi
Pn Pni =0 2i = Pni =0
i =0 x i i =0 x i α1 i =0 x i y i
α0
µ ¶µ ¶ µ ¶
4+1 1+2+3+4+5 1+2+1+2+3
=⇒ =
1+2+3+4+5 1 2 + 22 + 32 + 42 + 52 α1 1×1+2×2+3×1+4×2+5×3
5 15 α0
µ ¶µ ¶ µ ¶
9
=⇒ =
15 55 α1 31

3 2
Donc α0 = 5 = 0.6 et α1 = 5 = 0.4.

xp=[1:5];
yp=[1,2,1,2,3];
n=numel(xp)
A=[n, sum(xp); sum(xp), sum(xp.^2) ]
b=[sum(yp); sum(xp.*yp)]
alpha=A\b
f=@(t)[alpha(1)+alpha(2)*t];
xx=linspace(0,2*pi,100);
plot(xp,yp,’o’,xx,f(xx))
erreur=sum((yp-f(xp)).^2)

k+ j j j
Notons que l’élément (F)k j = ni=0 x i est le produit scalaire du vecteur (x 0k , . . . , x nk ) avec le vecteur (x 0 , . . . , x n ) et que
P
Pn
l’élément b k = i =0 x ik y i est le produit scalaire du vecteur (x 0k , . . . , x nk ) avec le vecteur colonne y = (y 0 , . . . , y n ) ; on peut alors
écrire F = AT A et b = AT y avec (A)i k = x ik avec i = 0, . . . , n et k = 0, 1 :
 
1 x0
1 x1 
A= 
def
 
 ..  .
.. 
. . 
1 xn
| {z }
(n+1)×(m+1)

254 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

En effet,
   
1 x0 y0
µ ¶ 1 x1  µ
n +1
Pn
x
¶ µ ¶  y  µ Pn
1

T
A A=
1 1 ... 1 
Pni =0 2i T
A y=
1 1 ... 1  .  = P i =0 y i

. ..  = Pn x

n
x0 x1 ... xn  .. .  i =0 i i =0 x i x0 x1 ... xn  ..  i =0 x i y i

1 xn yn

7.1.1. Fitting linéaire après transformations


Même si la relation entre deux quantités n’est pas linéaire, il est parfois possible d’appliquer une transformation pour
trouver une relation linéaire.
Fitting linéaire après transformation d’un exponentiel Soit a > 0 et considérons la fonction f (x) = ae kx : elle est non-
linéaire mais si on prend son logarithme on obtient ln( f (x)) = ln(a) + kx qui est linéaire et a la forme α0 + α1 x avec
α1 = k et α0 = ln(a).
ªn
On peut alors calculer l’équation de la droite de régression sur l’ensemble (x i , ln(y i )) i =0 et obtenir ainsi k et ln(a). 1
©

Fitting linéaire après transformation d’une puissance Soit a > 0 et considérons la fonction f (x) = ax k : elle est non-
linéaire mais si on prend son logarithme on obtient ln( f (x)) = ln(a) + k ln(x) qui est linéaire et a la forme α0 + α1 x
avec α1 = k et α0 = ln(a).
© ªn
On peut alors calculer l’équation de la droite de régression sur l’ensemble (ln(x i ), ln(y i )) i =0 et obtenir ainsi k et
ln(a). 2
On verra dans la prochaine section comment travailler directement avec la fonction polynomiale f .

E XEMPLE (F ITTING LINÉAIRE APRÈS TRANSFORMATION )


On mesure plusieurs fois la pression P et le volume V d’un gaz de masse donnée. On obtient ainsi n + 1 mesures { P i ,Vi }ni=0 .
Selon la thermodynamique, ces quantités sont liées par une relation du type PV γ = C où γ et C sont deux constantes à
calculer.
On a ln(PV γ ) = ln(C ) ainsi ln(P )+γ ln(V ) = ln(C ). Si on pose x = ln(V ) et y = ln(P ), on a une relation de la forme y = α1 x +α0
avec α1 = −γ et α0 = ln(C ).
On peut alors calculer l’équation de la droite de régression sur l’ensemble { (ln(Vi ), ln(P i )) }ni=0 et obtenir ainsi γ = −α1 et
C = e α0 .

E XEMPLE
Soit les 5 points { (1, 1), (2, 2), (3, 1), (4, 2), (5, 3) } (donc n = 4). On cherche la fonction de meilleure approximation de la forme
y = Ae B x . Si on calcule le logarithme de cette fonction on trouve ln(y) = ln(A) + B x. On peut alors calculer la droite de
meilleur approximation sur l’ensemble { (1, ln(1)), (2, ln(2)), (3, ln(1)), (4, ln(2)), (5, ln(3)) } et obtenir ainsi B et ln(A). Notons
α0 = ln(A) et α1 = B , il s’agit de chercher α0 et α1 solution du système linéaire
Pn ¶ µ ¶ µ Pn
x α0
µ ¶
(n + 1) ln(y i )
Pn Pni =0 2i = Pn i =0
i =0 x i i =0 x i α1 i =0 x i ln(y i )
α0
µ ¶µ ¶ µ ¶
4+1 1+2+3+4+5 ln(1) + ln(2) + ln(1) + ln(2) + ln(3)
=⇒ =
1 + 2 + 3 + 4 + 5 12 + 22 + 32 + 42 + 52 α1 1 × ln(1) + 2 × ln(2) + 3 × ln(1) + 4 × ln(2) + 5 × ln(3)
5 15 α0
µ ¶µ ¶ µ ¶
2 ln(2) + ln(3)
=⇒ =
15 55 α1 6 ln(2) + 5 ln(3)
5 15 α0
µ ¶µ ¶ µ ¶
2 ln(2) + ln(3)
=⇒ =
0 10 α1 2 ln(3)

Donc α1 = ln(3)
5 et α1 = ln(4)−ln(9)
5 et enfin B = α1 et A = e α0 .
xp=[1:5];
yp=[1,2,1,2,3];
ylp=log(yp);
xx=linspace(0,6,100);
%sol=[5 15;15 55]\[sum(ylp);sum(xp.*ylp)]
ªn
1. Ceci n’est pas équivalent à faire un fitting sur l’ensemble initial (x i , y i ) i =0 . En effet, si on note d i = y i − ae kxi et D i = ln(y i ) − (kx i + ln(a)),
©
© ªn
lorsqu’on calcule la droite de régression sur l’ensemble (x i , ln(y i )) i =0 on minimise D i et non d i .
ªn
2. À nouveau, ceci n’est pas équivalent à faire un fitting sur l’ensemble initial (x i , y i ) i =0 . En effet, si on note d i = y i − ax ik et D i = ln(y i ) − (k ln(x i ) +
©
© ªn
ln(a)), lorsqu’on calcule la droite de régression sur l’ensemble (ln(x i ), ln(y i )) i =0 on minimise D i et non d i .

© 2020-2021 G. Faccanoni 255


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

%alpha0=sol(1);
%alpha1=sol(2);
alpha0=2*(log(2)-log(3))/5;
alpha1=log(3)/5;
A=exp(alpha0);
B=alpha1;
subplot(1,2,1)
f=@(t)[alpha0+alpha1*t];
plot(xp,ylp,’o’,xx,f(xx))
subplot(1,2,2)
f=@(t)[A*exp(B*t)];
plot(xp,yp,’o’,xx,f(xx))

7.2. Fitting polynomial


© ªn
On considère un ensemble de points expérimentaux (x i , y i ) i =0 et on suppose que les deux grandeurs x et y sont liées,
au moins approximativement, par une relation polynomiale, c’est-à-dire de la forme y = m j
P
j =0 a j x pour certaines valeurs
de a j . On souhaite alors trouver les m + 1 constantes a j pour que le polynôme d’équation f (x) = m j
P
³P ´ j =0 a j x s’ajuste le
j
mieux possible aux points observés. Soit d i (a 0 , a 1 , . . . , a m ) = y i − m j =0 a j x i l’écart vertical du point (x i , y i ) par rapport au
polynôme. La méthode des moindres carrés est celle qui choisit les a j de sorte que la somme des carrés de ces déviations
soit minimale.
Pour cela, on doit minimiser la fonction E : Rm+1 → R+ définie par
à !2
n ¡ n m n ¡ ¢2
¢2 j
E (a 0 , a 1 , a 2 , . . . , a m ) = y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im
X X X X
y i − f (x i ) = yi − a j xi = .
i =0 i =0 j =0 i =0

∂E
Pour minimiser E on cherche d’abord ses points stationnaires, i.e. les points qui vérifient ∂a j = 0 pour j = 0, . . . , m. Puisque
à !
∂E n m
j
n
0
x i0 y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im ,
X X X ¡ ¢
(a 0 , a 1 , a 2 , . . . , a m ) = −2 xi y i − a j x i = −2
∂a 0 i =0 j =0 i =0
à !
∂E n m
j
n
x i1 y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im ,
X 1 X X ¡ ¢
(a 0 , a 1 , a 2 , . . . , a m ) = −2 xi y i − a j x i = −2
∂a 1 i =0 j =0 i =0
à !
∂E n m
j
n
x i2 y i − x i2 y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im ,
X X X ¡ ¢
(a 0 , a 1 , a 2 , . . . , a m ) = −2 a j x i = −2
∂a 2 i =0 j =0 i =0
..
.
à à !!
∂E n
m
m
j
n
x im y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im ,
X X X ¡ ¢
(a 0 , a 1 , a 2 , . . . , a m ) = −2 xi y i − a j x i = −2
∂a m i =0 j =0 i =0

on obtient alors le système linéaire Fa = b de (m + 1) équations en les (m + 1) inconnues a 0 , a 1 , a 2 , . . . , a m suivant

∂E
 
∂a 0 (a 0 , a 1 , a 2 , . . . , a m ) = 0 a 0 (n + 1) + a 1 ni=0 x i + a 2 ni=0 x i2 · · · + a m ni=0 x im = ni=0 y i
P P P P

 

 
∂E n n n n
2 3 m+1
= ni=0 y i x i
 
∂a 1 (a 0 , a 1 , a 2 , . . . , a m ) = 0
P P P P P
 a 0 i =0 x i + a 1 i =0 x i + a 2 i =0 x i · · · + a m i =0 x i

 


 
∂E Pn Pn Pn Pn
= ni=0 y i x i2
 
2 3 4 m+2 P
∂a 2 (a 0 , a 1 , a 2 , . . . , a m ) = 0 ⇐⇒ a 0 i =0 x i + a 1 i =0 x i + a 2 i =0 x i · · · + a m i =0 x i
..  ..

 

. .

 
 

 ∂E (a , a , a , . . . , a ) = 0
 
  a Pn x m + a Pn x m+1 + a Pn x m+2 · · · + a Pn x 2m = Pn y x m

∂a m 0 1 2 m 0 i =0 i 1 i =0 i 2 i =0 i m i =0 i i =0 i i
 Pn Pn 2 Pn m
    Pn 
(n + 1) i =0 x i i =0 x i ... i =0 x i a0 i =0 y i
 n x
P P n
x2
P n
x3
P n
x m+1     n P
...  a 1   P i =0 y i x i 

 P i =0 i Pin=0 i3 Pin=0 i4 Pin=0 im+2 
 n x2 n 2
i =0 x i i =0 x i ... i =0 x i   a 2  =  i =0 y i x i 
   
⇐⇒   i =0 i
 .. .. ..  .  
 .   .. 

 . . .  .   . 
Pn m P n m+1 P n m+2 P n 2m P n m
x x x . . . x a m y i x
| i =0 i i =0 i
{zi =0 i i =0 i
} | {z } | i =0{z i }
F a b

256 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

Quand m ≥ n, le polynôme de meilleure approximation coïncide avec le polynôme d’interpolation de Rn [x].

E XEMPLE
Soit les 5 points { (1, 1), (2, 2), (3, 1), (4, 2), (5, 3) } (donc n = 4). On cherche la parabole de meilleure approximation y = α0 +
α1 x + α2 x 2 . Il s’agit de chercher α0 , α1 et α2 solution du système linéaire
Pn Pn     Pn
x 2 α0
 
(n + 1) x y
Pni =0 2i Pin=0 i3 Pni =0 i
 n xi x  α1  =  i =0 x i y i 
P
x
Pni =0 2 Pin=0 i3 Pin=0 i4 Pn 2
i =0 x i i =0 x i i =0 x i α2 i =0 x i y i
12 + 22 + 32 + 42 + 52 α0
    
4+1 1+2+3+4+5 1+2+1+2+3
=⇒  1+2+3+4+5 1 2 + 2 2 + 3 2 + 42 + 5 2 13 + 23 + 33 + 43 + 53  α1  =  1 × 1 + 2 × 2 + 3 × 1 + 4 × 2 + 5 × 3 
12 + 2 2 + 3 2 + 42 + 5 2 13 + 2 3 + 3 3 + 43 + 5 3 14 + 24 + 34 + 44 + 54 α2 1 2 × 1 + 2 2 × 2 + 32 × 1 + 4 2 × 2 + 5 2 × 3
α0
    
5 15 55 9
=⇒ 15 55 225 α1  =  31 
55 225 979 α2 125

Donc α0 = 85 , α1 = − 35
16
et α2 = 17 .
xp=[1:5];
yp=[1,2,1,2,3];
xx=linspace(0,2*pi,100);
f=@(t)[8/5-16/35*t+1/7*t.^2];
plot(xp,yp,’o’,xx,f(xx))

k+ j j j j
Notons que l’élément (F)k j = ni=0 x i est le produit scalaire du vecteur (x 0k , x 1k , . . . , x nk ) avec le vecteur (x 0 , x 1 , . . . , x n ) et que
P
Pn
l’élément b k = i =0 x ik y i est le produit scalaire du vecteur (x 0k , x 1k , . . . , x nk ) avec le vecteur y = (y 0 , y 1 , . . . , y n ) ; on peut alors
écrire F = AT A et b = AT y avec (A)i k = x ik avec i = 0, . . . , n et k = 0, . . . m :

x 0m
 
1 x0 ...
1 x1 ... x 1m 
A=
def
 
 .. .. .
.. 
. . . 
1 xn ... x nm
| {z }
(n+1)×(m+1)

On reconnaît une sous-matrice de la matrice de VANDERMONDE.

Remarque
Le système des moindres carrés ci-dessus est mal conditionné (i.e. il est de plus en plus sensible aux erreurs d’arrondis à
mesure que m augmente). On se limite habituellement à des polynômes de degré peu élevé.

7.3. Fitting non polynomial


Une généralisation de l’approximation au sens des moindres carrés consiste à utiliser dans d i des fonctions f (x i ) qui
© sont pas des ªpolynômes mais des fonctions d’un espace vectoriel V engendré par m + 1 fonctions indépendantes
ne
φ j , j = 0, . . . , m . On peut considérer par exemple
© desª fonctions trigonométriques φ j (x) = cos( j x), des fonctions expo-
nentielles φ j (x) = e j x etc. Le choix des fonctions φ j est en pratique dicté par la forme supposée de la loi décrivant les
données. © ªn
On considère un ensemble de points expérimentaux (x i , y i ) i =0 et on suppose que les deux grandeurs x et y sont liées, au
Pm
moins approximativement, par une relation de la forme y = j =0 a j φ j (x) pour certaines valeurs de a j (le fitting polynomiale
correspond à φ j (x) = x j ). On souhaite alors trouver les m +1 constantes a j pour que la fonction d’équation y = m j =0 a j φ j (x)
P
³P ´
s’ajuste le mieux possible aux points observés. Soit d i (a 0 , a 1 , . . . , a m ) = y i − m j =0 a j φ j (x) l’écart vertical du point (x i , y i )
par rapport à cette fonction. La méthode des moindres carrés est celle qui choisit les a j de sorte que la somme des carrés de
ces écarts soit minimale.
Pour cela, on doit minimiser la fonction E : Rm+1 → R+ définie par
à !2
n m n ¡ ¢2
E (a 0 , a 1 , . . . , a m ) = a j φ j (x i ) y i − a 0 φ0 (x i ) − a 1 φ1 (x i ) − a 2 φ2 (x i ) · · · − a m φm (x i ) .
X X X
yi − =
i =0 j =0 i =0

© 2020-2021 G. Faccanoni 257


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

∂E
Pour minimiser E on cherche d’abord ses points stationnaires, i.e. les points qui vérifient ∂a j = 0 pour j = 0, . . . , m. Puisque
à à !!
∂E n m n ¡
φ0 (x i ) y i − a j φ j (x i ) = −2 φ0 (x i ) y i − a 0 φ0 (x i ) − a 1 φ1 (x i ) − a 2 φ2 (x i ) · · · − a m φm (x i ) ,
X X X ¡ ¢¢
(a 0 , a 1 , . . . , a m ) = −2
∂a 0 i =0 j =0 i =0
à à !!
∂E n m n ¡
φ1 (x i ) y i − a j φ j (x i ) = −2 φ1 (x i ) y i − a 0 φ0 (x i ) − a 1 φ1 (x i ) − a 2 φ2 (x i ) · · · − a m φm (x i ) ,
X X X ¡ ¢¢
(a 0 , a 1 , . . . , a m ) = −2
∂a 1 i =0 j =0 i =0
..
.
à à !!
∂E n m n ¡
φm (x i ) y i − a j φ j (x i ) − 2 φm (x i ) y i − a 0 φ0 (x i ) − a 1 φ1 (x i ) − a 2 φ2 (x i ) · · · − a m φm (x i ) ,
X X X ¡ ¢¢
(a 0 , a 1 , . . . , a m ) = −2
∂a m i =0 j =0 i =0

on obtient alors le système linéaire de (m + 1) équations en les (m + 1) inconnues a 0 , a 1 , . . . , a m suivant

∂E

∂a 0 (a 0 , a 1 , . . . , a m ) = 0


∂E


∂a 1 (a 0 , a 1 , . . . , a m ) = 0


..



 .
 ∂E

∂a m (a 0 , a 1 , . . . , a m ) = 0
 P
n Pn Pn Pn
 a 0 i =0 φ0 (x i )φ0 (x i ) + a 1 i =0 φ0 (x i )φ1 (x i ) + · · · + a m i =0 φ0 (x i )φm (x i ) = i =0 φ0 (x i )y i


 a 0 n φ1 (x i )φ0 (x i ) + a 1 n φ1 (x i )φ1 (x i ) + · · · + a m n φ1 (x i )φm (x i ) = n φ1 (x i )y i

 P P P P
i =0 i =0 i =0 i =0
⇐⇒ .
 ..


 P
a 0 ni=0 φm (x i )φ0 (x i ) + a 1 ni=0 φm (x i )φ1 (x i ) + · · · + a m ni=0 φm (x i )φm (x i ) = ni=0 φm (x i )y i

 P P P
 Pn Pn Pn     Pn
i =0 φ0 (x i )φ0 (x i ) i =0 φ0 (x i )φ1 (x i ) i =0 φ0 (x i )φm (x i ) i =0 φ0 (x i )y i

... a0
 n φ (x )φ (x ) n n    n
i =0 φ1 (x i )φ1 (x i ) i =0 φ1 (x i )φm (x i )   a 1   i =0 φ1 (x i )y i 
P P P P
 i =0 1 i 0 i ... 
⇐⇒  . . .  .  =  . 

 .. .. ..  .  
 .   .. 

Pn Pn Pn Pn
φ
i =0 m i (x )φ (x
0 i ) φ
i =0 m i (x )φ (x
1 i ) . . . φ
i =0 m i (x )φ (x
m i ) a m φ
i =0 m i i(x )y

Si on note Φk j = ni=0 φk (x i )φ j (x i ), on obtient alors le système linéaire Fa = b de (m + 1) équations en les (m + 1) inconnues


def P

a 0 , a 1 , . . . , a m suivant     Pn
Φ00 Φ01 . . . Φ0m i =0 φ0 (x i )y i
 
a0
Φ    n
 01 Φ11 . . . Φ1m   a 1   i =0 φ1 (x i )y i 
P 
 .
 . ..    =
..   ..    .. 
 . . .  .   .


Pn
Φ0m Φ1m . . . Φmm a m i =0 φm (x i )y i
| {z } | {z } | {z }
F a b
Pn k+ j
On remarque que si φ j (x) = x j alors Φk j = i =0 x i et on retrouve le cas du fitting polynomial.

E XEMPLE
Soit les 5 points { (0, 1), (π/2, 2), (π, ª n = 4). On cherche la fonction de meilleure approximation dans
© 1), (3π/2, 2), (2π, 3) } (donc
l’espace vectoriel engendré par φ0 (x) = 1, φ1 (x) = cos(x) , i.e. y = α0 φ0 (x) + α1 φ1 (x) = α0 + α1 cos(x). Il s’agit de chercher
α0 et α1 solution du système linéaire
µPn Pn ¶ µ ¶ µPn
φ (x )φ (x ) φ (x )φ (x ) α0 φ0 (x i )y i

Pin=0 0 i 0 i Pin=0 0 i 1 i = Pni =0
i =0 φ1 (x i )φ0 (x i ) i =0 φ1 (x i )φ1 (x i ) α1 i =0 φ1 (x i )y i
µ Pn Pn Pn
cos(x ) α0
¶µ ¶ µ ¶
1 yi
=⇒ Pn i =0 Pni =0 2 i = Pn i =0
i =0 cos(x i ) i =0 cos (x i ) α1 i =0 cos(x i )y i
α0
µ ¶µ ¶
4+1 cos(0) + cos(π/2) + cos(π) + cos(3π/2) + cos(2π)
=⇒
cos(0) + cos(π/2) + cos(π) + cos(3π/2) + cos(2π) cos2 (0) + cos2 (π/2) + cos2 (π) + cos2 (3π/2) + cos2 (2π) α1
µ ¶
1+2+1+2+3
=
cos(0) × 1 + cos(π/2) × 2 + cos(π) × 1 + cos(3π/2) × 2 + cos(2π) × 3
5 1 α0
µ ¶µ ¶ µ ¶
9
=⇒ =
1 3 α1 3

12
Donc α0 = 7 et α1 = 37 .

258 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

xp=[0,pi/2,pi,3*pi/2,2*pi];
yp=[1,2,1,2,3];
xx=linspace(0,2*pi,100);
f=@(t)[12/7+3/7*cos(t)];
plot(xp,yp,’o’,xx,f(xx))

Notons que l’élément Φk j est le produit scalaire du vecteur (φk (x 0 ), φk (x 1 ), . . . , φk (x n )) avec le vecteur (φ j (x 0 ), φ j (x 1 ), . . . , φ j (x n ))
et que l’élément b k = ni=0 φk (x i )y i est le produit scalaire du vecteur (φk (x 0 ), φk (x 1 ), . . . , φk (x n )) avec le vecteur colonne
P

y = (y 0 , y 1 , . . . , y n ) ; on peut alors écrire F = AT A et b = AT y avec (A)i k = φk (x i ) la matrice rectangulaire :

φ0 (x 0 ) φ1 (x 0 ) . . . φm (x 0 )
 
 φ (x ) φ (x ) . . . φ (x ) 
 0 1 1 1 m 1 
A= .
def  .
. .. ..
 . . .


φ0 (x n ) φ1 (x n ) . . . φm (x n )
| {z }
(n+1)×(m+1)

Le système linéaire carré AT Aa = AT b est équivalent au système linéaire rectangulaire Aa = b. Ce système peut être
efficacement résolu avec la factorisation QR ou bien une décomposition en valeurs singulières de la matrice A. Si n = m on
trouve un système carrée qui équivaut à la méthode directe d’interpolation.

E XEMPLE
Considérons l’ensemble de 3 points { (−2, 4), (0, 0), (1, 1) } (donc n = 2). On se propose de calculer les fonctions de meilleure
approximation avec
1. f (x) = a 0 + a 1 x (m = 1 et φ j (x) = x j avec j = 0, 1)
2. f = a 0 + a 1 x + a 2 x 2 (m = 2 et φ j (x) = x j avec j = 0, 1, 2)
3. f (x) = a 0 + a 1 e x (m = 1 et φ j (x) = e j x avec j = 0, 1)
4. f (x) = a 0 + a 1 e x + a 2 e 2x (m = 2 et φ j (x) = e j x avec j = 0, 1, 2)
Posons les systèmes linéaires :
P2
1. Pour m = 1, il s’agit de chercher a 0 et a 1 qui minimisent l’erreur E (a 0 , a 1 ) = i =0 (y i − (a 0 + a 1 x i ))2 . Cela impose la
résolution du système linéaire
µ Pn ¶ µ ¶ µ Pn ¶ µ ¶µ ¶ µ ¶
(n + 1) x a0 yi 3 −1 a0 5
Pn Pni =0 2i = Pni =0 =⇒ =
i =0 x i i =0 x i a1 i =0 y i x i −1 5 a1 −7

27
Donc a 0 = 21 et a 1 = − 78 .
P2
2. Pour m = 2, il s’agit de chercher a 0 , a 1 et a 2 qui minimisent l’erreur E (a 0 , a 1 , a 2 ) = i =0 (y i − (a 0 + a 1 x i + a 2 x i2 ))2 . Cela
impose la résolution du système linéaire
Pn Pn     Pn
x 2 a0
      
(n + 1) x y 3 −1 5 a0 5
Pni =0 2i Pin=0 i3 Pni =0 i
 n xi
P
x x  a 1  =  i =0 y i x i  i.e. −1 5 −7 a 1  = −7
Pni =0 2 Pin=0 i3 Pin=0 i4 Pn 2
i =0 x i i =0 x i i =0 x i a2 i =0 y i x i 5 −7 17 a 2 17

Donc a 0 = a 1 = 0 et a 2 = 1, i.e. f (x) = x 2 . Notons que dans ce cas E (0, 0, 1) = 0 : en effet m = n − 1 et le fitting retrouve
le polynôme d’interpolation.
3. Pour m = 1, il s’agit de chercher a 0 et a 1 qui minimisent l’erreur E (a 0 , a 1 ) = 2i =0 (y i − a 0 − a 1 e xi )2 . Cela impose la
P

résolution du système linéaire


µPn Pn ¶ µ ¶ µPn µ Pn Pn ¶ µ ¶ µ Pn
φ (x )φ (x ) φ (x )φ (x ) a 0 φ0 (x i )y i e xi a0
¶ ¶
1 yi
Pin=0 0 i 0 i Pin=0 0 i 1 i = ni =0 =⇒ Pni =0 xi Pni =0 2xi = n i =0
xi
i =0 φ0 (x i )φ1 (x i ) i =0 φ1 (x i )φ1 (x i ) a 1 i =0 φ1 (x i )y i
P P
i =0 e i =0 e a1 i =0 e y i
e −2 + 1 + e a 0
µ ¶ µ ¶ µ ¶
3 5
=⇒ =
e −2 + 1 + e e −4 + 1 + e 2 a 1 4e −2 + 0 + e

Donc a 0 ≈ 2.842 et a 1 ≈ −0.915.


P2
4. Pour m = 2, il s’agit de chercher a 0 , a 1 et a 2 qui minimisent l’erreur E (a 0 , a 1 , a 2 ) = i =0 (y i − a 0 − a 1 e xi − a 2 e 2xi )2 . Cela
impose la résolution du système linéaire

© 2020-2021 G. Faccanoni 259


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

Pn Pn Pn    Pn
φ (x )φ (x ) φ (x )φ (x ) φ (x )φ (x φ (x )y

a0
Pi =0 0 i 0 i Pin=0 0 i 1 i Pni =0 0 i 2 i Pni =0 0 i i
 n φ1 (x i )φ0 (x i ) φ (x )φ (x ) φ (x )φ (x ) a 1  =  i =0 φ1 (x i )y i 
Pni =0 Pni =0 1 i 1 i Pin=0 1 i 2 i Pn
i =0 φ2 (x i )φ0 (x i ) i =0 φ2 (x i )φ1 (x i ) i =0 φ2 (x i )φ2 (x i ) a2 i =0 φ2 (x i )y i
 Pn Pn xi Pn 2xi     Pn 
1 e e a0 y
Pni =0 xi Pni =0 2xi Pni =0 3xi Pn i =0 xi i
=⇒  i =0 e e e  a 1  =  i =0 e y i 
Pn xi Pni =0 3xi Pni =0 4xi Pn 2xi
i =0 e i =0 e i =0 e a2 i =0 e yi
e + 1 + e e + 1 + e 2 a0
−2 −4
    
3 5
=⇒  e −2 + 1 + e e −4 + 1 + e 2 e −6 + 1 + e 3  a 1  =  4e −2 + 0 + e 
e −4 + 1 + e 2 e −6 + 1 + e 3 e −8 + 1 + e 4 a 2 4e −4 + 0 + e 2

Donc a 0 ≈ 2.787, a 1 ≈ −0.755 et a 2 ≈ −0.054.

y = a0 + a1 x + a2 x 2

x
y = a0 + a1 x
y = a0 + a1 e x
y = a 0 + a 1 e x + a 2 e 2x

E XEMPLE
Considérons l’ensemble de 3 points { (1, 2), (2, 0), (3, −1) } (donc n = 2). On se propose de calculer les fonctions de meilleure
approximation avec
1. f (x) = a 0 + a 1 x1 (m = 1 et φ j (x) = x − j avec j = 0, 1)
2. f (x) = a 0 + a 1 x1 + a 2 x12 (m = 2 et φ j (x) = x − j avec j = 0, 1, 2)
Posons les systèmes linéaires :
− a 0 − a 1 x1 )2 . Cela impose la
P2
1. Pour m = 1, il s’agit de chercher a 0 et a 1 qui minimisent l’erreur E (a 0 , a 1 ) = i =0 (y i i
résolution du système linéaire
à Pn Pn 1 ! µ ¶ µ Pn
µPn
φ (x )φ (x )
Pn
φ (x )φ (x ) a 0
¶ µ ¶ µPn
φ0 (x i )y i
¶ 1 a0 yi

Pin=0 0 i 0 i Pin=0 0 i 1 i = Pin=0 =⇒ Pni =0 1 Pni =0 xi
1 = Pn i =01
i =0 φ0 (x i )φ1 (x i ) i =0 φ1 (x i )φ1 (x i ) a 1 i =0 φ1 (x i )y i i =0 x i i =0 x 2
i
a1 i =0 x i y i
µ 11 ¶ µ ¶ µ ¶
3 6 a0 0
=⇒ 11 49 = 5
6 36
a 1 3

Donc a 0 ≈ −4.2308 et a 1 ≈ 6.9231.


− a 0 − a 1 x1 − a 2 x12 )2 . Cela
P2
2. Pour m = 2, il s’agit de chercher a 0 , a 1 et a 2 qui minimisent l’erreur E (a 0 , a 1 , a 2 ) = i =0 (y i i i
impose la résolution du système linéaire
Pn Pn Pn    Pn
φ (x )φ (x ) φ (x )φ (x ) φ (x )φ (x φ (x )y

a0
Pi =0 0 i 0 i Pin=0 0 i 1 i Pni =0 0 i 2 i Pni =0 0 i i
 n φ1 (x i )φ0 (x i ) φ (x )φ (x ) φ (x )φ (x ) a 1  =  i =0 φ1 (x i )y i 
Pin=0 Pin=0 1 i 1 i Pin=0 1 i 2 i Pn
i =0 φ2 (x i )φ0 (x i ) i =0 φ2 (x i )φ1 (x i ) i =0 φ2 (x i )φ2 (x i ) a2 i =0 φ2 (x i )y i
 Pn Pn 1 Pn 1   Pn
i =0 1

i =0 x i i =0 x 2
 
a i =0 yi
 Pn 1 Pn 1 Pn 1i  0 Pn 1 y 
2 i
=⇒  P i =0 xi Pi =0 xi2 Pi =0 xi3  a 1 = Pi =0 xi 
  
n 1
n 1 n 1 n 1 a 2 i =0 3 y i
i =0 x 2 i =0 x 3 i =0 x 4 xi
i i i

260 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

11 49     
1

3 6 36 a0
 11 49 251     5 
=⇒ 6 36 216
a 1 = 3
49 251 1393 17
36 216 1296
a2 9

Donc a 0 = − 72 , a 1 = 17
2 et a 2 = −3.

y = a 0 + a 1 x1 + a 2 x12

y = a 0 + a 1 x1

7.4. Résumé
Lorsqu’un chercheur met au point une expérience (parce qu’il a quelques raisons © de croire
ªn que les deux grandeurs x et y
sont liées par une fonction f ), il récolte des données sous la forme de points (x i , y i ) i =0 mais en générale ces données
sont affectées par des erreurs de mesure. Lorsqu’il en fait une représentation graphique il cherche f pour qu’elle s’ajuste
le mieux possible aux points observés. Soit d i = y i − f (x i ) l’écart vertical du point (x i , y i ) par rapport à la fonction f . La
méthode des moindres carrés est celle qui choisit f de sorte que la somme des carrés de ces déviations soit minimale :
n ¡ ¢2
Ef =
X
minimiser y i − f (x i ) .
i =0

Le choix de la forme de f dépend du chercheur, on peut par exemple choisir :


⋆ f affine, i.e. f (x) = a 0 + a 1 x, ainsi l’erreur est une fonction de deux variables et l’on a
n ¡ ¢2
E (a 0 , a 1 ) =
X
y i − a0 − a1 xi
i =0
¶ µ Pn
∂a 0 E −2 i =0 x i0 ¡ y i − a 0 − a 1 x i ¢
µ ¡ ¢¶
∇E (a 0 , a 1 ) = =
∂a 1 E −2 ni=0 x i1 y i − a 0 − a 1 x i
P

a 0 et a 1 sont alors solution du système linéaire


· Pn ¸ · ¸ · Pn ¸
(n + 1) x a0 yi
Pn Pni =0 2i = Pni =0
i =0 x i i =0 x i a1 i =0 x i y i

Pm
⋆ f polynomiale de degré m, i.e. f (x) = a 0 + a 1 x + · · · + a m x m = j =0 a j x
j
, ainsi l’erreur est une fonction de m + 1
variables et l’on a
à !2
n ¡ ¢2 n m
j
E (a 0 , a 1 , a 2 , . . . , a m ) = y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im
X X X
= yi − a j xi
i =0 i =0 j =0

∂a 0 E −2 ni=0 x i0 ¡ y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im ¢
 P  ¡ ¢
 ∂ E   −2 n x 1 y − a − a x − a x 2 · · · − a x m 
P
 a1   i 0 1 i 2 m
 ∂ E   −2 Pin=0 x i2 ¡ y − a − a x − a x i2 · · · − a x im ¢ 

∇E (a 0 , a 1 , . . . , a m ) =  a i 0 1 i 2 m
2
= i =0 i i i 
  
 ..   .. 

 .   . 
Pn
∂a m E −2 i =0 x im y i − a 0 − a 1 x i − a 2 x i2 · · · − a m x im
¡ ¢

© 2020-2021 G. Faccanoni 261


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

a 0 , a 1 , . . . , a m sont alors solution du système linéaire


Pn Pn Pn     Pn
x2 x im
 
(n + 1) x ... a0 i =0 y i
 Pn x Pni =0 2i Pni =0 i3 Pni =0 m+1  a   n y x 
P
 P i =0 i x x ... x  1  i i 
 n x2 Pin=0 i3 Pi4=0 i4 Pin=0 im+2    a   Pni =0 y x 2 
 i =0 i i =0 x i i =0 x i ... x
i =0 i   2  =  i =0 i i 

 .. .. ..  .  
 .   .. 

 . . .  .   . 
Pn m Pn m+1 Pn m+2 Pn 2m Pn m
i =0 x i i =0 x i i =0 x i ... x
i =0 i
a m i =0 i iy x

⋆ f combinaison linéaire de m fonctions qui constituent une base d’un espace vectoriel, i.e. f (x) = a 0 φ0 (x) + a 1 φ1 (x) +
· · · + a m φm (x) = mj =0 a j φ j (x), ainsi l’erreur est une fonction de m + 1 variables et l’on a
P

à !2
n ¡ ¢2 n m
E (a 0 , a 1 , a 2 , . . . , a m ) = y i − a 0 φ0 (x i ) − a 1 φ1 (x i ) − a 2 φ2 (x i ) · · · − a m φm (x i ) a j φ j (x i )
X X X
= yi −
i =0 i =0 j =0

∂a 0 E −2 ni=0 φ0 (x i ) ¡ y i − a 0 φ0 (x i ) − a 1 φ1 (x i ) − a 2 φ2 (x i ) · · · − a m φm (x i )¢
   P ¡ ¢
 ∂ E   −2 n φ (x ) y − a φ (x ) − a φ (x ) − a φ (x ) · · · − a φ (x ) 
P
 a1   1 i i 0 0 i 1 1 i 2 2 i m m i 
 ∂ E   −2 Pin=0 φ (x ) ¡ y − a φ (x ) − a φ (x ) − a φ (x ) · · · − a φ (x )¢ 
∇E (a 0 , a 1 , . . . , a m ) =  a 2 i i 0 0 i 1 1 i 2 2 i m m i 
2
= i =0
  
 ..   .. 

 .   . 
Pn
∂a m E −2 i =0 φm (x i ) y i − a 0 φ0 (x i ) − a 1 φ1 (x i ) − a 2 φ2 (x i ) · · · − a m φm (x i )
¡ ¢

a 0 , a 1 , . . . , a m sont alors solution du système linéaire


 Pn Pn Pn     Pn
i =0 φ0 (x i )φ0 (x i ) i =0 φ0 (x i )φ1 (x i ) φ (x )φ (x ) φ (x )y

... a
 n φ (x )φ (x ) n Pin=0 0 i m i   0   Pin=0 0 i i 
φ i =0 φ1 (x i )φm (x i )   a 1   i =0 φ1 (x i )y i 
P P
 i =0 1 i 0 i i =0 1 (x i )φ 1 (x i ) ...
 .. .. ..  .  =  .. 
 .  
. . .  .   .
 
 
Pn Pn Pn Pn
i =0 φ m (x i )φ0 (x i ) i =0 φ m (x i )φ1 (x i ) . . . i =0 φ m (x i )φm (x i ) a m i =0 φm (x i )y i

Bien évidemment, si φ j (x) = x j on retrouve le cas de f polynomiale de degré m, mais ce n’est pas le seul choix possible.
On peut par exemple choisir φ j (x) = e j x , ou φ j (x) = cos( j x), φ j (x) = x − j . . .

7.5. Exercices
Exercice 7.1 (Fitting trigonométrique) © ªn
On considère un ensemble de points expérimentaux (x i , y i ) i =0 et on suppose que les deux grandeurs x et y sont
liées, au moins approximativement, par une relation de la forme y = a sin( π2 x) + b cos( π2 x). On souhaite alors trouver
les constantes a et b pour que la courbe d’équation y = a sin( π2 x) + b cos( π2 x) s’ajuste le mieux possible aux points
observés (on parle de courbe de meilleure approximation).
Soit d i = y i − (a sin( π2 x i ) + b cos( π2 x i )) l’écart vertical du point (x i , y i ) par rapport à la courbe. La méthode de régression
(ou des moindres carrés) est celle qui choisit a et b de sorte que la somme des carrés de ces déviations soit minimale.
Pour cela, on doit minimiser la fonction E définie par

E : R2 → R+
n
(a, b) 7→ E (a, b) = d i2 .
X
i =0

Écrire et résoudre le système linéaire qui permet de calculer a et b.

Correction
Pour minimiser E on cherche ses points stationnaires. Puisque

n ³ ³ π π ´´2
E (a, b) =
X
y i − a sin( x i ) + b cos( x i )
i =0 2 2

calculons tout d’abord les deux dérivées partielles


à !
∂E X n ¡ ¡ ¡π ¢ ¡ π ¢¢¢ ¡π ¢
(a, b) = −2 y i − a sin 2 x i + b cos 2 x i sin 2 x i ,
∂a i =0

262 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

à !
∂E X n ¡ ¡ ¡π ¢ ¡ π ¢¢¢ ¡π ¢
(a, b) = −2 y i − a sin 2 x i + b cos 2 x i cos 2 x i ,
∂b i =0

et cherchons quand elles s’annulent en même temps. On obtient

∂E
− a sin π2 x i + b cos π2 x i sin( π2 x i ) = 0
( (P
n
¡
¡ ¡ ¢ ¡ ¢¢¢
∂a (a, b) = 0 yi
∂E
⇐⇒ Pni =0 ¡
− a sin π2 x i + b cos π2 x i cos( π2 x i ) = 0
¡ ¡ ¢ ¡ ¢¢¢
∂b (a, b) = 0 i =0 y i

a sin π2 x i + b cos π2 x i sin( π2 x i ) = ni=0 y i sin( π2 x i )


( P ¡¡
n
¡ ¢ ¡ ¢¢¢ P
⇐⇒ Pni =0 ¡¡ ¡π ¢ ¡ π ¢¢¢
cos( π2 x i ) = ni=0 y i cos( π2 x i )
P
i =0 a sin 2 x i + b cos 2 x i
sin2¢ π2 x i¡ sin π2 x i ¡cos ¢π2 x i y i sin ¡ π2 x i ¢
· Pn ¡ ¢ Pn ¡ ¢ ¡ ¢¸ · ¸ ·Pn ¡ ¢¸
i =0 i =0 a i =0
⇐⇒ Pn ¡ π π
¢ Pn 2 π = Pn π .
i =0 sin 2 x i cos 2 x i i =0 cos 2 x i b i =0 y i cos 2 x i

Si on note
n ¡π n ¡π ¡π ¢ n ¡π n ¡π n ¡π
sin2 cos2
X ¢ X ¢ X ¢ X ¢ X ¢
U≡ 2 xi , V≡ sin 2 x i cos 2 x i , W≡ 2 xi , P≡ y i sin 2 xi , Q≡ y i cos 2 xi ,
i =0 i =0 i =0 i =0 i =0

on doit résoudre le système linéaire µ ¶µ ¶ µ ¶


U V a P
=
V W b Q
dont la solution est
W P −V Q UQ − V P
a= , b= .
UW − V 2 UW − V 2

Exercice 7.2 (Fitting linéaire avec deux variables)


La méthode de régression s’étend facilement à des données qui dépendent de deux ou plusieurs variables. On considère
© ªn
un ensemble de points expérimentaux (x i , y i , z i ) i =0 et on suppose que les trois grandeurs x, y et z sont liées, au
moins approximativement, par une relation affine de la forme z = a + bx + c y. On souhaite alors trouver les constantes
a, b et c pour que le plan d’équation z = a + bx + c y s’ajuste le mieux possible aux points observés (on parle de plan de
meilleure approximation).
Soit d i = z i − (a + bx i + c y i ) l’écart vertical du point (x i , y i , z i ) par rapport au plan. La méthode de régression (ou des
moindres carrés) est celle qui choisit a, b et c de sorte que la somme des carrés de ces déviations soit minimale. Pour
cela, on doit minimiser la fonction E définie par

E : R3 → R+
n
(a, b, c) 7→ E (a, b, c) = d i2 .
X
i =0

1. Écrire le système linéaire qui permet de calculer a, b et c


© ª5
2. Calculer l’équation du plan de meilleure approximation pour l’ensemble (x i , y i , z i ) i =0 où

i 0 1 2 3 4 5
xi 0 0 1 2 2 2
yi 0 1 0 0 1 2
3 1 1
zi 2 2 2 0 2 1

On utilisera la méthode du pivot de G AUSS pour la résolution du système linéaire.

Correction
1. Pour minimiser E on cherche ses points stationnaires. Puisque
à !
∂E X n
(a, b, c) = −2 (z i − (a + bx i + c y i )) ,
∂a i =0
à !
∂E X n
(a, b, c) = −2 (z i − (a + bx i + c y i ))x i ,
∂b i =0

© 2020-2021 G. Faccanoni 263


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

à !
∂E X n
(a, b, c) = −2 (z i − (a + bx i + c y i ))y i ,
∂c i =0

on obtient

∂E
  Pn  Pn Pn

 ∂a (a, b, c) = 0  Pi =0 (z i − (a + bx i + c y i )) = 0
  Pi =0 (a + bx i + c y i ) = i =0P
 zi
∂E n n 2 n
∂b (a, b, c) = 0 i =0 (z i − (a + bx i + c y i ))x i = 0 bx c y x zi xi
⇐⇒ ⇐⇒ i =0 (ax i + + i i ) =

∂E

 Pn 
 Pn
i
2 Pin=0
∂c (a, b, c) = 0 i =0 (z i − (a + bx i + c y i ))y i = 0 i =0 (a y i + bx i y i + c y i ) = i =0 z i y i

 Pn Pn     Pn 
(n + 1) x y a z
Pn Pni =0 2i Pni =0 i Pni =0 i
⇐⇒  i =0 x i x x i y i  b  =  i =0 z i x i  .
Pn Pni =0 i Pi =0
n 2 Pn
y
i =0 i x
i =0 i i y i =0 y i c i =0 z i y i

2. Dans notre cas,


n
X n
X n
X 11
xi = 7 yi = 4 zi =
i =0 i =0 i =0 2
n
X n
X 7 n
X 9
xi y i = 6 xi zi = y i zi =
i =0 i =0 2 i =0 2
n n
x i2 = 13 y i2 = 6
X X
n +1 = 6
i =0 i =0

donc on a le système linéaire


    11 
6 7 4 a /2
7 13 6 b  =  7/2 
4 6 6 c 9
/2
qu’on peut résoudre par la méthode de G AUSS

  L 2 ←L 2 − 76 L 1    
6 7 4 11
/2 6 7 4 /2
11
6 7 4 11
/2
L 3 ←L 3 − 23 L 1 8
L 3 ←L 3 − 29 L2
 7 13 6 7
/2  −−−−−−−−→  0 29
/6 4
/3 −35/12  −−−−−−−−−→  0 29
/6 4
/3 −35/12 
4 6 6 9
/2 0 4
/3 10
/3 5
/6 0 0 86
/29 95
/58

dont la solution est    123   


a /86 1.430232557
b  = −65/86 ≈ −0.7558139503 .
c 95
/172 0.5523255766

Exercice 7.3 (Fitting polynomial)


On se propose d’écrire une function pour évaluer le polynôme de fitting d’un ensemble de points. Chaque function
prend en entrée P une matrice de n lignes et 2 colonnes qui contient les points d’interpolation, x le vecteur contenant
les points où on veut évaluer le polynôme de fitting et m le degré du polynôme de fitting et elle donne en sortie y le
vecteur contenant l’évaluation du polynôme de fitting.
Compléter la function suivante
function [y]=fittingpolynomial(P,x,m)
for r=1:m+1
V(r,1) =
b(r)=
end
for c=2:m+1
for r=1:m
V(r,c) = V(r+1,c-1);
end
V(m+1,c) =
end
alpha = V\b’;
y=zeros(size(x));
for i=1:m+1
y+=alpha(i)*x.^(i-1);
end

264 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

end

et la tester en comparant le fitting linéaire, le fitting parabolique et l’interpolation sur un jeu de n = 3 points (donc
pour m = 2 le fitting retrouve le polynôme d’interpolation) ; puis comparer le fitting linéaire, le fitting parabolique et
l’interpolation sur le jeu de points suivant :
P=[1 6.008; 2.5 15.722; 3.5 27.130 ; 4 33.772; 1.1 5.257; 1.8 9.549; 2.2 11.098];
x=[1:0.1:4];
ylin=fittingpolynomial(P,x,1);
ypar=fittingpolynomial(P,x,2);
ynew=newton(P,x)
plot(P(:,1),P(:,2),’o’,x,ylin,x,ypar,x,ynew,’.’);

Correction
Dans le fichier fittingpolynomial.m on définit la fonction suivante

function [y]=fittingpolynomial(P,x,m)
for r=1:m+1
V(r,1) = sum( P(:,1).^(r-1) );
b(r)=sum( P(:,2).*(P(:,1)).^(r-1) );
end
for c=2:m+1
for r=1:m
V(r,c) = V(r+1,c-1) ;
end
V(m+1,c) = sum( P(:,1).^(m+c-1) ) ;
end
alpha = V\b’;
y=zeros(size(x));
for i=1:m+1
y+=alpha(i)*x.^(i-1);
end
end

On peut décomposer notre fonction en deux fonctions : la première rend les coefficient du polynôme dans la base canonique,
la deuxième évalue le polynôme lorsqu’on connaît ces coefficients :

function [alpha]=fittingpolynomialPoly(P,m) function [y]=fittingpolynomialEval(alpha,x,m)


[l,c]=size(P); y=zeros(size(x));
for r=1:m+1 for i=1:m+1
V(r,1) = sum( P(:,1).^(r-1) ); y+=alpha(i)*x.^(i-1);
b(r)=sum( P(:,2).*(P(:,1)).^(r-1) ); end
end end
for c=2:m+1
for r=1:m
V(r,c) = V(r+1,c-1) ;
end
V(m+1,c) = sum( P(:,1).^(m+c-1) ) ;
end
alpha = V\b’;
end

On écrit le script de test


% Points d’interpolation : P(i)=(x(i),y(i))
P=[-2 4; 0 0; 1 1];

% Pour l’affichage on evaluera les polynomes en les points suivants


x=[-2:.1:2];

% le seul polynome de degre 2 qui interpole ces points est la parabole d’equation y=x^2
ynew=newton(P,x);

% polynome de degre 1 qui fitte ces points


alphalin=fittingpolynomialPoly(P,1)

© 2020-2021 G. Faccanoni 265


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

ylin=fittingpolynomialEval(alphalin,x,1);
% polynome de degre 2 qui fitte ces points
alphapar=fittingpolynomialPoly(P,2)
ypar=fittingpolynomialEval(alphalin,x,2);

figure(1)
plot(P(:,1),P(:,2),’o’,x,ylin,x,ypar,x,ynew,’:’);

% comparons avec les polynomes calcules directement par Octave


figure(2)
olin=polyval(polyfit(P(:,1),P(:,2),1),x);
opar=polyval(polyfit(P(:,1),P(:,2),2),x);
plot(P(:,1),P(:,2),’o’,x,olin,x,opar);

puis le script de test


P=[1 6.008; 2.5 15.722; 3.5 27.130 ; 4 33.772; 1.1 5.257; 1.8 9.549; 2.2 11.098];
x=[1:0.1:4];

% n=7; polynome de degre n-1=6 interpolant ces points


ynew=newton(P,x)

% polynome de degre 1 qui fitte ces points


alphalin=fittingpolynomialPoly(P,1)
ylin=fittingpolynomialEval(alphalin,x,1);
% polynome de degre 2 qui fitte ces points
alphapar=fittingpolynomialPoly(P,2)
ypar=fittingpolynomialEval(alphalin,x,2);

plot(P(:,1),P(:,2),’o’,x,ylin,x,ypar,x,ynew,’:’);

Exercice 7.4 (Fitting non polynomial) © ªn


Considérons l’ensemble de points (x i , y i ) i =0 ainsi construit : x i ∈ [−1; 1] tous distincts et y i = (x i − 1)x i (x i + 1) + r i
où r i ∈ [−0.6; 0.6] peut être considéré comme un bruit aléatoire associé au signal (x i − 1)x i (x i + 1). On cherche une
fonction d’équation y = m j =0 a j φ j (x i ) qui approche au mieux cet ensemble de points. Pour cela, on doit minimiser la
P

fonction E : Rm+1 → R+ définie par


à !2
n m
E (a 0 , a 1 , . . . , a m ) = a j φ j (x i )
X X
yi − .
i =0 j =0

Il faut alors fixer m et résoudre le système linéaire AT Aa = AT y de (m + 1) équations en les (m + 1) inconnues


a 0 , a 1 , . . . , a m avec y = (y 0 , y 1 , . . . , y n ) et

φ0 (x 0 ) φ1 (x 0 ) . . . φm (x 0 )
 
 φ (x ) φ (x ) . . . φ (x ) 
 0 1 1 1 m 1 
A= .
def  .
. .. ..
 . . .


φ0 (x n ) φ1 (x n ) . . . φm (x n )
| {z }
n×m

Choisissons les fonctions φ j de la forme φ j (x) = sin( j πx), j = 0, . . . , m. Soit n = 20 et m = 2. Comparer sur un graphe la
fonction y = (x − 1)x(x + 1) (le signal souhaité), les points (le signal bruité) et la fonction de meilleure approximation (le
signal lissé). Estimer l’erreur entre le signal souhaité et le signal lissé. Répéter le même exercice pour n = 20 et m = 8,
puis n = 200 et n = 8.

Correction
clear all
% signal
f=@(x)[(x-1).*(x+1).*x];
% signal bruite
n=20;

266 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

P=zeros(n,3);
P(:,1)=sort (2* rand(n ,1) -1);%linspace(-1,1,n);
%P(1,1)=-1;
%P(n,1)=1;
P(:,2)=f(P(:,1)); %sin(6*pi*P(:,1)); % signal
P(:,3)=P(:,2)+(2.*rand(n,1)-1)*0.6; % ajout du bruit

% calcul du signal lisse


m=4;
phi=@(k,xi)[sin(k*pi*xi)];

for j=1:m
A(:,j)=phi(j,P(:,1));
end
alpha = (A’*A)\(A’*P(:,2));

% AFFICHAGE
x=[-1:0.1:1];

% evaluation du signal lisse


ylisse=zeros(size(x));
for i=1:m
ylisse.+=alpha(i)*phi(i,x);
end

% evaluation du signal initial


yinit=f(x);

xmin=min(x);
xmax=max(x);
ymin=min(P(:,3));
ymax=max(P(:,3));

subplot(2,2,1)
plot(x,yinit)
axis([xmin xmax ymin ymax]);
title(’Signal initial’)

subplot(2,2,2)
plot(P(:,1),P(:,3),’o’)
axis([xmin xmax ymin ymax]);
title(’Signal bruite’)

subplot(2,2,3)
plot(P(:,1),P(:,3),’o’,x,ylisse,’r-’,x,yinit,’g--’)
axis([xmin xmax ymin ymax]);
title(’Signal lisse, bruite et initial’)

subplot(2,2,4)
plot(x,abs(yinit-ylisse))
title(’|initial-lisse|’)

Exercice 7.5 (Interpolation et fitting, utilisation de function vues en TP)


Dans cet exercice on fera appel à la function fittingpolynomial.m écrite en TP pour calculer le fitting polynomial
et à l’une des function écrites en TP pour calculer le polynôme d’interpolation, à savoir naive.m ou lagrange.m ou
newton.m.
a) Dans le fichier exercice2a.m écrire un script qui compare sur un même graphique le fitting linéaire, le fitting

© 2020-2021 G. Faccanoni 267


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

parabolique et le polynôme d’interpolation sur le jeu de points suivant :

{ (−1, 1), (0, 0), (1, 1), (2, 8) } .

Afficher à l’écran les coefficients de ces polynômes.


b) Dans le fichier exercice2b.m écrire un script qui répète le même exercice pour le jeu de points suivant

{ (−1, 1), (0, 0), (1, 1), (2, 4) }

et commenter ce deuxième résultat.


Conseil : vérifiez vos programmes en donnant plusieurs exemples pertinents d’utilisation de vos fonctions et en vous
donnant les moyens de le vérifier. Comparez lorsque c’est possible votre programme aux réponses des fonctions
d’Octave. Par exemple, la commande polyval(polyfit(P(:,1),P(:,2),deg),x); doit renvoyer le même résultat
que fittingpolynomiale(P,x,deg).

Correction
En TP, dans les fichiers fittingpolynomialPoly.m et naivePoly.m on a écrit les function

function [alpha]=fittingpolynomialPoly(P,m) function [alpha]=naivePoly(P)


V(1:m+1,1) = sum( P(:,1).^(0:m) ); [l,c]=size(P);
b(1:m+1)=sum( P(:,2).*(P(:,1)).^(0:m) ); V = ones(l,l);
for c=2:m+1 V(:,2:l) = P(:,1).^(1:l-1);
V(1:m,c) = V(2:m+1,c-1); alpha = V\P(:,2);
V(m+1,c) = sum( P(:,1).^(m+c-1) ); end
end
alpha = V\b’;
end

qui calculent les coefficients des polynômes de régression et d’interpolation.


Ensuite, dans les fichiers fittingpolynomialEval.m et naiveEval.m on a écrit les function pour évaluer les polynômes
ainsi construit en un vecteur de points :

function [y]=fittingpolynomialEval(alpha,x) function [y]=naiveEval(alpha,x)


y=zeros(size(x)); y=zeros(size(x));
for i=1:length(alpha) for k=size(alpha):-1:1
y+=alpha(i)*x.^(i-1); y=alpha(k)+x.*y;
end end
end end

a) Dans le fichier exercice2a.m on écrit le script

P=[-1 1; 0 0; 1 1; 2 8]; P(:,1),P(:,2),’o’,’MarkerSize’,10);


saveas (gcf, "[Link]", "png");
alphaLin=fittingpolynomialPoly(P,1)
alphaPar=fittingpolynomialPoly(P,2)
alphaInt=naivePoly(P)

x=[-2:0.1:2];

ylin=fittingpolynomialEval(alphaLin,x);
ypar=fittingpolynomialEval(alphaPar,x);
yinterpol=naiveEval(alphaInt,x);

plot(x,ylin,’LineWidth’,2,...
x,ypar,’LineWidth’,2,...
x,yinterpol,’LineWidth’,2,...

En effet,

p linéaire (x) = α0 + α1 x

268 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

p parabolique (x) = β0 + β1 x + β2 x 2
x(x − 1)(x − 2) (x + 1)x(x − 2) (x + 1)x(x − 1)
p interpolation (x) = + +8
−6 −2 6

avec
β0
    
4 2 6 10
α0
µ ¶µ ¶ µ ¶
4 2 10
= 2 6 8  β1  = 16
2 6 α1 16
6 8 18 β2 34

ainsi α0 = 57 , α1 = 56 , β0 = − 53 , β1 = 15 , β2 = 2.

b) Dans le fichier exercice2b.m on écrit le script

P=[-1 1; 0 0; 1 1; 2 4]; P(:,1),P(:,2),’o’,’MarkerSize’,10);


saveas (gcf, "[Link]", "png");
alphaLin=fittingpolynomialPoly(P,1)
alphaPar=fittingpolynomialPoly(P,2)
alphaInt=naivePoly(P)

x=[-2:0.1:2];

ylin=fittingpolynomialEval(alphaLin,x);
ypar=fittingpolynomialEval(alphaPar,x);
yinterpol=naiveEval(alphaInt,x);

plot(x,ylin,’LineWidth’,2,...
x,ypar,’LineWidth’,2,...
x,yinterpol,’LineWidth’,2,...

En effet,

p linéaire (x) = α0 + α1 x
p parabolique (x) = β0 + β1 x + β2 x 2
x(x − 1)(x − 2) (x + 1)x(x − 2) (x + 1)x(x − 1)
p interpolation (x) = + +4 = x2
−6 −2 6

avec
β0
    
4 2 6 6
α0
µ ¶µ ¶ µ ¶
4 2 6
= 2 6 8  β1  =  8 
2 6 α1 8
6 8 18 β2 18
ainsi α0 = 1, α1 = 1, β0 = 0, β1 = 0, β2 = 1. Dans ce cas, le fitting parabolique coïncide avec le polynôme d’interpolation
car ce dernier n’appartient pas simplement à R3 [x] mais à R2 [x].

Exercice 7.6 (Fitting linéaire) y


Calculer la droite de meilleur approximation de l’ensemble 5
4
de points suivant : 3
2
x 1 2 3 4 5 1
y 0.9 1.5 3.5 4.2 4.9 012345x

Correction
Nous avons 5 points, ainsi n = 4.
Il s’agit de chercher a 0 et a 1 qui minimisent l’erreur E (a 0 , a 1 ) = ni=0 (y i − (a 0 + a 1 x i ))2 . Cela impose la résolution du système
P

linéaire µ Pn ¶ µ ¶ µ Pn ¶ µ ¶µ ¶ µ ¶
(n + 1) x a0 yi 5 15 a 0 15
Pn Pni =0 2i = Pni =0 =⇒ =
i =0 x i i =0 x i a1 i =0 y i x i 15 55 a 1 55.7

© 2020-2021 G. Faccanoni 269


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

Donc a 0 = −0.21 et a 1 = 1.07.


En utilisant les function de l’exercice 7.3 on écrit le script de test
% Points d’interpolation : P(i)=(x(i),y(i))
Px=[1:5]’;
Py=[ 0.9; 1.5; 3.5; 4.2; 4.9];
P=[Px Py]

% Pour l’affichage on evaluera les polynomes en les points suivants


x=[0:.1:6];

% polynome de degre 1 qui fitte ces points


ylin=fittingpolynomial(P,x,1);
% polynome de degre 2 qui fitte ces points
ypar=fittingpolynomial(P,x,2);

figure(1)
plot(P(:,1),P(:,2),’o’,x,ylin,x,ypar);

% comparons avec les polynomes calcules directement par Octave


figure(2)
olin=polyval(polyfit(P(:,1),P(:,2),1),x);
opar=polyval(polyfit(P(:,1),P(:,2),2),x);
plot(P(:,1),P(:,2),’o’,x,olin,x,opar);

Exercice 7.7 (Fitting parabolique)


À partir des données

x 1.0 2.5 3.5 4.0 1.1 1.8 2.2 3.7


y 6.008 15.722 27.130 33.772 5.257 9.549 11.098 28.828

on veut calculer la droite et la parabole de régression et comparer les erreurs des chaque régression.

Correction
Nous avons 8 points donc n = 7.
1. La droite de régression a équation y = a 0 + a 1 x avec a 0 , a 1 solution du système linéaire
µ P7 ¶ µ ¶ µ P7 ¶ µ ¶µ ¶ µ ¶
8 i =0 xi a0 i =0 yi 8 19.8 a0 137.364
P7 P7 2 = P7 i.e. =
i =0 x i i =0 x i a1 i =0 y i x i
19.8 58.48 a1 429.4061

et on obtient (
a 0 = −6.189895251,
a 1 = 9.438543536.
L’erreur est
7
(y i − (a 0 + a 1 x i ))2 = 30.20147192.
X
i =0

2. La parabole de régression a équation y = a 0 + a 1 x + a 2 x 2 avec a 0 , a 1 , a 2 solution du système linéaire


P7 P7     P7
x 2 a0

x
     
8 y 8 19.8 58.48 a0 137.364
P7i =0 2i Pi7=0 i3 P7 i =0 i
 7 xi
P
x x  a 1  =  i =0 y i x i  i.e.  19.8 58.48 191.964  a 1  =  429.4061 
P7i =0 2 Pi7=0 i3 Pi7=0 i4 P7 2
i =0 x i i =0 x i i =0 x i
a2 i =0 y i x i
58.48 191.964 668.9284 a 2 1462.63437

et on obtient 
 a 0 = 4.40567376946090050,

a 1 = −1.06889613092575431,

a 2 = 2.10811821540086797.

L’erreur est
7
(y i − (a 0 + a 1 x i + a 2 x i2 ))2 = 3.304259349.
X
i =0

270 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

40

30

20

10

1 2 3 4 x

Exercice 7.8 (Fitting parabolique)


Le tableau ci-dessous donne la conductivité thermique k du sodium pour différentes valeurs de la température. On
veut calculer la parabole de meilleur approximation.

T (◦ C) 79 190 357 524 690


k 1.00 0.932 0.839 0.759 0.693

Correction
La parabole de régression a équation y = a 0 + a 1 x + a 2 x 2 avec a 0 , a 1 , a 2 solution du système linéaire
P4 P4     P4
x 2 a0

x
     
6 y 8 16.1 44.79 a0 108.536
P4i =0 2i Pi4=0 i3 P4 i =0 i
 4 xi
P
x x  a 1  =  i =0 y i x i  i.e.  16.1 44.79 141.311  a 1  =  322.7425 
P4i =0 2 Pi4=0 i3 Pi4=0 i4 P4 2
i =0 x i i =0 x i i =0 x i
a2 i =0 y i x i 44.79 141.311 481.5123 a 2 1067.97905

et on obtient 
 a 0 = 0.744611871628180655,

a 1 = 2.14480468957977077,

a 2 = 1.51926210146774388.

L’erreur est
6
(y i − (a 0 + a 1 x i + a 2 x i2 ))2 = 5.715921703.
X
i =0

Exercice 7.9 (Fitting polynomial)


La viscosité cinématique µ de l’eau varie en fonction de la température comme dans le tableau suivant :

T (◦ C) 0 21.1 37.8 54.4 71.1 87.8 100


µ (10−3 m2 s−1 ) 1.79 1.13 0.696 0.519 0.338 0.321 0.296

On veut évaluer les valeurs µ(10◦ ), µ(30◦ ), µ(60◦ ), µ(90◦ ) par le polynôme de meilleur approximation de degré 3.

Correction ª6
On a la famille de points (Ti , µi ) i =0 . Le polynôme de meilleur approximation de degré 3 s’écrit
©

r (T ) = a 0 + a 1 T + a 2 T 2 + a 3 T 3

où a 0 , a 1 , a 2 , a 3 sont solution du système linéaire


P6 P6 P6     P6
6 T T2 T 3 a0 µ
 
P6i =0 i2 P6i =0 i3 P6i =0 i4 P6 i =0 i
 6 Ti
a 1  = P i =0 µi Ti 
P
P i =0 T T T    
 6 T2 P6i =0 i3 P6i =0 i4 P6i =0 i5  6 2
T T T a2 µT
P6i =0 i i3
   
P6i =0 i3 P6i =0 i4 P6i =0 i5 P6i =0 i6
i =0 Ti T
i =0 i i =0 Ti T
i =0 i
a 3 µ
i =0 i Ti

et on obtient 

 a 0 = 0.914534618675843625,


 a = 0.914534618675843625,
1


 a 2 = −0.000620138768106035594,

a 3 = −0.000620138768106035594.

© 2020-2021 G. Faccanoni 271


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

On a alors

r (10◦ ) = 1.004300740 r (30◦ ) = 0.9114735501 r (60◦ ) = 0.9114735501 r (90◦ ) = 0.249145396

Exercice 7.10
Considérons n = 10 points P i = (x i , y i ) avec x i = (i − 1)/(n − 1), i = 1, . . . , n et y i = 2x i + 1 + ϵi avec ϵi ∈]0; 0.01[ généré
aléatoirement avec une distribution normale. Comparer l’interpolation et le fitting linéaire sur ce jeu de points.

Correction
On écrira le script suivant (on compare les résultats de nos function avec ceux issues des function déjà implémentées
dans Octave) :
% Points d’interpolation : P(i)=(x(i),y(i))
n = 10
P=zeros(n,2);
P(:,1)=linspace(0,2,n);
P(:,2)=2*P(:,1)+1+0.1*randn(n,1);

% Pour l’affichage on evaluera les polynomes en les points suivants


x=[0:.01:2];

% polynome de degre n-1 interpolant ces points


ynew=newton2(P,x);
% le meme calcule directement par Octave
ointerp=polyval(polyfit(P(:,1),P(:,2),n-1),x); %=ynew

% polynome de degre 1 qui fitte ces points


ylin=fittingpolynomial(P,x,1);
% le meme calcule directement par Octave
olin=polyval(polyfit(P(:,1),P(:,2),1),x); %=ylin

%
subplot(1,2,1)
plot(P(:,1),P(:,2),’o’,x,ylin,’r-’,’LineWidth’,2,x,ynew,’b:’,’LineWidth’,2);
title("Nos functions")
axis ([0, 2, min(P(:,2)), max(P(:,2))])

subplot(1,2,2)
plot(P(:,1),P(:,2),’o’,x,olin,’r-’,’LineWidth’,2,x,ointerp,’b:’,’LineWidth’,2);
title("Calcul Octave")
axis ([0, 2, min(P(:,2)), max(P(:,2))])

Exercice 7.11
L’espérance de vie dans un pays a évoluée dans le temps selon le tableau suivant :

Année 1975 1980 1985 1990


Espérance 72,8 74,2 75,2 76,4

Utiliser l’interpolation polynomiale pour estimer l’espérance de vie en 1977, 1983 et 1988. La comparer avec une
interpolation linéaire par morceaux et avec un fitting polynomiale avec m = 1, 2 (avec m = 3 on retrouve le polynôme
d’interpolation).

Correction
Si on choisit de poser x 0 = 0 pour l’année 1975, x 1 = 5 pour l’année 1980 etc., on construit
⋆ p 1 ∈ R1 [x] la droite de meilleure approximation (fitting m = 1)
⋆ p 2 ∈ R2 [x] la parabole de meilleure approximation (fitting m = 2)
⋆ p 3 ∈ R3 [x] le polynôme d’interpolation (n = 3)
⋆ s 1 la spline linéaire
et on évalue ces fonctions en x = 2, 8 et 13 (notons que seuls p 3 et s 1 interpolent les données) :

272 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting )

Px=[Link];
Py=[72.8 74.2 75.2 76.4];

n=length(Px)-1;

p1=polyfit(Px,Py,1);
p2=polyfit(Px,Py,2);
p3=polyfit(Px,Py,n); % fitting avec m=n equivalent a interpolation

x=[2 8 13];
y1=polyval(p1,x)
y2=polyval(p2,x)
y3=polyval(p3,x)
for j=1:3
s1(j)=polyval(polyfit(Px(j:j+1),Py(j:j+1),1),x(j));
end
s1

% Plots
xx=[0:.1:15];
y1=polyval(p1,xx);
y2=polyval(p2,xx);
y3=polyval(p3,xx);
% for j=1:3
% s1(j)=polyval(polyfit(Px(j,j+1),Py(j,j+1),1),xx(j))
% end

plot(Px,Py,’DisplayName’,’Points’,’o’,’MarkerFaceColor’,[.49 1 .63],’MarkerSize’,10, ...


xx,y1,’DisplayName’,’p_1’ ,’r’,’LineWidth’,2,...
xx,y2,’DisplayName’,’p_2’ ,’b’,’LineWidth’,2,...
xx,y3,’DisplayName’,’p_3’ ,’m’,’LineWidth’,2,...
Px,Py,’DisplayName’,’s_1’ ,’k’,’LineWidth’,2);
legend(’show’,’Location’,’northwest’,’boxoff’)
set(gca,’XTick’,[0,2,5,8,10,13,15]);
axis ([0 15 72 77]);
grid;
On obtient les estimations suivantes :

Année 1977 1983 1988


Espérance p 1 73.352 74.768 75.948
Espérance p 2 73.354 74.830 75.950
Espérance p 3 73.446 74.810 75.858
Espérance s 1 73.360 74.800 75.920

Exercice 7.12 (Fitting linéaire après transformation)


L’évolution de la concentration c d’un médicament dans le sang en fonction du temps t est décrite par la fonction
f (t ) = At e B t . En utilisant les mesures suivantes et une transformation adéquate de f estimer A et B par régression
linéaire :
t 1 2 3 4 5 6 7 8
c 8.0 12.3 15.5 16.8 17.1 15.8 15.2 14.0

Correction
On a ln( f (t )) = ln(A) + ln(t ) + B t ainsi ln( f (t )) − ln(t ) = ln(A) + B t qui est linéaire en B et a la forme α0 + α1 t avec α1 = B et
ªn
α0 = ln(A). On peut alors calculer l’équation de la droite de régression sur l’ensemble (t i , y i = ln(c i ) − ln(t i )) i =0 et obtenir
©

ainsi B et ln(A). P7 ¶ µ ¶ µ P7
t i α0
µ ¶
8 i =0 i =0 ln(c i ) − ln(t i )
P7 P7 = P7
i =0 t i
2
i =0 t i α1 i =0 t i (ln(c i ) − ln(t i ))

Donc α0 ≃ −16.3929 et α1 ≃ 3.8929 et enfin B = α1 et A = e α0 .


tp=[1:8];
cp=[8.0,12.3,15.5,16.8,17.1,15.8,15.2,14.0];

© 2020-2021 G. Faccanoni 273


Chapitre 7. Approximation au sens des moindres carrées : fonction de meilleur approximation (fitting ) Mis à jour le Mercredi 31 mai 2023

yp=log(cp)-log(tp);
A=[8,sum(tp);sum(tp),sum(tp.^2)]
b=[sum(yp); sum(tp.*yp)]
a=A\b
xx=linspace(0,9,100);
subplot(1,2,1)
f=@(t)[a(1)+a(2)*t];
plot(tp,yp,’o’,xx,f(xx))
subplot(1,2,2)
f=@(t)[exp(a(1)).*t.*exp(a(2)*t)];
plot(tp,cp,’o’,xx,f(xx))

274 © 2020-2021 G. Faccanoni


CHAPITRE 8

Statistique descriptive

La statistique descriptive a pour but de décrire, classer et simplifier des données qui peuvent être volumineuses, de les
représenter de manière synthétique sous forme de tableaux ou de graphiques, et d’extraire quelques valeurs importantes
qui décrivent les propriétés essentielles des données telles que la moyenne, la variance, la corrélation etc.

8.1. Vocabulaire
• Population L’ensemble sur lequel porte l’activité statistique s’appelle la population, généralement notée Ω. Lorsque la
population est finie, le nombre d’éléments contenus dans Ω est noté N . Les éléments qui constituent la population
sont appelés les individus ou encore les unités statistiques.
• Échantillon Un échantillon, noté généralement S (pour “sample”) est une partie de la population prélevée soit de façon
aléatoire soit de façon non aléatoire. Le nombre d’éléments de S est noté n.
• Caractères Les caractéristiques étudiées sur les individus d’une population sont appelées les caractères. Soit C l’ensemble
des valeurs possibles du caractère, on définit alors un caractères comme une application χ : Ω → C qui associe à
chaque individu ω ∈ Ω la valeur χ(ω) ∈ C que prend ce caractère sur l’individu ω.
Il existe deux types de caractères :
⋆ caractères quantitatifs : c’est un caractère dont les issues produisent un nombre (caractères simples ou univariés,
C ⊂ R) ou une suite de nombres (caractères multiples ou multivariés, C ⊂ Rm ). Parmi les caractères quantitatifs
il faut distinguer
⋆ les caractères quantitatifs continus qui peuvent prendre toutes les valeurs d’un intervalle,
⋆ les caractères quantitatifs discrets qui ne prennent que des valeurs isolées ;
⋆ caractères qualitatifs : c’est un caractère dont les issues ne sont pas quantifiables numériquement. On parle
alors de modalités et non d’issues dans ce cas. Parmi les caractères qualitatifs il faut distinguer
⋆ les caractères qualitatifs ordinaux qui peuvent être ordonnées,
⋆ les caractères qualitatifs nominaux.

E XEMPLE
⋆ La masse d’un individu est un caractère quantitatif univarié continu (C ⊂ R+ ).
⋆ Le relevé de températures d’une ville pendant le mois de juin est un caractère quantitatif multivarié continu (C ⊂ R30 ).
⋆ Le genre est un caractère qualitatif nominal (C = { homme, femme }). On peut bien sûr coder la valeur “homme” par
“0” et “femme” par “1” mais cela ne donne ni un sens à l’ordre ni le transforme en un caractère quantitatif.

8.1.1. Série statistique et distribution statistique non groupée


Considérons©une série statistique associée à un caractère, c’est-à-dire un échantillon de n valeurs réelles x = (x k )k∈‚1;nƒ .
Notons C = α1 , α2 , . . . , αp les valeurs atteintes par le caractère, i.e. x k ∈ C .
ª

L’ordre dans lequel on a recueilli les données ne présentant pas d’intérêt particulier, on a intérêt à regrouper les données par
paquets. On appelle alors
• effectif de la valeur αi , et on le note n i , le nombre de fois que la valeur αi ∈ C est prise dans x ;
• effectif cumulé en αi la somme ij =1 n j ;
P

n
• fréquence de la valeur αi le rapport f i = ni ;
• fréquence cumulée en αi la somme ij =1 f j .
P

Si on écrit la série statistique x = (x k )k∈‚1;nƒ comme (αi , n i )i ∈‚1;pƒ ou (αi , f i )i ∈‚1;pƒ on parle de distribution statistique.

275
Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

E XEMPLE
Soit la série statistique x = (1, 1, 2, 1, 1, 0, 3, 1).
⋆ Elle contient n = 8 valeurs x 1 = 1, x 2 = 1, x 3 = 2, x 4 = 1, x 5 = 1, x 6 = 0, x 7 = 3, x 8 = 1 ;
⋆ les valeurs atteintes sont C = { α1 = 0, α2 = 1, α3 = 2, α4 = 3 } ;
⋆ n 1 = 1, n 2 = 5, n 3 = 1, n 4 = 1 ;
⋆ f 1 = 1/8, f 2 = 5/8, f 3 = 1/8, f 4 = 1/8 ;
⋆ les effectifs cumulés sont respectivement 1, 6, 7, 8 ;
⋆ les fréquences cumulées sont respectivement 1/8, 6/8, 7/8, 8/8 = 1 .

D ATA 8.1 (E NFANTS )


Considérons le nombre d’enfants par famille collectés dans un immeuble de n = 80 familles :

x = (0, 3, 0, 0, 0, 0, 3, 3, 3, 5, 3, 2, 0, 0, 0, 1, 2, 1, 1, 1, 1, 1, 2, 0, 4, 2, 2, 0, 4, 1, 0, 5, 2, 3, 2, 3, 0, 3, 4, 5, 0, 1, 3, 0, 0, 3,
1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 3, 4, 4, 0, 0, 0, 0, 1, 5, 2, 0, 3, 2, 0, 1, 0, 2, 4, 0, 1, 3, 3, 0, 5).

On a C = { 0, 1, 2, 3, 4, 5 }.
L’effectif n i de chaque valeur αi ∈ C est le nombre d’observations de cette valeurs (i.e. combien de fois αi apparaît
dans x). La fréquence f i de la valeur αi est le rapport de l’effectif n i sur le nombre totale d’observations n :

Valeur αi Effectif n i Fréquence f i Effectif cumulé Fréquence cumulée


(Nombre d’enfants) (Nombre de familles) (Proportion de familles)
0 31 31/80 31 31/80
1 13 13/80 44 44/80
2 11 11/80 55 55/80
3 14 14/80 69 69/80
4 6 6/80 75 75/80
5 5 5/80 80 80/80
Pp=6 Pp=6
n = 80
i =1 i
f =1
i =1 i

8.1.2. Série statistique et distribution statistique groupée


Lorsqu’un caractère comprend un grand nombre de valeurs, il est préférable de les regrouper. L’ensemble C des valeurs du
caractère est alors partagé en intervalles disjoints ]αi ; αi +1 ], appelés classes, avec αi < αi +1 .
On appelle alors
• amplitude de la classe ]αi ; αi +1 ] la largeur de l’intervalle ;
• effectif de la classe ]αi ; αi +1 ], et on le note n i , le nombre de valeurs de x qui appartiennent à cet interval (le nombre
d’observations qui tombent dans cette classe) ;
• effectif cumulé en αi le nombre de valeurs de x qui appartiennent à ] − ∞; αi ] ;
ni
• fréquence de la classe ]αi ; αi +1 ] le rapport f i = n ;
• fréquence cumulée en αi la somme ij =1 f j .
P

Si on écrit la série statistique x = (x k )k∈‚1;nƒ comme (]αi ; αi +1 ], n i )i ∈‚1;pƒ ou (]αi ; αi +1 ], f i )i ∈‚1;pƒ on parle de distribution
statistique groupée.
Le nombre de classes ne doit pas être trop grand pour que le nouveau tableau soit suffisamment clair, mais pas trop petit
pour qu’il n’y ait pas de perte d’information trop importante. Il faut enfin que toutes les observations soient recouvertes par
ces classes.

D ATA 8.2 (A MPOULES )


Supposons qu’on ait recueilli les durée de vie (en heures) d’un lot d’ampoules :

x = (2560, 229323551738, 2272, 2259, 2549, 1688, 2306, 2494, 2131, 1864, 2107, 2056, 2557, 1311, 2305, 2433, 2408, 1523,
2155, 2531, 2327, 1396, 2414, 2411, 2329, 1424, 2456, 2149, 2039, 1447, 1884, 2289, 2340, 1428, 2134, 2333, 1989, 1554,
2558, 2031, 2111, 1415, 2335, 2546, 2343, 1493, 2435, 2131, 2026, 1631, 2513, 2233, 2416, 1441, 2475, 2304, 2177, 1432,
1918, 2092, 2139, 1657, 2628, 2334, 2091, 1428, 2504, 2519, 2125, 1458, 2085, 2234, 2339, 1484, 2052, 2168, 2280, 1547,
2393, 2048, 1517, 1579, 2373, 2207, 1452, 1859, 2177, 2112, 1573, 1473, 2474, 2513, 1488, 1391, 2109, 2296, 1410, 1607,

276 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

2286, 2303, 1432, 1577, 2389, 1945, 1589, 1438, 2408, 1925, 1431, 1652, 2215, 2420, 1546, 1597, 2429, 2381, 1672, 1636).

On peut regrouper ces données en 8 classes de même amplitudes :

Durée de vie Effectif Fréquence


]1200; 1400] 3 3/120
]1400; 1600] 27 27/120
]1600; 1800] 8 8/120
]1800; 2000] 7 7/120
]2000; 2200] 23 23/120
]2200; 2400] 28 28/120
]2400; 2600] 23 23/120
]2600; 2800] 1 1/120
Pp=8 Pp=8
i =1
n i = 120 f =1
i =1 i

On peut aussi subdiviser les trois classes de 2000 à 2600 en six classes et obtenir ainsi des classes d’amplitudes
différentes :
Durée de vie Effectif Fréquence
]1200; 1400] 3 3/120
]1400; 1600] 27 27/120
]1600; 1800] 8 8/120
]1800; 2000] 7 7/120
]2000; 2100] 9 9/120
]2100; 2200] 14 14/120
]2200; 2300] 11 11/120
]2300; 2400] 17 17/120
]2400; 2500] 13 13/120
]2500; 2600] 10 10/120
]2600; 2800] 1 1/120
Pp=11 Pp=11
i =1
n i = 120 i =1
fi = 1

Sur un caractère qualitatif, le seul calcul numérique qu’on puisse effectuer est le dénombrement des unités statistiques
dans chaque catégorie de la variable qualitative.

8.2. Données statistiques et leur représentation


8.2.1. Diagramme en bâtons
Dans le cas de données discrètes (ou d’une série statistique non groupée) on trace la plupart du temps un diagramme en
bâtons des effectifs ou des fréquences. Des segments de droite verticaux sont dessinés. Chaque segment correspond à une
classe (i.e. une modalité). La valeur de la classe est l’abscisse du segment, l’ordonnée de l’extrémité inférieure du segment
est 0 et l’ordonnée de l’extrémité supérieure est l’effectif de la classe ou la fréquence. Les data 8.1 peut ainsi se représenter
sous la forme du diagramme en bâtons donné sur la figure 8.1a.

8.2.2. Histogramme
Dans le cas de données continues (ou d’une série statistique groupée), on regroupe d’abord les données par classes. On
trace alors un histogramme constitué de rectangles verticaux. Les bases des rectangles sont déterminées par les classes.
Les hauteurs de rectangles doivent être telles que les surfaces des rectangles sont proportionnelles aux effectifs des classes
correspondantes.
Le travail est simple lorsque la largeur de chaque classe est la même : la hauteur d’un rectangle est alors prise égale à l’effectif
(ou à la fréquence) de la classe correspondante. C’est le cas des data 8.2 avec la première subdivision en classes et on obtient
alors la figure 8.1b.
Il arrive qu’on ait affaire à des classes non-régulières. Le tracé d’un histogramme doit alors prendre en compte la non-
uniformité des largeurs des classes. Pour cela, on prend la plus petite des largeurs (ou amplitudes) comme largeur de
référence, et multiplie la hauteur des rectangles par le rapport de leur largeur sur cette largeur minimale. C’est le cas de
data 8.2 avec la deuxième subdivision en classes et on obtient alors la figure 8.1c.

© 2020-2021 G. Faccanoni 277


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

(a) Distribution (diagramme en bâtons) du (b) Histogramme des durées de vie des am- (c) Histogramme des durées de vie des am-
nombre d’enfants par famille. poules. poules.

F IGURE 8.1. – Exemples d’histogrammes.

8.3. Statistique descriptive univariée


Les tableaux et les diagrammes sont utiles, mais ils ne sont que des outils de visualisation. On cherche souvent, à partir
de données quantitatives collectées, à extraire des caractéristiques chiffrées simples, des nombres qui révèlent les pro-
priétés importantes de l’échantillon ou de la population. Nous nous intéressons à deux types de mesure : des mesures qui
s’intéressent à la tendance centrale, i.e. à la plus représentative de toutes les données, et des mesures de la dispersion, i.e.
combien les mesures de tendance centrale sont representatives de toutes les données.

8.3.1. Mesures de tendance centrale


Il s’agit de déterminer la valeur qui est la plus représentative de toutes les données.

Mode (ou classe modale)


Pour un caractère discret, le MODE est la valeur la plus fréquente que l’on trouve dans un échantillon.
Dans le cas de caractères continus ou plus généralement d’une série statistique groupée, on considère plutôt la CLASSE
MODALE qui est le rapport fréquence/amplitude maximal. Le résultat dépend donc des classes choisies, ce qui rend cette
notion peu pratique à utiliser.
Le mode n’est pas défini de manière unique. On peut trouver plusieurs classes avec le même effectif. On parle alors de
distribution multi-modale.
Le mode est peu sensible aux valeurs extrêmes.

E XEMPLE
xx = [5 2 4 2 6]
mode(xx) % ans = 2

xx = [5 2 4 2 6 5]
mode(xx) % ans = 2
% If two, or more, values have the same frequency ’mode’ returns the smallest

Médiane
La MÉDIANE est une valeur M telle qu’il y ait autant d’observations supérieures ou égales à M que d’observations inférieures
ou égales à M . Pour calculer précisément la médiane, on commence par ordonner l’échantillon x par ordre croissant, et
on note y = (y k )k∈‚1;nƒ l’échantillon ordonné tel que y 1 ≤ y 2 ≤ · · · ≤ y n . Si l’échantillon comporte un nombre impair 2p + 1
d’observations, alors la médiane est
M (x) = y p+1 ,
si l’échantillon est constitué d’un nombre pair 2p d’observations, alors la médiane est

y p + y p+1
M (x) = .
2
La médiane est peu sensible aux valeurs extrêmes et n’est pas forcément une modalité.

278 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

E XEMPLE
Si l’échantillon x est constitué de la suite d’entiers (5, 2, 4, 2, 6), alors l’échantillon ordonné y est (2, 2, 4, 5, 6). On a n = 5
éléments, donc p = n−1 2 = 2 et M (x) = y p+1 = y 3 = 4.

xx = [5 2 4 2 6]
median(xx) % ans =4

xx = [5 2 4 2 6 30]
median(xx) % ans =4.5

Moyenne arithmétique
On peut définir la moyenne arithmétique d’une série statistique x = (x k )k∈‚1;nƒ comme étant le barycentre des données,
affectées de coefficients égaux pour chaque individu :

1 Xn
x̄ = xk .
n k=1

On appelle communément x̄ la moyenne de x.


Si on écrit la série statistique x = (x k )k∈‚1;nƒ comme la distribution statistique (αi , n i )i ∈‚1;pƒ ou (αi , f i )i ∈‚1;pƒ , alors

p p
1 X
f j αj = n j αj .
X
x̄ =
j =1 n j =1

Remarque (Sensibilité aux valeurs extrêmes)


La moyenne est très sensible aux valeurs extrêmes. Par exemple, si on cherche la fortune moyenne des Français à partir d’un
échantillon de 1000 personnes, si l’une d’entre elles possède un milliard d’euros, alors la fortune moyenne est supérieure à
un million d’euros quelles que soient les fortunes des 999 autres, puisqu’elle vérifie :

X3
à !
1 10 1 999
0 + 10 = 106 .
9
X
x̄ = 3 xk ≥ 3
10 k=1 10 k=1

E XEMPLE
xx = [5 2 4 2 6]
mean(xx) % ans = 3.8

xx = [5 2 4 2 6 50]
mean(xx) % ans = 11.5

Dans le cas d’une distribution statistique groupée (]αi ; αi +1 ], n i )i ∈‚1;pƒ dont on n’a pas toutes les données x, il n’est pas
possible de calculer la moyenne exactement. Si on ne dispose que du tableau des fréquences, alors on estime la moyenne
par la formule
p
X αi + αi +1
x̄ ≈ fi ,
i =1 2
αi +αi +1
où 2 est le centre de la i -ème classe et f i sa fréquence.

Propriété 8.1 (Fusion de données)


Considérons la situation où on dispose de deux échantillons u = (u k )k∈‚1;n1 ƒ et v = (v k )k∈‚1;n2 ƒ de tailles n 1 et n 2 et de
moyennes respectives ū et v̄. L’échantillon globale x fusion des deux échantillons u et v est de taille n = n 1 +n 2 et sa moyenne
est
n 1 ū + n 2 v̄
x̄ = .
n

Autrement dit, lorsqu’on fusionne les résultats issus d’échantillons différents, on peut obtenir la moyenne de l’échantillon
global sans avoir à refaire tous les calculs.
La médiane et le mode ne vérifient pas cette propriété.

© 2020-2021 G. Faccanoni 279


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

Propriété 8.2 (Erreur quadratique)


Considérons la fonction E : R → R+ définie par

1 Xn
E (µ) = (x k − µ)2 .
n k=1

Elle atteint son minimum en µ = x̄.

La fonction E , appelée ERREUR QUADRATIQUE, est la moyenne des carrés des distances entre les x k et le nombre réel µ. La
moyenne x̄ est la constante qui approche au mieux les données au sens des moindres carrés.

P REUVE
E (µ) ≥ 0 pour tout µ et
à ! à !
2 Xn 1 Xn 1 1 Xn

E (µ) = − (x k − µ) = −2 (x k − nµ = −2 x k − µ = −2(x̄ − µ).
n k=1 n k=1 n n k=1

Ainsi µ = x̄ est un extremum et comme E est quadratique, il s’agit d’un minimum.

8.3.2. Mesures de dispersion


On vient d’examiner différentes mesures de la tendance centrale d’un échantillon. On va maintenant chercher une mesure
de la variabilité d’un échantillon, c’est-à-dire un nombre qui est d’autant plus grand que les données de l’échantillon sont
dispersées.

Variance

La dispersion d’un échantillon peut se visualiser en considérant les écarts à la moyenne, c’est-à-dire l’échantillon v =
(v k )k∈‚1;nƒ avec v k = x k − x̄. On cherche à obtenir une valeur unique représentative de ces écarts. On ne va pas prendre
la moyenne v̄ car elle est nulle quel que soit l’échantillon (d’après la linéarité de la moyenne arithmétique). On va donc
prendre les carrés des écarts et calculer leur moyenne arithmétique. On obtient ainsi la VARIANCE de l’échantillon :

1 Xn
V (x) = (x k − x̄)2 .
n k=1

Autrement dit, la variance est la valeur de l’erreur quadratique en son minimum (la moyenne minimise la fonction “erreur
quadratique”, la variance est l’évaluation de cette fonction dans le minimum) :

V (x) = E (x̄).

La variance est une quantité positive qui augmente avec la dispersion des données. Elle est nulle si et seulement si toutes les
données sont égales.
Si on écrit la série statistique x = (x k )k∈‚1;nƒ comme la distribution statistique (αi , n i )i ∈‚1;pƒ ou (αi , f i )i ∈‚1;pƒ , alors

p p
1 X
n j (α j − x̄)2 = f j (α j − x̄)2 .
X
V (x) =
n j =1 j =1

Théorème 8.3 (de Koenig, formule de Huygens)


Pn
x2
k=1 k
V (x) = − x̄2 .
n

Cette expression est utile pour calculer pratiquement la variance d’un échantillon donné.

P REUVE

1 Xn 1 Xn 1 Xn 1 Xn 1 Xn 1 Xn 1 1 Xn
V (x) = (x k − x̄)2 . = (x k2 − 2x k x̄ + x̄2 ). = x k2 − 2 x k x̄ + x̄2 = x k2 − 2x̄2 + n x̄2 = x 2 − x̄2 .
n k=1 n k=1 n k=1 n k=1 n k=1 n k=1 n n k=1 k

280 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

Si on écrit la série statistique x = (x k )k∈‚1;nƒ comme la distribution statistique (αi , n i )i ∈‚1;pƒ ou (αi , f i )i ∈‚1;pƒ , alors la formule
de Huygens devient
Pp
n α2
j =1 j j
p
− x̄2 = f j α2j − x̄2 .
X
V (x) =
n j =1

Propriété 8.4 (Fusion de données)


Considérons la situation où on dispose de deux échantillons u = (u k )k∈‚1;n1 ƒ et v = (v k )k∈‚1;n2 ƒ de tailles n 1 et n 2 et de
variances respectives V (u) et V (v). L’échantillon globale x fusion des deux échantillons u et v est de taille n = n 1 + n 2 et sa
variance est
n1 ¡ ¢ n2 ¡ n 1 ū + n 2 v̄ 2
µ ¶
2 2
¢
V (x) = V (u) + ū + V (v) + v̄ − .
n n n

P REUVE

n n1 n2
n 1 ū + n 2 v̄ 2 n 1 ¡ ¢ n2 ¡ n 1 ū + n 2 v̄ 2
µ ¶ µ ¶
1 X 1 X 1 X
x k2 − x̄2 = u k2 + v k2 − V (u) + ū2 + V (v) + v̄2 −
¢
V (x) = = .
n k=1 n k=1 n k=1 n1 + n2 n n n

Écart-type
La variance présente un inconvénient majeur : si les données s’expriment en unités physiques, la moyenne arithmétique
s’exprime aussi dans cette unité, mais la variance s’exprime dans l’unité carrée. C’est pourquoi on a introduit la notion
d’ÉCART- TYPE : p
σ(x) = V (x)

Remarque (Diviser par n ou n − 1 ?)


La variance est utilisée si la population est accessible dans sa totalité. Cependant d’ordinaire nous nous intéressons à
une population dont on n’a pu mesurer qu’un échantillon. Dans ce cas, la meilleure estimation que l’on puisse faire de la
variance de la population est
1 X n n
E (V ) = (x k − x̄)2 = V.
n − 1 k=1 n −1
E (V ) est dit variance corrigée ou estimateur non biaisé de la variance de la population car si l’on multiplie le prélèvement
d’échantillons de même effectif dans cette même population, la moyenne des E (V ) tend vers la variance réelle de la
population, ce qui n’est pas le cas de V .
Même remarque pour l’estimation de l’écart-type de la population (ou écart-type corrigé)
r r
p n n
s(σ) = E (V ) = V= σ
n −1 n −1

Faut-il calculer l’indice de dispersion de l’échantillon ou l’estimation de celui de la population, autrement dit, faut-il diviser
par n ou n − 1 ?
⋆ Si l’on cherche à tirer des conclusions sur une population à partir d’un échantillon de celle-ci, (n − 1) sera utilisé dans
les calculs,
⋆ si l’on cherche à décrire un échantillon ou si la variable a été mesurée sur tous les individus de la population, c’est n
qui sera utilisé.

E XEMPLE
xx = [5 2 4 2 6]
n=length(xx)

% Estimation de l’ecart-type
s=std(xx) % ans = 1.7889

% Estimation de la variance
V=var(xx) % ans = 3.2
% E=s*s

% Ecart-type

© 2020-2021 G. Faccanoni 281


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

sigma=std(xx,1) % ans = 1.6


% sigma=sqrt((n-1)/n)*s

% Variance
var(xx,1) % ans = 2.56
% V=sigma*sigma
% V=(n-1)/n*E

E XEMPLE
Calculons le mode, la médiane, la moyenne arithmétique et la variance des data 8.1.
• Mode Le mode est 0.
y p +y p+1 y +y
• Médiane On a n = 80 éléments, donc p = n2 = 40 et M (x) = 2 = 40 2 41 = 1 (car y i = 0 pour i = 1, . . . , 31, y i = 1 pour
i = 32, . . . , 44 etc).
0 × 31 + 1 × 13 + 2 × 11 + 3 × 14 + 4 × 6 + 5 × 5
• Moyenne On a x̄ = = 1.575
80
2 2 2 2 2 2
0 × 31 + 1 × 13 + 2 × 11 + 3 × 14 + 4 × 6 + 5 × 5
• Variance On a = 5.05 ainsi V (x) = 5.05 − 1.575 = 3.475
80
clear all;

% Chargement des valeurs


load [Link] ;
valeurs=sort(enfantsdata);

tt=0:5 ;
hist(valeurs,tt);
h = findobj(gca,’Type’,’patch’);
set(h(1),’FaceColor’,’y’,’EdgeColor’,’k’);

n=length(valeurs)
[effectif,c]=hist(valeurs,unique(valeurs))
freq=effectif/sum(effectif)

my_mode=valeurs(effectif==max(effectif))

my_moyenne=sum(c.*effectif)/sum(effectif)
my_moyenne=sum(c.*freq)
moyenne=mean(valeurs)

my_V=sum(valeurs.^2)/n-my_moyenne^2
V=var(valeurs,1)

my_sigma=sqrt(my_V)
sigma=std(valeurs,1)

mediane=median(valeurs)
figure()
pkg load statistics
boxplot(valeurs);
axis ([0,2,-1,6]);

Fractiles, quantiles
Les FRACTILES sont un autre moyen de quantifier la dispersion de données quantitatives. Le fractile à θ% d’un échantillon
est la valeur qui sépare la fraction θ% des plus petites données de la fraction (100 − θ)% des plus grandes données.
Le fractile à 50% n’est autre que la médiane.
Les fractiles à 25%, 50% et 75% sont les trois quartiles.
Une mesure de la dispersion d’un échantillon est l’ESPACE INTER- QUARTILE qui est la différence entre le troisième quartile et
le premier quartile ; c’est donc la largeur de l’intervalle qui contient l’échantillon duquel on a retiré les 25% plus grandes
valeurs et les 25% plis petites valeurs. Qualitativement, plus l’espace inter-quartile est grand, plus la dispersion des données
est grande. L’espace inter-quartile est moins sensible aux valeurs extrêmes que l’écart-type.

282 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

F IGURE 8.2. – Boîte à moustaches des durées de vie des ampoules (data 8.2).

8.3.3. Boîte à moustache


Une moyen très rapide de figurer le profil essentiel d’une série statistique quantitative est la boîte à moustaches (traduction
française du terme “Box and Whiskers Plot” ou, en abrégé, “Box Plot”), aussi appelée boîte de distribution. Une telle boîte
comprend
⋆ une échelle de valeurs sur l’axe vertical ;
⋆ le bord inférieur de la boîte correspond au premier quartile, noté Q 1 (i.e. le fractile à 25% ou quantile à 0.25) ;
⋆ le bord supérieur de la boîte correspond au troisième quartile, noté Q 3 (i.e. le fractile à 75% ou quantile à 0.75) ;
⋆ le trait horizontal au sein de la boîte correspond au deuxième quartile, noté Q 2 (i.e. la médiane) ;
⋆ les moustaches inférieure et supérieure, représentées par des traits verticaux de chaque coté de la boîte et qui se
terminent par des traits horizontaux (il existe plusieurs façon de construire les moustaches, parfois elles correspondent
aux fractiles à 5% et 95%, parfois au premier et neuvième décile, mais d’autres conventions existent) ;
⋆ les valeurs atypiques représentées par des cercles ou croix (on appelle ces données les outliers).
Une boîte avec des moustaches courtes indique que l’échantillon est assez dispersé.
Les boîtes à moustaches sont des résumés graphiques efficaces des données et sont donc très utiles pour comparer des
distributions d’un groupe à l’autre. Contrairement à un histogramme, elle ne nécessitent pas de regrouper les observations
en classes, ce qui est un avantage car le choix des classes est une opération subjective et qui influence fortement l’allure de
l’histogramme construit à partir de celles-ci.
Sur la figure 8.2 on dessine la boîte à moustaches correspondant aux data 8.2. On constate que l’échantillon n’est pas
équilibré, la médiane n’est pas vraiment au milieu des premier et troisième quartiles.

E XEMPLE
Utilisons les data 8.2.
clear all

% Chargement des valeurs


load [Link]
valeurs=sort(mesures);

% Nombre d’elements
n=length(valeurs)

%Moyenne
moyenne=mean(valeurs)

%Mediane
mediane=median(valeurs)

% Estimation de l’ecart-type sans biais


etsb=std(valeurs)

% Incertitude de type A
ua=etsb/sqrt(n)

% Definitions des bornes des intervalles


tt=[Link] ;
hist(valeurs,tt-100); # on passe le centre des intervalles
h = findobj(gca,’Type’,’patch’);
display(h)
set(h(1),’FaceColor’,’r’,’EdgeColor’,’k’);

© 2020-2021 G. Faccanoni 283


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

% Decoupage en classes
ncl=length(tt)-1

%calcul des frequence


for i=1:ncl
eff(i)=length(find(valeurs>tt(i) & valeurs<=tt(i+1))) ;
fm(i)=eff(i)/n ;
end

% Borne gauche, borne droite, effectif, frequence


A=[tt(1:end-1)’,tt(2:end)’,eff’,fm’]

% Boite a moustache
figure()
pkg load statistics
boxplot(valeurs)
axis ([0,2]);

% The returned matrix has one column for each data set as follows:
% 1 Minimum = 1311.0
% 2 1st quartile = 1604.5
% 3 2nd quartile (median) = 2131.0
% 4 3rd quartile = 2340.8
% 5 Maximum = 2628.0
% 6 Lower confidence limit for median = 2025.5
% 7 Upper confidence limit for median = 2236.5

8.4. Statistique descriptive à deux caractères


Lorsque les observations portent simultanément sur deux caractères, on les présente sous la forme d’un tableau à double
entrée. On définit alors la distribution conjointe, les distributions marginales et les distributions conditionnelles. L’étude
de la distribution de deux variables se poursuit par celle de leur liaison. L’étude de la liaison entre les variables observées,
appelée communément l’étude des corrélations, dépend de leur nature. Ici on n’envisagera que le cas de deux variables
quantitatives non groupée en classes.

8.4.1. Distribution conjointe


Considérons donc une série statistique dont les observations portent sur deux caractères. On veut ici extraire des informa-
tions sur la distribution jointe des deux caractères et étudier leur dépendance. Désignons par
⋆ (x, y) = (x k , y k )k∈‚1;nƒ les n données brutes, généralement présentées sous la forme d’un tableau à deux colonnes ;
⋆ A = α1 , α2 , . . . , αp les p modalités de x, i.e. les p valeurs distinctes observées pour x (autrement dit x k ∈ A ) ;
© ª

⋆ B = β1 , β2 , . . . , βq les q modalités de y, i.e. les q valeurs distinctes observées pour y (autrement dit y k ∈ B).
© ª

La répartition des n observations, ou distribution conjointe, suivant les modalités de x et y se présente sous forme d’un
tableau à double entrée, appelée tableau de contingence :

Modalités de y
β1 ... βj ... βq Effectif marginal de αi
Modalités de x
Pq
α1 n 1,1 ... n 1, j ... n 1,q n 1,· = j =1
n 1, j
.. .. .. .. ..
. . . . .
Pq
αi n i ,1 ... ni , j ... n i ,q n i ,· = j =1
ni , j
.. .. .. .. ..
. . . . .
Pq
αp n p,1 ... n p, j ... n p,q n p,· = j =1 n p, j
Pp Pp Pp Pq Pp
Effectif marginal de β j n ·,1 = i =1 n i ,1 ... n ·, j = i =1 n i , j ... n ·,q = i =1 n i ,q n = j =1 n ·, j = i =1 n i ,·

284 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

On appelle
• effectif du couple (αi , β j ), et on le note n i , j , le nombre de fois où le couple (αi , β j ) est pris (i.e. le nombre de fois où la
modalité αi et la modalité β j ont été observées simultanément) ;
ni , j
• fréquence du couple (αi , β j ) le rapport f i , j = n .
Si on écrit la série statistique (x k , y k )k∈‚1;nƒ comme ((αi , β j ), n i , j ) i ∈‚1;pƒ ou ((αi , β j ), f i , j ) i ∈‚1;pƒ on parle de distribution
j ∈‚1;qƒ j ∈‚1;qƒ
conjointe.
On peut bien sûr représenter la série statistique ou la distribution conjointe sur un plan comme un nuage de points : chaque
point correspond à un couple (αi , β j ) affecté de son poids n i , j , autrement dit chaque point correspond à une observation
(x k , y k ) et à coté on indique combien de fois cette observation apparaît. Il y aura donc p × q points (autant que de cases que
dans le tableau de contingence), chaque point se trouvant sur un coin de la grille de coordonnées (αi , β j ). Si pour un couple
on a n i , j = 0, on n’affichera pas de point. Si n i , j = 1 pour tout i = 1, . . . p et j = 1, . . . q, on a le nuage de points classique vu au
chapitre précédent.

(n 1,2 ) (n 2,2 )
β2

α1 α2 α
(n 1,1 ) (n 2,1 )
β1

8.4.2. Distributions marginales


On peut bien sûr mener une étude statistique de chacun des caractères séparément, i.e. calculer la moyenne et la variance
de chacune des séries simples (x̄, ȳ, V (x), V (y)). On appelle
• effectif marginal de αi , et on le note n i ,· , le nombre total d’observations de la modalité αi de x quelle que soit la modalité
de y :
q
X
n i ,· = ni , j ;
j =1

• effectif marginal de β j , et on le note n ·, j , total d’observations de la modalité β j de y quelle que soit la modalité de x :

p
X
n ·, j = ni , j ;
i =1

n i ,· Pq
• fréquence marginale de αi le rapport f i ,· = n = f
j =1 i , j
;
n ·, j Pp
• fréquence marginale de β j le rapport f ·, j = n = f .
i =1 i , j
On a bien évidemment
p
X q
X p
X q
X
n i ,· = n ·, j = n f i ,· = f ·, j = 1.
i =1 j =1 i =1 j =1

Si on écrit la série statistique x comme (αi , n i ,· )i ∈‚1;pƒ ou (αi , f i ,· )i ∈‚1;pƒ on parle de distribution marginale de x ; de la même
manière si on écrit la série statistique y comme (β j , n ·, j ) j ∈‚1;qƒ ou (β j , f ·, j ) j ∈‚1;qƒ on parle de distribution marginale de y.
Disposant d’une distribution conjointe, on peut déduire les distributions marginales qui permettent d’étudier séparément
chaque variable en représentant graphiquement sa distribution et s’il s’agit d’une variable quantitative, en calculant ses
caractéristiques de tendance centrale, de dispersion, de forme. . .
On appelle
• moyenne marginale de x la quantité
p p
1X
n i ,· αi = f i ,· αi
X
x̄ =
n i =1 i =1

• moyenne marginale de y la quantité


q q
1 X
n ·, j β j = f ·, j β j
X
ȳ =
n j =1 j =1

© 2020-2021 G. Faccanoni 285


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

• variance marginale de x la quantité


Pn Pn
k=1
(x k − x̄)2 x2
k=1 k 1X p p
− x̄2 = n i ,· (αi )2 − x̄2 = f i ,· α2i − x̄2
X
V (x) = =
n n n i =1 i =1

• variance marginale de y la quantité


Pn Pn
k=1
(y k − ȳ)2 y2
k=1 k 1 X q q
− ȳ2 = n ·, j (β j )2 − ȳ2 = f ·, j β2j − ȳ2 .
X
V (y) = =
n n n j =1 j =1

8.4.3. Distributions conditionnelles

Une distribution à deux caractères présente deux types de distributions conditionnelles : les distributions conditionnelles
de x selon y et les distributions conditionnelles de y selon x.

• Distributions conditionnelles de y selon x


Considérons la sous-population correspondante aux individus tels que x = αi .

La distribution de la variable y sachant x = αi est appelée distribution conditionnelle de y pour x = αi . Il existe p


distributions conditionnelle de y sachant x = αi , car i = 1, . . . , p.

Modalités de y sachant αi β1 ... βj ... βq Effectif marginal de αi


Pq
αi n i ,1 ... ni , j ... n i ,q n i ,· = j =1 n i , j

Chaque distribution contient n i ,· observations et on peut calculer les quantités conditionnelles suivantes :

• fréquence conditionnelle de β j sachant αi comme la quantité

ni , j fi , j q
X
f j |i = = avec f j |i = 1;
n i ,· f i ,· j =1

• distribution conditionnelle des fréquences de y sachant αi la distribution (β j , f j |i ) j ∈‚1;qƒ ;

• moyenne conditionnelle de y sachant αi la quantité


q q
1 X
ni , j β j = f j |i β j ;
¯ X
ȳ¯i =
n i ,· j =1 j =1

• variance conditionnelle de y sachant αi la quantité


q q
1 X ¯2 X ¯2
Vi (y) = n i , j β2j − ȳ¯i = f j |i β2j − ȳ¯i .
n i ,· j =1 j =1

Les p modalités de x induisant une partition ¯des n observations en p sous-groupes, la moyenne ȳ peut s’exprimer
comme somme pondérées des p moyennes ȳ¯i :

p
X ¯
ȳ = ȳ¯i f i ,·
i =1

Il est fréquent de présenter les fréquences conditionnelles f j |i de y dans un tableau dont toutes les sommes en ligne

286 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

sont égales à 1 ; ce tableau est appelé tableau des profils en ligne :

Modalités de y
β1 ... βj ... βq
Modalités de x

α1 f 1|1 ... f j |1 ... f q|1 1


.. .. .. .. ..
. . . . .
αi f 1|i ... f j |i ... f q|i 1
.. .. .. .. ..
. . . . .
αp f 1|p ... f j |p ... f q|p 1

Fréquence marginale de β j f ·,1 ... f ·, j ... f ·,q 1

• Distributions conditionnelles de x selon y


De manière analogue, considérons maintenant la sous-population correspondante aux individus tels que y = β j .
La distribution de la variable x sachant y = β j est appelée distribution conditionnelle de x pour y = β j . Il existe q
distributions conditionnelle de x sachant y = β j car j = 1, . . . , q.

Modalités de x sachant β j βj

α1 n 1, j
.. ..
. .
αi ni , j
.. ..
. .
αp n p, j
Pp
Effectif marginal de β j n ·, j = i =1 n i , j

Chaque distribution contient n ·, j observations et on peut définir les quantités conditionnelles suivantes :

• fréquence conditionnelle de αi sachant β j comme la quantité

ni , j fi , j
fi | j = =
n ·, j f ·, j

• distribution conditionnelle des fréquences de x sachant β j la distribution (αi , f i | j )i ∈‚1;pƒ ;

• moyenne conditionnelle de x sachant β j la quantité

p p
1 X
n i , j αi = f j |i αi
X
x̄| j =
n ·, j i =1 i =1

• variance conditionnelle de x sachant β j la quantité

p p
1 X
n i , j α2i − x̄|2j = f i | j α2i − x̄|2j .
X
V j (x) =
n ·, j i =1 i =1

Les q modalités de y induisant une partition des n observations en q sous-groupes, la moyenne x̄ peut s’exprimer
comme somme pondérées des q moyennes x̄| j :

q
X
x̄ = x̄| j f ·, j
j =1

De même on présente les fréquences conditionnelles f i | j de x dans un tableau dont toutes les sommes en colonne

© 2020-2021 G. Faccanoni 287


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

sont égales à 1 ; ce tableau est appelé tableau des profils en colonne :

Modalités de y
β1 ... βj ... βq Fréquence marginale de αi
Modalités de x

α1 f 1|1 ... f 1| j ... f 1|q f 1,·


.. .. .. .. ..
. . . . .
αi f i |1 ... fi | j ... f i |q f i ,·
.. .. .. .. ..
. . . . .
αp f p|1 ... f p| j ... f p|q f p,·

1 ... 1 ... 1 1

E XEMPLE ¡ ¢
Soient les données brutes (1, 0), (1, 2), (2, 0), (2, 2), (2, 2), (1, 1) , alors n = 6.
On a x k ∈ A = { 1, 2 } et y k ∈ B = { 0, 1, 2 } pour tout k = 1, 2, . . . , n, ainsi p = 2 et q = 3. Écrivons les observations dans un
tableau à deux colonnes :
x y
1 0
1 2
2 0
2 2
2 2
1 1

• Distribution conjointe et distributions marginales


Le tableau des contingences avec les effectifs de chaque couple et les effectifs marginaux est

B
β1 = 0 β2 = 1 β3 = 2 Effectif marginal de αi
A
α1 = 1 n 1,1 = 1 n 1,2 = 1 n 1,3 = 1 n 1,· = 3
α2 = 2 n 2,1 = 1 n 2,2 = 0 n 2,3 = 2 n 2,· = 3
Effectif marginal de β j n ·,1 = 2 n ·,2 = 1 n ·,3 = 3 n=6

(1) (2)
2

(1)
1

(1) (1)
0
1 2 α

Le tableau des contingences avec les fréquences de chaque couple et les fréquences marginales est

B
β1 = 0 β2 = 1 β3 = 2 Fréquence marginale de αi
A
α1 = 1 f 1,1 = 1/6 f 1,2 = 1/6 f 1,3 = 1/6 f 1,· = 3/6
α2 = 2 f 2,1 = 1/6 f 2,2 = 0/6 f 2,3 = 2/6 f 2,· = 3/6
Fréquence marginale de β j f ·,1 = 2/6 f ·,2 = 1/6 f ·,3 = 3/6 1

Les moyennes marginales de x et y sont

1¡ ¢ 1 3
x̄ = n 1,· α1 + n 2,· α2 = (3α1 + 3α2 ) = ,
n 6 2

288 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

1¡ ¢ 1¡ ¢ 7
ȳ = n ·,1 β1 + n ·,2 β2 + n ·,3 β3 = 2β1 + 1β2 + 3β3 = .
n 6 6

• Distributions conditionnelles y sachant x

• y sachant α1 On ne considère que la ligne de la modalité α1 :

B
β1 = 0 β2 = 1 β3 = 2 Fréquence marginale de α1
A
α1 = 1 1/6 1/6 1/6 f 1,· = 3/6

fi , j 1/6 1
f j =1|i =1 = = = fréquence conditionnelle de β1 sachant α1
f i ,· 3/6 3
fi , j 1/6 1
f j =2|i =1 = = = fréquence conditionnelle de β2 sachant α1
f i ,· 3/6 3
fi , j 1/6 1
f j =3|i =1 = = = fréquence conditionnelle de β3 sachant α1
f i ,· 3/6 3

De plus,

q=3
X
f j |i =1 = 1
j =1
q=3
1 1 1
f j |i =1 β j = β1 + β2 + β3 = 1 moyenne conditionnelle de y sachant α1
¯ X
ȳ¯i =1 =
j =1 3 3 3

• y sachant α2 On ne considère que la ligne de la modalité α2 :

B
β1 = 0 β2 = 1 β3 = 2 Fréquence marginale de α2
A
α2 = 2 1/6 0/6 2/6 f 2,· = 3/6

fi , j 1/6 1
f j =1|i =2 = = = fréquence conditionnelle de β1 sachant α2
f i ,· 3/6 3
fi , j 0/6
f j =2|i =2 = = =0 fréquence conditionnelle de β2 sachant α2
f i ,· 3/6
fi , j 2/6 2
f j =3|i =2 = = = fréquence conditionnelle de β3 sachant α2
f i ,· 3/6 3

De plus,

q=3
X
f j |i =2 = 1
j =1
q=3
1 2 4
f j |i =2 β j = β1 + 0β2 + β3 = moyenne conditionnelle de y sachant α2
¯ X
ȳ¯i =2 =
j =1 3 3 3

• tableau des profils en ligne f j |i

Modalités de y
β1 = 0 β2 = 1 β3 = 2
Modalités de x

α1 = 1 f 1|1 = 1/3 f 2|1 = 1/3 f 3|1 = 1/3 1


α2 = 2 f 1|2 = 1/3 f 2|2 = 0 f 3|2 = 2/3 1

Fréquence marginale de β j f ·,1 = 2/6 f ·,2 = 1/6 f ·,3 = 3/6 1

© 2020-2021 G. Faccanoni 289


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

On a bien
p=2
X ¯ 3 43 7
ȳ¯i f i ,· = 1 + = = ȳ,
i =1 6 36 6

• Distributions conditionnelles x sachant y

• x sachant β1 On ne considère que la colonne de la modalité β1 :

B
β1 = 0
A
α1 = 1 1/6
α2 = 2 1/6
Fréquence marginale de β1 f ·,1 = 2/6

fi , j 1/6 1
f i =1| j =1 = = = fréquence conditionnelle de α1 sachant β1
f ·, j 2/6 2
fi , j 1/6 1
f i =2| j =1 = = = fréquence conditionnelle de α2 sachant β1
f ·, j 2/6 2

De plus,

p=2
X
f i | j =1 = 1
i =1
p=2
1 1 3
f i | j =1 αi = α1 + α2 = moyenne conditionnelle de x sachant β1
X
x̄| j =1 =
i =1 2 2 2

• x sachant β2 On ne considère que la colonne de la modalité β2 :

B
β2 = 1
A
α1 = 1 1/6
α2 = 2 0/6
Fréquence marginale de β2 f ·,2 = 1/6

fi , j 1/6
f i =1| j =2 = = =1 fréquence conditionnelle de α1 sachant β2
f ·, j 1/6
fi , j 0/6
f i =2| j =2 = = =0 fréquence conditionnelle de α2 sachant β2
f ·, j 1/6

De plus,

p=2
X
f i | j =2 = 1
i =1
p=2
f i | j =2 αi = 1α1 + 0α2 = 1 moyenne conditionnelle de x sachant β2
X
x̄| j =2 =
i =1

• x sachant β3 On ne considère que la colonne de la modalité β3 :

B
β3 = 2
A
α1 = 1 1/6
α2 = 2 2/6
Fréquence marginale de β3 f ·,3 = 3/6

290 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

fi , j 1/6 1
f i =1| j =3 = = = fréquence conditionnelle de α1 sachant β3
f ·, j 3/6 3
fi , j 2/6 2
f i =2| j =3 = = = fréquence conditionnelle de α2 sachant β3
f ·, j 3/6 3

De plus,

p=3
X
f i | j =3 = 1
i =1
p=2
1 2 5
f i | j =3 αi = α1 + α2 = moyenne conditionnelle de x sachant β3 .
X
x̄| j =3 =
i =1 3 3 3

• tableau des profils en colonne f i | j

Modalités de y
β1 = 0 β2 = 1 β3 = 2 Fréquence marginale de αi
Modalités de x

α1 = 1 f 1|1 = 1/2 f 1|2 = 1 f 1|3 = 1/3 f 1,·


α2 = 2 f 2|1 = 1/2 f 2|2 = 0 f 2|3 = 2/3 f p,·

1 1 1 1

On a bien
q=3
X 32 1 53 3
x̄| j f ·, j = +1 + = = x̄.
j =1 26 6 36 2

8.4.4. Indépendance statistique


Si tous les profils en colonne du tableau en colonne sont identiques, cela signifie que la distribution de la variable x ne
dépend pas de la variable y, on dit alors que les variables x et y sont statistiquement indépendantes dans l’ensemble des n
individus considérés, et dans ce cas toutes les distributions conditionnelles de x sont identiques à la distribution marginale
de x. Par raison de symétrie, l’indépendance statistique entre x et y implique aussi des profils en ligne identiques à la
distribution marginale de y.
Les deux séries x et y sont indépendantes si et seulement si
(
f i | j = f i ,· , i.e. la distribution conditionnelle des fréquences de αi sachant β j ne dépend pas de j
f j |i = f ·, j , i.e. la distribution conditionnelle des fréquences de β j sachant αi ne dépend pas de i .

De plus, si les deux séries sont indépendantes, alors pour tout i = 1, . . . , p et j = 1, . . . , q

f i , j = f i ,· f ·, j

Lorsque deux variables dépendent statistiquement l’une de l’autre, on cherche à évaluer l’intensité de leur liaison et dans le
cas de deux variables quantitatives, on examine si on peut les considérer liées par une relation linéaire.

8.4.5. Liaison entre deux variables quantitatives : covariance et corrélation


La dispersion d’une série bivarié (x k , y k )k∈‚1;nƒ peut se visualiser en considérant les écarts aux deux moyennes. On cherche à
obtenir une valeur unique représentative de ces écarts. On obtient ainsi la covariance de la série (x k , y k )k∈‚1;nƒ :

1 Xn
C (x, y) = (x k − x̄)(y k − ȳ).
n k=1

Si on écrit la série comme la distribution ((αi , β j ), n i , j ) i ∈‚1;pƒ ou ((αi , β j ), f i , j ) i ∈‚1;pƒ , on a


j ∈‚1;qƒ j ∈‚1;qƒ

p X q q
1X X
C (x, y) = n i , j (αi − x̄)(β j − ȳ) = f i , j (αi − x̄)(β j − ȳ).
n i =1 j =1 j =1

© 2020-2021 G. Faccanoni 291


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

Propriété 8.5
1. C (x, y) = C (y, x)
2. C (x, x) = V (x) et C (y, y) = V (y)
3. V (x + y) = V (x) + 2C (x, y) + V (y)
4. C (ax + b, cy + d ) = acC (x, y) pour tout a, b, c, ∈ R
Pp Pq
5. C (x, y) = i =1 j =1 αi β j f i j − x̄ȳ
p
6. |C (x, y)| = V (x)V (y)
Si x et y sont indépendantes alors la covariance est nulle. La réciproque est fausse : en effet la covariance mesure uniquement
la dépendance linéaire.

Remarque (Diviser par n ou n − 1 ?)


Dans la définition ci-dessus, le dénominateur est n. Si l’on tente d’estimer la covariance de la population à partir d’un
échantillon il faudra diviser par (n − 1). Les notations de la covariance de l’échantillon et de l’estimation de celle de la
population ne sont pas en générale distinguables. Ainsi, lorsqu’on utilise un logiciel, toujours faire un calcul d’essai pour
connaître la formule utilisée. Dans Octave ou Matlab c’est (n − 1) qui est utilisé par défaut, mais on peut forcer l’utilisation
de n, comme on voit dans l’exemple ci-dessous.
Dans ce chapitre on utilisera la notation

1 X n n −1
E (C (x, y)) = (x k − x̄)(y k − ȳ) = C (x, y).
n − 1 k=1 n

Comme pour la variance, on dispose d’une formule alternative pour la covariance qu’on utilise en pratique pour calculer
une covariance :

Propriété 8.6
Pn p X q
x y
k=1 k k 1X
C (x, y) = − x̄ȳ = n i j αi β j − x̄ȳ.
n n i =1 j =1

E XEMPLE
Considérons l’échantillon bivarié ((1, 1), (2, 3), (3, 5)). On a

x = (1, 2, 3) y = (1, 3, 5) x̄ = 2 ȳ = 3

ainsi
1 Xn (1 − 2)(1 − 3) + (2 − 2)(3 − 3) + (3 − 2)(5 − 3) 4
C (x, y) = (x k − x̄)(y k − ȳ) = =
n k=1 3 3
tandis que
1 X n (1 − 2)(1 − 3) + (2 − 2)(3 − 3) + (3 − 2)(5 − 3) 4
E (C (x, y)) = (x k − x̄)(y k − ȳ) = = = 2.
n − 1 k=1 2 2

’Octave’
x = [1 2 3];
y = [1 3 5];
E_cov = cov(x,y) % ans = 2
Cov = cov(x,y,1) % ans = 1.3333
% notre covariance
n=length(x)
moy_x = mean(x)
moy_y = mean(y)
my_cov = sum( (x-moy_x).*(y-moy_y))/n % ans = 1.3333

La covariance joue un rôle analogue à la variance dans le cas de deux caractères : elle mesure la dispersion conjointe des
deux caractères. La corrélation joue un rôle analogue à l’écart type.
En supposant V (x) > 0 et V (y) > 0, c’est-à-dire que n ≥ 2 et les x k (resp. les y k ) ne sont pas tous égaux, on peut définir le
coefficient de corrélation linéaire (de Bravais-Pearson) :

C (x, y)
r (x, y) = p .
V (x)V (y)

292 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

On a
⋆ r (λx, λy) = r (x, y) pour tout λ ∈ R∗ ,
⋆ r (x, y) ∈ [−1; 1].

8.5. Régression linéaire revisitée


L’ANALYSE DE RÉGRESSION donne des outils de prédiction du comportement d’un caractère si on connaît la valeur d’un autre
caractère. L’ANALYSE DE CORRÉLATION mesure la force de la relation linéaire entre les deux caractères.
Considérons une série statistique bivariée (x k , y k )k∈‚1;nƒ . On peut associer à chaque donnée (x k , y k ) un point du plan et on
peut représenter un échantillon de n données comme un nuage de n points. Si le nuage a une forme allongée, on peut
essayer de dessiner une droite passant au milieu de ces points. Cette droite, appelée droite de régression linéaire, est un
moyen de représenter la dépendance linéaire des deux caractères. La méthode des moindre carrés permet de déterminer la
“meilleur” droite passante par le nuage de points constitué par une série statistique double.

8.5.1. Régression linéaire et moindres carrés


On considère un ensemble de N points A i = (x i , y i ), i = 1, . . . , N . L’objectif est de trouver l’équation y = γ0 + γ1 x de la droite
qui approche au mieux tous ces points. Précisons ce que veut dire “approcher au mieux” : il s’agit de minimiser la somme
des carrés des distances verticales entre les points et la droite.
y

A3
y = γ0 + γ1 x
A2

A4
A1

La formule qui donne l’erreur est :


N ¡ ¢2
E (γ0 , γ1 ) = y i − (γ0 + γ1 x) ,
X
i =1

autrement dit ¢2 ¢2
E (γ0 , γ1 ) = y 1 − (γ0 + γ1 x 1 ) + · · · + y N − (γ0 + γ1 x N ) .
¡ ¡

Remarquons que l’on a toujours E (γ0 , γ1 ) ≥ 0. Si par exemple tous les points sont alignés, alors on peut trouver a et b tels
que E (γ0 , γ1 ) = 0. Quand ce n’est pas le cas, on cherche γ0 et γ1 qui rendent E (γ0 , γ1 ) le plus petit possible. Il s’agit donc
bien ici de minimiser une fonction de deux variables (les variables sont γ0 et γ1 ). Pour cela nous aurons besoin de calculer
son gradient :
¶ ÃN !
∂E ∂E N
µ
∇E (γ0 , γ1 ) = (γ0 , γ1 ), (γ0 , γ1 ) = −2 y i − (γ0 + γ1 x i ) , −2x i y i − (γ0 + γ1 x i ) .
X ¡ ¢ X ¡ ¢
∂γ0 ∂γ1 i =1 i =1

E XEMPLE
Prenons d’abord l’exemple des trois points A 1 = (0, 3), A 2 = (2, 4) et A 3 = (6, 6). La fonction E (γ0 , γ1 ) s’écrit :

E (γ0 , γ1 ) = (3 − γ0 )2 + (4 − (γ0 + 2γ1 ))2 + (6 − (γ0 + 6γ1 ))2 = 40γ21 + 16γ1 γ0 − 88γ1 + 3γ20 − 26γ0 + 61.

Ainsi µ ¶
16γ1 + 6γ0 − 26
∇E (γ0 , γ1 ) =
80γ1 + 16γ0 − 88
1
et ∇E (γ0 , γ1 ) = 0 ssi γ1 = 2 et γ0 = 3. De plus, E (3, 12 ) = 0 (les points sont alignés).

© 2020-2021 G. Faccanoni 293


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

y A3
y = 3 + 21 x

A2

A1

E XEMPLE
À partir des données des 5 points suivants, quelle ordonnée peut-on extrapoler pour le point d’abscisse x = 6 ?

A 1 = (4, 1), A 2 = (7, 3), A 3 = (8, 3), A 4 = (10, 6), A 5 = (12, 7).

Ces 5 points sont à peu près alignés. On calcule la meilleure droite de régression linéaire en minimisant la fonction E (γ0 , γ1 ) :
¢2 ¡ ¢2 ¡ ¢2 ¡ ¢2 ¡ ¢2
E (γ0 , γ1 ) = −12γ1 − γ0 + 7 + −10γ1 − γ0 + 6 + −8γ1 − γ0 + 3 + −7γ1 − γ0 + 3 + −4γ1 − γ0 + 1
¡

= 373γ21 + 82γ1 γ0 − 386γ1 + 5γ20 − 40γ0 + 104746γ1 + 82γ0 − 386.

Ainsi µ ¶
82γ1 + 10γ0 − 40
∇E (γ0 , γ1 ) =
746γ1 + 82γ0 − 386
145
et ∇E (γ0 , γ1 ) = 0 ssi γ1 = 184 ≈ 0.788 et γ0 = − 453 453 145
184 ≈ −2.462. De plus, E (− 184 , 184 ) = 211/184 > 0 (les points ne sont pas
alignés).
417
Par conséquent, selon notre modèle linéaire, pour x = 6, on doit avoir y = γ0 + 6γ1 = 184 ≈ 2.27 (le point B de la figure
ci-dessus).

y
y = γ0 + γ1 x

A5
A4

A2 A3
B
A1

294 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

8.5.2. Droite de régression de y par rapport à x


On cherche à déterminer la droite d’équation y = γ0 + γ1 x minimisant l’erreur quadratique E : R2 → R+ définie par
n ¡ ¢2
E (γ0 , γ1 ) = y k − (γ0 + γ1 x k )
X
k=1

qui est la somme des distances au carré entre les points (x k , y k ) et les points (x k , γ0 + γ1 x k ) de même abscisse situés sur la
droite y = γ0 + γ1 x. Au chapitre 7 on a montré que γ0 et γ1 sont solution du système linéaire 1
1 Pn
    1 Pn
γ0
 
1 n k=1 x k n k=1 y k
   =  
1 Pn 1 Pn 1 Pn
x
n k=1 k n k=1 k x 2
γ 1 n k=1 k kx y

autrement dit, avec les notations introduites dans ce chapitre,

γ0
· ¸· ¸ · ¸
1 x̄ ȳ
= .
x̄ V (x) + (x̄)2 γ1 C (x, y) + x̄ȳ

En résolvant ce système on trouve

C (x, y)
γ1 = , coefficient directeur (pente),
V (x)
γ0 = ȳ − γ1 x̄, ordonnée à l’origine,

autrement dit y = γ1 (x − x̄) + ȳ (la droite passe par le point (x̄, ȳ)).
D’un point de vue computationnel, cette écriture est susceptible de générer des erreurs de roundoff (les deux termes au
numérateur ainsi qu’au dénominateur sont presque égaux, i.e. C (x, y) et V (x) sont proches de zéro). Il est alors plus stable
de calculer γ1 comme suit (ce qui est équivalent) :
Pn ¡ ¢
k=0 k k
y (x − x)
γ1 = Pn ¡ ¢.
k=0 k k
x (x − x)

8.5.3. Droite de régression de x par rapport à y


En échangeant les rôles de x et y on obtient la régression linéaire de x par rapport à y. En générale les deux droites de
régression sont distinctes.
En effet, dans le premier cas on minimise la somme des distances “verticales” (i.e. à x i fixé), dans le deuxième cas il s’agit
des distances “horizontale” (i.e. à y i fixé) et en général ces deux quantités sont différentes.
Le produit des pentes de ces deux droites est égal à r 2 et les deux pentes sont égales si et seulement si r = ±1. Dans ce cas les
deux droites coïncident et les points sont alignés.

8.5.4. Interprétation du coefficient de corrélation linéaire r


Il est toujours possible de tracer la droite des moindres carrés quelle que soit la forme du nuage. L’approximation du nuage
par cette droite est-elle légitime ? Quel sens, quelle signification donner à cette droite ?
Dans un ajustement linéaire de y par rapport à x on appelle x la variable explicative (ou le “prédicteur”) et y la variable
expliquée (ou “à expliquer”). Le but d’un ajustement linéaire est d’expliquer une partie de la variation de y du fait de sa
dépendance linéaire à x.
Nous allons voir que le coefficient de corrélation r peut être utilisé pour mesurer la qualité d’une approximation de y par
une fonction linéaire en x. Lorsque r (x, y) est en valeur absolue proche de 1 (en pratique strictement supérieur à 0.7), la
droite de régression linéaire est une bonne approximation du nuage de point.
Notons ŷ k = γ0 + γ1 x k pour k = 1, . . . , n la valeur estimée (ou prédite ou ajustée) de y k par la régression linéaire lorsque
x = x k et ŷ = ( ŷ 1 , ŷ 2 , . . . , ŷ n ). Il semble naturel de dire que remplacer le nuage par la droite trouvée est d’autant plus légitime
que la dispersion du nuage de points par rapport à la droite des moindres carrés est petite. Autrement dit, on calcul l’erreur
quadratique en son minimum (γ0 , γ1 ) : l’approximation est légitime plus l’erreur quadratique E (γ0 , γ1 ) est faible.
Soit γ0 et γ1 les valeurs qui minimisent l’erreur quadratique, alors
n
nE (γ0 , γ1 ) = (y k − ŷ k )2
X
k=1

1. NB : ici les indices commencent à 1 et on a tout divisé par n.

© 2020-2021 G. Faccanoni 295


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

n
(y k − γ0 − γ1 x k )2
X
=n
k=1
n
(y k − (ȳ − γ1 x̄) − γ1 x k )2
X
=n
k=1
n
((y k − ȳ) − γ1 (x k − x̄))2
X
=n
k=1
n n n
(y k − ȳ)2 + nγ21 n(x k − x̄)2 − 2nγ1
X X X
=n (y k − ȳ)(x k − x̄)
k=1 k=1 k=1
= V (y) + γ21 V (x) − 2γ1C (x, y)
C 2 (x, y) C (x, y)
= V (y) + V (x) − 2 C (x, y)
V 2 (x) V (x)
C 2 (x, y)
= V (y) 1 − r 2 (x, y) .
¡ ¢
= V (y) −
V (x)

Qualitativement, plus cette erreur est grande et moins bon est l’ajustement linéaire obtenu.
La quantité
n
(y k − ŷ k )2
def
X
SC rés =
k=1

est appelée somme des carrés résiduelle et est donc égale à

SC rés = nE (γ0 , γ1 ) = V (y) 1 − r 2 (x, y) .


¡ ¢

Elle est d’autant plus faible que r 2 est proche de 1. On peut alors interpréter l’erreur quadratique comme une mesure de la
part de la variance de y qui ne peut pas être expliquée et prédite par une fonction linéaire en x.
La variation totale
n
(y k − ȳ)2
def
X
SC tot =
k=1

est appelée somme des carrés totale de y et est égale à

SC tot = nV (y).

On a donc
SC rés
1 − r 2 (x, y) = ,
SC tot
i.e. la quantité (1 − r 2 (x, y)) est égale à la proportion de variation de y non expliquée par la droite des moindres carrés.
La décomposition de la variation totale de y permet une autre interprétation de r 2 :
n
(y k − ȳ)2
X
SC tot =
k=1
n
(y k − ŷ k + ŷ k − ȳ)2
X
=
k=1
n n n
(y k − ŷ k )2 + ( ŷ k − ȳ)2 + 2
X X X
= (y k − ŷ k )( ŷ k − ȳ)
k=1 k=1 k=1
n n
( ŷ k − ȳ)2 + 2
X X
= SC rés + (y k − ŷ k )( ŷ k − ȳ).
k=1 k=1

Montrons que le dernier terme est nul :


à !
n n n
2
(y k − ŷ k )( ŷ k − ȳ) = γ1 (y k − ȳ)(x k − x̄) − γ1
X X X
(x k − x̄)
k=1 k=1 k=1
= γ1 C (x, y) − γ1 V (x) = 0.
¡ ¢

On appelle variation expliquée par la régression la quantité


n
( ŷ k − ȳ)2 = nV (ŷ).
X
SC expl =
k=1

296 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

(a) r = 1 (b) r = −1 (c) r = 0.91

(d) r = −0.91 (e) r = 0.15 (f) r = −0.3

F IGURE 8.3. – Qualité des ajustements linéaires en fonction du coefficient de corrélation. Ce coefficient reflète la non-
linéarité et la direction d’une relation linéaire mais pas la pente de cette relation ni de nombreux aspects des
relations non linéaires (dernière figure).

et on a l’égalité
SC tot = SC rés + SC expl .
On a donc
SC expl
r 2 (x, y) = ,
SC tot
i.e. r 2 (x, y) est égale à la proportion de variation de y expliquée par la droite des moindres carrés.

Le coefficient de corrélation r mesure la force et la direction de la relation entre x et y. Deux cas extrêmes peuvent être
facilement analysés :

⋆ si r (x, y) = ±1, alors il existe un λ0 ∈ R∗ tel que y k − ȳ = λ0 (x k − x̄) pour tout k ∈ ‚1; nƒ. Cela montre que x et y sont
parfaitement corrélés ;

⋆ si r (x, y) = 0, alors la meilleur droite d’ajustement linéaire est la droite horizontale d’équation y = ȳ ce qui tend à
montrer que les deux caractères ne sont pas corrélés.

La figure 8.3 donne plusieurs exemples pour différentes valeurs du coefficient de corrélation. Une valeur de r (x, y) proche de
1 indique que les caractères sont positivement corrélés, et la meilleure droite d’ajustement linéaire obtenue par la méthode
des moindres carrés a une pente positive. Une valeur de r (x, y) proche de −1 indique que les caractères sont négativement
corrélés, et la meilleure droite d’ajustement linéaire a une pente négative.
Noter que le coefficient de corrélation mesure seulement la qualité d’une relation linéaire : les caractères peuvent être
corrélés mais pas linéairement, dans ce cas r sera petit et il faudrait généraliser ces notions aux cas des ajustements
polynomiales.

Remarque (r : diviser par n ou n − 1 ?)


Dans la définition de r , les dénominateurs utilisés pour la covariance C (x, y) et pour les variances V (x) et V (y) sont n.
Si l’on tente d’estimer la corrélation de la population à partir d’un échantillon il faudra utiliser l’estimation de la covariance,
toujours notée C (x, y), ainsi que les estimations des variances E (V (x)) et E (V (y)), cela revient à diviser par (n − 1). Ce rapport

© 2020-2021 G. Faccanoni 297


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

donne la même valeur que r :


n
E (C (x, y)) n−1 C (x, y) C (x, y)
p =q =p = r (x, y).
E (V (x))E (V (y)) n
V (x) n
V (y) V (x)V (y)
n−1 n−1

8.6. Corrélation et mises en garde


8.6.1. Le coefficient r et la qualité de l’ajustement linéaire
Comment juger la qualité de l’ajustement linéaire ? Il est clair que si le coefficient r est voisin de 0, il faut rejeter l’ajustement
linéaire, mais pour quelles valeurs de r , le considère-t-on de bonne qualité ? C’est une question importante et beaucoup
d’exemples montrent qu’on ne peut pas établir de règles de décision à partir du seul examen de la valeur de r .
Les exemples suivants montrent que le calcul du coefficient de corrélation linéaire doit toujours être complété par un
examen graphique. Pour d’autres exemples voir par exemple [Link]
same-stats-different-graphs

E XEMPLE
Considérons les quatre séries de 11 observations simultanées de deux variables x et y suivantes :

Série A Série B Série C Série D


x y x y x y x y
10.00 8.04 10.00 9.14 10.00 7.46 8.00 6.58
8.00 6.95 8.00 8.14 8.00 6.77 8.00 5.76
13.00 7.58 13.00 8.74 13.00 12.74 8.00 7.71
9.00 8.81 9.00 8.77 9.00 7.11 8.00 8.84
11.00 8.33 11.00 9.26 11.00 7.81 8.00 8.47
14.00 9.96 14.00 8.10 14.00 8.84 8.00 7.04
6.00 7.24 6.00 6.13 6.00 6.08 8.00 5.25
4.00 4.26 4.00 3.10 4.00 5.39 8.00 5.56
12.00 10.84 12.00 9.13 12.00 8.15 19.00 12.50
7.00 4.82 7.00 7.26 7.00 6.42 8.00 7.91
5.00 5.68 5.00 4.74 5.00 5.73 8.00 6.89

On obtient grosso modo la même valeur du coefficient de corrélation linéaire (r ≈ 0.816) et la même droite des moindres
carrés y ≈ 3 + 0.5x, mais l’examen graphique montre que l’ajustement linéaire n’est adapté qu’au premier cas.

298 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

E XEMPLE
On se propose de calculer l’ajustement linéaire de la série de la composition minérale en fluorures et sodium (mg/l) de 21
eaux minérales gazeuses : 2
Eau minérale x = Fluorures y = Sodium
Arcens 1.3 439
Arvie 0.9 650
Badoit 1 150
Beckerich 0.6 34
Châteauneuf 3 651
Eau de Perrier 0.05 11.5
Faustine 2 230
La Salvetat 0.25 7
Perrier 0.05 11.5
Puits St-Georges 0.5 434
Pyrénées 0.05 31
Quézac 2.1 255
San Pellegrino 0.6 35
St-Diéry 0.3 385
St-Jean 1.1 228
St-Pierre 1.7 383
St-Yorre 9 1708
Vernet 1.3 120
Vernière 0.05 154
Vichy-Célestins 5 1172
Wattwiller 1.6 3
Calculons tout d’abord la moyenne et l’écart type :

x̄ = 1.55, ȳ = 338,
σ(x) = 2.03, σ(x) = 417.

Le coefficient de corrélation linéaire entre les deux composants minéraux est égal à 0.90. Cette valeur assez proche de 1 peut
conduire à considérer que la droite des moindres carrés permet d’évaluer approximativement la teneur y en sodium en
fonction de la teneur x en fluorures :

Cependant la représentation graphique du nuage des 21 points montre deux points caractérisés par une minéralité particu-
lièrement élevée : «Vichy-Célestins» et «Saint-Yorre». Ces deux eaux minérales ont respectivement des valeurs « éloignée » et
« extrême » pour les deux composants miné[Link] supprimant ces deux points et en réalisant l’ajustement sur les 19 autres
points, on obtient :

2. Données extraites du journal “Que Choisir ?”, n° 422 bis, 2005

© 2020-2021 G. Faccanoni 299


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

La moyenne et l’écart type sont maintenant

x̄ = 0.97, ȳ = 222,
σ(x) = 0.81, σ(x) = 208

et le coefficient r est passé de 0.9 à 0.5. Il faut aussi remarquer que les coefficients de la droite des moindres carrés sont
passés respectivement de 185 à 129 et de 51 à 96.15.
Quel crédit apporter à un ajustement pour lequel deux points ont une telle influence ? On est donc obligé d’abandonner
l’idée d’une relation linéaire entre les deux composants minéraux.

Tous ces résultats montrent qu’il ne faut jamais conclure sur la dépendance entre deux variables quantitatives au seul
examen de la valeur du coefficient de corrélation linéaire.
De plus, lorsqu’une liaison linéaire entre deux variables a été mise en évidence par l’étude d’une série de n observations
sur ce couple, il faut bien se garder de conclure à une relation de cause à effet entre ces variables sans en avoir examiné
attentivement la signification, comme on va voir à la prochaine section.
L’examen graphique, ainsi que celui de la signification des variables, sont des compléments indispensables à l’information
donnée par la valeur du coefficient de corrélation linéaire.

8.6.2. Distinguer causalité et corrélation


En statistiques, deux variables (choses que l’on mesure) sont corrélées positivement si elles évoluent de la même façon
(augmentent en même temps, diminuent en même temps). Elles sont corrélées négativement si elles évoluent en sens
inverse.
On établie un lien de causalité entre deux variables lorsqu’il y a un lien de cause à effet entre les deux, lorsque l’une est
conséquence de l’autre.
L’effet cigogne 3 est une erreur qui consiste à confondre corrélation et causalité : «Deux variables évoluent de la même façon,
l’une est donc forcément la cause de l’autre».
«L’Alsace est la région de France où l’on observe le plus de cigognes. C’est également la région de France où il
y a le plus de naissances. C’est donc la preuve que les cigognes apportent les bébés.»
Erreur si proche de l’effet cigogne qu’on les confond souvent, il s’agit ici de confondre succession et causalité 4 : «Deux
évènements se suivent dans le temps, le premier est donc forcément la cause du second.»

E XEMPLE
Voici quelques exemples de ces deux confusions.
⋆ Thomas met son caleçon rayé, puis il va au casino et gagne le gros lot. Il en conclue que son caleçon lui a porté chance.
⋆ Plus les éoliennes tournent vite, plus y il a du vent : ce sont donc les éoliennes qui créent le vent !
⋆ On constate que les pays où l’on mange le plus de viande sont les pays où l’on vit le plus longtemps. Doit-je changer
mon régime alimentaire ? (On constate en réalité que ces pays sont également les plus riches, donc ceux où les
habitants peuvent à la fois acheter plus de viande et avoir accès à de meilleurs soins)
⋆ On constate que depuis que le parti de M. X est au pouvoir, le chômage diminue. Dois-je voter pour lui aux prochaines
élections ? (Le chômage est lié à un grand nombre de facteurs très complexes, une simple corrélation est donc
insuffisante pour démontrer que les actions de ce parti sont la cause de cette diminution. Il y a probablement un
grand nombre de causes.)
⋆ Je traînais un gros rhume depuis 3 jours, j’ai pris une tisane de camomille et le lendemain, j’allais mieux. La camomille
m’a-t-elle guérie ? Ou bien est-ce j’aurais guéri de la même façon sans prendre de tisane, parce qu’un rhume se soigne
généralement tout seul en 3 jours ?

Bien entendu, un corrélation peut donner des indices, interroger. Mais il ne s’agit en aucun cas d’un fait suffisant pour
démontrer un lien de causes à effets. Pourtant, le raccourcit est rapide, instinctif, très largement utilisé dans les médias, et
parfois très dangereux.
Une corrélation et une causalité sont deux objets distincts. Deux événements peuvent être corrélés sans pour autant avoir
des rapports de cause à effet car d’autres variables pourraient être la cause des variations de x et de y.
Considérons par exemple l’affirmation suivante due à Coluche :
«Quand on est malade, il ne faut surtout pas aller à l’hôpital : la probabilité de mourir dans un lit d’hôpital est
10 fois plus grande que dans son lit à la maison».

3. ou Cum hoc, ergo propter hoc : avec cela, donc à cause de cela.
4. ou Post hoc, ergo propter hoc : après cela, donc à cause de cela

300 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

Or, on ne meurt pas plus parce qu’on est dans un lit d’hôpital, mais on y est parce qu’on est malade, et quand on est malade
la probabilité de mourir est plus grande.

Un autre exemple : une étude anglaise a prouvé que les gens habitant près de pylônes à haute tension étaient significative-
ment plus souvent malades que le reste de la population. Est-ce la faute du courant électrique ? Ce n’est pas évident parce
qu’une autre étude a révélé que les habitants sous les pylônes étaient en moyenne plus pauvres et on sait la corrélation
(causalité ?) santé-pauvreté. À elle seule, cette étude ne permet pas de conclure.

Il en va ainsi des corrélations délinquance et origine ethnique : même à supposer qu’elles soient vraies, elles ne démontrent
pas le rapport de cause à effet ; il peut se faire que la pauvreté, voire la détresse, soient liées à des discriminations ethniques,
c’est alors cette misère qui est une cause possible de délinquance.

Démontrer une théorie avec seulement des statistiques peut être trompeur. Souvent la théorie préexiste et les chiffres sont
ensuite utilisés pour la conforter «scientifiquement».

La corrélation relie les données et c’est ce que les big data brassent à très grosse échelle aujourd’hui. Ils accumulent
une somme considérable de données et ils croisent tout ça en fonction de ce que l’on veut faire dire. Cependant, pour
déterminer la nature du lien de causalité entre plusieurs éléments, c’est plus complexe. La théorie doit avoir un pouvoir
explicatif, ne serait-ce que pour savoir dans quel sens lire les corrélations si jamais un lien de causalité existe. Il est par
exemple maintenant bien établi qu’historiquement les variations de température sont étroitement liées aux variations de
concentration de gaz carbonique dans l’atmosphère. Mais c’est la théorie qui permet de dire si c’est le réchauffement qui
crée l’excès de gaz carbonique, ou l’inverse.

8.7. Exercices

Exercice 8.1 (Série univariée)


Une classe a été divisée en deux groupes de TP : le groupe TP1 de n 1 = 10 étudiants et le groupe TP2 de n 2 = 4 étudiants.
Lors d’un contrôle noté sur 5, les étudiants du groupe TP1 ont reçu les notes 4, 1, 3, 3, 4, 2, 3, 5, 3, 4 tandis que ceux du
groupe TP2 ont reçu les notes 4, 4, 4 et 5.
Pour chaque groupe κ, calculer la moyenne, le mode et la médiane des notes.
Calculer ensuite la moyenne, le mode et la médiane des notes de la classe.

Correction
Pour le groupe TP1 on note u = (1, 2, 3, 3, 3, 3, 4, 4, 4, 5) (dans l’ordre croissante) ce qui donne le tableau des fréquences

Note Effectif Fréquence


(Nombre d’étudiants) (Proportion d’étudiants)
1 1 1/10
2 1 1/10
3 4 4/10
4 3 3/10
5 1 1/10
P P
= 10 =1

Le mode est 3 (c’est la classe la plus importante). La moyenne vaut

1
ū = (1 + 2 + 3 + 3 + 3 + 3 + 4 + 4 + 4 + 5) = 3.2
10
soit encore, à partir du tableau,
1
ū = (1 × 1 + 2 × 1 + 3 × 4 + 4 × 3 + 5 × 1) = 3.2
10
Comme on a un nombre pair d’éléments (10), la médiane vaut
u5 + u6
M (u) = = 3.
2

© 2020-2021 G. Faccanoni 301


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

Pour le groupe TP2 on note v = (4, 4, 4, 5) (dans l’ordre croissante) ce qui donne le tableau des fréquences

Note Effectif Fréquence


(Nombre d’étudiants) (Proportion d’étudiants)
1 0 0/10
2 0 0/10
3 0 0/10
4 3 3/10
5 1 1/10
P P
=4 =1

Le mode est 4 (c’est la classe la plus importante). La moyenne vaut

1
v̄ = (4 + 4 + 4 + 5) = 4.25
4
soit encore, à partir du tableau,
1
v̄ = (1 × 0 + 2 × 0 + 3 × 0 + 4 × 3 + 5 × 1) = 4.25
4
Comme on a un nombre pair d’éléments (4), la médiane vaut
v2 + v3
M (v) = = 4.
2

Pour la classe fusion des deux groupes de TP, on note x = (1, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5) (dans l’ordre croissante) ce qui donne
le tableau des fréquences
Note Effectif Fréquence
(Nombre d’étudiants) (Proportion d’étudiants)
1 1 1/14
2 1 1/14
3 4 4/14
4 6 6/14
5 2 2/14
P P
= 14 =1
Le mode est 4 (c’est la classe la plus importante). La moyenne vaut

1 49
x̄ = (1 × 1 + 2 × 1 + 3 × 4 + 4 × 6 + 5 × 2) = = 3.5
14 14
soit encore, d’après la propriété sur la fusion de données,

n 1 ū + n 2 v̄ 10 × 3.2 + 4 × 4.25 49
x̄ = = = = 3.5
n1 + n2 10 + 4 14

Comme on a un nombre pair d’éléments (14), la médiane vaut


x7 + x8
M (x) = = 4.
2

Exercice 8.2 (Covariance)


Calculer la covariance dans les cas suivants :
1. {(1, 1), (−1, −1)}
2. {(−1, 1), (1, −1)}
3. {(1, 1), (−1, −1), (−1, 1), (1, −1)}

Correction
1×1+(−1)×(−1)
1. On a x = (1, −1) et y = (1, −1) donc x̄ = ȳ = 0 et C(x, y) = 2 − 0 = 1 : les points sont alignés et la pente est
positive.
(−1)×1+1×(−1)
2. On a x = (−1, 1) et y = (1, −1) donc x̄ = ȳ = 0 et C(x, y) = 2 − 0 = −1 : les points sont alignés et la pente est
négative.

302 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

1×1+(−1)×(−1)+(−1)×1+1×(−1)
3. On a x = (1, −1, −1, 1) et y = (1, −1, 1, −1) donc x̄ = ȳ = 0 et C(x, y) = 4 − 0 = 0 : il n’y a pas de
corrélation.

Exercice 8.3 (Régression linéaire) y


Calculer les droites de meilleur approximation de l’en- 9
8
semble de points suivant : 7
6
x 1 3 4 6 8 9 11 14 5
4
y 1 2 4 4 5 7 8 9 3
2
ainsi que leurs coefficients de corrélation. 1
0 1 2 3 4 5 6 7 8 9 1011121314 x

Correction
Nous avons une série statistique double avec une population d’effectif n = 8.
Pour calculer la droite de régression de y par rapport à x on calcule les quantités suivantes :

1 Xn 56
x̄ = xk = =7
n k=1 8
1 Xn 40
ȳ = yk = =5
n k=1 8
1 Xn 33
V (x) = x k2 − x̄2 =
n k=1 2
1 Xn 21
C (x, y) = x k y k − x̄ȳ =
n k=1 2
C (x, y) 7
γ1 = =
V (x) 11
6
γ0 = ȳ − γ1 x̄ =
11
1 X n
V (y) = y 2 − ȳ2 = 7
n k=1 k
r
C (x, y) 21
r (x, y) = p = > 0.97
V (x)V (y) 22

6 7
La droite cherchée a donc pour équation y = γ0 + γ1 x = 11 + 11 x avec une forte corrélation (mais cela ne dit rien sur la
causalité entre les deux quantités !).
xx=[1,3,4,6,8,9,11,14]
yy=[1,2,4,4,5,7,8,9]

n = length(xx)
moy_x = mean(xx) %sum(xx)/n
moy_y = mean(yy) %sum(yy)/n
var_x = var(xx,1) %sum(xx.^2)/n-moy_x^2
var_y = var(yy,1) %sum(yy.^2)/n-moy_y^2
cov_xy = cov(xx,yy,1) %sum(xx.*yy)/n-moy_x*moy_y
gamma_1 = cov_xy/var_x
gamma_0 = moy_y-gamma_1*moy_x
r_xy = cov_xy / sqrt(var_x*var_y)

Pour calculer la droite de régression de x par rapport à y on calcule les quantités suivantes :

21
C (y, x) = C (x, y) =
2
′ C (y, x) 3
γ1 = =
V (y) 2
1
γ′0 = x̄ − γ′1 ȳ = −
2

© 2020-2021 G. Faccanoni 303


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

La droite cherchée a donc pour équation x = γ′0 + γ′1 y = − 12 + 32 y, soit encore y = 31 + 23 x.


7 3 21 2
On voit que γ1 γ′1 = 11 2 = 22 = r .

Exercice 8.4 (Régression linéaire) y


Calculer les droites de meilleur approximation de l’en- 8
7
semble de points suivant : 6
5
x 3 5 6 8 9 11 4
3
y 2 3 4 6 5 8 2
1
ainsi que leurs coefficients de corrélation. 0 1 2 3 4 5 6 7 8 9 1011 x

Correction
Nous avons une série statistique double avec une population d’effectif n = 6.
Pour calculer la droite de régression de y par rapport à x on calcule les quantités suivantes :

1 Xn 42
x̄ = xk = =7
n k=1 6
1 Xn 28 14
ȳ = yk = =
n k=1 6 3
1 Xn 336
V (x) = x 2 − x̄2 = − 49 = 7
n k=1 k 6
1 Xn 226 14
C (x, y) = x k y k − x̄ȳ = −7 =5
n k=1 6 3
C (x, y) 5
γ1 = =
V (x) 7
1
γ0 = ȳ − γ1 x̄ = −
3
1 Xn 154 142 77 × 3 − 142 35
V (y) = y k2 − ȳ2 = − = =
n k=1 6 9 9 9
C (x, y) 3 p
r (x, y) = p = 5 > 0.9
V (x)V (y) 7

La droite cherchée a donc pour équation y = γ0 + γ1 x = − 13 + 57 x avec une forte corrélation (mais cela ne dit rien sur la
causalité entre les deux quantités !).
xx=[3,5,6,8,9,11]
yy=[2,3,4,6,5,8]

n = length(xx)
moy_x = mean(xx) %sum(xx)/n
moy_y = mean(yy) %sum(yy)/n
var_x = var(xx,1) %sum(xx.^2)/n-moy_x^2
var_y = var(yy,1) %sum(yy.^2)/n-moy_y^2
cov_xy = cov(xx,yy,1) %sum(xx.*yy)/n-moy_x*moy_y
gamma_1 = cov_xy/var_x
gamma_0 = moy_y-gamma_1*moy_x
r_xy = cov_xy / sqrt(var_x*var_y)
Pour calculer la droite de régression de x par rapport à y on calcule les quantités suivantes :

C (y, x) = C (x, y) = 5
C (y, x) 9
γ′1 = =
V (y) 7
γ′0 = x̄ − γ′1 ȳ = 1

La droite cherchée a donc pour équation x = γ′0 + γ′1 y = 1 + 79 y, soit encore y = − 79 + 79 x.


On voit que γ1 γ′1 = 57 79 = 45 2
49 = r .

304 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

Exercice 8.5
Soit le tableau de la distribution conjointe de deux variables quantitatives x et y :

B
β1 = 0 β2 = 1
A
α1 = −1 n 1,1 = a n 1,2 = 10
α2 = 1 n 2,1 = 10 n 2,2 = b

1. Calculer les distributions marginales et écrire le tableau des fréquences de chaque couple et des fréquences
marginales.
2. Calculer les distributions conditionnelles.
3. Calculer le coefficient de corrélation linéaire.

Correction
Ce tableau indique qu’on observe 10 fois le couple (1, 0), 10 fois le couple (−1, 1), a fois le couple (−1, 0) et b fois le couple
(1, 1). On a donc au mieux p × q = 4 points distincts (αi , β j ) chacun avec un poids n i , j :

(10) (b)
1

(a) (10)
−1 0 1 α

Si a = b = 0, alors on a seulement deux observations différentes sur deux variables (10 fois l’observation (1, 0) et 10 fois
l’observation (−1, 1)) : r = −1 (la droite de régression linéaire passe forcement par ces deux points et la pente est négative : la
droite a pour équation y = − 12 (x − 1)).
Si a = b = 10, il y a indépendance puisque les profils en lignes sont identiques donc r = 0 (la droite a pour équation y = 12 ).
Si a = 0 et b = 10, il n’y a ni indépendance (r ̸= 0), ni liaison linéaire (r ̸= ±1). Même comportement si si a = 10 et b = 0.
Vérifions ce raisonnement par les calculs.
1. Distributions marginales
⋆ Effectifs marginaux de αi :

n 1,· = 10 + a n 2,· = 10 + b
Pp=2
et on a i =1 n i ,· = 20 + a + b = n. Autrement dit, indépendamment de l’observation de y, on observe 10 + a fois
la valeur x = α1 = −1 et 10 + b fois la valeur x = α2 = 1.

(a + 10) (10 + b)
−1 0 1 α

⋆ Effectifs marginaux de β j :

n ·,1 = 10 + a n ·,2 = 10 + b
Pq=2
et on a j =1 n ·, j = 20 + a + b = n. Autrement dit, indépendamment de l’observation de x, on observe 10 + a fois
la valeur y = β1 = 0 et 10 + b fois la valeur y = β2 = 1.
β

(10 + b)
1

(a + 10)
0

© 2020-2021 G. Faccanoni 305


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

⋆ Tableau des effectifs

B
β1 = 0 β2 = 1 Effectif marginal de αi
A
α1 = −1 n 1,1 = a n 1,2 = 10 n 1,· = 10 + a
α2 = 1 n 2,1 = 10 n 2,2 = b n 2,· = 10 + b
Effectif marginal de β j n ·,1 = 10 + a n ·,2 = 10 + b n = 20 + a + b

Tableau des fréquences

B
β1 = 0 β2 = 1 Fréquence marginale de αi
A
a 10 10+a
α1 = −1 f 1,1 = 20+a+b f 1,2 = 20+a+b f 1,· = 20+a+b
10 b 10+b
α2 = 1 f 2,1 = 20+a+b f 2,2 = 20+a+b f 2,· = 20+a+b
10+a 10+b
Fréquence marginale de β j f ·,1 = 20+a+b f ·,2 = 20+a+b 1

2. Distributions conditionnelles :
⋆ De x sachant y :
⋆ De x sachant β1 (on ne regarde que la colonne y = β1 ) :

fi , j a
f i =1| j =1 = = , fréquence conditionnelle de α1 sachant β1
f ·, j 10 + a
fi , j 10
f i =2| j =1 = = , fréquence conditionnelle de α2 sachant β1
f ·, j 10 + a
10 − a
x̄ j =1 = f i =1| j =1 α1 + f i =2| j =1 α2 =
10 + a

⋆ De x sachant β2 (on ne regarde que la colonne y = β2 ) :

fi , j 10
f i =1| j =2 = = , fréquence conditionnelle de α1 sachant β2
f ·, j 10 + b
fi , j b
f i =2| j =2 = = , fréquence conditionnelle de α2 sachant β2
f ·, j 10 + b
10 − b
x̄ j =2 = f i =1| j =2 α1 + f i =2| j =2 α2 =
10 + b

⋆ Tableau des profiles en colonne f i | j :

Profiles en colonne f i | j

B
β1 = 0 β2 = 1
A
a 10
α1 = −1 f 1|1 = 10+a f 1|2 = 10+b
10 b
α2 = 1 f 2|1 = 10+a f 2|2 = 10+b

1 1

⋆ De y sachant x :
⋆ De y sachant α1 (on ne regarde que la ligne x = α1 ) :

fi , j a
f j =1|i =1 = = , fréquence conditionnelle de β1 sachant α1
f i ,· 10 + a
fi , j 10
f j =2|i =1 = = , fréquence conditionnelle de β2 sachant α1
f i ,· 10 + a

306 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Chapitre 8. Statistique descriptive

10
ȳ i =1 = f j =1|i =1 β1 + f j =2|i =1 β2 =
10 + a

⋆ De y sachant α2 (on ne regarde que la ligne x = α2 ) :

fi , j 10
f j =1|i =2 = = , fréquence conditionnelle de β1 sachant α2
f i ,· 10 + b
fi , j b
f j =2|i =2 = = , fréquence conditionnelle de β2 sachant α2
f i ,· 10 + b
b
ȳ i =2 = f j =1|i =2 β1 + f j =2|i =2 β2 =
10 + b

⋆ Tableau des profiles en ligne f j |i :

Profiles en ligne f j |i
B
β1 = 0 β2 = 1
A
a 10
α1 = −1 f 1|1 = 10+a f 1|2 = 10+a 1
10 b
α2 = 1 f 2|1 = 10+b f 2|2 = 10+b 1

3. Calcul du coefficient de corrélation linéaire r :


p
1X (10 + a) × (−1) + (10 + b) × (1) b−a
x̄ = n i ,· αi = = ,
n i =1 20 + a + b 20 + a + b
q
1 X (10 + a) × (0) + (10 + b) × (1) 10 + b
ȳ = n ·, j β j = = ,
n j =1 20 + a + b 20 + a + b
p
1X (10 + a) × (−1)2 + (10 + b) × (1)2 (b − a)2 (b − a)2 ab + 10a + 10b + 100
V (x) = n i ,· α2i − x̄2 = − 2
= 1− 2
=4 ,
n i =1 20 + a + b (20 + a + b) (20 + a + b) (20 + a + b)2
q
(10 + a) × (0)2 + (10 + b) × (1)2 (10 + b)2 10 + b 10 + b
µ ¶
1 X 2 2 (a + 10)(b + 10)
V (y) = n ·, j βi − ȳ = − = 1− = ,
n j =1 20 + a + b (20 + a + b)2 20 + a + b 20 + a + b (20 + a + b)2
p X q
1X a × (−1) × (0) + 10 × (−1) × (1) + 10 × (1) × (0) + b × (1) × (1) (b − a)(10 + b)
C (x, y) = n i , j αi β j − x̄ȳ = −
n i =1 j =1 20 + a + b (20 + a + b)2
ab − 100
=2 ,
(20 + a + b)2
C (x, y) ab − 100
r (x, y) = p =p p p .
V (x)V (y) a + 10 b + 10 ab + 10a + 10b + 100

En particulier on voit que si a = b = 0 alors r = −1, si a = 0 et b = 10 alors r = − 12 , si a = b = 10 alors r = 0.


De plus, si on calcule les coefficients γ1 de la régression linéaire de y en fonction de x (pente de la droite) on trouve :

C (x, y) 1 ab − 100
γ1 = =
V (x) 2 ab + 10a + 10b + 100
a−10 −5
Si a = b alors γ1 = 2(a+10) : en particulier, si a = b = 10 alors γ1 = 0. Si a = 0 alors γ1 = b+10 < 0 : en particulier, si b = 0
alors γ1 = − 12 . Même calcul si b = 0 car γ1 = −5
a+10 < 0.

Exercice 8.6
Reproduire les graphes de l’exemple à la page 8.13.

Correction

xx_A=[10.0 8.0 13.0 9.0 11.0 14.0 6.0 4.0 12.0 7.0 5.0];
yy_A=[8.04 6.95 7.58 8.81 8.33 9.96 7.24 4.26 10.84 4.82 5.68];

© 2020-2021 G. Faccanoni 307


Chapitre 8. Statistique descriptive Mis à jour le Mercredi 31 mai 2023

xx_B=[10.0 8.0 13.0 9.0 11.0 14.0 6.0 4.0 12.0 7.0 5.0];
yy_B=[9.14 8.14 8.74 8.77 9.26 8.10 6.13 3.10 9.13 7.26 4.74];
xx_C=[10.0 8.0 13.0 9.0 11.0 14.0 6.0 4.0 12.0 7.0 5.0];
yy_C=[7.46 6.77 12.74 7.11 7.81 8.84 6.08 5.39 8.15 6.42 5.73];
xx_D=[8.0 8.0 8.0 8.0 8.0 8.0 8.0 8.0 19.0 8.0 8.0];
yy_D=[6.58 5.76 7.71 8.84 8.47 7.04 5.25 5.56 12.50 7.91 6.89];

T=[xx_A’,yy_A’,xx_B’,yy_B’,xx_C’,yy_C’,xx_D’,yy_D’];
Cas=["A","B","C","D"];

for i=1:4
CAS = Cas(i)
xx = T(:,2*i-1);
yy = T(:,2*i);
r_xy = cov(xx,yy,1) / sqrt(var(xx,1)*var(yy,1))
subplot(2,2,i)
hold on
plot(xx,yy,’*’)
gamma_1 = cov(xx,yy,1)/var(xx,1)
gamma_0 = mean(yy)-gamma_1*mean(xx)
d=@(x)gamma_0+gamma_1*x;
plot(xx,d(xx),’r:’)
title(CAS)
hold off
end

Exercice 8.7
Reproduire les graphes de l’exemple à la page 8.14.

Correction

XX=[ 1.3 0.9 1 0.6 3 0.05 2 0.25 0.05 0.5 0.05 2.1 0.6 0.3 1.1 1.7 9 1.3 0.05 5 1.6];
YY=[439 650 150 34 651 11.5 230 7 11.5 434 31 255 35 385 228 383 1708 120 154 1172 3 ];

for i=1:2
if i==1
xx=XX;
yy=YY;
else % on enleve les deux valeurs extremes
[val,idx]=max(YY);
xx=XX([1:idx-1,idx+1:end]);
yy=YY([1:idx-1,idx+1:end]);
[val,idx]=max(yy);
xx=xx([1:idx-1,idx+1:end]);
yy=yy([1:idx-1,idx+1:end]);
end
figure()
disp(’’)
moy_x = mean(xx)
moy_y = mean(yy)
sigma_x = std(xx,1)
sigma_y = std(yy,1)
r_xy = cov(xx,yy,1) / sqrt(var(xx,1)*var(yy,1))
hold on
plot(xx,yy,’*’)
gamma_1 = cov(xx,yy,1)/var(xx,1)
gamma_0 = mean(yy)-gamma_1*mean(xx)
d=@(x)gamma_0+gamma_1*x;
plot(xx,d(xx),’r:’)
hold off
end

308 © 2020-2021 G. Faccanoni


ANNEXE A

Introduction à Octave/Matlab

Nous illustrerons les concepts vu en cours à l’aide de MATLAB (MATrix LABoratory), un environnement de programmation
et de visualisation. Nous utiliserons aussi GNU Octave (en abrégé Octave) qui est un logiciel libre distribué sous licence
GNU GPL. Octave est un interpréteur de haut niveau, compatible la plupart du temps avec MATLAB et possédant la majeure
partie de ses fonctionnalités numériques. Dans ce chapitre, nous proposerons une introduction rapide à MATLAB et Octave.
Le but de ce chapitre est de fournir suffisamment d’informations pour pouvoir tester les méthodes numériques vues dans
ce polycopié. Il n’est ni un manuel de Octave/Matlab ni une initiation à la programmation.

A.1. Les environnements MATLAB et Octave


MATLAB et Octave sont des environnements intégrés pour le Calcul Scientifique et la visualisation. Ils sont écrits principale-
ment en langage C et C++. MATLAB est distribué par la société The MathWorks (voir le site [Link]). Son nom
vient de MATrix LABoratory, car il a été initialement développé pour le calcul matriciel. Octave, aussi connu sous le nom
de GNU Octave (voir le site [Link]), est un logiciel distribué gratuitement. Vous pouvez le redistribuer et/ou le
modifier selon les termes de la licence GNU General Public License (GPL) publiée par la Free Software Foundation.
Il existe des différences entre MATLAB et Octave, au niveau des environnements, des langages de programmation ou des
toolboxes (collections de fonctions dédiées à un usage spécifique). Cependant, leur niveau de compatibilité est suffisant pour
exécuter la plupart des programmes de ce cours indifféremment avec l’un ou l’autre. Quand ce n’est pas le cas – parce que
les commandes n’ont pas la même syntaxe, parce qu’elles fonctionnent différemment ou encore parce qu’elles n’existent
pas dans l’un des deux programmes – nous l’indiquons et expliquons comment procéder.
Nous utiliserons souvent dans la suite l’expression “commande MATLAB” : dans ce contexte, MATLAB doit être compris
comme le langage utilisé par les deux programmes MATLAB et Octave. De même que MATLAB a ses toolboxes, Octave
possède un vaste ensemble de fonctions disponibles à travers le projet Octave-forge. Ce dépôt de fonctions ne cesse de
s’enrichir dans tous les domaines. Certaines fonctions que nous utilisons dans ce polycopié ne font pas partie du noyau
d’Octave, toutefois, elles peuvent être téléchargées sur le site [Link].

A.2. Installation(s) et version(s) en ligne


⋆ La documentation et les sources d’Octave peuvent être téléchargées à l’adresse [Link]
octave/.
La version en ligne d’Octave est disponible ici [Link]
⋆ L’université de Toulon propose aux étudiants la possibilité de le télécharger et de l’installer sur leur poste MATLAB.
Toutes les informations sont ici [Link]
Par ailleurs, la version on line de MATLAB est disponible ici [Link]
html Les étudiants et enseignants de l’université de Toulon peuvent s’y connecter avec leurs paramètres universitaires.
Une fois qu’on a installé MATLAB ou Octave, on peut accéder à l’environnement de travail, caractérisé par le symbole
d’invite de commande >> sous MATLAB et octave:1> sous Octave. Il représente le prompt : cette marque visuelle
indique que le logiciel est prêt à lire une commande. Il suffit de saisir à la suite une instruction puis d’appuyer sur la touche
«Entrée».

A.3. Premiers pas


Lorsqu’on démarre Octave, une nouvelle fenêtre va s’ouvrir, c’est la fenêtre principale qui contient trois onglets : l’onglet
“Fenêtre de commandes”, l’onglet “Éditeur” et l’onglet “Documentation”.

309
Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

A.3.1. Fenêtre de commandes : mode interactif


L’onglet “Fenêtre de commandes” permet d’entrer directement des commandes et dès qu’on écrit une commande, Octave
l’exécute et renvoie instantanément le résultat. L’invite de commande se compose de deux chevrons (>>) et représente le
prompt : cette marque visuelle indique qu’Octave est prêt à lire une commande. Il suffit de saisir à la suite une instruction
puis d’appuyer sur la touche «Entrée». La console Octave fonctionne comme une simple calculatrice : on peut saisir une
expression dont la valeur est renvoyée dès qu’on presse la touche «Entrée». Voici un exemple de résolution d’un système
d’équations linéaires : 1
>> A = [2 1 0; -1 2 2; 0 1 4];
>> b = [1; 2; 3];
>> soln = A\b
soln =
0.25000
0.50000
0.62500

Ce mode interactif est très pratique pour rapidement tester des instructions et directement voir leurs résultats. Son
utilisation reste néanmoins limitée à des programmes de quelques instructions. En effet, devoir à chaque fois retaper toutes
les instructions s’avérera vite pénible.
Si on ferme Octave et qu’on le relance, comment faire en sorte que l’ordinateur se souvienne de ce que nous avons tapé ? On
ne peut pas sauvegarder directement ce qui se trouve dans la onglet “Fenêtre de commandes”, parce que cela comprendrait
à la fois les commandes tapées et les réponses du système. Il faut alors avoir préalablement écrit un fichier avec uniquement
les commandes qu’on a tapées et l’avoir enregistré sur l’ordinateur avec l’extension .m. Une fois cela fait, on demandera à
Octave de lire ce fichier et exécuter son contenu, instruction par instruction, comme si on les avait tapées l’une après l’autre
dans la Fenêtre de commandes. Ainsi plus tard on pourra ouvrir ce fichier et lancer Octave sans avoir à retaper toutes les
commandes. Passons alors à l’onglet “Éditeur”.

A.3.2. Éditeur : mode script


On voit qu’il n’y a rien dans cette nouvelle fenêtre (pas d’en-tête comme dans la “Fenêtre de commandes”). Ce qui veut
dire que ce fichier est uniquement pour les commandes : Octave n’interviendra pas avec ses réponses lorsque on écrira le
programme et ce tant que on ne le lui demandera pas. Ayant sauvé le programme dans un fichier avec l’extension .m, pour
le faire tourner et afficher les résultats dans la “Fenêtre de commandes” il suffira d’appuyer sur la touche «F5». Si on a fait
une faute de frappe, Octave le remarquera et demandera de corriger.
Maintenant qu’on a sauvé le programme, on est capable de le recharger.
Un fichier de script contient des instructions qui sont lues et exécutées séquentiellement par l’interpréteur d’Octave. Ce
sont obligatoirement des fichiers au format texte. Copier par exemple les lignes suivantes dans un fichier appelé first.m
A = [2 1 0; -1 2 2; 0 1 4];
b = [1; 2; 3];
soln = A\b
Appuyer sur la touche «F5», cliquer sur “Changer de répertoire” et regarder le résultat dans l’onglet “Fenêtre de commandes”. 2

A.4. Notions de base


A.4.1. Variables et affectation
Une variable peut être vue comme une boîte représentant un emplacement en mémoire qui permet de stocker une valeur et
à qui on a donné un nom afin de facilement l’identifier (boîte ← valeur) :

>> x=1 >> x=[2 5] >> x=’c’


x = 1 x = x = c
2 5

³ 2 1 0 ´ µ x1 ¶ ³ 1 ´
1. Ces instructions calculent la solution du système linéaire −1 2 2 x2 = 2 . Noter l’usage des points-virgules à la fin de certaines instructions du
0 14 x3 3
fichier : ils permettent d’éviter que les résultats de ces instructions soit affiché à l’écran pendant l’exécution du script.
2. Sinon, si ce fichier se trouve dans le répertoire courant d’Octave, pour l’exécuter on peut juste taper son nom (sans l’extension) sur la ligne de
commande d’Octave : >> first
On peut aussi l’exécuter au moyen de la commande source qui prend en argument le nom du fichier ou son chemin d’accès (complet ou relatif au
répertoire courant). Par exemple : >> source("Bureau/TP1/first.m")

310 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

L’affectation x=[2 5] crée une association entre le nom x et [2, 5]


le vecteur [2, 5] : la boîte de nom x contient le vecteur [2, 5].

Il faut bien prendre garde au fait que l’instruction d’affectation (=) n’a pas la même signification que le symbole d’égalité
(=) en mathématiques (ceci explique pourquoi l’affectation de 1 à x, qu’en Octave s’écrit x = 1, en algorithmique se note
souvent x ← 1).
Une fois une variable initialisée, on peut modifier sa valeur en utilisant de nouveau l’opérateur d’affectation (=). La valeur
actuelle de la variable est remplacée par la nouvelle valeur qu’on lui affecte. Dans l’exemple précédent, on initialise une
variable à la valeur 1 et on remplace ensuite sa valeur par le vecteur [1, 2].
Il est très important de donner un nom clair et précis aux variables. Par exemple, avec des noms bien choisis, on comprend
tout de suite ce que calcule le code suivant :
base = 8
hauteur = 3
aire = base * hauteur / 2

Octave distingue les majuscules des minuscules. Ainsi mavariable, Mavariable et MAVARIABLE sont des variables diffé-
rentes.
Les noms de variables peuvent être non seulement des lettres, mais aussi des mots ; ils peuvent contenir des chiffres (à
condition toutefois de ne pas commencer par un chiffre), ainsi que certains caractères spéciaux comme le tiret bas «_»
(appelé underscore en anglais). Cependant, certains mots sont réservés :

ans Nom pour les résultats


eps Le plus petit nombre tel que 1+eps>1
inf ∞
NaN Not a number
i ou j i
pi π

>> 5/0
warning: division by zero
ans = Inf
>> 0/0
warning: division by zero
ans = NaN
>> 5*NaN % Most operations with NaN result in NaN
ans = NaN
>> NaN==NaN % Different NaN’s are not equal!
ans = 0
>> eps
ans = 2.2204e-16

Si on écrit une instruction sans affectation, le résultat sera affecté à la variable ans.
>> [4,3]
ans =

4 3
>> ’Ciao’
ans = Ciao

Pour effacer la mémoire et désaffecter toutes les variables, utiliser la fonction clear all.

A.5. Commentaires
Le symbole % indique le début d’un commentaire : tous les caractères entre % et la fin de la ligne sont ignorés par
l’interpréteur.
Dans l’éditeur d’Octave, pour commenter plusieurs lignes en même temps, les sélectionner et appuyer sur les touches
«Ctrl+R». Pour dé-commenter plusieurs lignes en même temps, les sélectionner et appuyer sur les touches «Ctrl+Maj+R».

© 2020-2021 G. Faccanoni 311


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

A.6. Affichage
Lors de l’affectation d’une variable, le résultat de l’affectation sera affiché ; le symbole ; supprime cet affichage.

>> a=[1,2]
a =

1 2

>> a=[4,3];
>> ’Ciao’
ans = Ciao
Pour afficher seulement le contenu d’une variable utiliser la fonction disp (en effet, si on écrit juste le nom de la variable,
on affichera aussi le nom de la variable)
>> a=[4,3];
>> disp(a)
4 3
>> a
a =

4 3
>> disp(’Ciao’)
Ciao
Pour nettoyer la fenêtre de commandes, utiliser la fonction clc.

A.7. Opérations arithmétiques


Dans Octave on a les opérations arithmétiques usuelles :

+ Addition
- Soustraction
* Multiplication
/ Division
ˆ Exponentiation

Quelques exemples :

>> a = 100 >> c = a-b >> a^b


a = 100 c = 83 ans = 1.0000e+34
>> b = 17 >> a/b
b = 17 ans = 5.8824

Les opérateurs arithmétiques possèdent chacun une priorité qui définit dans quel ordre les opérations sont effectuées. Par
exemple, lorsqu’on écrit 1 + 2 * 3, la multiplication va se faire avant l’addition. Le calcul qui sera effectué est donc 1 +
(2 * 3). Dans l’ordre, l’opérateur d’exponentiation est le premier exécuté, viennent ensuite les opérateurs *, /, // et %, et
enfin les opérateurs + et -.
Lorsqu’une expression contient plusieurs opérations de même priorité, ils sont évalués de gauche à droite. Ainsi, lorsqu’on
écrit 1 - 2 - 3, le calcul qui sera effectué est (1 - 2) - 3. En cas de doutes, vous pouvez toujours utiliser des parenthèses
pour rendre explicite l’ordre d’évaluation de vos expressions arithmétiques.
Il existe aussi les opérateurs augmentés :

a += b équivaut à a = a+b
a -= b équivaut à a = a-b
a *= b équivaut à a = a*b
a /= b équivaut à a = a/b
a ˆ = b équivaut à a = aˆ b

A.8. Division euclidienne


Lorsqu’on divise un nombre entier D (appelé dividende) par un autre nombre entier d (appelé diviseur), on obtient deux
résultats : un quotient q et un reste r , tels que D = qd + r (avec r < d ). La valeur q est le résultat de la division entière et

312 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

la valeur r celui du reste de cette division. Par exemple, si on divise 17 par 5, on obtient un quotient de 3 et un reste de 2
puisque 17 = 3×5+2. Ces deux opérateurs sont très utilisés dans plusieurs situations précises. Par exemple, pour déterminer
si un nombre entier est pair ou impair, il suffit de regarder le reste de la division entière par deux. Le nombre est pair s’il
est nul et est impair s’il vaut 1. Une autre situation où ces opérateurs sont utiles concerne les calculs de temps. Si on a un
nombre de secondes et qu’on souhaite le décomposer en minutes et secondes, il suffit de faire la division par 60. Le quotient
sera le nombre de minutes et le reste le nombre de secondes restant. Par exemple, 175 secondes correspond à 175//60=2
minutes et 175%60=55 secondes.
>> q=fix(9/4)
q = 2
>> % Reste de la division euclidienne de 9 par 4
>> r=rem(9,4)
r = 1
>>
>> r=mod(9,4) % 9 modulo 4
r = 1
>> q=fix(175/60)
q = 2
>> r=rem(175,60)
r = 55

A.9. Matrices
Pour définir une matrice on doit écrire ses éléments de la première à la dernière ligne, en utilisant le caractère ; pour
séparer les lignes (ou aller à la ligne). Notons que le symbole ; a deux fonctions : il supprime l’affichage d’un résultat
intermédiaire et il sépare les lignes d’une matrice. Par exemple, la commande
>> A = [ 1 2 3; 4 5 6]

ou la commande
>> A = [ 1 2 3
4 5 6]

donnent
A =
1 2 3
4 5 6

c’est-à-dire, une matrice 2 × 3 dont les éléments sont indiqués ci-dessus.


Un vecteur colonne est une matrice 1 × n, un vecteur ligne est une matrice n × 1 :
>> b = [1 2 3]
b =
1 2 3

>> b = [1; 2; 3]
b =
1
2
3

L’opérateur transposition s’obtient par la commande ’ :

>> b = [1 2 3]’
b =
1
2
3

En Octave, les éléments d’une matrice sont indexés à partir de 1. Pour extraire les éléments d’une matrice on utilise la
commande A(i,j) où i et j sont la ligne et la colonne respectivement. On peut extraire une sous-matrice en déclarant
l’indice de début (inclus) et l’indice de fin (inclus), séparés par deux-points A(i:j), ou encore une sous-matrice en
déclarant l’indice de début (inclus), l’indice de fin (inclus) et le pas, séparés par des deux-points A(i:j:k). On peut même
utiliser un pas négatif. Cette opération est connue sous le nom de slicing (en anglais).

© 2020-2021 G. Faccanoni 313


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

A(2,3) % element A_{23}


A(:,3) % vecteur colonne [A_{13};...;A_{n3}]
A(1:4,3) % [A_{13};...A_{43}] premieres 4 lignes du vecteur colonne [A_{13};...A_{n3}]
A(1,:) % vecteur ligne [A_{11},...,A_{1n}]
A(2,3:end) % [A_{23},...,A_{2n}] vecteur ligne

diag(A) % vecteur colonne [A_{11};...;A_{nn}] contenant la diagonale de A

Voici des exemples :


>> A = [8 1 6; 3 5 7; 4 9 2]
A =
8 1 6
3 5 7
4 9 2

>> A(2,3) % Element a la ligne 2 colonne 3


ans = 7
>> A(:,2) % Toutes les lignes, deuxieme colonne
ans =
1
5
9

>> A(2:3,2:3) % Sous-matrice 2 x 2


ans =
5 7
9 2

>> A(3:-1:1,:) % les lignes de la derniere a la premiere, toutes les colonnes


ans =
4 9 2
3 5 7
8 1 6

ATTENTION
Dans Octave les indices commencent à 1, ainsi A(1,:) indique la première ligne, A(2,:) la deuxième etc.

A.9.1. Matrices particulières


Construction de matrices particulières :
① La commande zeros(m,n) construit la matrice rectangulaire nulle O, i.e. celle dont tous les éléments ai j sont nuls
pour i = 1, . . . , m et j = 1, . . . , n.
La commande zeros(n) est un raccourci pour zeros(n,n).
② La commande ones(m,n) construit une matrice rectangulaire dont les éléments ai j sont égaux à 1 pour i = 1, . . . , m
et j = 1, . . . , n.
La commande ones(n) est un raccourci pour ones(n,n).
③ La commande eye(m,n) renvoie une matrice rectangulaire dont les éléments valent 0 exceptés ceux de la diagonale
principale qui valent 1.
La commande eye(n) (qui est un raccourci pour eye(n,n)) renvoie une matrice carrée de dimension n appelée
matrice identité et notée I.
④ La commande A=[] définit une matrice vide.
⑤ La commande diag(v) où v est un vecteur de n éléments renvoie une matrice carré de taille n dont les éléments
valent 0 exceptés ceux de la diagonale principale qui valent v.
⑥ Soit v un vecteur de n composantes. La commande diag(v) renvoie une matrice diagonale carrée de dimension n
qui contient v sur la diagonale principale ; la commande diag(v,1) renvoie une matrice carrée de dimension n + 1
qui contient v sur la sur-diagonale principale etc.
Notons que diag(ones(1,4)) équivaut à eye(4).

314 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

>> Z=zeros(2,3) >> O=ones(3,2) >> E=eye(2,5) >> A=[] >> F=diag(v) >> G=diag(v,1)
Z = O = E = A = [](0x0) F = G =
0 0 0 1 1 Diagonal Matrix Diagonal Matrix 0 1 0 0
0 0 0 1 1 1 0 0 0 0 >> v=[1 2 3] 1 0 0 0 0 2 0
1 1 0 1 0 0 0 v = 0 2 0 0 0 0 3
1 2 3 0 0 3 0 0 0 0

Construction de vecteurs :
① x=[debut:pas:fin]
x fin −x debut x N −x 1
② x=linspace(debut,fin,N) (x a N points donc le pas h est N −1 = N −1 )

x = [-5 : 0.25 : 1] % x(k)= -5 + 0.25*(k-1), tant que k<=(fin-debut)/N


y = linspace(-5, 1, 25) % y(k)= -5 + h*(k-1), k=1,2,...,N avec h=(fin-debut)/(N-1)

Notons que la première instruction ne garantit pas que le dernier point soit pris, cela dépend du pas choisi (et des erreurs
d’arrondis) :
x = [0 : 0.4 : 1] % output : x=0.00000 0.40000 0.80000

Dans la première instructions on peut utiliser un pas négatif :


x = [1 : -0.4 : 0] % output : x=1.00000 0.60000 0.20000

Dimensions :
A=eye(3,4);
[r,c]=size(A) % r=nb de lignes et c=nb de colonnes de A
x=[0:10];
n=length(x) % n=nb d’elements de x

A.9.2. Opérations entre matrices


Opérations sur les matrices (lorsque les dimensions sont compatibles) :
⋆ Somme C = A + B, i.e. Ci j = Ai j + Bi j : C=A+B
⋆ Produit C = AB, i.e. Ci j = k=1 Ai k + Bk j : C=A*B NB il s’agit du produit matriciel !
P

⋆ Division à droite C = AB−1 : C=A/B


⋆ Division à gauche C = A−1 B : C=A\B (si B est un vecteur colonne alors C est un vecteur colonne solution du système
linéaire AC = B)
⋆ Élévation à la puissance C = AAA : C=A^3
⋆ Calcul du déterminant (si la matrice est carrée) : det(A)
⋆ Calcul de la matrice inverse (si la matrice est inversible) : inv(A)

>> A=[1 2 3; 4 5 6] >> B=ones(2,3) >> C=[1 2; 3 4; 5 >> D=eye(3,2) >> E=A(1:2,1:2)
A = B = 6] D = E =
1 2 3 1 1 1 C = Diagonal Matrix 1 2
4 5 6 1 1 1 1 2 1 0 4 5
3 4 0 1
5 6 0 0

>> A+B
ans =
2 3 4
5 6 7

>> A*C
ans =
22 28
49 64

>> A/B

© 2020-2021 G. Faccanoni 315


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

ans =
1.00000 1.00000
2.50000 2.50000

>> b=[28;64]
b =
28
64

>> A\b
ans =
2.0000
4.0000
6.0000

>> A\B
ans =
-5.0000e-01 -5.0000e-01 -5.0000e-01
8.3267e-17 8.3267e-17 8.3267e-17
5.0000e-01 5.0000e-01 5.0000e-01

>> E^2
ans =
9 12
24 33
Quand on tente d’effectuer des opérations entre matrices de dimensions incompatibles on obtient un message d’erreur.
>> A+C
error: operator +: nonconformant arguments (op1 is 2x3, op2 is 3x2)

A.9.3. Opérations pointées


Quand il s’agit des opérations impliquant des multiplication (donc le produit mais aussi la division et l’élévation à la
puissance), la multiplication de deux matrices, avec les notations habituelles, ne signifie pas la multiplication élément
par élément mais la multiplication au sens mathématique du produit matriciel. C’est pour cela qu’Octave utilise deux
opérateurs distincts pour représenter la multiplication matricielle * et la multiplication élément par élément .* Le point
placé avant l’opérateur indique que l’opération est effectuée élément par élément. Les autres opérations de ce type sont la
division à droite et l’élévation à la puissance :
⋆ Produit Ci j = Ai j Bi j : C=A.*B NB il s’agit du produit d’Hadamard et non pas du produit matriciel
⋆ Division Ci j = Ai j /Bi j : C=A./B
⋆ Élévation à la puissance Ci j = A3i j : C=A.^3
Ces opérations sont à la base de la “vectorisation” car elles permettent le remplacement d’un boucle par une opération
matricielle pointée qui est généralement beaucoup plus performante.
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>> B=[0 2 0; 0 0 1]
B =
0 2 0
0 0 1
>> A.*B
ans =
0 4 0
0 0 6
>> A*B
error: operator *: nonconformant arguments (op1 is 2x3, op2 is 2x3)

A.9.4. Opérateurs de comparaison et connecteurs logiques


Les opérateurs de comparaison renvoient 1 si la condition est vérifiée, 0 sinon. Ces opérateurs sont

316 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

On écrit Ça signifie
< <
> >
<= ≤
>= ≥
== =
~= ̸=

Bien distinguer l’instruction d’affectation = du symbole de comparaison ==.

ATTENTION
Les opérateurs de comparaison agissent élément par élément, ainsi lorsqu’on les applique à une matrice le résultat est une
matrice qui contient que des 0 ou 1 (parfois appelée “masque”). Par exemple
>> A = [1 2 3; 4 -5 6]; B = [7 8 9; 0 1 2];
>> A>B
ans =
0 0 0
1 0 1

On peut utiliser un masque pour remplacer seulement les éléments qui satisfont une conditions :
>> A = [1 -2 3; 4 -5 6];
>> A(A<0)=-100
A =
1 -100 3
4 -100 6

Les masques sont à la base de la “vectorisation” car permettent le remplacement d’un boucle avec des conditions par une
opération matricielle qui est généralement beaucoup plus performante.

E XEMPLE (M ASQUE )
Étant donné trois vecteurs :
⋆ hotels : une liste de noms d’hôtels
⋆ ratings : leurs notes dans une ville
⋆ cutoff : la note minimale
on souhaite afficher les noms des hôtels ayant une note supérieure ou égale au seuil.
>> hotels =["CityLights";"SeaView";"MarketPlace";"ResortSpa";"Nightingale";"Clubadub";"SkylineView";"
MarinaBay";"ComfortFirst";"VillageValley"]; % vecteur colonne
>> ratings = [7.2;8.7;6.5;9.3;4.3;6.9;8.8;5.9;7.4;9.1]; % vecteur colonne
>> cutoff = 8;
>> good = hotels(ratings>=cutoff,:) % NB ":" pour selectionner toute la chaine de caracteres
good =

SeaView
ResortSpa
SkylineView
VillageValley

Pour combiner des conditions complexes (par exemple x > −2 et x 2 < 5), on peut combiner les opérateurs de comparaison
avec les connecteurs logiques :

On écrit Ça signifie
& et
| ou
~ non

Par exemple
>> (A > B) | (B > 5)
ans =
1 1 1
1 0 1

© 2020-2021 G. Faccanoni 317


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

A.10. Fonctions
A.10.1. Fonctions prédéfinies
De très nombreuses fonctions sont déjà disponibles dans Octave/Matlab. Voici quelques exemples de fonction mathéma-
tique :
abs(-5)

sin(pi)
cos(pi)
tan(pi)

factorial(5) % output : 120

r=rem(11,3)

round(3.7) % output : 4
round(3.3) % output : 3
round(-3.7) % output : -4
round(-3.3) % output : -3

fix(3.7) % output : 3
fix(3.3) % output : 3
fix(-3.7) % output : -3
fix(-3.3) % output : -3

floor(3.7) % output : 3
floor(3.3) % output : 3
floor(-3.7) % output : -4
floor(-3.3) % output : -4

ceil(3.7) % output : 4
ceil(3.3) % output : 4
ceil(-3.7) % output : -3
ceil(-3.3) % output : -3

En générale les fonctions prédéfinies sont vectorisées, autrement dit si on applique la fonction à une matrice, elle renvoie
une matrice de la même taille en ayant appliqué la fonction à chaque élément.
x=[1:5]

sqrt(x) % output 1.0000 1.4142 1.7321 2.0000 2.2361


exp(x) % output 2.7183 7.3891 20.0855 54.5982 148.4132
log(x) % output 0.00000 0.69315 1.09861 1.38629 1.60944
log10(x) % output 0.00000 0.30103 0.47712 0.60206 0.69897
log2(x) % output 0.00000 1.00000 1.58496 2.00000 2.32193

ismember(2,x) % output 1
ismember(11,x) % output 0

Certaines fonctions sont spécifiques aux matrices :


A=[1 2; 3 4];
det(A)
inv(A)
trace(A)
size(A) % dimensions de A
x=[1 2 3];
length(x) % longueur d’un vecteur
numel(x) % nombre d’elements d’un vecteur

A.10.2. Définition d’une fonction


On peut définir nos propres fonctions au moyen de la commande function et les utiliser dans plusieurs scripts.

318 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

function [y1,...,yN] = myfunc(x1,...,xM)


instruction_1
instruction_2
...
[y1,...,yN] = ...
end
La structure type d’une fonction est la suivante :
⋆ on utilise la commande function dans laquelle on indique les arguments (x1,...,xM) et la valeur de retour
[y1,...,yN]
⋆ cette déclaration est suivie du corps de la définition qui est un bloc d’instructions à exécuter et se termine par le
mot-clé end ou endfunction

ATTENTION
Pour éviter de surcharger une fonction déjà définie dans Matlab/Octave, prendre l’habitude d’appeler ses fonctions par
my...

Voir aussi [Link]

Fichiers fonctions
Par convention, chaque définition de fonction est stockée dans un fichier séparé qui porte le nom de la fonction suivi de
l’extension .m Ces fichiers s’appellent des fichiers de fonction. Notez que c’est la même extension que les fichiers de scripts
mais, de plus, il faut absolument que le fichier s’appelle comme la fonction qu’il contient.
La structure type d’un fichier de fonction est la suivante :
⋆ toute ligne commençant par un # ou un % est considérée comme un commentaire
⋆ les premières lignes du fichier sont des commentaires qui décrivent la syntaxe de la fonction. Ces lignes seront
affichées si on utilise la commande help myfunc
⋆ la fonction elle-même.

ATTENTION
Pour éviter toute confusion, utilisez le même nom pour le fichier de fonction et la première fonction du fichier. Matlab/Octave
associe votre programme au nom du fichier, pas au nom de la fonction. Les fichiers de script ne peuvent pas avoir le même
nom qu’une fonction du fichier.

Remarque (Sous-fonctions)
Un fichier de fonction peut en réalité contenir plusieurs fonctions déclarées au moyen de la commande function mais
seule la première définition est accessible depuis un script. Les autres définitions concernent des fonctions annexes (on dit
parfois des sous-fonctions) qui ne peuvent être utilisées que dans la définition de la fonction principale.

Voici un exemple qui prend en entrée un vecteur de valeurs et renvoie la moyenne et la déviation standard :

Fichier stat.m Script


% Cette fonction calcule la moyenne et la deviation values = [12.7, 45.4, 98.9, 26.6, 53.1];
% standard d’un vecteur x [average,stdeviation] = stat(values)
function [m,s] = stat(x)
n = length(x);
m = sum(x)/n;
s = sqrt(sum((x-m).^2/n));
end

p fonction qui calcule l’aire d’un triangle en fonction des longueurs a, b et c des côtés grâce à
À titre d’exemple, écrivons une
la formule de Héron : Aire = p(p − a)(p − b)(p − c) où p = (a + b + c)/2 est le demi-périmètre. On crée pour cela un fichier
au format texte appelé heron.m contenant les instructions suivantes
% Calcule l’aire s d’un triangle par la formule de Heron.
% a, b, c sont les longueurs des aretes.
function s = heron(a, b, c)
p = (a+b+c)/2;
s = sqrt(p*(p-a)*(p-b)*(p-c));
endfunction
La définition donnée ci-dessus peut être testée directement en chargeant le fichier heron.m avec la commande source et
en invoquant la fonction sur la ligne de commande. Par exemple :

© 2020-2021 G. Faccanoni 319


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

>> source("Bureau/TP1/heron.m")
>> heron(3,5,4)
ans = 6

Fonctions locales dans un script - Matlab VS Octave


Dans les dernières versions de Matlab et Octave, on peut écrire les fonctions directement dans un script. En ajoutant des
fonctions locales vous pouvez éviter de créer et de gérer des fichiers de fonctions séparés. Cependant, la syntaxe est
différente entre Matlab et Octave.
Matlab, depuis la version R2016b. Les fonctions locales peuvent apparaître dans n’importe quel ordre mais doivent
être placées à la fin du fichier, après le code du script. Voici un exemple :
x = 1:10;
n = length(x);
avg = mymean(x,n)
med = mymedian(x,n)

function a = mymean(v,n)
% MYMEAN Local function that calculates mean of array.
a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Local function that calculates median of array.
w = sort(v);
if rem(n,2) == 1
m = w((n + 1)/2);
else
m = (w(n/2) + w(n/2 + 1))/2;
end
end

Octave. Les fonctions locales peuvent apparaître dans n’importe quel ordre mais doivent être placées avant le code du
script et après l’instruction 1; Voici un exemple :

% Prevent Octave from thinking that this is a function file:


1;

function a = mymean(v,n)
% MYMEAN Local function that calculates mean of array.
a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Local function that calculates median of array.
w = sort(v);
if rem(n,2) == 1
m = w((n + 1)/2);
else
m = (w(n/2) + w(n/2 + 1))/2;
end
end

x = 1:10;
n = length(x);
avg = mymean(x,n)
med = mymedian(x,n)

A.10.3. Fonctions anonymes (lambda functions)


Les fonctions anonymes permettent de définir une fonction directement dans le script, à condition que la fonction se
compose d’une seule instruction. La syntaxe usuelle d’une fonction anonyme est
fun = @(arg1, arg2,...,argn) [expr] ; % crochets facultatifs si une seule expression

320 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Nous utiliserons les fonctions anonymes surtout pour écrire directement la fonction dans le fichier de script sans créer un
fichier séparé en étant compatibles à la fois avec Matlab et avec Octave.
Une application courante des fonctions anonymes consiste à définir une expression mathématique.
f = @(x) 2*x ; % equivaut a definir f(x)=2x
f(2) % on evalue f(2) et on obtient 4

Cela permet entre autre de calculer rapidement une solution approchée d’une équation :
% on veut resoudre x=cos(x)
f = @(x) x.^2-2 ; % on pose f(x)=x^2-2
% fsolve( fct dont on cherche un zero , un point pas trop eloigne de la solution )
fsolve( f, 1 )
fsolve( f,-1 )

La contrainte d’utiliser une seule instruction n’empêche pas de calculer plusieurs résultats (car on peut renvoyer un vecteur)
ni d’écrire des boucles (grâce à l’utilisation des instructions pointées) ni des conditions (grâce à l’utilisation de masques, par
exemple pour la définition d’une fonction par morceaux, comme on verra à la page 325).

A.11. Graphes de fonctions R → R


Pour tracer le graphe d’une fonction f : [a, b] → R, il faut tout d’abord générer une liste de points x i où évaluer la fonction f ,
puis la liste des valeurs f (x i ) et enfin, avec la fonction plot, Octave reliera entre eux les points (x i , f (x i )) par des segments.
Plus les points sont nombreux, plus le graphe est proche du graphe de la fonction f .
Pour générer les points x i on peut utiliser
⋆ soit l’instruction linspace(a,b,n) qui construit la liste de n éléments

b−a
[a, a + h, a + 2h, . . . , b = a + nh] avec h =
n −1

x=linspace(1,5,5)
x =
1 2 3 4 5

⋆ soit l’instruction [a:h:b] qui construit la liste de n = E ( b−a


h ) + 1 éléments

[a, a + h, a + 2h, . . . , a + nh]

Dans ce cas, attention au dernier terme : b peut ne pas être pris en compte.
Voici un exemple avec une sinusoïde (en utilisant la fonction prédéfinie sin) :
x = linspace(-5,5,101); # x = [-5:0.1:5] with 101 elements
y = sin(x); # operation is broadcasted to all elements of the array
plot(x,y)

On obtient une courbe sur laquelle on peut zoomer, modifier les marges et sauvegarder dans différents formats.

Si la fonction n’est pas prédéfinie, il est bonne pratique de la définir pour qu’elle opère composante par composante
lorsqu’on lui passe un vecteur ou une matrice. Les opérations /, * et \^ agissant sur elle doivent être remplacées par les
opérations point correspondantes ./, .* et \.^ qui opèrent composante par composante.
Par exemple, on se propose de tracer la fonction

f : [−2; 2] → R
1
x 7→
1 + x2
Suivant la façon de définir la fonction, on pourra utiliser l’une des trois méthodes suivantes.
Méthode 1. En utilisant une fonction anonyme.
Dans un script ou dans la prompt on écrit les instructions suivantes :
f=@(x)[1./(1+x.^2)] % declaration de la fonction
x=[-2:0.5:2];
y=f(x); % evaluation en plusieurs points
plot(x,y) % affichage des points (x_i,y_i)

© 2020-2021 G. Faccanoni 321


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

Méthode 2. En utilisant une fonction locale.


Dans un script on écrit les instructions suivantes (attention : syntaxe différente selon qu’on utilise Matlab ou
Octave) :

Matlab Octave
x=[-2:0.5:2]; 1;
y=f(x); % evaluation en plusieurs points
plot(x,y) % affichage des points (x_i,y_i) function y=f(x)
y=1./(1+x.^2);
function y=f(x) end
y=1./(1+x.^2);
end x=[-2:0.5:2];
y=f(x); % evaluation en plusieurs points
plot(x,y) % affichage des points (x_i,y_i)

Méthode 3. En utilisant un fichier fonction.


On utilise deux fichiers :

3.1. Dans le fichier f.m on écrit la fonction informatique suivante

function y=f(x)
y=1./(1+x.^2);
end

3.2. Dans un script ou dans la prompt on écrit

x=[-2:0.5:2];
y=f(x); % evaluation en plusieurs points
plot(x,y) % affichage des points (x_i,y_i)

A.11.1. Plusieurs courbes sur le même repère


On peut tracer plusieurs courbes sur le même repère. Par défaut, MATLAB/Octave efface la figure avant chaque commande
de traçage plot. Vous pouvez tracer plusieurs lignes soit en écrivant plusieurs courbes dans une même instruction plot ou
à l’aide de la commande de mise en attente hold on. Tant que vous n’utilisez pas de suspension (hold off) ou que vous
ne fermez pas la fenêtre, tous les tracés apparaissent dans la fenêtre de la figure actuelle.
Par exemple, dans la figure suivante, on a tracé la même fonction : la courbe bleu correspond à la grille la plus grossière, la
courbe rouge correspond à la grille la plus fine :

a = linspace(-5,5,5); % a = [-5,-3,-1,1,3,5]
fa = sin(a);
b = linspace(-5,5,10); % b = [-5,-4,-3,...,5]
fb = sin(b);
c = linspace(-5,5,101); % c = [-5,-4.9,-4.8,...,5]
fc = sin(c);
plot(a,fa,b,fb,c,fc)
% la derniere ligne peut etre remplacee par
% hold on
% plot(a,fa)
% plot(b,fb)
% plot(c,fc)
% hold off

On peut spécifier la couleur et le type de trait, changer les étiquettes des axes, donner un titre, ajouter une grille, une légende
etc.
Par exemple, dans le code ci-dessous "r-" indique que la première courbe est à tracer en rouge (red) avec un trait continu,
et "g." que la deuxième est à tracer en vert (green) avec des points.

322 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

linestyle= color= marker=


- solid line r red . points
– dashed line g green , pixel
: dotted line b blue o filled circles
-. dash-dot line c cyan v triangle down
m magenta ^ triangle up
y yellow > triangle right
w white < triangle left symbols
k black * star
+ plus
s square
p pentagon
x x
X x filled
d thin diamond
D diamond

TABLE A.1. – Quelques options de plot

x = linspace(-5,5,101); # x = [-5,-4.9,-4.8,...,5] with


101 elements
y1 = sin(x); # operation is broadcasted to all elements of
the array
y2 = cos(x);
plot(x,y1,"r-",x,y2,"g.")
legend([’sinus’;’cosinus’])
xlabel(’abscisses’)
ylabel(’ordonnees’)
title(’Comparaison de sin(x) et cos(x)’)
grid

Voir la table A.1 et la documentation de Matlab pour connaître les autres options.

A.11.2. Plusieurs “fenêtres” graphiques

Avec figure() on génère une nouvelle fenêtres graphique :

x = [-pi:0.05*pi:pi];
figure(1)
plot(x, sin(x), ’r’)
figure(2)
plot(x, cos(x), ’g’)

A.11.3. Plusieurs repères dans la même fenêtre

La fonction subplot(x,y,z) subdivise la fenêtre sous forme d’une matrice (x,y) et chaque case est numérotée, z étant le
numéro de la case où afficher le graphe. La numérotation se fait de gauche à droite, puis de haut en bas, en commençant
par 1.

© 2020-2021 G. Faccanoni 323


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

x = [-pi:0.05*pi:pi];

subplot(4,3,1)
plot(x, sin(x), ’r’)

subplot(4,3,5)
plot(x, cos(x), ’g’)

subplot(4,3,9)
plot(x, x.*x, ’b’)

subplot(4,3,12)
plot(x, exp(-x.*x), ’m’)

E XEMPLE
Dans le code suivant on voit comment tracer plusieurs courbes dans un même graphique (avec légende), plusieurs graphe
sur une même figure et plusieurs figures.
figure(1)
x=[-2:0.5:2];

subplot(2,3,2)
plot(x,x,’r-’,x,exp(x),’b*-’)
legend([’y=x’;’y=e^x’])
subplot(2,3,4)
plot(x,x.^2)
title(’y=x^2’)
subplot(2,3,5)
plot(x,x.^3)
xlabel(’Axe x’)
subplot(2,3,6)
plot(x,sqrt(x))

figure(2)
x=linspace(0.1,exp(2),100);
plot(x,log(x));

A.12. Structure conditionnelle


Supposons vouloir calculer la valeur y = f (x) d’un nombre x selon la règle suivante :


 x si x ≤ −5,


 100 si − 5 < x ≤ 0,
f (x) =
 x2
 si 0 < x < 10,


x −2 sinon.

On a besoin d’une instruction qui opère une disjonction de cas. En Octave il s’agit de l’instruction de choix introduite par le
mot-clé if. La syntaxe complète est la suivante :
if condition_1
instruction_1.1
instruction_1.2
...
elseif condition_2
instruction_2.1
instruction_2.2
...
...

324 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

else
instruction_n.1
instruction_n.2
...
end
où condition_1, condition_2. . . représentent des ensembles d’instructions dont la valeur est 1 ou 0 (on les obtient en gé-
néral en utilisant les opérateurs de comparaison). La première condition condition_i ayant la valeur 1 entraîne l’exécution
des instructions instruction_i.1, instruction_i.2. . . Si toutes les conditions sont 0, les instructions instruction_n
.1, instruction_n.2. . . sont exécutées. Les blocs elseif et else sont optionnels.
Pour l’exemple donné, la fonction (vectorisée) peut s’écrire comme suit :
function y=f1(x)
n=length(x);
for i=1:n
if x(i)<=-5
y(i)=x(i);
elseif x(i)<=0
y(i)=100;
elseif x(i)<10
y(i)=x(i)^2;
else
y(i)=x(i)-2;
endif
endfor
endfunction
La même fonction peut aussi s’écrire comme suit :
f2 = @(x) [ x.*(x<=-5) + 100.*(x>-5).*(x<=0) + (x.^2).*(x>0).*(x<10) + (x-2).*(x>=10) ];
Pour vérifier qu’on a bien la même fonction on compare le graphe des deux fonctions :
xx=[-7:0.1:12];
yy1=f1(xx);
yy2=f2(xx);
plot(xx,yy1,’r’,xx,yy2,’b.’)
Voici un exemple pour établir si un nombre est positif
a=-1.5;

if a < 0
disp(’negative’)
elseif a > 0
disp(’positive’)
else
disp(sign = ’zero’)
end
Voici un exemple pour établir si un nombre est compris entre deux valeurs :
x = 10;
minVal = 2;
maxVal = 6;

if (x >= minVal) && (x <= maxVal) % equivaut a (x >= minVal) .* (x <= maxVal)
disp(’Value within specified range.’)
elseif (x > maxVal)
disp(’Value exceeds maximum value.’)
else
disp(’Value is below minimum value.’)
end
Voir aussi [Link]

E XEMPLE
Étant donné deux matrices d’entrée A et B, vérifier si on peut calculer le produit AB. Si c’est le cas, créez une matrice C qui
contient le produit AB, sinon, C doit contenir une chaîne de caractère contenant un message d’erreur.

© 2020-2021 G. Faccanoni 325


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

function C = in_prod(A,B)
[rA,cA]=size(A);
[rB,cB]=size(B);
if cA==rB
C = A*B;
else
C = "Have you checked the inner dimensions?"
end
end

# TESTS
C=in_prod([1 2],[2;3])
C=in_prod(-5,100)
C=in_prod([1 2;3 4],[5;6])
C=in_prod([1 2 3; 4 5 6],[2 5;3 6])

A.13. Structures itératives


Les structures de répétition se classent en deux catégories : les répétitions inconditionnelles pour lesquelles le bloc d’instruc-
tions est à répéter un nombre donné de fois et les répétitions conditionnelles pour lesquelles le bloc d’instructions est à
répéter autant de fois qu’une condition est vérifiée.

A.13.1. Répétition for


Lorsque l’on souhaite répéter un bloc d’instructions un nombre déterminé de fois, on peut utiliser un compteur actif,
c’est-à-dire une variable qui compte le nombre de répétitions et conditionne la sortie de la boucle.
La syntaxe de la commande for est schématiquement
for var = expression
instruction_1
instruction_2
end

expression peut être un vecteur ou une matrice. Par exemple, le code suivant calcule les 12 premières valeurs de la suite
de Fibonacci définie par la relation de récurrence u n = u n−1 + u n−2 avec pour valeurs initiales u 1 = u 2 = 1 :

n = 12; n = 12;
u = ones(1, n); # allocation u = [1,1];
for i = 3:n for i = 3:n
u(i) = u(i-1)+u(i-2); u = [ u , u(end)+u(end-1) ]; # concatenation
end end
disp(u) disp(u)

Dans les deux cas le résultat affiché est


1 1 2 3 5 8 13 21 34 55 89 144

Dans l’exemple suivant on calcul la somme des n premiers entiers (et on vérifie qu’on a bien n(n + 1)/2) :
n=100;
s=0;
for i=1:n
s += i;
end
s
n*(n+1)/2

Bien sur, dans ce cas il est préférable d’écrire


sum(1:100)

Il est possible d’imbriquer des boucles, c’est-à-dire que dans le bloc d’une boucle, on utilise une nouvelle boucle.

326 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

for x = [10,20,30,40,50] % for x = [Link]


for y=[3,7]
disp(x+y)
end
end

Dans ce petit programme x vaut d’abord 10, y prend la valeur 3 puis la valeur 7 (le programme affiche donc d’abord 13, puis
17). Ensuite x = 20 et y vaut de nouveau 3 puis 7 (le programme affiche donc ensuite 23, puis 27).
Voir aussi [Link]

A.13.2. Boucle while : répétition conditionnelle


While est la traduction de “tant que. . .”. Concrètement, la boucle s’exécutera tant qu’une condition est remplie (donc tant
qu’elle renverra la valeur 1). Le constructeur while a la forme générale suivante :
while condition
instruction_1
instruction_2
end
où condition représente des ensembles d’instructions dont la valeur est 1 ou 0. Tant que la condition condition a la
valeur 1, on exécute les instructions instruction_i.

ATTENTION
Si la condition ne devient jamais fausse, le bloc d’instructions est répété indéfiniment et le programme ne se termine pas.

Voici un exemple pour créer la liste 1, 12 , 13 , 14 :


£ ¤

nMax = 4;
n = 1;
a = [];
while n<=nMax
a=[a,1/n]; # Append element to list
n += 1;
end
disp(a)

Dans l’exemple suivant on calcul la somme des n premiers entiers tant que la somme ne dépasse pas 100 :
s=0;
n=0;
while s<100
n += 1;
s += n;
end
disp(n-1)
disp(s-n)
% En effet avec le dernier n on depasse 100

A.13.3. Vectorisation, i.e. optimisation des performances


La plupart du temps on manipule des vecteurs et des matrices. Les opérateurs et les fonctions élémentaires sont conçus pour
favoriser ce type de manipulation et, de manière plus générale, pour permettre la vectorisation des programmes. Certes, le
langage Octave contient des instructions conditionnelles, des boucles et la programmation récursive, mais la vectorisation
permet de limiter le recours à ces fonctionnalités qui ne sont jamais très efficaces dans le cas d’un langage interprété. Les
surcoûts d’interprétation peuvent être très pénalisants par rapport à ce que ferait un programme C ou FORTRAN compilé
lorsque l’on effectue des calculs numériques. Il faut donc veiller à réduire autant que possible le travail d’interprétation en
vectorisant les programmes.
Dans les exemples suivant, la fonction tic s’utilise avec la fonction toc pour mesurer le temps écoulé. La fonction tic
enregistre l’heure actuelle et la fonction toc utilise la valeur enregistrée pour calculer le temps écoulé.

E XEMPLE
Quasiment toutes les fonctions prédéfinies sont vectorisées. Voici un exemple avec la fonction sin.

© 2020-2021 G. Faccanoni 327


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

Le code est significativement plus lent que


n = 100000;
xx = linspace(0,2*pi,n); n = 100000;
yy = zeros(length(xx)); xx = linspace(0,2*pi,n);
tic tic
for i = 1:n yy = sin(xx);
yy(i) = sin(xx(i)); toc
end;
toc

E XEMPLE
1
Pour calculer 10000
P
n=1 n 2 , on peut utiliser les trois codes suivants, le deuxième étant significativement plus rapide :

n=1:10^7; n=1:10^7; n=1:10^7;

tic tic tic


s=0; s=sum(1./n.^2) s=(1./n)*(1./n)’
for i = n, toc toc
s+=1/i^2;
end;
s
toc

Un exemple de sorties obtenues :


⋆ avec le premier script : Elapsed time is 12.7138 seconds.
⋆ avec le deuxième script : Elapsed time is 0.116321 seconds.
⋆ avec le troisième script : Elapsed time is 0.098047 seconds.

A.14. Polynômes
Soit Rn [x] l’ensemble des polynômes de degré inférieur ou égale à n, n ∈ N. Tout polynôme de cet espace vectoriel s’écrit de
manière unique comme
n
ai x i = a0 + a1 x + · · · + an x n , où a i ∈ R pour i = 0, . . . n.
X
p n (x) =
i =0

Les n + 1 valeurs réels a 0 , a 1 , . . . , a n sont appelés les coordonnées de p n dans la base canonique 3 de Rn [x] et on peut les
stocker dans un vecteur p :
p = coord(p n , C n ) = (a n , a n−1 , . . . , a 2 , a 1 , a 0 ) ∈ Rn+1
Sous Octave le polynôme p(x) = a n x n + a n−1 x n−1 + · · · + a 1 x + a 0 ∈ Rn [x] est défini par un vecteur p de dimension n + 1
contenant les coefficients { a i }i =0,...,n rangés dans l’ordre décroissant des indices, c’est-à-dire que l’on a p(1) = a n , . . .,
p(n + 1) = a 0 . Par exemple, pour construire le polynôme p(x) = 2 − x + x 2 nous écrirons
p=[1 -1 2]

1. La commande polyval permet d’évaluer le polynôme p (la fonction polynomiale) en des points donnés. La syntaxe
est polyval(p,x) où x est une valeur numérique ou un vecteur. Dans le second cas on obtient un vecteur contenant
les valeurs de la fonction polynomiale aux différents points spécifiés dans le vecteur x. Par exemple, pour évaluer le
polynôme p(x) = 1 + 2x + 3x 2 en x = (−1, 0, 1, 2) nous écrirons
p=[3 2 1] % p(x)=1+2x+3x^2
y=polyval(p,[-1,0,1,2])

2. Utilisée avec la commande fplot, la commande polyval permet de tracer le graphe de la fonction polynomiale
sur un intervalle [xmin, xmax] donné. La syntaxe de l’instruction est (’polyval([a_n,...,a_0],x)’, [x_min,
x_max]). Par exemple, pour tracer le graphe du polynôme p(x) = 1 + 2x + 3x 2 sur l’intervalle [−2; 2] nous écrirons
fplot(’polyval([3 2 1],x)’,[-2,2])

3. La base canonique de l’espace vectoriel Rn [x] est l’ensemble C n = 1, x, x 2 , . . . , x n


© ª

328 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

3. La commande roots calcule les racines du polynôme dans C. La syntaxe est roots(p). Par exemple, pour calculer
les racines du polynôme p(x) = 1 − x 2 nous écrirons
p=[-1 0 1] % p(x)=-x^2+1
racines=roots(p)

4. La commande poly définit un polynôme à partir de ses racines r 0 , r 1 , . . . r n comme suit : p(x) = ni=0 (x −r i ). La syntaxe
Q

est poly(r) où r est un vecteur contenant ses racines. Par exemple, pour définir le polynôme p(x) = (x − 1)(x + 1)
nous écrirons
poly([1 -1])

5. Somme de deux polynômes : si les deux polynômes n’ont pas même degré, il faut ajouter des zéros en début du
polynôme de plus petit degré afin de pouvoir calculer l’addition des deux vecteurs représentatifs. Par exemple,
p=[1 2 3 4] % p(x)= 4 + 3x + 2x^2 +x^3
q=[0 4 5 6] % q(x)= 6 + 5x + 4x^2 (+0x^3)
s=p+q % s(x)=10 + 8x + 6x^2 +x^3

6. La commande conv permet de calculer le polynôme u produit de deux polynômes p et q. La syntaxe est conv(p,q).
Par exemple, pour calculer u(x) = p(x)q(x) avec p(x) = 4 + 3x + 2x 2 + x 3 et q(x) = 6 + 5x + 4x 2 nous écrirons
p=[1 2 3 4] % p(x)=4+3x+3x^2+x^3
q=[4 5 6] % q(x)=6+5x+4x^2
u=conv(p,q) % u(x)=24+38x+43x^2+28x^3+13x^4+4x^5

7. La commande deconv permet de calculer les polynômes q et r quotient et reste de la division du polynôme u par
le polynôme p. La syntaxe est conv(u,p). Par exemple, pour calculer q et r tel que u(x) = q(x)p(x) + r (x) avec
u(x) = 24 + 38x + 43x 2 + 28x 3 + 13x 4 + 4x 5 et p(x) = 4 + 3x + 2x 2 + x 3 nous écrirons
u=[4 13 28 43 38 25] % u(x)=25+38x+43x^2+28x^3+13x^4+4x^5
p=[1 2 3 4] % p(x)=4+3x+3x^2+x^3
[q,r]=deconv(u,p)

8. La commande polyder permet de calculer le polynôme d dérivée d’un polynôme p. La syntaxe est polyder(p). Par
exemple, pour calculer p ′ (x) avec p(x) = 1 + 2x + 3x 2 nous écrirons
p=[3 2 1] % p(x) =1+2x+3x^2
polyder(p) % p’(x)=2+6x

F IGURE A.1. – Échelle semi-logarithmique vs linéaire

Rx
9. La commande polyint permet de calculer le polynôme 0 p(t ) dt quiR x s’annule en 0 et qui est une primitive d’un
polynôme p. La syntaxe est polyint(p). Par exemple, pour calculer 0 p(t ) dt avec p(x) = 1 + x 2 nous écrirons

© 2020-2021 G. Faccanoni 329


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

p=[1 0 1] % p(x)=1+x^2
integral=polyint(p) % int(p,0..x)=x+x^3/3 donc integral=[1/3 0 1 0]

10. Utilisée avec la commande polyval, la commandeR polyint permet de calculer l’intégrale d’un polynôme sur un
3
intervalle [a,b] donné. Par exemple, pour calculer 0 p(t ) dt avec p(x) = 1 + x 2 nous écrirons
area=polyval(integral,3)-polyval(integral,0) % area=3+27/3-0=12

11. La commande polyfit permet de calculer le polynôme de Rm [x] de meilleure approximation au sens des moindres
carrés d’un ensemble de points. La syntaxe est polyfit(xx,yy,m) où xx et yy sont deux vecteurs de n composantes
et m le degré du polynôme cherché. Si m = n on obtient le polynôme d’interpolation. Par exemple, pour calculer
l’équation de la droite de meilleur approximation de l’ensemble { (0, 0.1), (1, 0.9), (2, 2) } nous écrirons :
xx=[0 1 2]
yy=[0.1 0.9 2]
polyfit(xx,yy,1)

Pour calculer le polynôme d’interpolation du même ensemble on pose m = 2 et on écrit :


polyfit(xx,yy,2)

12. Pour afficher le polynôme de façon naturelle il faut utiliser la fonction polyout. Par exemple,
p=[3 2 1]
polyout(p,’x’)

A.15. Exercices
Pensez à placer la commande clear all au début de vos scripts, de manière à nettoyer l’environnement de travail
(cela effacera toutes les variables en mémoire). Vous pouvez aussi utiliser la commande clc pour nettoyer la fenêtre de
commandes.

Exercice A.1
Copier les instructions suivantes dans des script files. Exécuter les script et commenter les résultats.

① Somme et produit de matrices, calcul du déter- ② La commande diag


minent et de l’inverse d’une matrice :
v=[2 5 10]
A=[1 2 3; 4 5 6] A=diag(v,-1)
B=[7 8 9; 10 11 12] v=[2]
C=[13 14; 15 16; 17 18] A=diag(v,-1)
A+B
A*C ③ Matrices triangulaires
A+C
inv(A) A =[3 1 2; -1 3 4; -2 -1 3]
det(A) L1=tril(A)
A=[1 2; 0 0] L2=tril(A,-1)
inv(A)

Exercice A.2 (Opérations élément par élément, produit scalaire, produit vectoriel)

330 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

① Copier les instructions suivantes dans un script file. ② Définir le vecteur x=[pi/6 pi/4 pi/3] et calculer
Exécuter le script et commenter les résultats. s=sin(x) et c=cos(x). En déduire tan(x) à l’aide
clear all; des vecteurs s et c.
clc; ③ Calculer la somme des nombres entiers de 1 à 500.
x = [1; 2; 3] Calculer la somme des carrés des nombres entiers
v = x.^2 de 1 à 500. Calculer la somme des nombres impaires
b = sum(x)
inférieurs ou égaux à 500. Calculer la somme des
nombres paires inférieurs ou égaux à 500.
p = x.^x

y = [4; 5; 6]
u = x.*y
w = sum(x.*y)
d = dot(x,y)
xTy = x’*y
yTx = y’*x

c = cross(x,y)

Correction
① x, y et v sont des vecteurs-colonne 3 × 1
v est le vecteur tel que v i = x i2 pour i = 1, 2, 3 : v = (1, 4, 9)T
b = x1 + x2 + x3 = 1 + 2 + 3 = 6
p est le vecteur tel que p i = (x i )xi pour i = 1, 2, 3 : p = (1, 4, 27)T
u est le vecteur tel que u i = x i y i pour i = 1, 2, 3 : u = (4, 10, 18)T
w, d , xT y et yT x sont quatre méthodes pour calculer le produit scalaire de x et y qui est égale à i y i x i = y 1 x 1 + y 2 x 2 +
P

y 3 x 3 = 4 × 1 + 5 × 2 + 6 × 3 = 32
c est le vecteur obtenu par le produit vectoriel de x et y : c = (−3, 6, −3)T
② x=[pi/6 pi/4 pi/3]
s=sin(x)
c=cos(x)
t=s./c
tan(x) % on verifie qu’on a le bon resultat

Pn n(n+1) Pn 2 n(n+1)(2n+1) PN PN
③ i =1 i = 2 i =1 i = 6 i =1 (2i − 1) = N 2 i =1 (2i ) = N (N + 1)
n=500 n=500
n=500 n=500
imp=sum([Link]n) pair=sum([Link]n)
sum([1:n]) sum([1:n].^2)
N=length([Link]n); N=length([Link]n);
n*(n+1)/2 n*(n+1)*(2*n+1)/6
N^2 N*(N+1)

Preuves sans mot


n
(2i − 1) = 1 + 3 + 5 + · · · + (2n − 1) = n 2
X
i =1
n
9
X
i = 2 × (1 + 2 + 3 + · · · + n) = n × (n + 1)
i =1 2×5−1

1 4 7
2×4−1

2 3 5
2×3−1

3 2 3
2×2−1

4 1 1
2×1−1

Remarque
Quelque somme remarquable :
n
X n(n + 1)
1. i= .
i =1 2

© 2020-2021 G. Faccanoni 331


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

n
(2i − 1) = n 2 . En effet, on remarque qu’il s’agit d’une somme télescopique :
X
2.
i =1

n n
(i 2 − (i − 1)2 ) = (12 − 02 ) + (22 − 12 ) + (32 − 22 ) + . . . (n 2 − (n − 1)2 ) = n 2 .
X X
(2i − 1) =
i =1 i =1

n
X n
X
3. (2i ) = 2 i = n(n + 1).
i =1 i =1
n n(n + 1)(2n + 1)
i2 =
X
4. . En effet,
i =1 6

n n n n n n n
(i + 1)3 = j 3 − 1 + (n + 1)3 , (i + 1)3 = i3 +3 i2 +3
X X X X X X X
i+ 1
i =1 j =1 i =1 i =1 i =1 i =1 i =1

donc
n n n n n
i2 = j 3 − 1 + (n + 1)3 − i3 −3
X X X X X
3 i− 1
i =1 j =1 i =1 i =1 i =1
n(n + 1) (n + 1) ¡ ¢ n(n + 1)(2n + 1)
= −1 + (n + 1)3 − 3 −n = 2(n + 1)2 − 3n − 2 = .
2 2 2

n ¶2
n(n + 1)
µ
3
X
5. i = . En effet,
i =1 2

n n n n n n n n
(i + 1)4 = j 4 − 1 + (n + 1)4 , (i + 1)4 = i4 +4 i3 +6 i2 +4
X X X X X X X X
i+ 1
i =1 j =1 i =1 i =1 i =1 i =1 i =1 i =1

donc
n n n n n n n
i3 = j 4 − 1 + (n + 1)4 − i4 −4 i3 −6 i2 −4
X X X X X X X
4 i− 1
i =1 j =1 i =1 i =1 i =1 i =1 i =1
n(n + 1)(2n + 1) n(n + 1)
= −1 + (n + 1)4 − 6 − n = (n + 1) (n + 1)3 − n(2n + 1) − 2n − 1
¡ ¢
−4
6 2
= (n + 1)2 (n + 1)2 − (2n + 1) = n 2 (n + 1)2 .
¡ ¢

Exercice A.3
On se propose ici d’utiliser Octave pour résoudre graphiquement des équations.

Considérons un cercle de rayon r . Si nous traçons un angle


A
t (mesuré en radians) à partir du centre du cercle, les deux B
rayons formant cet angle coupent le cercle en A et B . Nous
t
r

appelons a l’aire délimitée par la corde et l’arc AB (en bleu


r2
sur le dessin). Cette aire est donnée par a = (t − sin(t )).
2
Pour un cercle donné (c’est à dire un rayon donné), nous
choisissons une aire (partie en bleu) a. Quelle valeur de
l’angle t permet d’obtenir l’aire choisie ? Autrement dit,
connaissant a et r , nous voulons déterminer t solution de
l’équation
2a
= t − sin(t ).
r2

1. Résoudre graphiquement l’équation en traçant les courbes correspondant aux membres gauche et droit de
l’équation (pour a = 4 et r = 2). Quelle valeur de t est solution de l’équation ?
2. Comment faire pour obtenir une valeur plus précise du résultat ?

332 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Correction

© 2020-2021 G. Faccanoni 333


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

t=[0:pi/180:2*pi]; Le graphe nous dit que la solution est entre 2 et 3. On peut


rhs=t-sin(t); calculer une solution approchée comme suit :
a=4;
r=2; fsolve( @(x) 2*a/(r^2)-(x-sin(x)) , 2.5)
lhs=2*a/(r^2)*ones(size(t));
plot(t,rhs,t,lhs), grid

Exercice A.4 (Vectorisation)


Réécrire les codes suivants sans utiliser de boucles :

① [n,m]=size(a); ② n=length(b); ③ n=length(a);


for i = 1:n for i = 1:n-1 for i = 1:n-1
for j = 1:m a(i) = b(i+1) - b(i); if (a(i) > 5)
c(i,j) = a(i,j) + b(i, end a(i) -= 20
j); end
end end
end

Correction a = diff(b);
① c=a+b

② a=b(2:n)-b(1:n-1) ③ a(a>5) -= 20
soit encore

Exercice A.5 (Vectorisation)


Considérons la fonction f : R → R définie par

0
 si x < 0,


x si 0 ≤ x < 1,
f (x) =


 2−x si 1 ≤ x ≤ 2,

0 si x > 2.

Écrire et afficher cette fonction en deux manières différentes :


1. avec une instruction conditionnelle du type if ... elseif ... else non vectorisée,
2. avec une instruction conditionnelle vectorisée.

Correction
La fonction non vectorisée peut s’écrire comme suit :
function y=f1(x)
n=length(x);
for i=1:n
if x(i)<0
y(i)=0;
elseif x(i)<1
y(i)=x(i);
elseif x(i)<=2
y(i)=2-x(i);
else
y(i)=0;
endif
endfor
endfunction

La fonction vectorisée peut s’écrire comme suit :


f2 = @(x) [ 0*(x<0) + x.*(x>=0).*(x<1) + (2-x).*(x>=1).*(x<2) + 0.*(x>2) ];

On compare le graphe des deux fonctions :

334 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

xx=[-1:0.1:3];
yy1=f1(xx);
yy2=f2(xx);
plot(xx,yy1,’r’,xx,yy2,’b.’)

Exercice A.6 (Sommes, produits et algèbre linéaire pour éliminer les boucles)
Soient u =, v, w, x, y des vecteurs ligne de Rn . On se propose de calculer

n n n
w i x i2 ,
X X X
ui v i , w i xi y i .
i =1 i =1 i =1

Correction
1. Notons que ni=1 u i v i = u · vT donc
P

u = [1 2 3 4 5];
v = [3 6 8 9 10]; % dot notation
y = sum(u.*v)
% Avec une boucle
y = 0; % produit scalaire
for i=1:length(u) y = u*v’
y = y + u(i)*v(i); y = v*u’
end y=dot(u,v)
y y=dot(v,u)

Pn
2. 2
i =1 w i x i = xDw xT avec
w1 ... 0
 
 .. .. .. 
Dw =  . . . 
0 wn
donc

w = [0.1 0.25 0.12 0.45 0.98]; y


x = [9 7 11 12 8];
% dot notation
% Avec une boucle y = sum(w.*(x.^2))
y = 0;
for i = 1:length(w) % algebre lieaire
y = y + w(i)*x(i)^2; y = x*diag(w)*x’
end
Pn
3. i =1 w i x i y i = xDw yT donc

w = [0.1 0.25 0.12 0.45 0.98]; z


x = [9 7 11 12 8];
y = [2 5 3 8 0]; % dot notation
z = sum(w.*x.*y)
% Avec une boucle
z = 0; % algebre lieaire
for i=1:length(w) z = x*diag(w)*y’
z = z + w(i)*x(i)*y(i); z = y*diag(x)*w’
end z = w*diag(y)*x’

Exercice A.7
① Copier les instructions suivantes dans un script file. Exécuter le script et commenter les résultats.

A=[1 2; 4 5]; A*B A^2 A/B


B=[1 0; 1 1]; A.*B A.^2 A.\B

© 2020-2021 G. Faccanoni 335


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

② Afficher la table de multiplication par 1, . . . , 10, i.e. la matrice

1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100

Correction
① A*B calcule le produit AB = ( 3k=1 ai k bk j )1≤i , j ≤3 , A.*B calcule la matrice C = (ai j bi j )1≤i , j ≤3 .
P

>> A*B >> A.*B


ans = ans =
3 2 1 0
9 5 4 5

P3
A^2 calcule le produit AA = ( k=1
a i k a k j )1≤i , j ≤3 , A.^2 calcule la matrice C = (a i2j )1≤i , j ≤3 .

>> A^2 >> A.^2


ans = ans =
9 12 1 4
24 33 16 25

A/B calcule le produit AB−1 si B est inversible, A.\B calcule la matrice C = (ai j /bi j )1≤i , j ≤3 .

>> A/B >> A.\B


ans = ans =
-1 2 1.00000 0.00000
-1 5 0.25000 0.20000

② Avec les instructions suivantes, on construit la matrice A qui contient juste les produits, et la matrice B qui contient
aussi l’entête des lignes et colonnes :
A(:,:)=[1:10]’.*[1:10]
B(:,:)=[1,1:10]’.*[1,1:10]

Exercice A.8 (Construction de matrices)


① Écrire les instructions pour construire une matrice triangulaire supérieure de dimension 10 ayant des 2 sur la
diagonale principale et des −3 sur la seconde sur-diagonale.

2 0 −3 0 0 0 0 0 0 0
 
0 2 0 −3 0 0 0 0 0 0
 
0 0 2 0 −3 0 0 0 0 0
 
0 0 0 2 0 −3 0 0 0 0
 
0 0 0 0 2 0 −3 0 0 0
 
0 0 0 0 0 2 0 −3 0 0
 
 
0 0 0 0 0 0 2 0 −3 0
 
0 0 0 0 0 0 0 2 0 −3
 
0 0 0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 0 0 2

② Écrire les instructions permettant d’interchanger la troisième et la septième ligne de la matrice construite au

336 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

point précédent, puis les instructions permettant d’échanger la quatrième et la huitième colonne.
③ Vérifier si les vecteurs suivants de R4 sont linéairement indépendants :
v1 = [0 1 0 1]
v2 = [1 2 3 4]
v3 = [1 0 1 0]
v4 = [0 0 1 1]

④ En utilisant la commande diag, définir une matrice A de dimension 10 ayant des 2 sur la diagonale principale
et des −1 sur la sur-diagonale et sous-diagonale. Ensuite, en calculer le déterminant, les normes || · ||1 , || · ||2 et
|| · ||∞ , le rayon spectral, les valeurs propres et vecteurs propres. Vérifier enfin que V−1 AV = D où D est la matrice
diagonale qui contient les valeurs propres et V la matrice dont les colonnes sont les vecteurs propres associés.
⑤ Écrire la matrice carrée de taille n comprenant des n sur la diagonale principale, des n − 1 sur les deux lignes qui
l’encadrent, etc.
⑥ Écrire la matrice à n lignes et m colonnes dont la première colonne ne contient que des 1, la deuxième colonne
ne contient que des 2, etc. Écrire ensuite la matrice à m lignes et n colonnes dont la première ligne ne contient
que des 1, la deuxième ligne ne contient que des 2, etc.
⑦ Écrire la matrice carrée A de taille 2n + 1 comportant des 1 sur la (n + 1)ième ligne et la (n + 1)ième colonne et des 0
ailleurs.
⑧ Écrire la matrice carrée Z de taille n comportant des 1 sur la première et dernière ligne et sur la deuxième
diagonale et des 0 ailleurs.
⑨ Étant donné une liste de nombres retourner la liste obtenue en écrivant d’abord les termes de rang pair suivis
des termes de rang impair.
⑩ Écrire la matrice (n, n) dont les éléments sont 1, 2, . . . , n 2 écrits dans l’ordre habituel (sur chaque ligne, de la
gauche vers la droite, de la première à la dernière ligne).

Correction
① U=2*eye(10)+diag(-3*ones(8,1),2)

② On peut échanger les troisième et septième lignes de la matrice (sans modifier la matrice initiale) avec les instructions :
r=[1:10]
r(3)=7
r(7)=3
Ur=U(r,:)

Remarquer que le caractère : dans U(r,:) fait que toutes les colonnes de U sont parcourues dans l’ordre croissant
habituel (du premier au dernier terme).
Sinon, si on veut modifier la matrice initiale, on peut utiliser l’instruction :
U([3 7],:)=U([7 3],:)

Pour échanger les quatrième et huitième colonnes on peut écrire


c=[1:10]
c(8)=4
r(4)=8
Uc=U(:,c)

③ On peut construire la matrice A = [v1;v2;v3;v4] et utiliser le fait que les colonnes sont linéairement indépendants
ssi le déterminant de A est différent de 0, ce qui n’est pas vrai dans notre cas.
v1 = [0 1 0 1];
v2 = [1 2 3 4];
v3 = [1 0 1 0];
v4 = [0 0 1 1];
det( [v1;v2;v3;v4])
ans = 0

④ n=10;
A = 2*diag(ones(1,n))+diag(-1*ones(1,n-1),1)+diag(-1*ones(1,n-1),-1)
detA=det(A)
nrm1=norm(A,1)

© 2020-2021 G. Faccanoni 337


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

nrm2=norm(A,2)
nrminf=norm(A,inf)
X=eig(A);
rho = max(abs(X))
[V,D] = eig(A);
erreur=D-inv(V)*A*V;
norm(erreur)

⑤ En utilisant deux boucles


for i=1:n
for j=1:n
M(i,j)=n-abs(i-j);
end
end

qu’on peut écrire en version compacte


for i=1:n
M(i,1:n)=n-abs(i-[1:n]);
end

En utilisant l’instruction diag


M=diag(n*ones(1,n));
for i=2:n
M+=diag((n-i+1)*ones(1,n-i+1),i-1)+diag((n-i+1)*ones(1,n-i+1),1-i);
end

⑥ Soit n et m fixés.
A(1:n,:)=ones(n,1)*[1:m]
A’

⑦ n=5;
A=zeros(2*n+1);
A(:,n+1)=1;
A(n+1,:)=1

⑧ n=5;
A=eye(n);
A(1,:)=1;
A(n,:)=1;
A=A(:,n:-1:1)

⑨ liste=rand(1,10)
liste2=[liste([Link]nd]) liste([Link]nd])]

⑩ n=5;
M=[1:n^2];
M=reshape(M,n,n)’

Exercice A.9 (Construction de matrices, vectorisation, script et function)


1. Dans un fichier zorro.m écrire une function appelée zorro qui prend en entrée un entier n ∈ N∗ et renvoi la
matrice carrée Z de taille n comportant des 1 sur la première et dernière ligne et sur la deuxième diagonale et
des 0 ailleurs (sans utiliser de boucles).
Par exemple, pour n = 5, la commande Z=zorro(5) devra donner

1 1 1 1 1
 
0 0 0 1 0
Z=
 
0 0 1 0 0
0 1 0 0 0
1 1 1 1 1

338 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

2. Dans un fichier exercice1.m écrire un script pour tester cette fonction pour n = 1, . . . , 5.

Dans le fichier zorro.m on écrit la fonction


function A=zorro(n) Dans le fichier exercice1.m on écrit le script
Correction
A=eye(n);
for n=1:5
A(1,:)=1;
Z=zorro(n)
A(n,:)=1;
end
A=A(:,n:-1:1);
end

Exercice A.10 (Coût (en temps) d’un produit matrice-vecteur)


Exécuter les instructions suivantes et commenter :
n=10000;
step=100;
A=rand(n,n);
v=rand(n,1);
T=[];
sizeA=[];
for k=500:step:n
AA = A(1:k,1:k);
vv = v(1:k);
t = cputime;
b = AA*vv;
tt = cputime - t;
T = [T, tt];
sizeA = [sizeA,k];
end
plot(sizeA,T,’o’)

Correction
L’instruction a:step:b intervenant dans la boucle for génère tous les nombres de la forme a+step*k où k est un entier
variant de 0 à kmax, où kmax est le plus grand entier tel que a+step*kmax est plus petit que b (dans le cas considéré, a=500,
b=10000 et step=100). La commande rand(n,m) définit une matrice n × m dont les éléments sont aléatoires. Enfin, T est
le vecteur contenant les temps CPU nécessaires à chaque produit matrice-vecteur, et cputime renvoie le temps CPU (en
secondes) consommé par Octave depuis son lancement. Le temps nécessaire à l’exécution d’un programme est donc la
différence entre le temps CPU effectif et celui calculé juste avant l’exécution du programme courant, stocké dans la variable
t. La commande plot(sizeA,T,’o’), montre que le temps CPU augmente comme le carré de n l’ordre de la matrice.

Exercice A.11 (Boucle for)


Il est possible de calculer les premières décimales de π avec l’aide du hasard. On considère un carré de coté 1 et un
cercle de rayon 1 centré à l’origine :

Si on divise l’aire de la portion de disque par celle du carré on trouve π4 . Si on tiré au hasard dans le carré, on a une
probabilité de π4 que le point soit dans la portion de disque. On considère l’algorithme suivant pour approcher π :
N
on génère N couples {(x k , y k )}k=1 de nombres aléatoires dans l’intervalle [0, 1], puis on calcule le nombre m ≤ N de
ceux qui se trouvent dans le premier quart du cercle unité. π est la limite de la suite 4m/N lorsque N → +∞. Écrire un
programme pour calculer cette suite et observer comment évolue l’erreur quand N augmente.

Correction
La méthode proposée est une méthode de Monte Carlo. Elle est implémentée dans le programme suivant :
format long

N=10^4

© 2020-2021 G. Faccanoni 339


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

# On tire au hasard N points [x,y] dans [0,1[ x [0,1[


[xx,yy]=rand(N,2);
# Nombre de tirs dans le disque
m=sum( xx.^2+yy.^2<=1 );
myPi=4*m/N
err=abs(pi-myPi)
La commande rand génère une suite de nombres pseudo-aléatoires. L’instruction z <= 1 se lit de la manière suivante :
on teste si z(k)<= 1 pour chaque composante du vecteur z ; si l’inégalité est satisfaite pour la k-ème composante de z
(c’est-à-dire, si le point (x k , y k ) appartient à l’intérieur du disque unité) on donne la valeur 1, sinon on lui donne la valeur 0.
La commande sum(z <= 1) calcule la somme de toutes les composantes de ce vecteur, c’est-à-dire le nombre de points se
trouvant à l’intérieur du disque unité.
On peut réécrire le tout comme une fonction anonyme :
format long
myPi = @(N) [ 4*sum( rand(N,1).^2+rand(N,1).^2<=1 )/N ];
err=abs(pi-myPi(10^4)) % test
On exécute maintenant le programme pour différentes valeurs de N . Plus N est grand, meilleure est l’approximation de π.
Par exemple, pour N = 1000 on obtient 3.1120, tandis qu’avec N = 300000 on a 3.1406 (naturellement, comme les nombres
sont générés aléatoirement, les résultats obtenus pour une même valeur de N peuvent changer à chaque exécution).
format long
myPi = @(N) [ 4*sum( rand(N,1).^2+rand(N,1).^2<=1 )/N ];
NN=[Link];
for i=1:length(NN)
err(i)=abs(pi-myPi(NN(i)));
end
plot(NN,err)
Cette méthode n’est pas très efficace, il faut beaucoup de tirs pour obtenir le deux premières décimales de π.

Exercice A.12 (function)


Comme π vérifie
N µ
4 2 1 1

−n
π = lim
X
16 − − −
N →+∞ n=0 8n + 1 8n + 4 8n + 5 8n + 6
on peut calculer une approximation de π en sommant les N premiers termes, pour N assez grand.
⋆ Écrire une fonction pour calculer les sommes partielles de cette série (i.e. pour n = 0 . . . N avec N donné en
paramètre).
⋆ Pour quelles valeurs de N obtient-on une approximation de π aussi précise que celle fournie par la variable π ?

Correction
Pour répondre à la question on peut utiliser le script suivant :
format long

piapproche = @(v) sum( ( 4./(8*v+1) - 2./(8*v+4) - 1./(8*v+5) - 1./(8*v+6) ).*(1/16).^v );

N=0;
while abs(pi-piapproche([0:N]))>0
N+=1;
end
N
piapproche([0:N])
pi
Pour n = 10 on obtient une approximation de π qui coïncide (à la précision Octave) avec la variable interne pi d’Octave. Cet
algorithme est en effet extrêmement efficace et permet le calcul rapide de centaines de chiffres significatifs de π.

Exercice A.13
Un dispositif fournit un signal s(t ) = A sin(2πt + ϕ) avec A et ϕ inconnus. On mesure le signal à deux instants (en ms) :
s(0.5) = −1.76789123 et s(0.6) = −2.469394443. On posera α = A cos(ϕ) et β = A sin(ϕ).
1. Écrire et résoudre le système d’inconnues α et β. En déduire A et ϕ.

340 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

2. Tracer le signal et montrer qu’il passe par les points mesurés.

Correction
Rappel : sin(a + b) = sin(a) cos(b) + cos(a) sin(b) ainsi

s(t ) = A sin(2πt + ϕ) = A sin(2πt ) cos(ϕ) + cos(2πt ) sin(ϕ) = α sin(2πt ) + β cos(2πt ).


¡ ¢

On doit donc résoudre le système linéaire :


(
α sin(π) + β cos(π) = −1.76789123
α sin 65 π + β cos 65 π = −2.469394443
¡ ¢ ¡ ¢

qu’on écriture matricielle s’écrit

¡ 6 ¢ α = −1.76789123 ¡ 6 ¢ α = −1.76789123
µ ¶µ ¶ µ ¶ µ ¶µ ¶ µ ¶
sin(π) cos(π) ¡0 ¢ −1
i.e.
sin 65 π cos 5 π β sin 56 π cos 5 π β
¡ ¢
−2.469394443 −2.469394443

xx=[sin(2*pi*0.5) , cos(2*pi*0.5) ; sin(2*pi*0.6) , cos(2*pi*0.6)]\[-1.76789123;-2.469394443]


alpha=xx(1)
beta=xx(2)
p
Puisqu’on trouve α = β, alors cos(ϕ) = sin(ϕ), i.e. ϕ = π4 et A = 2α avec α ≈ 1.7679 :
s=@(t)[sqrt(2)*alpha*sin(2*pi*t+pi/4)];
tt=[0:0.01:1];
hold on
plot(tt,s(tt),’r-’) % la courbe
plot([0.5 0.6],[-1.76789123;-2.469394443],’b*’) % les deux points
plot([0 0.5 0.5], [-1.76789123 -1.76789123 -3], ’g:’) % trait pointille
plot([0 0.6 0.6], [-2.469394443 -2.469394443 -3], ’g:’) % trait pointille
xlabel(’t’)
ylabel(’s’)
hold off
print("[Link]") % sauvagarde de la figure en .jpg

Exercice A.14 (Résolution graphique d’une équation)


Soit la fonction

f : [−10, 10] → R
x 3 cos(x) + x 2 − x + 1
x 7→ p
x 4 − 3x 2 + 127

1. Tracer le graphe de la fonction f en utilisant seulement les valeurs de f (x) lorsque la variable x prend successive-
ment les valeurs −10, −9.2, −8.4, . . . , 8.4, 9.2, 10 (i.e. avec un pas 0.8).

© 2020-2021 G. Faccanoni 341


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

2. Apparemment, l’équation f (x) = 0 a une solution α voisine de 2. En utilisant le zoom, proposer une valeur
approchée de α.
3. Tracer de nouveau le graphe de f en faisant varier x avec un pas de 0.05. Ce nouveau graphe amène-t-il à corriger
la valeur de α proposée ?
4. Demander à Octave d’approcher α (fonction fsolve).

Correction
En utilisant un pas de 0.8 il semblerai que α = 1.89. En utilisant un pas de 0.05 il semblerai que α = 1.965. En utilisant la
fonction fsolve on trouve α = 1.9629.
clear all; clc;
f = @(x) [(x.^3 .*cos(x)+x.^2-x+1) ./ (x.^4-sqrt(3)*x.^2+127)] ;

subplot(1,2,1)
xx=[-10:0.8:10];
plot(xx,f(xx),’r-’)
grid()

subplot(1,2,2)
xx=[-10:0.05:10];
plot(xx,f(xx),’r-’)
grid()

fsolve(f,1.9)

Exercice A.15 (Courbe parametrée)


Tracer la courbe papillon (t ∈ [0; 100]) :
( ¡ t ¢¢
x(t ) = sin(t ) e cos(t ) − 2 cos(4t ) − sin5 12
¡
¡ cos(t ) ¡ t ¢¢
y(t ) = cos(t ) e − 2 cos(4t ) − sin5 12

x=@(t) [ sin(t).*( exp(cos(t))-2*cos(4*t)-(sin(t/12)).^5 ) ];


Correction
y=@(t) [ cos(t).*( exp(cos(t))-2*cos(4*t)-(sin(t/12)).^5 ) ];
tt=[0:0.05:100];
plot(x(tt),y(tt))

Exercice A.16 (Équation polaire)


Tracer la courbe papillon (t ∈ [0; 100]) :
(
x(t ) = r (t ) cos(t )
avec r (t ) = sin(7t ) − 1 − 3 cos(2t ).
y(t ) = r (t ) sin(t )

r=@(t) [sin(7*t)-1-3*cos(2*t)];
Correction
x=@(t) [ r(t).*cos(t) ];
y=@(t) [ r(t).*sin(t) ];
tt=[0:0.05:100];
plot(x(tt),y(tt))

342 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Exercice A.17 (function)


Fabriquer une fonction-octave qui calcule le volume v d’un cylindre de révolution de hauteur h et dont la base est un
disque de rayon r . Cette fonction doit accepte que r et h soient des listes de nombres et renvoyer un tableau. Si r est
un vecteur de n nombres et h de m nombres alors v sera une matrice A de dimension n × m telle que a i j = v(r i , h j ).

Correction
On écrit la fonction soit avec function soit avec une fonction anonyme, puis on valide la fonction avec un test dont on
connaît le résultat :

function v=cylindre(r,h) % h et r sont 2 matrices-lignes


v = (r.^2)’.*h *pi;
return
% cylindre = @(r,h) (r.^2)’.*h *pi ;

Quand on exécute cette fonction, on obtient un tableau à n lignes et à p colonnes qui sont les volumes recherchés. Sur les
lignes de ce tableau, on lit les volumes pour r fixé, h variant. Sur les colonnes, c’est h qui est fixé.

A.15.1. Suites
Exercice A.18
Soit (u n )n∈N la suite définie par u n = (0.7)3n . Quel est le plus petit n tel que u n < 10−4 ? (Calculer d’abord analytiquement
pui vérifier numériquement le résultat.)

Correction
³¡ ¢ ´n ¡
7 3 343 n
. Il s’agit d’une suite géométrique de raison 0 < q < 1 : elle est donc décroissante. On a u n < 10−4 ssi
¢
u n = 10 = 1000
¡ 343 ¢n ¡ 343 ¢n 4 4
1000
−4
< 10 ssi log10 1000 < −4 ssi n > − ¡ 343 ¢ = −
log (343)−log (103 )
= 3−log4 (343) ≃ 0.5
4
= 8. La valeur cherchée est
log10 1000 10 10 10
donc n = 9.
Vérifions nos calculs :

n=0
u=1
while u>=1.e-4
n+=1
u=(0.7)^(3*n)
end

Exercice A.19
On achète un ordinateur portable à 430 e. On estime qu’une fois sorti du magasin sa valeur u n en euro après n mois est
donnée par la formule
u n = 40 + 300 × (0.95)n .
1. Que vaut l’ordinateur à la sortie du magasin ?
2. Que vaut-il après un an de l’achat ?
3. À long terme, à quel prix peut-on espérer revendre cet ordinateur ?
4. Déterminer le mois à partir duquel l’ordinateur aura une valeur inférieure à 100 e.

Correction
1. À la sortie du magasin u 0 = 340
2. Après un an de l’achat on a u 12 = 40 + 300 × (0.95)12 = 202.11
3. À long terme, on peut espérer revendre cet ordinateur à limn→+∞ u n = 40.
4. À partir du 32-ème mois l’ordinateur aura une valeur inférieure à 100 e car :

100 − 40 1 ln(5)
40 + 300 × (0.95)n < 100 ⇐⇒ (0.95)n < = = 5−1 ⇐⇒ n ln(0.95) < − ln(5) ⇐⇒ n > − ≃ 31.377
300 5 ln(0.95)

Vérifions nos calculs :

© 2020-2021 G. Faccanoni 343


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

nn=[0];
uu=[430];
for n=1:50
nn=[nn,n];
uu=[uu, 40+300*(0.95)^n];
end
plot(nn,uu,’*-’,nn,100*ones(size(nn)),’-’)
indice=max(find(uu>100))
printf(strcat("u_",num2str(nn(indice)),"=",num2str(uu(indice)),"\n"))
printf(strcat("u_",num2str(nn(indice+1)),"=",num2str(uu(indice+1)),"\n"))
plot(nn,uu,’*-’,nn,100*ones(size(nn)),’-’,[nn(indice),nn(indice)],[0,uu(indice)],[nn(indice+1),nn(indice
+1)],[0,uu(indice+1)])

Exercice A.20 (Suite de F IBONACCI)


La suite de F IBONACCI est une suite d’entiers dans laquelle chaque terme est la somme des deux termes qui le
précèdent. Elle commence généralement par les termes 0 et 1 (parfois 1 et 1). Elle doit son nom à Leonardo F IBONACCI,
un mathématicien italien du XIIIe siècle qui, dans un problème récréatif posé dans un de ses ouvrages, le Liber Abaci,
décrit la croissance d’une population de lapins :
«Un homme met un couple de lapins dans un lieu isolé de tous les côtés par un mur. Combien de couples
obtient-on en un an si chaque couple engendre tous les mois un nouveau couple à compter du troisième
mois de son existence ?»
Le problème de F IBONACCI est à l’origine de la suite dont le n-ième terme correspond au nombre de paires de lapins
au n-ème mois. Dans cette population (idéale), on suppose que :
⋆ au (début du) premier mois, il y a juste une paire de lapereaux ;
⋆ les lapereaux ne procréent qu’à partir du (début du) troisième mois ;
⋆ chaque (début de) mois, toute paire susceptible de procréer engendre effectivement une nouvelle paire de
lapereaux ;
⋆ les lapins ne meurent jamais (donc la suite de F IBONACCI est strictement croissante).
Notons F n le nombre de couples de lapins au début du mois n. Jusqu’à la fin du deuxième mois, la population se
limite à un couple (ce qu’on note F 1 = F 2 = 1). Dès le début du troisième mois, le couple de lapins a deux mois et il
engendre un autre couple de lapins ; on note alors F 3 = 2. Plaçons-nous maintenant au mois n et cherchons à exprimer
ce qu’il en sera deux mois plus tard, soit au mois n + 2 : F n+2 désigne la somme des couples de lapins au mois n + 1 et
des couples nouvellement engendrés. Or, n’engendrent au mois (n + 2) que les couples pubères, c’est-à-dire ceux qui
existent deux mois auparavant. On a donc, pour tout entier n strictement positif, F n+2 = F n+1 + F n . On choisit alors de
poser F 0 = 0, de manière que cette équation soit encore vérifiée pour n = 0. On obtient ainsi la forme récurrente de la
suite de F IBONACCI : chaque terme de cette suite est la somme des deux termes précédents :

 F 0 = 0,

F 1 = 1,

F n+2 = F n+1 + F n

On souhaite comparer les temps CPU pour calculer le 30-ème élément F 30 de la suite de F IBONACCI suivant la méthode
choisie :
Boucle calcul de Fn à l’aide d’une boucle ;
Écriture matricielle calcul de Fn en exploitant la relation matricielle
· ¸ · ¸· ¸
Fn 1 1 F n−1
=
F n−1 1 0 F n−2

Fonction récursive calcul de Fn à l’ide d’une fonction récursive


Expression fonctionnelle calcul de Fn en exploitant une expression fonctionnelle de la suite, c’est-à-dire une expres-
sion telle que le calcul de F n pour une valeur de n donnée ne présuppose la connaissance d’aucune autre valeur
de n.

Correction
Boucle On utilise l’écriture Fn+2 = Fn+1 + Fn avec pour valeurs initiales F1 = F2 = 1. À chaque étape on peut stocker toutes
les valeurs de la suite ou juste les trois dernières.

344 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Écriture matricielle En exploitant la relation matricielle on obtient par récurrence


· ¸ · ¸· ¸ · ¸2 · ¸ · ¸n · ¸
Fn 1 1 F n−1 1 1 F n−2 1 1 F1
= = = ··· =
F n−1 1 0 F n−2 1 0 F n−3 1 0 F0

Expression fonctionnelle Comme la suite de F IBONACCI est linéaire d’ordre deux, on peut écrire son
p
équation caractéris-
1+ 5
tique. On obtient une équation du second degré x 2 − x − 1 = 0 qui a pour solutions x 1 = ϕ = 2 (le nombre d’or) et
p
1− 5 n n
x2 = 1 − ϕ = = αϕ + β(1 − ϕ) où α et β sont deux constantes à déterminer à partir de F 0 et
2 . Il en résulte que F n p
F 1 . On a α + β = 0 et (α − β)ϕ + β = 1 ce qui donne α = −β = 1/ 5. On trouve alors l’expression générale de la suite de
F IBONACCI (appelée formule de B INET) :
1 ¡
F n = p ϕn − (1 − ϕ)n .
¢
5
Si on calcule la limite du rapport de deux nombres consécutifs de la suite de F IBONACCI on trouve le nombre d’or :

1−ϕ n+1
³ ´
F n+1 ϕn+1 − (1 − ϕ)n+1 1− ϕ
= = ϕ ´ −−−−→ ϕ
ϕn − (1 − ϕ)n 1−ϕ n n→∞
³
Fn 1− ϕ

1−ϕ
car 1 < ϕ < 2 et donc −1 < ϕ < 1.

clear all; clc; end


n = 30; c
toc
# Boucle 1
printf(’Boucle, on stocke toute la suite\n’) # Matricielle
tic printf(’\nCalcul matriciel\n’)
F = ones(1,n); tic
for i = 3:n fibmat(n)
F(i) = F(i-1)+F(i-2); toc
end
F(end) # Recoursive
toc printf(’\nCalcul recursif\n’)
tic
# Boucle 2 fibrec(n)
printf(’\nBoucle, on stocke juste 3 terms de la toc
suite\n’)
tic # Fonctionnelle
a=1; sprintf(’\nCalcul fonctionnel\n’)
b=1; tic
for i = 3:n #phi=fsolve(@(x)(x^2-x-1),1);
c = b+a; phi=(1+sqrt(5))/2;
a=b; Fn=(phi^n-(1-phi)^n)/sqrt(5)
b=c; toc

Exercice A.21 (Coïncidences et anniversaires)


Combien faut-il réunir d’individus dans une salle de classe pour être certain que deux d’entre eux possèdent la même
date de naissance ? La réponse est presque évidente, il en faut 366 : même si les 365 premières personnes ont un
anniversaire différent, la 366ème personne aura forcément une date d’anniversaire commune avec une personne déjà
présente. a
Maintenant, passons à une question moins évidente : combien faut il réunir de personne pour avoir une chance sur
deux que deux d’entre elles aient le même anniversaire ? Au lieu de nous intéresser à la probabilité que cet événement
se produise, on va plutôt s’intéresser à l’événement inverse : quelle est la probabilité pour que n personnes n’aient pas
d’anniversaire en commun ?
1. si n = 1 la probabilité est 1 (100%) : puisqu’il n’y a qu’une personne dans la salle, il y a 1 chance sur 1 pour qu’elle
n’ait pas son anniversaire en commun avec quelqu’un d’autre dans la salle (puisque, fatalement, elle est toute
seule dans la salle) ;
2. si n = 2 la probabilité est 364/365 (99,73%) : la deuxième personne qui entre dans la salle a 364 chances sur 365
pour qu’elle n’ait pas son anniversaire en commun avec la seule autre personne dans la salle ;
3. si n = 3 la probabilité est 364/365 × 363/365 (99,18%) : la troisième personne qui entre dans la salle a 363 chances

© 2020-2021 G. Faccanoni 345


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

sur 365 pour qu’elle n’ait pas son anniversaire en commun avec les deux autres personnes dans la salle mais cela
sachant que les deux premiers n’ont pas le même anniversaire non plus, puisque la probabilité pour que les deux
premiers n’aient pas d’anniversaire en commun est de 364/365, celle pour que les 3 n’aient pas d’anniversaire
commun est donc 364/365 × 363/365 ;
4. si n = 4 la probabilité est 364/365 × 363/365 × 362/365 (98,36%) et ainsi de suite ;
5. si n = k la probabilité est 364/365 × 363/365 × 362/365 × · · · × (365 − k + 1)/365.
On obtient la formule de récurrence (
P 1 = 1,
P k+1 = P k 365−k+1
365 .

Tracer un graphe qui affiche la probabilité que deux personnes ont la même date de naissance en fonction du nombre
de personnes. Calculer pour quel k on passe sous la barre des 50%.
Source : [Link]

a. On va oublier les années bissextiles et le fait que plus d’enfants naissent neuf mois après le premier de l’an que neuf mois après la Toussaint.

Correction
clear all
totale=365;
seuil=50/100;
n=[1:totale];
P(1)=1;
for k=1:totale-1
P(k+1)=(totale-k+1)*P(k)/totale;
end
nP=1-P;
personnes=sum(nP<seuil);
printf(strcat("On passe la barre de \t", num2str(seuil)," pour k=",num2str(personnes),"\n"))

plot(n,nP,’-’,n,seuil*ones(length(n)),’-’)
axis([1 totale 0 1])
title(strcat("Seuil=", num2str(seuil), " Personnes=",num2str(personnes) ))
grid
Dans un groupe de 23 personnes, il y a plus d’une chance sur deux pour que deux personnes de ce groupe aient leur
anniversaire le même jour. Ou, dit autrement, il est plus surprenant de ne pas avoir deux personnes qui ont leur anniversaire
le même jour que d’avoir deux personnes qui ont leur anniversaire le même jour (et avec 57, on dépasse les 99% de chances !)
On peut s’amuser à adapter les calculs à d’autres problèmes, par exemple on a 61% de chances que parmi 5 personnes
prises au hasard, deux ont le même signe astrologique :
totale=12;
seuil=61/100;

Exercice A.22 (Conjecture de Syracuse)


Considérons la suite récurrente
 u 1 ∈ N (donné,



un
2 si n est pair,
 u n+1 =

3u n + 1 sinon.

En faisant des tests numérique on remarque que la suite obtenue tombe toujours sur 1 peut importe l’entier choisit a
au départ. La conjecture de Syracuse affirme que, peu importe le nombre de départ choisi, la suite ainsi construite
atteint le chiffre 1 (et donc boucle sur le cycle 4, 2, 1). Cet énoncé porte le nom de «Conjecture» et non de théorème, car
ce résultat n’a pas (encore) été démontré pour tous les nombres entiers. En 2004, la conjecture a été “juste” vérifiée
pour tous les nombres inférieurs à 264 .
1. Écrire un script qui, pour une valeur de u 1 ∈]1; 106 ] donnée, calcule les valeurs de la suite jusqu’à l’apparition du
premier 1.
2. Tracer les valeurs de la suite en fonction de leur position (on appelle cela la trajectoire ou le vol), i.e. les points
n=N
{ (n, u n ) }n=1
3. Calculer ensuite le durée de vol, i.e. le nombre de terme avant l’apparition du premier 1 ; l’altitude maximale, i.e.
le plus grand terme de la suite et le facteur d’expansion, c’est-à-dire l’altitude maximale divisée par le premier
terme.

346 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

On peut s’amuser à chercher les valeurs de u 1 donnant la plus grande durée de vol ou la plus grandes altitude maximale.
On notera que, même en partant de nombre peu élevés, il est possible d’obtenir des altitudes très hautes. Vérifiez que,
en partant de 27, elle atteint une altitude maximale de 9232 et une durée de vol de 111. Au contraire, on peut prendre
des nombres très grands et voir leur altitude chuter de manière vertigineuse sans jamais voler plus haut que le point de
départ. Faire le calcul en partant de 106 .
Ce problème est couramment appelé Conjecture de Syracuse (mais aussi problème de Syracuse, algorithme de H ASSE,
problème de U LAM, problème de K AKUTANI, conjecture de C OLLATZ, conjecture du 3n + 1). Vous pouvez lire l’article de
vulgarisation [Link]
a. Dès que u i = 1 pour un certain i , la suite devient périodique de valeurs 4, 2, 1

Correction
function u = mysuite(u_init)
u=[u_init];
while u(end)~=1
if rem(u(end),2)==0
u=[u,u(end)/2];
else
u=[u,3*u(end)+1];
end
end
end

N=60;

L=[]; M=[]; F=[];

for n=[2:N]
U=mysuite(n);
L=[L,length(U)];
M=[M,max(U(:))];
F=[F,M(end)/n];
end

subplot(1,3,1)
maxL=max(L);
indicemaxL=find(L==maxL,1)+1
plot(Uinit,L,’b-’,[0,indicemaxL,indicemaxL],[maxL,maxL,0],’r:’)
title(strcat( ["Duree de vol:\n max=" num2str(maxL) " obtenu avec u_1=" num2str(indicemaxL)] ))
grid()

subplot(1,3,2)
maxM=max(M);
indicemaxM=find(M==maxM,1)+1
plot(Uinit,M,’b-’,[0,indicemaxM,indicemaxM],[maxM,maxM,0],’r:’)
title(strcat( ["Altitude maximale:\n max=" num2str(maxM) " obtenue avec u_1=" num2str(indicemaxM)] ))
grid()

subplot(1,3,3)
maxF=max(F);
indicemaxF=find(F==maxF,1)+1
plot(Uinit,F,’b-’,[0,indicemaxF,indicemaxF],[maxF,maxF,0],’r:’)
title(strcat( ["Facteur d’expansion:\n max=" num2str(maxF) " obtenu avec u_1=" num2str(indicemaxF)] ))
grid()

Exercice A.23 (Fractales)


La répétition de transformations permet de tracer des figures géométriques appelées fractales.
Considérons la suite définie par récurrence suivante :
µ ¶ µ ¶ µ ¶ µ ¶µ ¶ µ ¶
x 0 x m 11 m 12 x q1
= , = +
y 0 0 y n+1 m 21 m 22 y n q2 n

© 2020-2021 G. Faccanoni 347


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

Pour chaque cas, tracer l’ensemble de points de coordonnées (x n , y n ).


µ ¶ µ ¶
1 1 −1 1
Exemple-1 on pose M = et q = ,
2 1 1 −3
Dragon de Heighway on choisit au hasard et de façon équiprobable α ∈ [0; 1[ puis on pose M = (α < 12 )M1 +(α ≥ 12 )M2
µ ¶ µ ¶ µ ¶ µ ¶
1 1 1 1 −1 1 −1 −1 0 1
et q = (α < 2 )q1 + (α ≥ 2 )q2 avec M1 = , M2 = et q1 = , q2 = avec n = 0, . . . , 10000.
2 1 1 2 1 −1 0 0
1 1
Fougère de Barnsley on choisit au hasard et de façon équiprobable α ∈ [0; 1[ puis on pose M = (α < 100 )M1 + ( 100 ≤
86 86 93 93 1 1 86
α< 100 )M2 + 100µ ≤ α <¶100 )M3 +(α ≥ )M et q = (α < 100 )q1 +( 100 ≤α< 100 )q + 86 93
≤ α < 100 93
)q3 +(α ≥ 100 )q
µ 100 4¶ µ ¶ µ 2 100 ¶ µ ¶ µ ¶4
1 0 0 1 85 4 1 20 −26 1 −15 28 0 0
avec M1 = , M2 = , M3 = , M4 = et q1 = , q2 = ,
100 0 16 100 −4 85 100 23 22 100 26 24 0 1.6
µ ¶
0
q3 = q2 , q4 = avec n = 0, . . . , 10000.
0.44
Arbre on choisit au hasard et de façon équiprobable α ∈ [0; 1[ puis on pose M = (α < 13 )M1 + ( 13 ≤ α < 23 )M2 + (α ≥
µ ¶ µ ¶
2 1 0 0 6 cos(ϑ) − sin(ϑ)
3 )M3 et q = (α < 13 )q1 + ( 13 ≤ α < 23 )q2 + (α ≥ 23 )q3 avec M1 = , M2 = , M3 =
200 0 51 8 sin(ϑ) cos(ϑ)
1 3
2 − 8 cos(ϑ)
µ ¶ µ ¶ Ã ! µ 1 5 ¶
1 5 cos(ψ) −6 sin(ψ) 1 2 − 16 cos(ψ)
et q1 = 12 , q2 = 51 , q3 = 153 5 avec n = 0, . . . , 100, ϑ = − π8 et
8 5 sin(ψ) 6 cos(ψ) 0 − 38 sin(ϑ) 1000 − 16 sin(ψ)
200
ψ = π5 .
Source [Link]

Correction

clc;
clear all;
cas=4;

% p et q vecteurs colonne, M matrice carree


transform = @(p,M,q) M*p+q;

% MAIN
n=1000*(cas==1)+10000*(cas==2)+10000*(cas==3)+100*(cas==4);
A = zeros(n,2);
for i=2:n
if cas==1 % Exemple1
M=[1,-1;1,1]/2;
q=[1;-3];
elseif cas==2 % Dragon
M1=[1,-1;1,1]/2;
q1=[0;0];
M2=[-1,-1;1,-1]/2;
q2=[1;0];
alpha=rand();
M=(alpha<0.5)*M1+(alpha>=0.5)*M2;
q=(alpha<0.5)*q1+(alpha>=0.5)*q2;
elseif cas==3 % Fougere
M1=[0,0;0,0.16];
q1=[0;0];
M2=[0.85,0.04;-0.04,0.85];
q2=[0;1.6];
M3=[0.2,-0.26;0.23,0.22];
q3=[0;1.6];
M4=[-0.15,0.28;0.26,0.24];
q4=[0;0.44];
alpha=rand();
M=(alpha<0.01)*M1+(alpha>=0.01)*(alpha<0.86)*M2+(alpha>=0.86)*(alpha<0.93)*M3+(alpha>=0.93)*M4;
q=(alpha<0.01)*q1+(alpha>=0.01)*(alpha<0.86)*q2+(alpha>=0.86)*(alpha<0.93)*q3+(alpha>=0.93)*q4;
else % arbre
M1=[0,0;0,51/200];
q1=[0.5;0];

348 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

theta=-pi/8;
M2=6/8*[cos(theta),-sin(theta);sin(theta),cos(theta)];
q2=[1/2-3/8*cos(theta);51/200-3/8*sin(theta)];
psi=pi/5;
M3=1/8*[5*cos(psi),-6*sin(psi);5*sin(psi),6*cos(psi)];
q3=[1/2-5/16*cos(psi);153/1000-5/16*sin(psi)];
alpha=rand();
M=(alpha<1/3)*M1+(alpha>=1/3)*(alpha<2/3)*M2+(alpha>=2/3)*(alpha<0.93)*M3;
q=(alpha<1/3)*q1+(alpha>=1/3)*(alpha<2/3)*q2+(alpha>=2/3)*(alpha<0.93)*q3;
end
A(i,:)=transform(A(i-1,:)’,M,q);
end
plot(A(:,1),A(:,2),’o’,’MarkerSize’,8)

A.15.2. Systèmes linéaires


Exercice A.24 (Système linéaire, existence et unicité)
Considérons le système linéaire de 3 équations en les 3 inconnues x 1 , x 2 , x 3 suivant :

 x1 − x2 + x3 = 0

10x 2 + 25x 3 = 90

20x 1 + 10x 2 = 80.

Pour résoudre le système linéaire on commence par définir la matrice A des coefficients du système et le vecteur
colonne b contenant le terme source.
Méthode 1. On calcule la matrice inverse A−1 et on pose x = A−1 b (méthode déconseillée).
Méthode 2. On utilise l’opérateur backslash.
Méthode 3. On utilise la fonction linsolve.
Méthode 4. On définit la matrice augmentée [A|b] et on applique la méthode de G AUSS -J ORDAN pour obtenir la forme
échelonnée (instruction rref(Aaug).
Dans tous les cas, on teste la solution obtenue en calculant ||Ax − b||2 .

Correction disp(’Methode 3’)


A = [ 1 -1 1; 0 10 25; 20 10 0] x=linsolve(A,b)
b = [0; 90; 80] norm(A*x-b)

disp(’Methode 1’) disp(’Methode 4’)


x = inv(A)*b Aaug=[A b]
norm(A*x-b) RRAaug=rref(Aaug)
% while mathematically correct, x=RRAaug(:,4)
% computing the inverse of a matrix is norm(A*x-b)
% computationally inefficient,
% and not recommended most of the time. disp(’Methode 5’)
[L,U,P]=lu(A);
disp(’Methode 2’) y=L\(P*b);
x = A\b x=U\y
norm(A*x-b) norm(A*x-b)

Exercice A.25 (Système linéaire, non existence)


Considérons le système linéaire de 3 équations en les 3 inconnues x 1 , x 2 , x 3 suivant :

 3x 1 + 2x 2 + x 3 = 3

2x 1 + x 2 + x 3 = 0

6x 1 + 2x 2 + 4x 3 = 6.

© 2020-2021 G. Faccanoni 349


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

Pour résoudre le système linéaire on commence par définir la matrice A des coefficients du système et le vecteur
colonne b contenant le terme source.
1. On définit la matrice augmentée [A|b] et on applique la méthode de G AUSS -J ORDAN pour obtenir la forme
échelonnée (instruction rref(Aaug). Pourquoi peut-on conclure que le système n’a pas de solution ?
2. Octave nous donne malgré tout une solution ! Vérifiez-le avec l’opérateur backslash.
3. Que se passe-t-il si on essaye de calculer la matrice inverse A−1 et poser ensuite x = A−1 b ?
Dans tous les cas, on teste la solution obtenue en calculant ||Ax − b||2 .

Correction
A = [ 3 2 1; 2 1 1; 6 2 4] % Point 2
b = [3; 0; 6] x = A\b
norm(A*x-b)
% Point 1
rref([A ,b]) % Point 3
% the last line of this matrix invA=inv(A)
% states that 0 = 1. x = invA*b
% That is not true, which norm(A*x-b)
% means there is no solution.

Exercice A.26
Considérons un système linéaire sous la forme matricielle Ax = b où A est une matrice de Rn×n non singulière et b est
un vecteur colonne de Rn .
Implémenter une fonction appelée mygauss qui transforme la matrice augmentée [A|b] en une matrice triangulaire
supérieure par la méthode de G AUSS et, à chaque étape, affiche les opérations sur les lignes ainsi que la matrice
modifiée. Enfin, elle résout le système linéaire triangulaire par remontée.
La syntaxe doit être function [x]=mygauss(A,b)
Écrire un script appelé TESTmygauss.m pour tester cette fonction sur l’exemple suivant : pour
   
1 0 3 4
A = 2 2 2 b= 6 
3 6 4 13

on doit obtenir
 
1
x = 1
1

Correction
Dans le fichier mygauss.m on écrit

function [x]=mygauss(A,b)
printf("Matrice augmentee : [A|b]\n")
Ab = [A,b]
[n,m]=size(A);
tol=1.0e-9;
for k=1:n-1
printf(strcat("\nEtape ",num2str(k),"\n"))
for i=k+1:n
L(i,k)=Ab(i,k)/Ab(k,k);
printf(strcat("\tL_",num2str(i)," <- L_",num2str(i)," - (",num2str(L(i,k)),") L_",num2str(k),"\
n"))
Ab(i,k:n+1)=Ab(i,k:n+1)-L(i,k)*Ab(k,k:n+1);
end
Ab
end
printf("\nResolution du systeme triangulaire ainsi obtenu\n")
U=triu(Ab(:,1:n));
y=Ab(:,n+1);

350 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

x(n)=y(n)/U(n,n);
for i=n-1:-1:1
x(i)=(y(i)-dot(U(i,i+1:n),x(i+1:n)))/U(i,i);
end
end

et on teste cette fonction par exemple comme suit


clear all
A=[1 0 3; 2 2 2; 3 6 4];
b=[4; 6; 13];
x=mygauss(A,b)’
% Pour verifier notre resultat on peut
% comparer au resultat d’Octave
xOctave=A\b
% ou verifier qua Ax=b
printf(strcat("||Ax-b||=",num2str(norm(A*x-b)),"\n"))

A.15.3. Traitement mathématique des images numérique


Dans ces exercices nous allons nous intéresser à la manipulation d’images. Nous utiliserons des méthodes basées sur
l’algèbre linéaire et l’analyse matricielle.
⋆ Acquisition d’une image (= numérisation) : dans la figure ci dessous on a à gauche une image réelle et à droite
sa version numérisée. La numérisation d’une image réelle comporte une perte d’information due d’une part à
l’échantillonnage (procédé de discrétisation spatiale d’une image consistant à projeter sur une grille régulière, i.e.
en un nombre fini de points, une image analogique continue en lui associant une valeur unique), d’autre part à la
quantification (nombre finis de nuances = limitation du nombre de valeurs différentes que peut prendre un point ).
⋆ Les pixels d’une image : une image numérique en niveaux de gris (grayscale image en anglais) est un tableau de
valeurs A. Chaque case de ce tableau, qui stocke une valeur a i j , se nomme un pixel (PICTure ELement).
En notant n le nombre de lignes et p le nombre de colonnes du tableau, on manipule ainsi un tableau de n × p pixels.
Les valeurs des pixels sont enregistrées dans l’ordinateur ou l’appareil photo numérique sous forme de nombres
entiers entre 0 et 255, ce qui fait 256 valeurs possibles pour chaque pixel. La valeur 0 correspond au noir et la valeur
255 correspond au blanc. Les valeurs intermédiaires correspondent à des niveaux de gris allant du noir au blanc.
On peut définir une fonction comme suit :

g : ‚1 : nƒ × ‚1 : pƒ → ‚0 : 255ƒ
(i , j ) 7→ g (i , j ) = a i j

⋆ La taille d’une image : la taille d’une image est le nombre de pixel. Les dimensions d’une image sont la largeur
(=nombre de colonnes du tableau) et la hauteur (=nombre de lignes du tableau).
⋆ La résolution d’une image : la résolution d’une image est le nombre de pixel par unité de longueur. En générale, on
utilise des “pixel par pouce” ou “point par pouce” (ppp), on anglais on dit dot per inch (dpi) : n dpi = n pixel pour un
puce = n pixel pour 2.54 cm.
Les fonctions Octave utiles pour gérer les images sont les suivantes :
⋆ image : affiche une image (objet graphique Image) ;
⋆ imagesc ou imshow : affiche une image (objet graphique Image) avec interpolation des couleurs ;
⋆ imread : lit une image d’un fichier (formats standards) ;
⋆ imwrite : écrit une image dans fichier (formats standards) ;
⋆ imfinfo : extrait des informations d’un fichier (formats standards) ;
⋆ print : exporte une image (formats standards).
L’exemple suivant montre une visualisation d’un tableau carré avec n = p = 512, ce qui représente 512 × 512 = 218 = 262 144
pixels. 4 Dans ce cas, nous ne construisons pas la matrice à la main, mais nous allons lire un fichier image et l’importer
comme une matrice dans Octave.

4. Les appareils photos numériques peuvent enregistrer des images beaucoup plus grandes, avec plusieurs millions de pixels.

© 2020-2021 G. Faccanoni 351


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

Pour transformer une image en une matrice il suffit d’indi-


quer dans un script : 5
A=imread(’[Link]’);
Avec la fonction imread Octave transforme un fichier image
(ici de type .bmp) en une matrice dont chaque coefficient est
un flottant si l’image est en noir et blanc.
On peut voir l’image avec :
imshow(uint8(A));
F IGURE A.2. – Léna (original)
ou avec
[Link]
imagesc(A)
axis image
On peut sauvegarder l’image avec :
imwrite(uint8(A),’[Link]’,’jpg’);

Pour connaître la dimension de la matrice (i.e. de l’image) il suffira d’écrire


[row,col]=size(A)
On a une matrice de taille 512 × 512.
Pour connaître l’intervalle des valeurs de la matrice on écrira
pp=min(A(:))
pg=max(A(:))

Les niveaux de gris sont compris entre 25 et 245.


Attention : lorsque l’on charge une image, la matrice correspondante est de type uint8 (codage sur 8 bits non signés), cela
signifie que ses éléments (qui représentent les niveaux de gris) sont dans l’intervalle d’entiers ‚0 − 255ƒ). Octave peut lire des
images codées sur 8, 16, 24 ou 32 bits. Mais le stockage et l’affichage de ces données ne peut être fait qu’avec trois types de
variables :
⋆ le type uint8 (entier non signé de 8 bits) de plage [0; 255] ;
⋆ le type uint16 (entier non signé de 16 bits) de plage [0; 65535] ;
⋆ le type double (réel 64 bits) de plage [0; 1].
Dans le code ci-dessous, on a a = 155 mais a est de type uint8 donc, lorsqu’on calcule a 2 , Octave plafonne à 255 :
A=imread(’[Link]’);
a=A(10,10);
disp(a) % output 155
disp(155^2) % output 24025
disp(a^2) % output 255
a=uint16(a);
disp(a^2) % output 24025

Exercice A.27 (Manipulations élémentaires)


1. Que se passe-t-il lorsqu’on exécute le script suivant ?

clear all title ( "Original" );


subplot(1,2,2)
A=imread(’[Link]’); B=A’;
colormap(gray(256)); imshow(uint8(B));
title ( "Transposee" );
subplot(1,2,1) imwrite(uint8(B),’[Link]’,’jpg’);
imshow(uint8(A));

2. Que se passe-t-il lorsqu’on exécute le script suivant ?

5. Cette image, “Lena”, est une image digitale fétiche des chercheurs en traitement d’images. Elle a été scannée en 1973 dans un exemplaire de Playboy
et elle est toujours utilisée pour vérifier la validité des algorithmes de traitement ou de compression d’images. On la trouve sur le site de l’University of
Southern California [Link]

352 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

clear all for i=1:col


A=[A(:,2:col) A(:,1)];
A=imread(’[Link]’); imshow(A,gray(256));
[row,col]=size(A); pause(0.001);
end

3. En utilisant une manipulation élémentaire de la matrice (sans faire de boucles et sans utiliser de fonctions)
obtenir les images de la figure A.3.

(a) Original (b) Flip vertical (c) Flip horizontale (d) Flip double (e) Hstack

(f) Vstack (g) Zoom (h) Effacer (i) Bord carré (j) Bord cercle

F IGURE A.3. – Manipulations élémentaires

Correction

1.

Originale Transposée
2. À chaque étape on enlève la première colonne et on la concatène comme dernière colonne. Le résultat donne un “film”
dans lequel l’image “sort” à gauche et “rentre” à droite.
3. On pourra se baser sur le canevas suivant :

clear all
A=imread(’[Link]’);
B= ; % a completer
subplot(1,2,1)
imshow(uint8(A));
title ( "Originale" );
subplot(1,2,2)
imshow(uint8(B));
title ( "Transformee" );

3.1. Flip vertical


B=A(end:-1:1,:);

3.2. Flip horizontale


B=A(:,end:-1:1);

© 2020-2021 G. Faccanoni 353


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

3.3. Flip double


B=A(end:-1:1,end:-1:1);

3.4. Hstack
B=[A(:,end/2:end)A(:,end:-1:end/2)];

3.5. Vstack B=[ A(end/2:end,:); A(end:-1:end/2,:)];

3.6. Zoom B=A(300:400,250:350);

3.7. Effacer B=A; B(250:300,220:375)=0;

3.8. Bord carré B=A; [r,c]=size(A); B([1:20,r-20:r],:)=0; B(:,[1:20,c-20:c])=0;

3.9. Bord cercle

[r,c]=size(A);
B=255*ones(r,c);
for i=1:r
for j=1:c
if (i-r/2)^2+(j-c/2)^2 <= (r/2)^2
B(i,j)=A(i,j);
end
end
end

On peut améliorer visuellement l’image en modifiant la valeur de chaque pixel par une fonction qu’on appliquera à tous les
pixels. Pour cela, on pourra se baser sur le canevas suivant :

clear all
A=double(imread(’[Link]’)); % utiliser double pour avoir des calculs precis

f=@(g) .... ; % fonction vectorisee a completer

B=f(A);
subplot(1,3,1)
plot([0:255], f([0:255]), ’b-’,[0:255], [0:255], ’r--’); % f et identite
axis([0 255 0 255],"square");
title(’f vs identite’)
subplot(1,3,2)
imshow(uint8(A));
title ( "Originale" );
subplot(1,3,3)
imshow(uint8(B));
title ( "Transformee" );

y
Par exemple, la fonction suivante, appliquée à chaque pixel 255
d’une image, éclaircira l’image :

f : [0; 255] → [0; 255]


a i j + 255
a i j 7→
2
0
0 255 ai j
Dans le canevas, il suffit de définir

f = @(g) (g+255)/2;

et on obtient

354 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Exercice A.28 (Luminosité et contraste)


1. Pour obtenir l’image en négatif de Léna il suffit de prendre le complémentaire par rapport à 255

f : [0; 255] → [0; 255]


g 7→ 255 − g

Appliquer cette transformation pour obtenir l’image A.4b.

(a) Originale (b) Négatif

F IGURE A.4. – Négatif

2. Appliquer la transformation ci-dessous pour augmenter la luminosité en ajoutant la valeur fixe d = 50 à tous les
niveaux de gris et obtenir l’image A.5b.
y
255

f : [0; 255] → [0; 255]


(
g +d si g ≤ 255 − d , d
g 7→
255 sinon.
0
0 255 − d 255 g

3. Il est très mauvais d’augmenter ainsi la luminosité : avec un décalage de d , il n’existera plus aucun point entre 0
et d et les points ayant une valeur supérieure à 255 − d deviendront des points parfaitement blancs, puisque la
valeur maximale possible est 255. La nouvelle image contient des zones brûlées.
y
255
Plutôt que d’utiliser la fonction donnée, il vaut mieux
utiliser une fonction bijective de forte croissance au voi-
sinage de 0 et de très faible croissance au voisinage de
255, comme sur le graphe ci-contre.
Appliquer cette transformation pour obtenir l’image A.5c.
0
0 255 g

© 2020-2021 G. Faccanoni 355


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

(a) Originale (b) Première méthode (c) Deuxième méthode

F IGURE A.5. – Modification de la luminosité

4. On peut composer avec une fonction pour étaler l’histogramme sur [0; 255] (Histogram Stretching). Par exemple,
si m = min(A) et M = max(A), on peut utiliser la fonction :
y
255

f : [0; 255] → [0; 255]


255 − 0
g 7→ (g − m) + 0
M −m
0
0 m M 255 g
Appliquer cette transformation pour obtenir l’image A.6b.
5. On peut augmenter le contraste (Contrast Stretching) en “mappant” par une fonction linéaire par morceaux.
y
255
f : [0; 255] → [0; 255]

0
 si g ≤ a
255−0
g 7→ b−a (g − a) + 0 si a < g < b

255 si g ≥ b

0
0 a b 255 g
Appliquer cette transformation avec a = 64 et b = 192 pour obtenir l’image A.6c.
Un cas particulier s’obtient lorsque a = b (Contrast Thresholding ou seuillage). Appliquer cette transformation
pour obtenir l’image A.6d
y
Avec cette transformation, les points les plus blancs au- 255
ront une valeur égale à b et il n’existera plus aucun point
entre b et 255. De même, les points ayant une valeur com-
prise entre 0 et a deviendront noirs, puisque la valeur
minimale est 0. Il y aura donc là perte d’informations.
Ainsi il est plus judicieux d’adoucir la courbe :
0
0 255 g
6. On peut rehausser le contraste en “mappant” par une fonction linéaire par morceaux
y y
255 255
f : [0; 255] → [0; 255] b>a
b

 g
 si g ≤ a
a b<a
g 7→ (255 − b)g + 255(b − a)
si g ≥ a


255 − a 0 0
0 a 255 g 0 a 255 g
Appliquer cette transformation avec a = 100 et b = 200 (dilatation de la dynamique des zones claires) et comparer
avec a = 100 et b = 50 (dilatation de la dynamique des zones sombres). Appliquer ces transformations pour

356 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

obtenir les images A.6e et A.6f.


7. On pourrait vouloir mettre en avant certains niveaux de gris dans un certain intervalle. Cette approche peut
prendre deux formes : le gray level slicing without background et le gray level slicing with background. Dans la
première approche, une grande valeur est donnée aux pixels dont le niveau de gris appartient à la plage choisie
et les autres sont remplacés par 0. Dans la deuxième approche on ne modifie que les pixels à mettre en valeur.
Cela correspond aux deux fonctions suivantes :
y
255

f : [0; 255] → [0; 255]


(
0 si g ≤ a ou g ≥ b
g 7→
255 si a ≤ g ≥ b
0
0 a b 255 g
y
255

f : [0; 255] → [0; 255]


(
g si g ≤ a ou g ≥ b
g 7→
255 si a ≤ g ≥ b
0
0 a b 255 g
Appliquer ces deux transformations avec a = 100 et b = 155 pour obtenir les images A.6g et A.6h .
8. On peut modifier le contraste en “mappant” par une fonction croissante plus rapidement ou plus lentement que
la fonction identité i : [0; 255] → [0; 255], i (g ) = g . Par exemple, la fonction suivante modifie la caractéristique de
gamma (plus clair si 0 < a < 1, plus foncé si a > 1).
y
255

f : [0; 255] → [0; 255]


³ g ´a
g 7→ 255
255
0
0 255 g
Appliquer cette transformation avec a = 3 et a = 1/3 pour obtenir les images A.6i et A.6j.

© 2020-2021 G. Faccanoni 357


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

(a) Originale (b) Histogram Stret- (c) Contrast Stret- (d) Contrast Threshol- (e) Dilatation de la
ching ching ding dynamique des
zones claires

(f) Dilatation de la dy- (g) Gray level slicing (h) Gray level slicing (i) Non linear (j) Non linear
namique des zones without back- with background
sombres ground

F IGURE A.6. – Modification du contraste

Correction
1. Négatif
f = @(g)255-g;

2. Histogram Stretching :
M=max(A(:)); m=min(A(:)); f = @(g)255*(g-m)/(M-m);

3. Contrast Stretching :
a=64; b=192; f = @(g)(g<=a)*0 + (g>=b)*255 + (g>a).*(g<b).*( 255/(b-a)*(g-a));
Si a = m et b = M on retrouve l’Histogram Stretching.

Contrast Thresholding :
a=128; f = @(g)(g<=a)*0 + (g>=a)*255;

Exemple de fonction en S (à modifier pour qu’elle passe en (0, 0) et en (255, 255)) :


f = @(g)255/pi*atan((g-255/2)/10)+255/2;

4. Dilatation de la dynamique des zones claires :


a=100; b=200; f = @(g)(g<=a)*(b/a).*g + (g>a).*( ((255-b)*g+255*(b-a))/(255-a));

Dilatation de la dynamique des zones sombres :


a=100; b=50; f = @(g)(g<=a)*(b/a).*g + (g>a).*( ((255-b)*g+255*(b-a))/(255-a));

5. Gray level slicing without background :


a=85; b=170; f = @(g)(g<=a)*0 + (g>=b)*0 + (g>a).*(g<b)*255 ;

Gray level slicing with background :


a=85; b=170; f = @(g)(g<=a).*g + (g>=b).*g + (g>a).*(g<b)*255 ;

6. Non linear :
a=3; f = @(g)255*(g/255).^a;
a=1/3; f = @(g)255*(g/255).^a;

358 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Exercice A.29 (Résolution)


Une matrice de taille 29 × 29 contient 218 entiers ce qui prend pas mal de place en mémoire. On s’intéresse à des
méthodes qui permettent d’être plus économique sans pour cela diminuer la qualité esthétique de l’image. Afin de
réduire la place de stockage d’une image, on peut réduire sa résolution, c’est-à-dire diminuer le nombre de pixels. La
façon la plus simple d’effectuer cette réduction consiste à supprimer des lignes et des colonnes dans l’image de départ.
Les figures suivantes montrent ce que l’on obtient si l’on retient une ligne sur 2k et une colonne sur 2k ce qui donne
une matrice 29−k × 29−k . Appliquer cette transformation pour obtenir l’une des images suivantes :

(a) Originale (k = 1) (b) k = 2 (c) k = 3 (d) k = (e) k =


4 5

F IGURE A.7. – Résolution

Correction subplot(1,8,k)
clear all E=A(1:2^k:row,1:2^k:col);
imshow(uint8(E));
A=double(imread(’[Link]’)); title([’k=’ num2str(k)]);
colormap(gray(256)); file=strcat(’exo2E’, num2str(k) ,’.jpg’)
imwrite(uint8(E),file,’jpg’);
[row,col]=size(A) end

for k=1:8

Exercice A.30 (Quantification)


Une autre façon de réduire la place mémoire nécessaire pour le stockage consiste à utiliser moins de nombres entiers
pour chaque valeur. On peut par exemple utiliser uniquement des nombres entiers entre 0 et 3, ce qui donnera une
image avec uniquement 4 niveaux de gris. Une telle opération se nomme quantification.
On peut effectuer une conversion de l’image d’origine vers une image avec 28−k niveaux de valeurs en effectuant les
remplacements suivant : tous les valeurs entre 0 et 2k sont remplacées par la valeur 0, puis tous les valeurs entre 2k et
2k+1 sont remplacées par la valeur 2k etc. Appliquer cette transformation pour obtenir les images suivantes :

(a) 16 niveaux de gris (b) 8 niveaux de gris (c) 4 niveaux de gris (d) 2 niveaux de gris
(k = 4) (k = 5) (k = 6) (k = 7)

F IGURE A.8. – Quantification

Correction

© 2020-2021 G. Faccanoni 359


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

clear all for k=[4,5,6,7]


figure(k)
A=imread(’[Link]’); subplot(2,2,1)
colormap(gray(256)); imshow(uint8(A));
A=double(A); title ( "Original" );
[row,col]=size(A) subplot(2,2,3)
hist(A(:),0:255);

Exercice A.31 (Floutage par diffusion)


On veut lisser les endroits à fort gradient. Pour cela nous allons calculer une moyenne en chaque pixel comme suit :

∂xx A + ∂ y y A
A ← A+
5
avec 
 0,
 pour i = 1
pour j = 1, . . . 512, ∂xx A i , j ≃ A i +1, j − 2A i , j + A i −1, j , pour i = 2, . . . , 511

0, pour i = 512


 0,
 pour j = 1
pour i = 1, . . . 512, ∂ y y A i , j ≃ A i , j +1 − 2A i , j + A i , j −1 , pour j = 2, . . . , 511

0, pour j = 512

Appliquer 100 fois cette transformation à la matrice A pour obtenir l’image A.9c. a
Appliquer ensuite la détection des bords (normalisée) à l’image A.9c pour obtenir l’image A.9d.

(a) Norme du gradient (b) Norme normalisée (c) Floutage (d) Gradient normali-
sée après floutage

F IGURE A.9. – Détection des bords et Floutage

a. Cela correspond à un schéma 5 points explicite appliqué à l’équation de la chaleur ∂t A = ∇ · ( f (∇A)) avec f l’identité

Correction G=AA+(G1+G2)*0.2;
clear all % on se ramene a [0;255]
m=min(min(G));
A=imread(’[Link]’); M=max(max(G));
colormap(gray(256)); G=255/(M-m).*(G-m);
A=double(A); AA=G;
[row,col]=size(A) end

AA=A; subplot(2,2,1)
for t=1:100 imshow(uint8(A));
% partial_xx title ( "Original" );
G1(1,:)=0*AA(1,:); subplot(2,2,3)
G1(2:row-1,:)=AA(3:row,:)-2*AA(2:row-1,:)+AA(1: hist(A(:),0:255);
row-2,:); subplot(2,2,2)
G1(row,:)=0*AA(row,:); imshow(uint8(G));
% partial_yy title ( "Floutage" );
G2(:,1)=0*AA(:,1); imwrite(uint8(G),’[Link]’,’jpg’);
G2(:,2:col-1)=AA(:,3:col)-2*AA(:,2:col-1)+AA(:,1: subplot(2,2,4)
col-2); hist(G(:),0:255);
G2(:,col)=0*AA(:,col);

360 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Exercice A.32 (Détection des bords)


Afin de localiser des objets dans les images, il est nécessaire de détecter les bords de ces objets. Ces bords correspondent
à des zones de l’image où les valeurs des pixels changent rapidement. C’est le cas par exemple lorsque l’on passe du
chapeau (qui est clair, donc avec des valeurs grandes) à l’arrière plan (qui est sombre, donc avec des valeurs petites).
Afin de savoir si un pixel avec une valeur est le long d’un bord d’un objet, on prend en compte les valeurs de ses quatre
voisins (deux horizontalement et deux verticalement). Pour cela nous allons calculer et afficher la norme d’un gradient
discret en chaque pixel comme suit : q¡ ¢2 ¡ ¢2
N (A i , j ) = ∂x A i , j + ∂ y A i , j
avec 
 A i +1, j − A i , j , pour i = 1


A i +1, j −A i −1, j
pour j = 1, . . . 512, ∂x A i , j ≃ 2 , pour i = 2, . . . , 511


A
i , j − A i −1, j , pour i = 512

 A i , j +1 − A i , j , pour j = 1


A i , j +1 −A i , j −1
pour i = 1, . . . 512, ∂y Ai , j ≃ 2 , pour j = 2, . . . , 511


A
i , j − A i , j −1 , pour j = 512

Appliquer cette transformation suivie de la transformation en négatif pour obtenir l’image A.9a. On remarque que les
valeurs obtenues appartiennent à l’intervalle [130; 255].
Pour améliorer le rendu, ramener le niveaux de gris à l’intervalle [0; 255] par une transformation affine ce qui donne
l’image A.9b. Cela correspond à la transformation

f : [m; M ] → [0; 255]


255
g 7→ (g − m)
M −m

Correction % normalisation sur [0;255]


clear all m=min(min(G))
M=max(max(G))
A=imread(’[Link]’); Gn=255/(M-m).*(G-m);
colormap(gray(256));
A=double(A);
[row,col]=size(A) subplot(2,3,1)
imshow(uint8(A));
% partial_x title ( "Original" );
G1(1,:)=(A(2,:)-A(1,:)); subplot(2,3,4)
G1(2:row-1,:)=(A(3:row,:)-A(1:row-2,:))/2; hist(A(:),0:255);
G1(row,:)=(A(row,:)-A(row-1,:)); subplot(2,3,2)
imshow(uint8(G));
% partial_y title ( "Gradient (negatif)" );
G2(:,1)=(A(:,2)-A(:,1)); imwrite(uint8(G),’[Link]’,’jpg’);
G2(:,2:col-1)=(A(:,3:col)-A(:,1:col-2))/2; subplot(2,3,5)
G2(:,col)=(A(:,col)-A(:,col-1)); hist(G(:),0:255);
subplot(2,3,3)
% norme 2 du gradient imshow(uint8(Gn));
G=sqrt(G1.^2+G2.^2); title ( "Gradient normalise (negatif)" );
imwrite(uint8(Gn),’[Link]’,’jpg’);
% negatif subplot(2,3,6)
G=255-G; hist(Gn(:),0:255);

Exercice A.33 (Tests SVD)


Nous allons appliquer la décomposition SVD à la compression d’images. Nous allons travailler avec des images en
niveaux de gris (grayscale image en anglais) dont chaque pixel est codé par un entier entre 0 et 255. En conséquence,
une image de n × p pixels sera représentée par une matrice rectangulaire avec n lignes et p colonnes à coefficients
dans { 0, 1, . . . , 255 } contenant des niveaux de gris et réciproquement, toute matrice rectangulaire avec n lignes et p
colonnes à coefficients dans { 0, 1, . . . , 255 } peut être visualisée comme une image en niveaux de gris. Voici un exemple :

© 2020-2021 G. Faccanoni 361


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

A=ones(100,200);
A(45:55,40:60)=ones(11,21)*255;
Octave la transforme en matrice avec la fonction imread.
On a bien une matrice de taille 512 × 512. On peut afficher
cette matrice comme une image en niveaux de gris comme
suit :
colormap(gray(256));
imshow(uint8(A));
% uint8(x) convert x to unsigned 8-bit integer
F IGURE A.10. – Matrice initiale
type
et on obtient

Considérons la matrice  
0 0
A = 0 0
1 1
Calculer analytiquement et vérifier numériquement sa décomposition SVD.
Calculer la valeur de s telle que σi < 10−16 (le zéro machine) pour i = s + 1, . . . , r . Est-ce plus rentable stocker la matrice
A ou sa décomposition SVD ?

Correction
A ∈ Rn×p avec n = 3 et p = 2 donc r = 2.
Pour calculer la décomposition SVD nous allons calculer les valeurs et vecteurs propres des matrices AAT et AT A.
 
0 0 0 µ ¶
T 1 1
AA = 0 0 0 AT A =
1 1
0 0 2

Valeurs propres :

λ1 = 2 > λ2 = λ3 = 0 λ1 = 2 > λ2 = 0

Vecteurs propres unitaires :

µ p p ¶
 
0 1 0
1/ 2 1/ 2
U = 0 0 1 V= p p
1/ 2 −1/ 2
1 0 0

Donc

σ1 vT1
  

..  . 
  .. 


 .  
  vT 
¢ σr
A = USVT = u1
¡  r 
... ur ur +1 ... un 

 T 
| {z } 0  vr +1 
∈Rn×n ..   .. 
  

 .  . 
0 vTp
| {z } | {z }
∈Rn×p ∈Rp×p
σ1 vT1
  
r
..   ..  X
σi ui × vTi
¡ ¢
= u1 ... ur  .  .  =
i =1
σr vTr
| {z } | {z }
∈Rn×r ∈Rr ×r
| {z } | {z }
∈Rr ×r ∈Rr ×p

devient
 p
p p ¶
 
0 1 0 2 0 µ
1/ 2 1/ 2
A= 0 0 1  0 0  p p
1/ 2 −1/ 2
1 0 0 0 0

362 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

1 µ p p p ¶
 
0 ¶µ
r =2  2 0 1/ 2 1/ 2
= 0 0  p p
0 0 1/ 2 −1/ 2
1 0
 p p 
0 0 0 0
   
p 1/ 2 −1/ 2 p
s=1
= 2  0p 0 +0 0
p 0  = 2  0p 0 
p
1/ 2 1/ 2 0 0 1/ 2 1/ 2

Pour stocker la matrice A nous avons besoin de n × p = 3 × 2 = 6 valeurs, pour stocker la décomposition SVD nous avons
besoin de n × r + r + r × p = 3 × 2 + 2 + 2 × 2 = 12 valeurs. Cependant, comme σi = 0 pour i = 2, nous pouvons reconstruire la
matrice A en stockant juste une partie de la décomposition SVD et nous avons besoin de n × s + s + s × p = 3 × 1 + 1 + 1 × 2 = 6
valeurs.

Exercice A.34 (Traitement mathématique des images numériques - compression par SVD)
1. Tester la compression avec s = 10 et s = 100 pour obtenir les images A.11 ainsi que la carte des erreurs.
n ¯ o
np
2. Calculer max s ∈ [0; r ] ¯ s < n+p+1 qui est la limite en dessous de laquelle le stockage de la décomposition SVD
¯

permet des économies de mémoire par rapport au stockage de l’image initiale.


3. Supposons que la précision d’Octave soit de l’ordre de 3 chiffres significatifs. Alors les valeurs singulières
significatives doivent avoir un rapport de moins de 10−3 avec la valeur maximale σ1 , les autres étant considérées
comme «erronées». Calculer le nombre de valeurs singulières «significatives», i.e. la plus grande valeur de s telle
σ
que σ1i < 10−3 pour i = s + 1, . . . , r .

(a) Original s = n = p = 512

¯σ
¯ ¯
np
n o n o
(b) min s ∈ [0; r ] ¯ σ s < 10−5 = (c) max s ∈ [0; r ] ¯ s < n+p+1 =
¯ (d) s = 100 (e) s = 10
1
275 255

¯σ
¯ ¯
np
n o n o
(f) min s ∈ [0; r ] ¯ σ s < 10−5 = (g) max s ∈ [0; r ] ¯ s < n+p+1 =
¯ (h) s = 100 (i) s = 10
1
275 255

F IGURE A.11. – SVD - exercice A.34

Correction

© 2020-2021 G. Faccanoni 363


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

clear all
n=2;
A=double(imread(’[Link]’)); for s=[vsSignif,floor(economie),100,10]
[row,col]=size(A) subplot(5,2,2*n-1)
X=U(:,1:s)*S(1:s,1:s)*(V(:,1:s))’;
colormap(gray(256)); imshow(uint8(X));
title ( strcat("s=",num2str(s)) );
subplot(5,2,1) imwrite(uint8(X),strcat([’exo6-’ num2str(s) ’.
imshow(uint8(A)); jpg’]),’jpg’);
s=min(row,col); subplot(5,2,2*n)
title ( strcat("s=",num2str(s)) ); erreur=abs(X-A);
imwrite(uint8(A),strcat([’exo6-’ num2str(s) ’.jpg’]) somerr=sum(erreur(:));
,’jpg’); m=min(erreur(:));
M=max(erreur(:));
[U,S,V]=svd(A); erreur=255-255/(M-m)*(erreur-m);
imshow(uint8(erreur));
% on fait des economies de stockage si "s" est < a " imwrite(uint8(erreur),strcat([’exo6-’ num2str(s)
economie" : ’[Link]’]),’jpg’);
economie=row*col/(row+col+1) n+=1;
vsSignif=sum(sum( (S./S(1,1))>1.e-3 )) end

n ¯ o
np
On a max s ∈ [0; r ] ¯ s < n+p+1 = 255 : on fait des économies de stockage tant qu’on garde au plus les premières 255 valeurs
¯

singulières.
La photo de Lena, de taille 512 × 512, possède 275 valeurs singulières «significatives».

A.15.4. Les «mauvaises» propriétés des nombres flottants et la notion de précision


L’expérimentation numérique dans les sciences est un sujet passionnant et un outil fort utile, devenu indispensable pour
certains scientifiques. Malgré la puissance vertigineuse de calcul de nos ordinateurs aujourd’hui, et encore plus de certains
centres de calculs, on aurait tort d’oublier complètement la théorie et de trop se moquer de comment fonctionne la machine,
au risque d’avoir quelques surprises. . .
L’expérimentation numérique dans les sciences est un sujet passionnant et un outil fort utile, devenu indispensable pour
certains scientifiques. Malgré la puissance vertigineuse de calcul de nos ordinateurs aujourd’hui, et encore plus de certains
centres de calculs, on aurait tort d’oublier complètement la théorie et de trop se moquer de comment fonctionne la machine,
au risque d’avoir quelques surprises. . .
Observons des calculs quelque peu surprenants :
format long
0.1 + 0.1 + 0.1 - 0.3 % ans = 5.55111512312578e-17
Que s’est-il passé ? Tout simplement, les calculs effectués ne sont pas exacts et sont entachés d’erreurs d’arrondis. En
effet, tout nombre réel possède un développement décimal soit fini soit illimité. Parmi les nombres réels, on peut alors
distinguer les rationnels (dont le développement décimal est soit fini soit illimité et périodique à partir d’un certain rang) des
irrationnels (dont le développement décimal est illimité et non périodique). Il est aisé de concevoir qu’il n’est pas possible
pour un ordinateur de représenter de manière exacte un développement décimal illimité, mais même la représentation des
développements décimaux finis n’est pas toujours possible. En effet, un ordinateur stocke les nombres non pas en base 10
mais en base 2. Or, un nombre rationnel peut tout à fait posséder un développement décimal fini et un développement
binaire illimité !
Erreurs d’arrondis
1 / 3 - 1 / 4 - 1 / 12 % ans = -1.38777878078145e-17

Non-commutativité
1 + 1e-16 - 1 % ans = 0
-1 + 1e-16 + 1 % ans = 1.11022302462516e-16

Représentation décimale inexacte Dans l’exemple ci-dessous 1.2 n’est pas représentable en machine. L’ordinateur utilise
«le flottant représentable le plus proche de 1.2»
1.2 - 1 - 0.2 % ans = -5.55111512312578e-17

Conséquences

364 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

⋆ On ne peut pas espérer de résultat exact


⋆ La précision du calcul dépend de beaucoup d’éléments
⋆ En général, pour éviter les pertes de précision, on essayera autant que faire se peut d’éviter :
⋆ de soustraire deux nombres très proches
⋆ d’additionner ou de soustraire deux nombres d’ordres de grandeur très différents. Ainsi, pour calculer une
somme de termes ayant des ordres de grandeur très différents (par exemple dans le calcul des sommes
partielles d’une série), on appliquera le principe dit “de la photo de classe” : les petits devant, les grands
derrière.
⋆ tester x == flottant est presque toujours une erreur, on utilisera plutôt abs(x-flottant)<1.e-10 par
exemple.
⋆ “Si on s’y prend bien”, on perd ≈ 10−16 en précision relative à chaque calcul ⇒ acceptable par rapport à la
précision des données.
⋆ “Si on s’y prend mal”, le résultat peut être complètement faux !
Illustrons ce problème d’arrondis en partant de l’identité suivante :
³ x + y ´2 ³ x − y ´2
xy = − .
2 2
Dans le programme suivant on compare les deux membres de cette égalité pour des nombres x et y de plus en plus grands :
prod=@(x,y)[x*y]
diff=@(x,y)[((x+y)/2)^2-((x-y)/2)^2]
a = 6553.99;
b = a+1;
A=zeros(6,3);
for i=1:6
produit = prod(a,b);
difference = diff(a,b);
A(i,1)=a;
A(i,2)=b;
A(i,3)=produit-difference;
b = a+1;
a=produit;
end
printf("a | b | ab-((a+b)/2)^2-((a-b)/2)^2\n")
disp(A)

On constate que la divergence est spectaculaire.

Remarque
Voici deux exemples de désastres causés par une mauvaise gestion des erreurs d’arrondi :
⋆ Le 25 février 1991, pendant la Guerre du Golfe, une batterie américaine de missiles Patriot, à Dharan (Arabie Saoudite),
a échoué dans l’interception d’un missile Scud irakien. Le Scud a frappé un baraquement de l’armée américaine et
a tué 28 soldats. La commission d’enquête a conclu à un calcul incorrect du temps de parcours, dû à un problème
d’arrondi. Les nombres étaient représentés en virgule fixe sur 24 bits. Le temps était compté par l’horloge interne du
système en 1/10 de seconde. Malheureusement, 1/10 n’a pas d’écriture finie dans le système binaire : 1/10 = 0, 1 (dans
le système décimal) = 0, 0001100110011001100110011 . . . (dans le système binaire). L’ordinateur de bord arrondissait
1/10 à 24 chiffres, d’où une petite erreur dans le décompte du temps pour chaque 1/10 de seconde. Au moment de
l’attaque, la batterie de missile Patriot était allumée depuis environ 100 heures, ce qui avait entraîné une accumulation
des erreurs d’arrondi de 0, 34 s. Pendant ce temps, un missile Scud parcourt environ 500 m, ce qui explique que le
Patriot soit passé à côté de sa cible.
⋆ Le 4 juin 1996, une fusée Ariane 5 a explosé 40 secondes après l’allumage. La fusée et son chargement avaient coûté
500 millions de dollars. La commission d’enquête a rendu son rapport au bout de deux semaines. Il s’agissait d’une
erreur de programmation dans le système inertiel de référence. À un moment donné, un nombre codé en virgule
flottante sur 64 bits (qui représentait la vitesse horizontale de la fusée par rapport à la plate-forme de tir) était converti
en un entier sur 16 bits. Malheureusement, le nombre en question était plus grand que 32768, le plus grand entier que
l’on peut coder sur 16 bits, et la conversion a été incorrecte.

© 2020-2021 G. Faccanoni 365


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

Exercice A.35
Exécuter les instructions suivantes et commenter :
a=1;
b=1;
while a+b ~= a
b=b/2
end

Correction
La variable b est divisée par deux à chaque étape tant que la somme de a et b demeure différente (~=) de a. Si on opérait sur
des nombres réels, ce programme ne s’arrêterait jamais, tandis qu’ici il s’interrompt après un nombre fini d’itérations et
renvoie la valeur suivante pour b : 1.1102 × 10−16 = ϵM /2. Il existe donc au moins un nombre b différent de 0 tel que a + b = a.

Exercice A.36
Calculer analytiquement et numériquement les premiers 100 termes des suites suivantes :
( ( (
u 0 = 14 , v 0 = 15 , w 0 = 31 ,
u n+1 = 5u n − 1, v n+1 = 6v n − 1, w n+1 = 4v w − 1.

Correction
Clairement u i = 14 , v i = 15 et w i = 13 pour tout i ∈ N. Cependant, lorsqu’on calcul les premiers 100 termes de ces deux suites
avec Python (ou avec un autre langage de programmation) on a quelques surprises.
Si on écrit
n=30;
u=zeros(n+1,1);
u(1) = 1/4;
for i=1:n
u(i+1) = 5*u(i)-1;
end
disp(u)
on trouve bien u i = 0.25 pour tout i = 0, . . . .
Mais si on écrit
n=30;
v=zeros(n+1,1);
v(1) = 1/5;
for i=1:n
v(i+1) = 6*v(i)-1;
end
disp(v)
on obtient v i ≃ 0.2 pour i = 0, . . . , 5, ensuite les erreurs d’arrondis commencent à se voir.
De même
n=41;
w=zeros(n+1,1);
w(1) = 1/3;
for i=1:n
w(i+1) = 4*w(i)-1;
end
disp(v)

À la vingtième répétition, le résultat est w 20 = 0.333328247070312 ce qui est déjà assez éloigné de 1/3. À la quarantième
répétition de la ligne, le résultat est w 40 = −5592405 ce qui n’a plus rien à voir. En fait, l’erreur sur l’arrondi se cumule et le
résultat devient complètement absurde.

366 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

Exercice A.37 (Suite de Muller)


Considérons la suite

x = 4,
 0


x 1 = 4.25,

 815− x1500
n−1
x n+1 = 108 − .

xn

On peut montrer que limn→+∞ x n = 5 (voir par exemple [Link]


Qu’obtient-on numériquement ?

Correction
x=[4, 4.25];
for i=3:30
x(i)=108-(815-(1500/x(end-1)))/x(end);
end
disp(x)

Exercice A.38 (Évaluer la fonction de Rump)


Évaluer au point (x, y) = (77617, 33096) la fonction de deux variables suivante :

1335 6 11 8 x
f (x, y) = y + x 2 (11x 2 y 2 − y 6 − 121y 4 − 2) + y +
4 2 2y

Correction
f = @(x,y) 1335*y^6/4+x^2*(11*x^2*y^2-y^6-121*y^4-2) + 11*y^8/2+x/(2*y) ;
f(77617,33096) % ans = -1.18059162071741e+21
Si on fait le calcul à la main ou on utilise le module de calcul formel, on trouve une valeur exacte d’environ −0.8273960599n.

Exercice A.39 (Calcul d’intégrale par récurrence)


On veut approcher numériquement l’intégrale I n = 0 x n e αx dx pour n = 50. On remarque que, en intégrant par partie,
R1

on a
1 n
Z Z
x n e αx dx = x n e αx − x n−1 e αx dx (A.1)
α α
ainsi
Z 1
In = x n e αx dx (A.2)
0
1 α n
= e − I n−1 (A.3)
α α
On décide alors de calculer I 50 par la suite récurrente suivante :

e α −1
(
I0 = α ,
I n+1 = α1 e α − n+1
α In , pour n ∈ N.

Écrire un programme pour calculer cette suite. Comparer le résultat numérique avec la limite exacte I n → 0 pour
n → +∞.

Correction
Si on calcule I n avec la formule de récurrence avec α = 1, on remarque que 0 < I n+1 < I n pour n < 17, mais I 18 < 0 et la suite
est instable. On a le même comportement pour les autres valeurs de α.
alpha=1;
myInt=[(exp(alpha)-1)/alpha]
for n=1:20
myInt(n+1)=exp(alpha)/alpha - (n)*myInt(n)/alpha;
end
disp(myInt)
plot([0:20],myInt)

© 2020-2021 G. Faccanoni 367


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

La suite obtenue avec le programme ci-dessus ne tend pas vers zéro quand n tend vers l’infini. Pourquoi un tel comportement
numérique ? Ce comportement est une conséquence directe de la propagation des erreurs d’arrondi : en passant de I n à
I n+1 , l’erreur numérique (accumulation des erreurs de représentation et des premiers calculs) est multipliée par n :
exacte approx
εn+1 = I n+1 − I n+1
1 α n + 1 exacte 1 α n + 1 approx
µ ¶ µ ¶
= e − In − e − In
α α α α
n + 1 exacte approx
=− (I n − In )
α
n +1
=− εn
α
n!
L’erreur numérique |εn | sur l’évaluation de I n croit donc comme αn |ε0 |.

Exercice A.40 (Représentation et manipulation de polynômes)


Dans cette exercice nous allons construire des fonctions qui se trouvent déjà dans Octave, on pourra comparer donc
le résultat obtenu avec celui d’Octave. Attention, vous devez programmer vous même les fonctions indiquées. Toute
utilisation de fonctions toutes prêtes ne sera pas prise en compte.
Soit Rn [x] l’ensemble des polynômes de degré inférieur ou égale à n, n ∈ N∗ . Tout polynôme de cet espace vectoriel
s’écrit de manière unique comme
n
ai x i = a0 + a1 x + · · · + an x n , où a i ∈ R pour i = 0, . . . n.
X
p n (x) =
i =0

Les n + 1 valeurs réels a 0 , a 1 , . . . , a n sont appelés les coordonnées de p n dans la base canonique a de Rn [x] et on peut
les stocker dans un vecteur p :
p = coord(p n , C n ) = (a 0 , a 1 , a 2 , . . . , a n ) ∈ Rn+1
Dans Octave nous utiliserons le vecteur p pour manipuler un polynôme et nous construirons des fonctions pour opérer
sur les polynômes à partir de cette représentation. Par exemple, pour construire le polynôme p 2 (x) = 2 − x + x 2 nous
écrirons
p=[2 -1 1]

Dans le script script_pol.m on écrira les instructions utilisées pour tester les function suivantes :
1. Implémenter une fonction appelée eval_pol permettant d’évaluer le polynôme p (la fonction polynomiale)
en des points donnés. La syntaxe doit être function y=eval_pol(p,x) où x est une valeur numérique ou
un vecteur. Dans le second cas on doit obtenir un vecteur contenant les valeurs de la fonction polynomiale
aux différents points spécifiés dans le vecteur x. Par exemple, pour évaluer le polynôme p(x) = 1 + 2x + 3x 2 en
x = (−1, 0, 1, 2) nous écrirons
p=[1 2 3]
y=eval_pol(p,[-1,0,1,2])

et on veut obtenir le vecteur y = p(x) = (2, 1, 6, 17). En effet on a

p(−1) = 1 + 2 × (−1) + 3 × ((−1)2 ) = 1 − 2 + 3 = 2


p(x) = 1 + 2x + 3x 2 p(0) = 1 + 2 × 0 + 3 × (02 ) = 1 + 0 + 0 = 1
p = coord(p, C 2 ) = (1, 2, 3) p(1) = 1 + 2 × 1 + 3 × (12 ) = 1 + 2 + 3 = 6
p(2) = 1 + 2 × 2 + 3 × (22 ) = 1 + 4 + 12 = 17

2. Implémenter une fonction appelée plot_pol prenant en entrée un polynôme p (i.e. le vecteur qui contient
ses coordonnées) et deux réels a et b > a et qui trace le graphe de p pour x ∈ [a, b]. La syntaxe de l’instruction
doit être plot_pol(p,a,b). Par exemple, pour tracer le graphe du polynôme p(x) = 1 + 2x + 3x 2 sur l’intervalle
[−2; 2] nous écrirons
p=[1 2 3]
plot_pol(p,-2,2)

368 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

3. Implémenter une fonction appelée sum_pol renvoyant la somme de deux polynômes (attention, si les deux
polynômes n’ont pas même degré, il faudra ajouter des zéros en fin du polynôme de plus petit degré afin de
pouvoir calculer l’addition des deux vecteurs représentatifs). Par exemple, pour p = (1, 2, 3) et q = (1, −2), on veut
obtenir s = (2, 0, 3) :

p(x) = 1 + 2x + 3x 2 p = coord(p, C 2 ) = (1, 2, 3)


q(x) = 1 − 2x q = coord(q, C 1 ) = (1, −2) =⇒ q = coord(q, C 2 ) = (1, −2, 0)
2
s(x) = p(x) + q(x) = 2 + 3x s = coord(p + q, C 2 ) = (2, 0, 3)

4. Implémenter une fonction appelée prod_pol renvoyant le produit de deux polynômes.


Exemple, pour p = (1, 0, 3) et q = (1, −2), on veut obtenir u = (1, −2, 3, −6).

p(x) = 1 + 3x 2 p = coord(p, C 2 ) = (1, 0, 3)


q(x) = 1 − 2x q = coord(q, C 2 ) = (1, −2, 0)
2 3
u(x) = p(x) × q(x) = 1 × p(x) − 2x × p(x) = 1 − 2x + 3x − 6x u = coord(p × q, C 3 ) = (1, −2, 3, −6)

5. Implémenter une fonction appelée derivee_pol renvoyant la dérivée d du polynôme p donné en entrée
(attention, si p ∈ Rn [x], alors d ∈ Rn−1 [x]).
Exemple, pour p = (1, 2, 6), on veut obtenir d = (2, 12).

p(x) = 1 + 2x + 6x 2 p = coord(p, C 2 ) = (1, 2, 6)



d (x) = p (x) = 2 + 12x d = coord(d , C 1 ) = (2, 12)

6. Implémenter une fonction appelée primitive_pol renvoyant la primitive v du polynôme p donné en entrée
ayant 0 pour racine (attention, si p ∈ Rn [x], alors v ∈ Rn+1 [x]).
Exemple, pour p = (1, 2, 6), on veut obtenir v = (0, 1, 1, 2).

p(x) = 1 + 2x + 6x 2 p = coord(p, C 2 ) = (1, 2, 6)


Z x Z x
v(x) = p(t ) dt = 1 + 2t + 6t 2 dt = x + x 2 + 2x 3 v = coord(v, C 3 ) = (0, 1, 1, 2)
0 0

7. Implémenter une fonction appelée integrale_pol renvoyant l’intégrale d’un polynôme entre deux valeurs a et
b.
Exemple, pour p = (1, 2, 6), a = 1 et b = 2, on veut obtenir c = 18 :

p(x) = 1 + 2x + 6x 2
Z b Z b Z a
c= p(t ) dt = p(t ) dt − p(t ) dt = v(b) − v(a) = b + b 2 + 2b 3 − a − a 2 − 2a 3 = 18.
a 0 0

8. Implémenter une fonction appelée print_pol prenant en entrée un polynôme p (i.e. le vecteur qui contient ses
coordonnées) et qui écrit dans la fenêtre de commande le polynôme dans la base canonique.
Exemple, pour p = (1, 2, −3, 0, 7), on veut afficher le message 1+2x-3x^2+7x^4.
a. La base canonique de l’espace vectoriel Rn [x] est l’ensemble C n = 1, x, x 2 , . . . , x n
© ª

Correction
Dans le fichier script_pol.m on écrit les instructions qui permettent de tester les différents points de cet exercice.

1. Dans le fichier eval_pol on écrit et on teste cette fonction par exemple comme suit
function [y]=eval_pol(p,x) y=eval_pol([1 2 3],[-1 0 1 2])
y=zeros(size(x));
for k=1:length(p)
y+=p(k)*x.^(k-1);
end
end

2.

© 2020-2021 G. Faccanoni 369


Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023

Dans le fichier plot_pol.m on écrit et on teste cette fonction par exemple comme suit
function plot_pol(p,a,b) plot_pol([-1 0 1],-2,2)
x=linspace(a,b,100);
y=eval_pol(p,x);
plot(x,y);
end

3. Sans perte de généralité, supposons que n > m, alors


n m n
ai x i = ai x i + ai x i coord(p, C ) = (a 0 , a 1 , a 2 , . . . , a m , a m+1 , . . . , a n )
X X X
p(x) =
i =0 i =0 i =m+1
m m n
bi x i = bi x i + 0 × xi coord(q, C ) = (b 0 , b 1 , b 2 , . . . , b m )
X X X
q(x) =
i =0 i =0 i =m+1
m n
(a i + b i )x i + ai x i coord(p + q, C ) = (a 0 + b 0 , a 1 + b 1 , a 2 + b 2 , . . . , a m + b m , a m+1 , . . . , a n )
X X
(p + q)(x) =
i =0 i =m+1

Dans le fichier sum_pol.m on écrit et on teste cette fonction par exemple comme suit
function s=sum_pol(p,q) s=sum_pol([1 2 3],[4 5 6])
n=length(p); s=sum_pol([1 2 3],[4 5])
m=length(q); s=sum_pol([1 2],[4 5 6])
A=zeros(2,max(n,m));
A(1,1:n)=p;
A(2,1:m)=q;
s=sum(A);
end

4. Dans le fichier prod_pol.m on écrit et on teste cette fonction par exemple comme suit
function s=prod_pol(p,q) u=prod_pol([1],[4 5 6])
n=length(p); u=prod_pol([1 2],[4 5 6])
m=length(q); u=prod_pol([1 2 3],[4 5 6])
A=zeros(m,n+m-1); u=prod_pol([1 2 3 4],[4 5 6])
for i=1:m
A(i,i:n+i-1)=q(i)*p;
end
s=sum(A);
end

5. Remarquons que
n n
ai x i d (x) = p ′ (x) = i a i x i −1
X X
p(x) =
i =0 i =0
coord(p, C n ) = (a 0 , a 1 , a 2 , . . . , a n ) coord (d , C n−1 ) = (a 1 , 2a 2 , . . . , na n )

Dans le fichier derivee_pol.m on écrit et on teste cette fonction par exemple comme suit
function d=derivee_pol(p) d=derivee_pol([1])
n=length(p); d=derivee_pol([1 2])
d=p(2:end).*(1:n-1); d=derivee_pol([1 2 3])
end d=derivee_pol([1 2 1 1])

6. Remarquons que
n x n x n x i +1
Z Z
ai x i t i dt =
X X X
p(x) = v(x) = p(t ) dt = ai ai
i =0 0 i =0 0 i =0 i +1
³ a0 a1 a2 an ´
coord(p, C n ) = (a 0 , a 1 , a 2 , . . . , a n ) coord (v, C n+1 ) = 0, , , ,...,
0+1 1+1 2+1 n +1
Dans le fichier primitive_pol.m on écrit prim(1)=0;
prim([2:n+1])=p([1:n])./[1:n];
function prim=primitive_pol(p) end
n=length(p);

370 © 2020-2021 G. Faccanoni


Mis à jour le Mercredi 31 mai 2023 Annexe A. Introduction à Octave/Matlab

et on teste cette fonction par exemple comme suit v=primitive_pol([1 2 3])


v=primitive_pol([1]) v=primitive_pol([1 2 1 1])
v=primitive_pol([1 2])

7. Dans le fichier integrale_pol.m on écrit et on teste cette fonction par exemple comme suit
function integr=integrale_pol(p,a,b) w=integrale_pol([1 1], 1, 2)
prim=primitive_pol(p);
n=length(prim); % = 1+length(p)
aa([1:n])=a.^([0:n-1]);
prima=sum(prim.*aa);
bb([1:n])=b.^([0:n-1]);
primb=sum(prim.*bb);
integr=primb-prima;
end

8. Dans le fichier print_pol.m on écrit et on teste cette fonction par exemple comme suit
function str=print_pol(p) print_pol([1 2 -3 -7 5])
n=length(p); print_pol([1 0 -3 0 5])
str=’’; print_pol([1 2 -3 7])
if n==1; print_pol([1 2 -3])
str=strcat(num2str(p(1))); print_pol([1 2])
else print_pol([1])
strsign=char((p>0)*’+’ + (p<0)*’ ’ + (p==0)*
’0’);
if p(1)~=0
str=num2str(p(1));
end
if p(2)~=0
str=strcat(str,strsign(2),num2str(p(2)),
’x’);
end
for i=3:n
if p(i)~=0
str=strcat(str,strsign(i),num2str(p(i)),
’x^’,num2str(i-1));
end
end
end
end

© 2020-2021 G. Faccanoni 371

Vous aimerez peut-être aussi