MathQuest

Interpolation

⏱ ~10 min·+30 XP
💡

Pourquoi apprendre ça ?

L'interpolation consiste à trouver une fonction qui passe exactement par un ensemble de points donnés. C'est fondamental en ingénierie : on a des mesures discrètes (température, pression, position à des instants précis) et on veut estimer les valeurs intermédiaires. Le choix de la méthode d'interpolation affecte profondément la qualité de l'estimation — et certains choix naïfs peuvent produire des résultats catastrophiques.

🎯

Analogie

Tu as des photos d'un mouvement à 0s, 1s, 2s, 3s. L'interpolation te donne une estimation du mouvement à 0,5s ou 1,7s. Interpolation linéaire : relier les photos par des lignes droites. Polynôme de Lagrange : trouver une courbe lisse passant par tous les points. Splines : raccorder des morceaux de courbes lisses avec des "charnières" élastiques — comme un rail flexible qui épouse parfaitement chaque point de contrôle sans jamais vibrer.

Interpolation linéaire

📐

Théorie

L'interpolation linéaire entre deux points (x0,y0)(x_0, y_0) et (x1,y1)(x_1, y_1) donne :

f(x)y0+y1y0x1x0(xx0)=(x1x)y0+(xx0)y1x1x0f(x) \approx y_0 + \frac{y_1 - y_0}{x_1 - x_0}(x - x_0) = \frac{(x_1 - x)\,y_0 + (x - x_0)\,y_1}{x_1 - x_0}

Erreur : O(h2)O(h^2)h=x1x0h = x_1 - x_0 — exacte pour les fonctions linéaires.

C'est la méthode la plus simple : relier les points par des segments de droite. Rapide mais peut produire des angles aux points de données (non dérivable aux nœuds).

📝

Interpolation linéaire de sin(x)

On connaît sin(0)=0\sin(0) = 0 et sin(π/2)=1\sin(\pi/2) = 1.

Interpolation linéaire en x=π/4x = \pi/4 :

f(π/4)0+10π/20(π/40)=12=0,5f(\pi/4) \approx 0 + \frac{1 - 0}{\pi/2 - 0} \cdot (\pi/4 - 0) = \frac{1}{2} = 0{,}5

Valeur exacte : sin(π/4)=2/20,7071\sin(\pi/4) = \sqrt{2}/2 \approx 0{,}7071

Erreur : 0,50,7071=0,2071|0{,}5 - 0{,}7071| = 0{,}2071 — significative car sin\sin est très courbé sur cet intervalle.

Polynôme de Lagrange

📐

Théorie

Le polynôme de Lagrange est le polynôme de degré n\leq n qui passe exactement par n+1n+1 points (x0,y0),,(xn,yn)(x_0, y_0), \ldots, (x_n, y_n) :

L(x)=i=0nyii(x)L(x) = \sum_{i=0}^{n} y_i \cdot \ell_i(x)

où les polynômes de base de Lagrange sont :

i(x)=j=0jinxxjxixj\ell_i(x) = \prod_{\substack{j=0 \\ j \neq i}}^{n} \frac{x - x_j}{x_i - x_j}

Propriété : i(xj)=δij\ell_i(x_j) = \delta_{ij} (vaut 1 si i=ji=j, 0 sinon).

Existence et unicité : il existe un unique polynôme de degré n\leq n passant par n+1n+1 points distincts.

📝

Polynôme de Lagrange pour 3 points

Points : (0,1)(0, 1), (1,2)(1, 2), (2,5)(2, 5).

0(x)=(x1)(x2)2,1(x)=x(x2),2(x)=x(x1)2\ell_0(x) = \frac{(x-1)(x-2)}{2}, \quad \ell_1(x) = -x(x-2), \quad \ell_2(x) = \frac{x(x-1)}{2}

L(x)=1(x1)(x2)2+2(x(x2))+5x(x1)2=x2+1L(x) = 1 \cdot \frac{(x-1)(x-2)}{2} + 2 \cdot (-x(x-2)) + 5 \cdot \frac{x(x-1)}{2} = x^2 + 1

Vérification : L(0)=1L(0)=1 ✓, L(1)=2L(1)=2 ✓, L(2)=5L(2)=5 ✓.

🧩

Checkpoint

Combien de points distincts faut-il pour déterminer de façon unique un polynôme de degré au plus 4 ?

Phénomène de Runge

📐

Théorie

Phénomène de Runge : interpoler avec un polynôme de degré élevé sur des nœuds uniformément espacés peut produire de grandes oscillations aux bords de l'intervalle — même si la fonction interpolée est parfaitement lisse.

Exemple canonique : la fonction f(x)=11+25x2f(x) = \dfrac{1}{1+25x^2} sur [1,1][-1, 1]. Avec n+1n+1 nœuds équidistants :

  • Pour n=4n = 4 : approximation acceptable
  • Pour n=10n = 10 : oscillations visibles aux bords
  • Pour n=20n = 20 : oscillations dépassant 10 en amplitude, alors que f1f \leq 1 partout

Cause mathématique : l'erreur d'interpolation est proportionnelle au produit i=0n(xxi)\prod_{i=0}^{n}(x - x_i). Pour des nœuds uniformes, ce produit croît très vite aux bords — les nœuds sont trop écartés là où la fonction varie le plus.

Solution — Nœuds de Chebyshev : utiliser les zéros du polynôme de Chebyshev de degré n+1n+1 sur [1,1][-1,1] :

xi=cos ⁣(2i+12(n+1)π),i=0,1,,nx_i = \cos\!\left(\frac{2i+1}{2(n+1)}\pi\right), \quad i = 0, 1, \ldots, n

Ces nœuds sont plus denses aux bords qu'au centre. Ils minimisent maxx[1,1]xxi\max_{x \in [-1,1]}\prod|x - x_i|, ce qui garantit la convergence de l'interpolation pour les fonctions continues.

Résultat : avec des nœuds de Chebyshev, l'interpolation polynomiale converge pour la fonction de Runge, là où les nœuds uniformes divergent.

📝

Nœuds uniformes vs Chebyshev sur f(x) = 1/(1+25x²)

Avec 11 points sur [1,1][-1, 1] :

Nœuds uniformes : xi=1+2i/10x_i = -1 + 2i/10 pour i=0,,10i = 0, \ldots, 10. Erreur maximale aux bords (x±0,9x \approx \pm 0{,}9) : peut dépasser 2 unités, alors que 0<f10 < f \leq 1. Augmenter nn aggrave les oscillations.

Nœuds de Chebyshev : xi=cos ⁣(2i+122π)x_i = \cos\!\left(\frac{2i+1}{22}\pi\right) — concentrés près de ±1\pm 1. Erreur maximale : de l'ordre de 10310^{-3} — uniforme, sans oscillations parasites. Converge quand nn augmente.

Règle pratique : si les nœuds sont librement choisis, toujours préférer Chebyshev à des nœuds uniformes pour les polynômes globaux de degré 6\geq 6.

🧩

Checkpoint

Le phénomène de Runge montre que l'interpolation polynomiale de degré élevé avec des nœuds uniformes :

Interpolation par morceaux — Splines cubiques

📐

Théorie

Plutôt qu'un seul polynôme de degré élevé sur tout l'intervalle, les splines cubiques raccordent des polynômes de degré 3 sur chaque sous-intervalle [xi,xi+1][x_i, x_{i+1}], avec des conditions de régularité aux nœuds.

Conditions imposées sur chaque nœud intérieur xix_i :

  1. Continuité de ff : les morceaux adjacents se rejoignent
  2. Continuité de ff' : pas d'angle (tangentes identiques des deux côtés)
  3. Continuité de ff'' : courbure continue (la spline est de classe C2C^2)

Ces 3(n1)3(n-1) conditions intérieures, combinées aux 2(n+1)2(n+1) coefficients des nn polynômes cubiques (4 coefficients chacun), nécessitent 2 conditions supplémentaires aux bords.

Conditions aux bords (choix courants) :

  • Spline naturelle : S(a)=S(b)=0S''(a) = S''(b) = 0 — courbure nulle aux extrémités
  • Spline "not-a-knot" : continuité de ff''' aux deux premiers et deux derniers nœuds (défaut dans NumPy/SciPy)
  • Spline périodique : S(a)=S(b)S'(a) = S'(b) et S(a)=S(b)S''(a) = S''(b) — pour les données périodiques

Résolution : le système résultant est tridiagonal et se résout en O(n)O(n) par l'algorithme de Thomas.

Erreur : O(h4)O(h^4) pour fC4[a,b]f \in C^4[a,b] — même ordre que Simpson.

Avantages des splines cubiques :

  • Évite complètement le phénomène de Runge
  • Lisse (C2C^2) : courbe visuellement agréable sans angle ni discontinuité de courbure
  • Standard industriel en CAO, animation 3D, typographie (courbes de Bézier, B-splines)
📝

Splines cubiques vs Lagrange — comparaison chiffrée

Pour f(x)=1/(1+25x2)f(x) = 1/(1+25x^2) sur [1,1][-1,1] avec 11 nœuds équidistants :

Polynôme de Lagrange degré 10 : erreur pouvant atteindre plusieurs unités aux bords — inutilisable.

Spline cubique naturelle : erreur uniforme 104\approx 10^{-4} — 10 000 fois plus précise, sans oscillation.

Erreur théorique :

maxx[a,b]f(x)S(x)Ch4max[a,b]f(4)\max_{x \in [a,b]} |f(x) - S(x)| \leq C\, h^4\, \max_{[a,b]} |f^{(4)}|

Usage en design : AutoCAD, Blender, FontForge utilisent des splines cubiques (B-splines, courbes de Bézier cubiques) pour garantir des courbes C2C^2 visuellement lisses. Chaque point de contrôle est un nœud de spline.

⚠️

Piège : extrapolation vs interpolation

L'interpolation estime des valeurs ENTRE les points de données — relativement fiable. L'extrapolation estime des valeurs EN DEHORS de l'intervalle — dangereuse ! Un polynôme interpolateur diverge très rapidement hors de l'intervalle. Les splines cubiques sont encore pires en extrapolation (comportement cubique non borné). Ne jamais extrapoler sans vérification soigneuse.

Applications en machine learning

📐

Théorie

L'interpolation trouve des applications directes dans les pipelines de machine learning :

1. Resampling de séries temporelles

Les séries temporelles mesurées à des fréquences irrégulières doivent souvent être ramenées à une grille temporelle uniforme :

  • Données de capteurs avec timestamps irréguliers → spline pour uniformiser
  • Fusion de sources à fréquences différentes (10 Hz et 100 Hz) → rééchantillonnage
  • Imputation de valeurs manquantes dans une série temporelle

2. Feature engineering

Transformer des données discrètes en features continues et lisses pour améliorer la généralisation d'un modèle :

  • Encodage d'une variable ordinale (âge) en courbe de risque continue par spline
  • Lissage de signaux bruités avant extraction de features
  • Normalisation de courbes à longueurs variables (DTW, interpolation sur grille commune)

3. Augmentation de données

Interpoler entre des exemples d'entraînement pour créer des exemples synthétiques — technique Mixup :

x~=λxi+(1λ)xj,y~=λyi+(1λ)yj,λBeta(α,α)\tilde{x} = \lambda\, x_i + (1-\lambda)\, x_j, \quad \tilde{y} = \lambda\, y_i + (1-\lambda)\, y_j, \quad \lambda \sim \text{Beta}(\alpha, \alpha)

Variante SMOTE (Synthetic Minority Over-sampling) : interpolation linéaire dans l'espace des features entre voisins proches de la classe minoritaire.

4. Encodage positionnel dans les transformers

Les embeddings positionnels peuvent être interpolés pour généraliser à des séquences de longueurs non vues à l'entraînement (RoPE, ALiBi utilisent des formes d'interpolation).

📝

Resampling d'une série temporelle par splines cubiques

Un capteur enregistre des valeurs à des instants irréguliers :

tmesure={0,  1,3,  2,1,  3,7,  5}t_{\text{mesure}} = \{0,\; 1{,}3,\; 2{,}1,\; 3{,}7,\; 5\}, valeurs y={0,0,  1,2,  0,8,  1,5,  2,0}y = \{0{,}0,\; 1{,}2,\; 0{,}8,\; 1{,}5,\; 2{,}0\}.

Pour un modèle LSTM qui exige des entrées régulières à t=0,1,2,3,4,5t = 0, 1, 2, 3, 4, 5 :

  1. Ajuster une spline cubique sur les 5 points mesurés
  2. Évaluer la spline aux 6 instants réguliers souhaités
  3. Résultat : série temporelle uniforme, C2C^2, sans distorsion de phase

Pourquoi pas l'interpolation linéaire ? Elle introduit des "coudes" (discontinuités de ff') qui peuvent perturber le calcul des gradients lors de l'entraînement et produire de faux patterns dans la série.

En Python : scipy.interpolate.CubicSpline(t_mesure, y)(t_regulier) — une ligne.

🧩

Checkpoint

Dans un pipeline ML, on dispose de séries temporelles à fréquence irrégulière. Quelle méthode de resampling est recommandée pour obtenir une grille uniforme sans discontinuités de dérivée ?

🧩

Checkpoint

Quelle propriété fondamentale distingue les splines cubiques du polynôme de Lagrange global ?

À retenir

  • Lagrange : unique polynôme de degré n\leq n passant par n+1n+1 points — risque d'oscillations (Runge) pour nn élevé avec nœuds uniformes
  • Phénomène de Runge : solution — nœuds de Chebyshev (plus denses aux bords) ou interpolation par morceaux
  • Splines cubiques : polynômes degré 3 par morceaux, classe C2C^2, erreur O(h4)O(h^4), évitent Runge — standard en CAO et animation
  • ML : splines pour resampling de séries temporelles irrégulières, Mixup/SMOTE pour augmentation de données
  • Toujours préférer les splines à Lagrange dès que n>5n > 5 sur nœuds uniformes
Passer aux exercices →