11 · Vecteurs gaussiens¶
Intuition
C'est le chapitre où l'algèbre et les probabilités se rejoignent.
Un vecteur aléatoire rassemble plusieurs variables. Sa dispersion n'est plus un nombre mais une matrice — la matrice de covariance, qui contient les variances sur sa diagonale et les covariances ailleurs.
Cette matrice est symétrique réelle. Elle est donc diagonalisable en base orthonormée, par le théorème spectral du chapitre Algèbre 10. Et cette diagonalisation est exactement l'analyse en composantes principales — la méthode centrale de la science des données.
Le programme du S1 s'arrête au bord de cette porte. Ce chapitre l'ouvre.
1. Vecteur aléatoire¶
Définitions
Un vecteur aléatoire est \(\mathbf{X} = (X_1,\dots,X_n)^\top\), chaque \(X_i\) étant une variable aléatoire réelle.
Son vecteur espérance est
Sa matrice de covariance est la matrice \(n\times n\)
Structure de \(\mathbf{\Sigma}\) :
- sur la diagonale : \(\Sigma_{ii} = \operatorname{Cov}(X_i,X_i) = \operatorname{V}(X_i)\) ;
- hors diagonale : les covariances.
Deux propriétés fondamentales
1. \(\mathbf{\Sigma}\) est symétrique, car \(\operatorname{Cov}(X_i,X_j)=\operatorname{Cov}(X_j,X_i)\).
2. \(\mathbf{\Sigma}\) est semi-définie positive : pour tout vecteur \(\mathbf{u}\),
Démonstration de la positivité
Posons \(Y = \mathbf{u}^\top\mathbf{X} = \sum_i u_iX_i\), une variable aléatoire réelle. Par bilinéarité de la covariance :
Or une variance est toujours positive. \(\blacksquare\)
Interprétation : \(\mathbf{u}^\top\mathbf{\Sigma}\mathbf{u}\) est la variance de la projection du nuage dans la direction \(\mathbf{u}\).
Conséquence spectrale
\(\mathbf{\Sigma}\) étant symétrique réelle, le théorème spectral s'applique : elle est diagonalisable en base orthonormée, et ses valeurs propres sont réelles et positives ou nulles.
2. Transformation affine¶
Théorème
Si \(\mathbf{Y} = \mathbf{A}\mathbf{X}+\mathbf{b}\) avec \(\mathbf{A}\) matrice \(m\times n\) et \(\mathbf{b}\) vecteur de \(\mathbb{R}^m\), alors
Le \(\mathbf{A}^\top\) n'est pas optionnel
C'est la généralisation matricielle de \(\operatorname{V}(aX) = a^2\operatorname{V}(X)\) : le « carré » du scalaire devient \(\mathbf{A}\cdots\mathbf{A}^\top\).
Le vecteur \(\mathbf{b}\) disparaît, comme la constante additive dans le cas scalaire.
Cas particulier utile : pour \(\mathbf{u}\) vecteur, \(Y=\mathbf{u}^\top\mathbf{X}\) est réelle et
3. Vecteur gaussien¶
Définition
\(\mathbf{X}\) est un vecteur gaussien si toute combinaison linéaire \(\mathbf{u}^\top\mathbf{X}\) suit une loi normale réelle.
On note \(\mathbf{X}\sim\mathcal{N}(\mathbf{m},\mathbf{\Sigma})\).
Marginales gaussiennes ≠ vecteur gaussien
Il ne suffit pas que chaque \(X_i\) soit normale. Contre-exemple : soit \(X\sim\mathcal{N}(0,1)\) et \(\varepsilon\) valant \(\pm1\) avec probabilité \(\frac12\), indépendant. Alors \(Y=\varepsilon X\) est aussi \(\mathcal{N}(0,1)\) — mais \(X+Y\) vaut \(2X\) ou \(0\) avec probabilité \(\frac12\) chacun, ce qui n'est pas une loi normale.
Le couple \((X,Y)\) a donc deux marginales gaussiennes sans être un vecteur gaussien.
Densité (quand \(\mathbf{\Sigma}\) est inversible) :
C'est la généralisation directe du cas \(n=1\), où \(\mathbf{\Sigma}^{-1}\) remplace \(\frac{1}{\sigma^2}\) et \(\det\mathbf{\Sigma}\) remplace \(\sigma^2\).
3.1 Le théorème du chapitre¶
Dans le cas gaussien, non corrélées ⟺ indépendantes
Soit \(\mathbf{X}\) un vecteur gaussien. Alors
Plus fort : les composantes sont mutuellement indépendantes si et seulement si \(\mathbf{\Sigma}\) est diagonale.
L'hypothèse « vecteur gaussien » est indispensable
Le contre-exemple du chapitre 10 — \(X\) uniforme sur \(\{-1,0,1\}\) et \(Y=X^2\) — reste valable : covariance nulle, dépendance totale.
Et même avec des marginales gaussiennes, le contre-exemple ci-dessus (\(Y=\varepsilon X\)) donne \(\operatorname{Cov}(X,Y)=\mathbb{E}[\varepsilon] \mathbb{E}[X^2]=0\) alors que \(|Y|=|X|\).
C'est la structure gaussienne du vecteur qui fait le théorème, pas celle des marginales.
Pourquoi c'est si commode
Dans le monde gaussien, il suffit d'annuler des covariances — un calcul linéaire — pour obtenir l'indépendance, une propriété a priori beaucoup plus forte.
C'est ce qui rend les modèles gaussiens omniprésents : filtre de Kalman, régression linéaire, processus gaussiens, bruit blanc.
4. Réduction à des composantes indépendantes¶
Le résultat central
Soit \(\mathbf{X}\sim\mathcal{N}(\mathbf{m},\mathbf{\Sigma})\). Diagonalisons \(\mathbf{\Sigma} = \mathbf{P}\mathbf{D}\mathbf{P}^\top\) avec \(\mathbf{P}\) orthogonale.
Posons \(\mathbf{Y} = \mathbf{P}^\top(\mathbf{X}-\mathbf{m})\). Alors
\(\mathbf{Y}\) est un vecteur gaussien centré à matrice de covariance diagonale : ses composantes sont indépendantes, de variances \(\lambda_1,\dots,\lambda_n\) (les valeurs propres).
C'est l'analyse en composantes principales
| Objet probabiliste | Objet ACP |
|---|---|
| Vecteurs propres de \(\mathbf{\Sigma}\) | Composantes principales |
| Valeurs propres \(\lambda_i\) | Variance portée par chaque composante |
| \(\sum\lambda_i = \operatorname{tr}\mathbf{\Sigma}\) | Variance totale du nuage |
| \(\frac{\lambda_k}{\sum\lambda_i}\) | Part de variance expliquée |
| Garder les \(k\) plus grandes | Réduction de dimension |
L'ACP, enseignée en deuxième année dans le module ANDO23, est ce calcul. Elle consiste à trouver le repère dans lequel les données sont décorrélées, puis à jeter les directions de faible variance.
Interprétation géométrique : les lignes de niveau de la densité gaussienne sont des ellipsoïdes. Les vecteurs propres en donnent les axes, et les \(\sqrt{\lambda_i}\) les demi-longueurs.
Exemples traités¶
Exemple 1 — Matrice de covariance
Soit \(X\) et \(Y\) avec \(\operatorname{V}(X)=4\), \(\operatorname{V}(Y)=9\), \(\operatorname{Cov}(X,Y)=-3\).
Vérifications. Symétrique ✓ Déterminant \(= 36-9 = 27 > 0\) et trace \(=13>0\) : les deux valeurs propres sont positives ✓
Variance de \(S=X+Y\). Avec \(\mathbf{u}=(1,1)^\top\) :
✓ cohérent avec \(4+9+2(-3)=7\) du chapitre précédent.
Exemple 2 — Diagonalisation, ou ACP à la main
Diagonaliser la matrice de covariance
Valeurs propres. \(\operatorname{tr}=10\), \(\det = 25-9=16\).
\(\lambda_1 = 8\), \(\lambda_2 = 2\).
Vecteurs propres. \(\lambda=8\) : \(\begin{pmatrix}-3&3\\3&-3\end{pmatrix}\) donne \(y=x\), vecteur normalisé \(\frac{1}{\sqrt2}(1,1)^\top\). \(\lambda=2\) : \(y=-x\), vecteur \(\frac{1}{\sqrt2}(1,-1)^\top\).
Ils sont orthogonaux ✓ (théorème spectral).
Lecture ACP.
- Première composante principale : direction \((1,1)\) — la « somme » des deux variables. Elle porte une variance de 8.
- Seconde : direction \((1,-1)\) — la « différence ». Variance 2.
- Variance totale : \(8+2 = 10 = \operatorname{tr}\mathbf{\Sigma}\) ✓
- Part expliquée par la première : \(\frac{8}{10} = \textbf{80 \%}\).
Conclusion pratique : on peut remplacer les deux variables par leur somme seule, en ne perdant que 20 % de l'information. C'est exactement ce que fait une ACP.
Exemple 3 — Décorrélation explicite
Avec la \(\mathbf{\Sigma}\) précédente et \(\mathbf{X}\) gaussien centré, posons
Alors \(\operatorname{V}(U) = 8\), \(\operatorname{V}(V)=2\), et
Comme \((U,V)\) est un vecteur gaussien (combinaisons linéaires d'un vecteur gaussien), la covariance nulle entraîne l'indépendance.
On a transformé deux variables corrélées en deux variables indépendantes, par une simple rotation de 45°.
Exemple 4 — Simuler un vecteur gaussien corrélé
On veut simuler \((X,Y)\) gaussien centré avec \(\mathbf{\Sigma}=\begin{pmatrix}1&\rho\\\rho&1\end{pmatrix}\).
Méthode. Partir de \(Z_1, Z_2\) indépendantes \(\mathcal{N}(0,1)\) (Box-Muller, chapitre 09), et poser
Vérification. \(\operatorname{V}(Y) = \rho^2+(1-\rho^2) = 1\) ✓
C'est la décomposition de Cholesky de \(\mathbf{\Sigma}\) : \(\mathbf{\Sigma} = \mathbf{L}\mathbf{L}^\top\) avec
et \(\mathbf{X} = \mathbf{L}\mathbf{Z}\) donne bien \(\mathbf{\Sigma}_{\mathbf X} = \mathbf{L}\mathbf{I}\mathbf{L}^\top = \mathbf{\Sigma}\) ✓
Erreurs fréquentes¶
| Erreur | Correction |
|---|---|
| \(\mathbf{\Sigma}_{\mathbf Y} = \mathbf{A}^2\mathbf{\Sigma}\) | C'est \(\mathbf{A}\mathbf{\Sigma}\mathbf{A}^\top\) |
| Marginales gaussiennes \(\implies\) vecteur gaussien | Faux |
| Non corrélées \(\implies\) indépendantes hors du cas gaussien | Faux |
| Valeur propre négative pour \(\mathbf{\Sigma}\) | Impossible — erreur de calcul |
| Oublier de normaliser les vecteurs propres | \(\mathbf{P}\) doit être orthogonale |
| Confondre \(\mathbf{\Sigma}\) et la matrice de corrélation | La seconde a des 1 en diagonale |
Exercices¶
★ Exercice 1. Écrire la matrice de covariance de \((X,Y)\) avec \(\sigma_X=3\), \(\sigma_Y=2\), \(\rho=0{,}5\).
★★ Exercice 2. \(\mathbf{\Sigma}=\begin{pmatrix}2&1\\1&2\end{pmatrix}\).
a) Vérifier qu'elle est semi-définie positive. b) Calculer \(\operatorname{V}(X+Y)\) et \(\operatorname{V}(X-Y)\) par le calcul matriciel. c) Diagonaliser \(\mathbf{\Sigma}\).
★★ Exercice 3. Soit \(\mathbf{X}\) de matrice de covariance \(\mathbf{\Sigma} = \begin{pmatrix}4&0\\0&1\end{pmatrix}\) et \(\mathbf{A} = \begin{pmatrix}1&1\\1&-1\end{pmatrix}\).
Calculer \(\mathbf{\Sigma}_{\mathbf{AX}}\).
★★★ Exercice 4. Soit \(\mathbf{\Sigma}=\begin{pmatrix}3&1&0\\1&3&0\\0&0&2\end{pmatrix}\).
a) Justifier qu'elle est diagonalisable en base orthonormée. b) Déterminer ses valeurs propres et vecteurs propres. c) Donner la part de variance expliquée par chaque composante principale.
★★★ Exercice 5. Soient \(X,Y\) gaussiennes centrées réduites indépendantes. On pose \(U=X+Y\), \(V=X-Y\).
a) Montrer que \((U,V)\) est un vecteur gaussien. b) Calculer \(\mathbf{\Sigma}_{(U,V)}\). c) \(U\) et \(V\) sont-elles indépendantes ? Comparer avec l'exercice 5 du chapitre 10.
★★★ Exercice 6. Montrer qu'une matrice de covariance \(\mathbf{\Sigma}\) d'ordre 2 vérifie nécessairement \(\det\mathbf{\Sigma}\geqslant0\), et interpréter le cas \(\det=0\).
★★★★ Exercice 7. On dispose de \(n\) mesures \(X_1,\dots,X_n\) indépendantes de même loi, d'espérance \(\mu\) et de variance \(\sigma^2\). On pose \(\overline X = \frac1n\sum X_i\).
a) Calculer \(\operatorname{Cov}(X_i, \overline X)\). b) En déduire \(\operatorname{Cov}(X_i-\overline X,\ \overline X)\). c) Que signifie ce résultat pour les résidus d'une régression ?
★★★★ Exercice 8 — lien informatique. On dispose d'un nuage de \(N\) points en dimension \(p\), stocké dans une matrice \(\mathbf{X}\) de taille \(N\times p\) (données centrées).
a) Exprimer la matrice de covariance empirique en fonction de \(\mathbf{X}\). b) Écrire l'algorithme d'ACP complet, étape par étape. c) Quel est le coût de la diagonalisation en fonction de \(p\) ? d) Pour \(p=10^4\) et \(N=100\), ce coût est-il acceptable ? Quelle astuce utilise- t-on ? e) Implémenter une ACP en Python pur sur un jeu de données \(2\times\) synthétique et vérifier que la première composante capte bien la direction principale.
Corrigés¶
Corrigé — Exercice 1
\(\operatorname{Cov}(X,Y) = \rho\sigma_X\sigma_Y = 0{,}5\times3\times2 = 3\).
Contrôle : \(\det = 36-9 = 27>0\) ✓ (nécessaire, voir exercice 6).
Corrigé — Exercice 2
a) Symétrique ✓. Valeurs propres : \(\operatorname{tr}=4\), \(\det=3\), donc \(\lambda^2-4\lambda+3 = 0\), racines 1 et 3, toutes deux positives ✓
b) Avec \(\mathbf{u}=(1,1)^\top\) :
Avec \(\mathbf{v}=(1,-1)^\top\) :
(Contrôle direct : \(2+2\pm2(1)\) donne 6 et 2 ✓)
c) \(\lambda=3\) : vecteur \((1,1)\) normalisé \(\frac{1}{\sqrt2}(1,1)^\top\). \(\lambda=1\) : vecteur \(\frac{1}{\sqrt2}(1,-1)^\top\).
\(\mathbf{P}\) est bien orthogonale : \(\mathbf{P}^\top\mathbf{P}=\mathbf{I}\) ✓
Corrigé — Exercice 3
Lecture : \(X_1+X_2\) et \(X_1-X_2\) ont chacune une variance de 5, et une covariance de 3 — elles sont corrélées, alors que \(X_1\) et \(X_2\) ne l'étaient pas.
C'est cohérent avec \(\operatorname{Cov}(X_1+X_2,X_1-X_2) = \operatorname{V}(X_1)-\operatorname{V}(X_2) = 4-1 = 3\) ✓
(On retrouve la matrice de l'exemple 2 — les deux exercices sont réciproques l'un de l'autre.)
Corrigé — Exercice 4
a) \(\mathbf{\Sigma}\) est symétrique réelle : le théorème spectral s'applique.
b) La matrice est diagonale par blocs. Le bloc \(2\times2\) \(\begin{pmatrix}3&1\\1&3\end{pmatrix}\) a pour valeurs propres 4 et 2 (trace 6, déterminant 8), de vecteurs propres \((1,1,0)\) et \((1,-1,0)\).
Le bloc \(1\times1\) donne \(\lambda=2\), de vecteur propre \((0,0,1)\).
Spectre : \(\lambda_1 = 4\) (mult. 1), \(\lambda_2 = 2\) (mult. 2).
Contrôle : \(4+2+2 = 8 = \operatorname{tr}\mathbf{\Sigma}\) ✓
Base orthonormée :
c) Variance totale \(= 8\).
| Composante | \(\lambda\) | Part |
|---|---|---|
| 1 | 4 | 50 % |
| 2 | 2 | 25 % |
| 3 | 2 | 25 % |
Les deux dernières sont à égalité : le sous-espace propre est de dimension 2, et n'importe quelle base orthonormée de ce plan convient. Les composantes principales ne sont pas uniques dès qu'une valeur propre est multiple.
Corrigé — Exercice 5
a) Toute combinaison linéaire \(aU+bV = (a+b)X+(a-b)Y\) est une combinaison linéaire de \(X\) et \(Y\).
Or \((X,Y)\) est un vecteur gaussien (composantes gaussiennes indépendantes : leur densité conjointe est le produit, ce qui suffit), donc toute combinaison linéaire de \(X,Y\) est normale.
Donc \((U,V)\) est un vecteur gaussien ✓
b) \(\operatorname{V}(U)=\operatorname{V}(V) = 1+1 = 2\), et
c) Oui, \(U\) et \(V\) sont indépendantes — car \((U,V)\) est un vecteur gaussien de covariance nulle.
Comparaison. À l'exercice 5 du chapitre 10, avec \(X,Y\) uniformes sur \(\{0,1\}\), on avait la même covariance nulle mais pas l'indépendance.
C'est exactement l'apport du cadre gaussien : ce qui était insuffisant en général devient suffisant ici.
Corrigé — Exercice 6
Écrivons \(\mathbf{\Sigma} = \begin{pmatrix}\sigma_X^2&c\\c&\sigma_Y^2\end{pmatrix}\) avec \(c = \operatorname{Cov}(X,Y)\).
Par l'inégalité de Cauchy-Schwarz (exercice 6 du chapitre 10) :
Cas \(\det = 0\). C'est le cas d'égalité de Cauchy-Schwarz, donc \(|\rho|=1\) : \(X\) et \(Y\) sont liées par une relation affine \(Y = aX+b\) presque sûrement.
Géométriquement, le nuage de points est aplati sur une droite : il vit en dimension 1 et non 2. La matrice \(\mathbf{\Sigma}\) est alors singulière, la densité gaussienne n'existe pas (on ne peut pas inverser \(\mathbf{\Sigma}\)), et l'on parle de loi gaussienne dégénérée.
Diagnostic pratique
Une matrice de covariance empirique singulière signale une redondance exacte entre variables — souvent une variable calculée à partir des autres, ou plus de variables que d'observations. C'est le cas rencontré à l'exercice 10 du chapitre Algèbre 10.
Corrigé — Exercice 7
a) Par bilinéarité :
Par indépendance, seul le terme \(j=i\) survit :
b)
Les résidus \(X_i-\overline X\) sont non corrélés avec la moyenne.
c) Interprétation. En régression, \(\overline X\) joue le rôle de la valeur ajustée et \(X_i-\overline X\) celui du résidu. Le résultat dit que les résidus ne contiennent plus d'information linéaire sur la prédiction : toute la structure linéaire a été absorbée par le modèle.
C'est la propriété d'orthogonalité de la projection des moindres carrés, et c'est ce qui permet la décomposition de la variance
— le fondement du coefficient \(R^2\) et de l'analyse de la variance.
Dans le cas gaussien, « non corrélés » devient « indépendants » : les résidus sont indépendants de \(\overline X\), ce qui justifie les tests de Student et de Fisher enseignés en statistique inférentielle au deuxième semestre.
Corrigé — Exercice 8
a) Pour des données centrées (chaque colonne de moyenne nulle) :
(le \(N-1\) donne l'estimateur sans biais ; \(N\) donne la version « population ».)
C'est bien une matrice \(p\times p\), symétrique et semi-définie positive — conformément à l'exercice 10 du chapitre Algèbre 10.
b) Algorithme d'ACP.
1. Centrer : soustraire la moyenne de chaque colonne
2. (option) Reduire : diviser par l'ecart-type de chaque colonne
3. Calculer Sigma = X^T X / (N-1)
4. Diagonaliser Sigma = P D P^T (P orthogonale)
5. Trier les valeurs propres par ordre decroissant
6. Choisir k tel que (lambda_1+...+lambda_k)/trace >= seuil (ex. 90 %)
7. Projeter : Y = X P_k (P_k = k premieres colonnes de P)
L'étape 2 est cruciale quand les variables ont des unités différentes : sans réduction, la variable exprimée en millimètres écraserait celle exprimée en mètres.
c) Coût. La diagonalisation d'une matrice symétrique \(p\times p\) coûte \(O(p^3)\) opérations, et le calcul de \(\mathbf{\Sigma}\) coûte \(O(Np^2)\).
d) Pour \(p=10^4\), \(N=100\).
- \(\mathbf{\Sigma}\) occupe \(8\times(10^4)^2 = 800\) Mo ;
- sa diagonalisation coûte \((10^4)^3 = 10^{12}\) opérations, soit environ 2 minutes à \(10^{10}\) op/s — mais surtout, elle est inutile : le rang de \(\mathbf{\Sigma}\) est au plus \(N-1 = 99\), donc au moins 9901 valeurs propres sont nulles.
L'astuce : diagonaliser la matrice duale \(\mathbf{X}\mathbf{X}^\top\), de taille \(N\times N = 100\times100\). Elle a les mêmes valeurs propres non nulles que \(\mathbf{X}^\top\mathbf{X}\), et si \(\mathbf{v}\) en est un vecteur propre, alors \(\mathbf{X}^\top\mathbf{v}\) est vecteur propre de \(\mathbf{\Sigma}\).
Coût : \(O(N^3) = 10^6\) opérations au lieu de \(10^{12}\) — un million de fois moins.
C'est exactement ce que fait la décomposition en valeurs singulières (SVD), qui est l'implémentation standard de l'ACP dans toutes les bibliothèques.
e) Implémentation en Python pur.
import math
import random
def acp_2d(points):
"""ACP d'un nuage 2D. Renvoie (valeurs propres, vecteurs propres)."""
n = len(points)
mx = sum(p[0] for p in points) / n
my = sum(p[1] for p in points) / n
c = [(p[0] - mx, p[1] - my) for p in points]
sxx = sum(x * x for x, _ in c) / (n - 1)
syy = sum(y * y for _, y in c) / (n - 1)
sxy = sum(x * y for x, y in c) / (n - 1)
# valeurs propres d'une matrice 2x2 symetrique
tr, det = sxx + syy, sxx * syy - sxy * sxy
disc = math.sqrt(tr * tr - 4 * det)
l1, l2 = (tr + disc) / 2, (tr - disc) / 2
# vecteur propre dominant
if abs(sxy) > 1e-12:
vx, vy = l1 - syy, sxy
else:
vx, vy = (1.0, 0.0) if sxx >= syy else (0.0, 1.0)
norme = math.hypot(vx, vy)
return (l1, l2), (vx / norme, vy / norme)
# nuage etire le long de la direction (1, 2), plus du bruit
rng = random.Random(1)
pts = []
for _ in range(5000):
t = rng.gauss(0, 3) # coordonnee le long de (1,2)
b = rng.gauss(0, 0.4) # bruit orthogonal
pts.append((t / math.sqrt(5) - 2 * b / math.sqrt(5),
2 * t / math.sqrt(5) + b / math.sqrt(5)))
(l1, l2), (vx, vy) = acp_2d(pts)
print(f"valeurs propres : {l1:.3f} {l2:.3f}")
print(f"part expliquee : {100*l1/(l1+l2):.1f} %")
print(f"direction : ({vx:.3f}, {vy:.3f})")
print(f"attendu : ({1/math.sqrt(5):.3f}, {2/math.sqrt(5):.3f})")
Sortie :
valeurs propres : 8.828 0.158
part expliquee : 98.2 %
direction : (0.447, 0.894)
attendu : (0.447, 0.894)
L'ACP retrouve exactement la direction \((1,2)\) normalisée, avec une variance de 8,83 (attendu \(3^2 = 9\) ✓) contre 0,158 (attendu \(0{,}4^2 = 0{,}16\) ✓), et 98,2 % de variance expliquée par la première composante.
Ce que ce chapitre a réuni
Un objet probabiliste — la matrice de covariance — est traité par un outil algébrique — la diagonalisation — pour produire une méthode de science des données — l'ACP.
C'est le point de convergence annoncé en tête de ce cours : le chapitre Algèbre 10 et celui-ci sont les deux moitiés d'un même objet, et le module ANDO23 de deuxième année les recolle.
Chapitre suivant : Théorèmes limites.