Mathématiques pour Médias Numériques
Mathématiques pour Médias Numériques
Gloria Faccanoni
Diplôme d’ingénieur Cnam
i [Link]
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).
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
2
Mis à jour le Mercredi 31 mai 2023 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
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
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
© 2020-2021 G. Faccanoni 3
Table des matières Mis à jour le Mercredi 31 mai 2023
4 © 2020-2021 G. Faccanoni
CHAPITRE 1
Background
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,
⋆ 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
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
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.
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
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
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 ... ...
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
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
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
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
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
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
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
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 !
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 :
¯ ¯
¯+ − + − . . . ¯
¯ ¯
¯− + − + . . . ¯
¯ ¯
¯+ − + − . . . ¯
¯ ¯
¯ .. .. .. .. . . ¯
¯ ¯
¯. . . . .¯
© 2020-2021 G. Faccanoni 11
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023
+ −
a 11 a 12
a 21 a 22
E XEMPLE
µ ¶
5 7
det = 5 × 3 − 7 × 4 = 15 − 28 = −13.
4 3
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
+ + + − − −
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.
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
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
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).
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.
L i ← αL i ;
L i ← L i + α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
C i ← αC i ;
C i ← C i + αC j ;
16 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
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
Théorème 1.8
Deux matrices équivalentes ont le même rang.
def
∥x∥∞ = max |x i |.
1≤i ≤n
© 2020-2021 G. Faccanoni 17
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023
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 .
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 .
p
αi · ui
X
i =1
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,
E XEMPLE
Considérons les trois polynômes
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
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.
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 ¯
p
αi · ui = 0E αi = 0 ∀i .
X
=⇒
i =1
© 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 .
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
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
© ª
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 .
a x ... a 1p x p b1 ,
+ + =
11 1
.. .. ..
(S) . . .
a n1 x 1 + ... + a np x p = bn .
x1 b1 a 11 ... a 1p
. . . ..
x = .. b = .. A = .. .
xp bn a n1 ... a np
© 2020-2021 G. Faccanoni 21
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023
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
0x 1 + · · · + 0x p = b,
(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
L i ← L i + α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 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 4 = 0, x 3 = 0, x 2 = 0, x 1 = 1.
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.
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.
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
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
© 2020-2021 G. Faccanoni 25
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023
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.
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
E XEMPLE
µ ¶ µ ¶
a b d −c
Soit A = . Alors la matrice des cofacteurs de A est la matrice .
c d −b a
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
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
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
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
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
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
x + 3y = 1 + 3 = 4
x + 3y = 1 + 3 = 4 ̸= 0
É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 :
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]
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.
30 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
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
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,
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.
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.
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.
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
Ax = λx
(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
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
2. tr(A) = ni=1 λi ;
P
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)
34 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
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
donc x 3 = κ ∈ R, x 2 = x 3 = κ et x 1 = x 2 = κ donc
1
x = κ 1 .
1
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
donc x 3 = κ ∈ R, x 2 = 0 et x 1 = x 2 − x 3 = −κ donc
−1
x = κ 0 .
1
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
© 2020-2021 G. Faccanoni 35
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023
λ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
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 :
λ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.
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
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
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
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(365) = A365 · x(0) = (PDP−1 )(PDP−1 ) · · · (PDP−1 ) ·x(0) = PD365 P−1 · x(0) .
| {z }
365 fois
38 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
A = USVT
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
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 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
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 :
ℑ
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
ℑ
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
ℑ
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
© 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
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
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
σ(A) ⊂ SO ∩ SR ∩ SC
En effet, on a
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
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
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)
M → AM → (AM)A → (AMA)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
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 ,
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
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])
8 9 0 3
50 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
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.
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
© ¯ ª
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
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
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
© ¯ ª
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 .
© ª
Exercice 1.20
Démontrer que l’ensemble
F = p ∈ R2 [x] ¯ p(1) = 0
© ¯ ª
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 .
© ª
Exercice 1.21
Démontrer que l’ensemble
F = p ∈ R2 [x] ¯ p ′ (1) = 0
© ¯ ª
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 .
© ª
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
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
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
© ¯ ª
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
© ¯ ª
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
⇐⇒ 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
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 ,
© 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
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
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
© ª
© 2020-2021 G. Faccanoni 57
Chapitre 1. Background Mis à jour le Mercredi 31 mai 2023
λ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,
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 = κ
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.
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,
© 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 = −κ,
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 .
© ª
© 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 .
© ¯ ª
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 .
© ¯ ª
Correction
1. F est un sous-espace vectoriel de R4 [x] car
Exercice 1.50
Considérons l’ensemble
F = (x, y, z) ∈ R3 ¯ 2x + y + z = 0 .
© ¯ ª
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 ¯
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 .
© ¯ ª
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
= 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 .
© ª
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
© ¯ ª
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
© ¯ ª
= 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
© ¯ ª
Correction
On montre que F = Vect e1 , . . . , ep où e1 , . . . , ep sont des éléments de R3 [x]. En effet
© ª
= 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
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
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
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
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
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.
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.
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).
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
Correction
On remarque que
½µ ¶¯ ¾
a b ¯¯
E= a, b, c ∈ R
b c ¯
et Bi ∈ E pour tout i = 1, 2, 3, 4.
© 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.
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 ,
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
© ª
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 :
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 ,
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).
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
© 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
© ª
= 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
α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
¡ ¢ ¡ ¢ ¡ ¢ ¡ ¢
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
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
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
© 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
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.
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
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
74 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
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.
qui admet une infinité de solutions de la forme (2κ, 3κ, 5κ) avec κ ∈ [0; 1/5].
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
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
s
2100 2390 2680 2970 100000
2350 m
2680 3010 3340
ℓ = 100000 .
800 910 1020 1130 20000
x
s
100000
2100 2390 2680 2970
0 115 230 m
115 250000
21 21 7 ℓ = − 21
0 0 0 0 − 440000
23
x
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
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
Exercice 1.72
Soit le système linéaire
x + y − z = 1,
(S) 2x + 3y + βz = 3,
x + βy + 3z = −3.
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 + β)
© 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.
© 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.
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,
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).
80 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
donc z = κ ∈ R, y = z et x = z, ainsi
S = { (κ, κ, κ) | κ ∈ R } .
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,
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¯
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
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)
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
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
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
© 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
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,
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,
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.
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
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
© 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
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 .
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
3 T
¡1 ¢
donc x = 4, 4 .
88 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
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
x(k+1) = Tx(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→+∞
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
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
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
⋆ 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
90 © 2020-2021 G. Faccanoni
Mis à jour le Mercredi 31 mai 2023 Chapitre 1. Background
À 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.
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.
σ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
1 0
µ ¶ −1
1 1 −1 1
U= p V= p 1 1
p
0
2 1 1 2 0 0 2
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
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 !
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.
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.
ℓ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
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
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.
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
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.
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
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
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
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
lim x(k) = x.
k→+∞
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
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.
© 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
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
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
On peut choisir de stopper les itérations à la première étape k min pour laquelle
∥δ(x)∥ ≤ toll.
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 .
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.
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
E XEMPLE
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.
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
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
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
donc
1 0 0 1 −5 −7
L = 2 1 0 U = 0 −3 −4
3 4 1 0 0 1
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
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.
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
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.
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
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
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
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
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
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.
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
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
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.
⋆ 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).
⋆ 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.
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
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
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)
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
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 :
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.
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
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
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
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
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α,
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
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
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
β β ... β β α α β β ... β β
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
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
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
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ε
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ε
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ε
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ε
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
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
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
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)
[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
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);
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))
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)))
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
ainsi
1.995
x ≈ −0.995 .
1
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
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 |β|, |γ|, |δ| .
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 = α + β,
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.
⋆ 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
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 −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
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
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
(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).
(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
(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
(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
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
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.
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)
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).
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
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
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
⋆ ω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
où
ω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.
(a) Distribution équirepartie des nœuds (b) Nœuds de C HEBYSHEV-G AUSS -L OBATTO
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 .
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
% NOEUDS EQUIREPARTIS
% 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
% 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");
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
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 .
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
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
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
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π
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 ).
3π
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).
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)
ϕ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
ª
ϕ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
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
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
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
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,
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 +µ)
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
Donc
n ³ ´ M
f (x j )e −i m j h = (n + 1) δkm c k
X X
j =0 k=−(M +µ)
ª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
©
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
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
1
f˜(x) = c k e i kx = c −1 e −i x + c 0 + c 1 e i x
X
k=−1
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
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
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 :
1 0 4
1 0 4
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
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
© ª
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
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
• 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
• 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
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).
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] :
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
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.
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
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 π
¢ ¡
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
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 :
Correction
1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 3 s’écrit
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
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 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 .
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
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 :
Correction
1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 3 s’écrit
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
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
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 .
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
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 + β.
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
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)
a-t-on ?
Correction
1. Dans la base de L AGRANGE le polynôme d’interpolation de degré n = 3 s’écrit
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
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
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.
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 .
λi −1 0 1 2
p A (λi ) det(A + I) det(A) det(A − I) det(A − 2I)
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 ).
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
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).
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);
% 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)
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);
plot(x,fx,’LineWidth’,2,’r-’,...
x,ftildex,’LineWidth’,2,’b:’,...
x,z,’LineWidth’,2,’m.’,...
Px,Py,’o’);
E XEMPLE
⋆ (x 2 )′ = 2x donc 2x dx = x 2 + c
R
1
R 1
⋆ (ln(x))′ = x donc x dx = ln(x) + c
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
161
Chapitre 4. De l’interpolation à l’approximation d’intégrales : formules de quadrature interpolatoires Mis à jour le Mercredi 31 mai 2023
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
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
1
Z Z
5. cos(t ) dt = sin(u(x)) + c 6. dt = tan(u(x)) + c
cos2 (t )
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)
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
(
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
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
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 ),
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 .
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.
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
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
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
© 2020-2021 G. Faccanoni
Rb
Nom Points d’interpolation Polynôme p n ∈ Rn [t ] a p n (t ) dt
a b x
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
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
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
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
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
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
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
4.3. Exercices
4.3.1. Calcul analytique de primitives et intégrales
Primitives : techniques d’intégration
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
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
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 :
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
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
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
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
−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
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
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 ′ :
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
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
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
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
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
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)
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.
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 :
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 .
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)
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
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
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
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
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
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.
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).
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,
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
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
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
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).
F (y(t ), y ′ (t ), y ′′ (t ), . . . , y (p) (t )) = g (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
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.
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.
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.
y(0) = 0.
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é.
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 .
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
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 :
Remarque
On peut montrer que
⋆ 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 :
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)
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
Pour x ∈ R on a
R
⋆ A(x) = −1 dx = −x,
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 ,
ln(2) ln(2)
50 = T (5) = 25 + 50e γt =⇒ γ=− =⇒ T (t ) = 25 + 50e − 5 t
5
T [◦ C]
75
50
25
0 t [minutes]
5 10 15
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
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
1
y(x) = p .
x +C e x
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 α .
(
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
y(t ) = e λ1 t v1 + e λ2 t v2
−B −A
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 − λ
0 − λi
µ ¶ µ ¶
1 i 0
v =
3 −2 − λi 0
donc v1 = (κ1 , κ1 )T .
⋆ Pour λ2 = −3 on doit résoudre
v 12
µ ¶µ ¶ µ ¶
3 1 0
=
3 1 v 22 0
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.
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
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.
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.
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.
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
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)
Z b Z b
f (x) dx ≈ f˜(x) dx = (b − a) f (b).
a a
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))
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
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
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))
⑤ 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
¡ ¢
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))
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.
u n+1 = (1 − h)u n .
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 ,
µ ¶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).
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
¡ 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.
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[.
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
E XEMPLE (AB-1)
On a
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.
E XEMPLE (AB-2)
On a
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
¡ ¢
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
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
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
¡ ¢
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
E XEMPLE (N-1)
On a
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
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
y 1 (t )
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).
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).
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
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.
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
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
.
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
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
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
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.
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
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
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
p ′ (t )
= 1;
p(t )(k − hp(t ))
p0 1
D= = k
.
k − hp 0 −h
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
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.
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
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 :
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
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.
y ′ (t )
= 0, 022;
y(t )(20 − y(t ))
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
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
On cherche d’abord les solutions constantes, i.e. des fonctions y(t ) = A pour tout t ∈ R :
0 = A ln(A) ⇐⇒ A = 1.
y ′ (t )
= −1;
y(t ) ln(y(t ))
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.
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).
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)
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.
Correction
On a a(x) = 1, b(x) = 2 et g (x) = e −2x . On a
R
⋆ A(x) = 2 dx = 2x,
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 →+∞
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
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 .
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
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 ,
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 :
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
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
3. Reste à calculer la quantité de sel après 30 minutes : y(30) = 150 − 130e −3/20 ≃ 38.1 kg.
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
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
−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.
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
ℓ(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 !
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 )
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
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
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
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
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
T ′ (t ) = K (T (t ) − 25).
T (5) = 50.
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,
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
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 .
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 )
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.
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,
0 b t
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.
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 ).
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 .
É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
kD p0
p 0 = p(0) = =⇒ D= .
1 + hDe 0k k − hp 0
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é,
⋆ 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).
f : R2 → R
(x, y) 7→ 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
Si on considère des coupes horizontales on obtient, de façon générale, des courbes planes, dites courbes ou lignes de niveau.
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.
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.
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.
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 .
∂x1 f (x̂)
∂ f (x̂)
x2
∇ f (x̂) = ..
.
∂xn f (x̂)
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 )
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.
µ ¶ y
−2
∇ f (−1, 1) =
1
k =2
1
k =1
−1 k =0 x
k = −1
k = −2
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
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
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
∂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.
∂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 )
E XEMPLE
Les dérivées premières et secondes de la fonction f (x, y) = −2x 2 + 3x y 2 − y 3 sont
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.
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) 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 )).
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
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.
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
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 ) ,
¡
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
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
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
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.
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) :
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.
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 ?
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
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
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
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
Exercice 6.7
Soit f : R2 → R une fonction de classe C 2 (R2 ) et (a, b) un point de R2 . On suppose que
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 ?
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.
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).
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.
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.
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 :
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.
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 .
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
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
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 .
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
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
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
y − x12 = 0
µ ¶ (
0
∇ f (x, y) = ⇐⇒ ⇐⇒ (x, y) = (1, 1).
0 x − y12 = 0
π
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 (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
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
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
(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).
(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
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 :
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
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 :
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
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
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 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) = 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);
(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
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
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
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)
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.
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)
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
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.
c(x, y) = x 2 + 2y 2
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
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
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
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 .
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
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)
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
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
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 .
%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))
∂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
∂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
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)
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é.
∂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
∂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
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 .
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
φ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
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
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
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
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
¡ ¢
⋆ 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 )
¡ ¢
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
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
à !
∂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
∂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
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
E : R3 → R+
n
(a, b, c) 7→ E (a, b, c) = d i2 .
X
i =0
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
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
à !
∂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
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
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 :
% le seul polynome de degre 2 qui interpole ces points est la parabole d’equation y=x^2
ynew=newton(P,x);
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,’:’);
plot(P(:,1),P(:,2),’o’,x,ylin,x,ypar,x,ynew,’:’);
φ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;
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
for j=1:m
A(:,j)=phi(j,P(:,1));
end
alpha = (A’*A)\(A’*P(:,2));
% AFFICHAGE
x=[-1:0.1:1];
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|’)
Correction
En TP, dans les fichiers fittingpolynomialPoly.m et naivePoly.m on a écrit les function
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) = + +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.
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].
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
figure(1)
plot(P(:,1),P(:,2),’o’,x,ylin,x,ypar);
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
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
40
30
20
10
1 2 3 4 x
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
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
et on obtient
a 0 = 0.914534618675843625,
a = 0.914534618675843625,
1
a 2 = −0.000620138768106035594,
a 3 = −0.000620138768106035594.
On a alors
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);
%
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 :
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) :
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
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 ))
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))
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.
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 .
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 :
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.
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,
2286, 2303, 1432, 1577, 2389, 1945, 1589, 1438, 2408, 1925, 1431, 1652, 2215, 2420, 1546, 1597, 2429, 2381, 1672, 1636).
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.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.
(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.
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é.
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
p p
1 X
f j αj = n j αj .
X
x̄ =
j =1 n j =1
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.
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é.
1 Xn
E (µ) = (x k − µ)2 .
n k=1
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
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
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
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
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)
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
% 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;
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.
F IGURE 8.2. – Boîte à moustaches des durées de vie des ampoules (data 8.2).
E XEMPLE
Utilisons les data 8.2.
clear all
% Nombre d’elements
n=length(valeurs)
%Moyenne
moyenne=mean(valeurs)
%Mediane
mediane=median(valeurs)
% Incertitude de type A
ua=etsb/sqrt(n)
% Decoupage en classes
ncl=length(tt)-1
% 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
⋆ 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 ,·
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
• 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
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.
Chaque distribution contient n i ,· observations et on peut calculer les quantités conditionnelles suivantes :
ni , j fi , j q
X
f j |i = = avec f j |i = 1;
n i ,· f i ,· 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
Modalités de y
β1 ... βj ... βq
Modalités de x
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 :
ni , j fi , j
fi | j = =
n ·, j f ·, j
p p
1 X
n i , j αi = f j |i αi
X
x̄| j =
n ·, j i =1 i =1
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
Modalités de y
β1 ... βj ... βq Fréquence marginale de αi
Modalités de x
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
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
1¡ ¢ 1 3
x̄ = n 1,· α1 + n 2,· α2 = (3α1 + 3α2 ) = ,
n 6 2
1¡ ¢ 1¡ ¢ 7
ȳ = n ·,1 β1 + n ·,2 β2 + n ·,3 β3 = 2β1 + 1β2 + 3β3 = .
n 6 6
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
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
Modalités de y
β1 = 0 β2 = 1 β3 = 2
Modalités de x
On a bien
p=2
X ¯ 3 43 7
ȳ¯i f i ,· = 1 + = = ȳ,
i =1 6 36 6
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
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
B
β3 = 2
A
α1 = 1 1/6
α2 = 2 2/6
Fréquence marginale de β3 f ·,3 = 3/6
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
Modalités de y
β1 = 0 β2 = 1 β3 = 2 Fréquence marginale de αi
Modalités de x
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
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.
1 Xn
C (x, y) = (x k − x̄)(y k − ȳ).
n k=1
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
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.
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)
On a
⋆ r (λx, λy) = r (x, y) pour tout λ ∈ R∗ ,
⋆ r (x, y) ∈ [−1; 1].
A3
y = γ0 + γ1 x
A2
A4
A1
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).
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
¡
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
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
γ0
· ¸· ¸ · ¸
1 x̄ ȳ
= .
x̄ V (x) + (x̄)2 γ1 C (x, y) + x̄ȳ
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)
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
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
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
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.
E XEMPLE
Considérons les quatre séries de 11 observations simultanées de deux variables x et y suivantes :
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.
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 :
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.
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
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
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
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
Pour le groupe TP2 on note v = (4, 4, 4, 5) (dans l’ordre croissante) ce qui donne le tableau des fréquences
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
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.
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.
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
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
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
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
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
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
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
10
ȳ i =1 = f j =1|i =1 β1 + f j =2|i =1 β2 =
10 + a
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
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
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];
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
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.
309
Annexe A. Introduction à Octave/Matlab Mis à jour le Mercredi 31 mai 2023
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”.
³ 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")
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 :
>> 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».
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.
+ Addition
- Soustraction
* Multiplication
/ Division
ˆ Exponentiation
Quelques exemples :
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
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
>> b = [1; 2; 3]
b =
1
2
3
>> 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).
ATTENTION
Dans Octave les indices commencent à 1, ainsi A(1,:) indique la première ligne, A(2,:) la deuxième etc.
>> 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 )
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
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=[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
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)
On écrit Ça signifie
< <
> >
<= ≤
>= ≥
== =
~= ̸=
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
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)
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]
ismember(2,x) % output 1
ismember(11,x) % output 0
ATTENTION
Pour éviter de surcharger une fonction déjà définie dans Matlab/Octave, prendre l’habitude d’appeler ses fonctions par
my...
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 :
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 :
>> source("Bureau/TP1/heron.m")
>> heron(3,5,4)
ans = 6
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 :
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)
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).
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
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)
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)
function y=f(x)
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)
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.
Voir la table A.1 et la documentation de Matlab pour connaître les autres options.
x = [-pi:0.05*pi:pi];
figure(1)
plot(x, sin(x), ’r’)
figure(2)
plot(x, cos(x), ’g’)
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.
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));
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
...
...
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.
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])
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 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
Il est possible d’imbriquer des boucles, c’est-à-dire que dans le bloc d’une boucle, on utilise une nouvelle boucle.
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]
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.
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
E XEMPLE
Quasiment toutes les fonctions prédéfinies sont vectorisées. Voici un exemple avec la fonction sin.
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 :
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 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
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
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)
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.
Exercice A.2 (Opérations élément par élément, produit scalaire, produit vectoriel)
① 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)
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
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.
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 ?
Correction
Correction a = diff(b);
① c=a+b
② a=b(2:n)-b(1:n-1) ③ a(a>5) -= 20
soit encore
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
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
Exercice A.7
① Copier les instructions suivantes dans un script file. Exécuter le script et commenter les résultats.
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
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/B calcule le produit AB−1 si B est inversible, A.\B calcule la matrice C = (ai j /bi j )1≤i , j ≤3 .
② 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]
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
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],:)
③ 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)
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)
⑥ 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)’
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
2. Dans un fichier exercice1.m écrire un script pour tester cette fonction pour n = 1, . . . , 5.
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.
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
Correction
Pour répondre à la question on peut utiliser le script suivant :
format long
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 ϕ.
Correction
Rappel : sin(a + b) = sin(a) cos(b) + cos(a) sin(b) ainsi
¡ 6 ¢ α = −1.76789123 ¡ 6 ¢ α = −1.76789123
µ ¶µ ¶ µ ¶ µ ¶µ ¶ µ ¶
sin(π) cos(π) ¡0 ¢ −1
i.e.
sin 65 π cos 5 π β sin 56 π cos 5 π β
¡ ¢
−2.469394443 −2.469394443
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).
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)
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))
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 :
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)
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)])
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
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.
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.
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;
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.
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;
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()
Correction
clc;
clear all;
cas=4;
% 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];
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)
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 .
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);
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
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.
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]
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
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.4. Hstack
B=[A(:,end/2:end)A(:,end:-1:end/2)];
[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
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 = @(g) (g+255)/2;
et on obtient
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
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
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
(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
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;
6. Non linear :
a=3; f = @(g)255*(g/255).^a;
a=1/3; f = @(g)255*(g/255).^a;
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
(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)
Correction
∂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
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);
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
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
µ 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
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
¯
¯σ
¯ ¯
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
Correction
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».
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
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.
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.
Correction
x=[4, 4.25];
for i=3:30
x(i)=108-(815-(1500/x(end-1)))/x(end);
end
disp(x)
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.
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)
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 |.
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])
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)
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) :
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).
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).
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.
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
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);
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