Interpolation Numérique
Transcription
Interpolation Numérique
. Interpolation Numérique Pablo CROTTI, Mathias RIME Mini-projet effectué au sein de la section de Mathématiques Eté 2007 Professeur responsable Assistant Alfio Quarteroni Benjamin Stamm Introduction L’interpolation numérique consiste de manière générale à approximer une fonction dont on ne connaît les valeurs qu’en certains points. Plus précisément, étant donné n + 1 couples (xi , yi ), le problème consiste à trouver une fonction Φ = Φ(x) telle que Φ(xi ) = yi pour i = 0, . . . , n. On dit alors que Φ interpole {yi } aux noeuds {xi }. La forme de la fonction Φ dépend du problème et du but de l’interpolation. En effet, Φ peut être un polynôme, et on parle alors d’interpolation polynomiale, ou bien Φ peut être un polynôme trigonométrique, ou une fonction polynomiale par morceaux, et on dit alors que Φ est une interpolation par morceaux. L’intérêt et le mode d’utilisation d’une fonction d’interpolation dépend surtout de la provenance des données. Les quantités yi peuvent, par exemple, représenter les valeurs aux noeuds xi d’une fonction f connue analytiquement. La fonction d’interpolation permet alors de simplifier des calculs numériques d’intégrales ou de dérivées. D’autre part, les quantités yi peuvent représenter des données expérimentales qu’il faut synthétiser, vu leur nombre parfois élevé. Le but de ce mini-projet est d’introduire les notions de base de l’interpolation dans le cadre d’une fonction à une variable. Nous parlerons de l’interpolation polynomiale de Lagrange avec noeuds équirépartis, de l’interpolation polynomiale par morceaux, ainsi que de l’approximation au sens des moindres carrés. Pour mieux comprendre et illustrer ce qu’est l’interpolation numérique, nous mettons deux fonctions en exemple (Sinus et Runge) avec l’utilisation des polynômes de Lagrange sur un ou plusieurs morceaux. Ces deux exemples montrent que l’interpolation par morceaux est bien meilleure qu’une approximation polynomiale avec des points d’interpolation équirépartis lorsque le nombre de morceaux est grand. Nous tenons à remercier Benjamin Stamm, notre assistant responsable, pour sa correction rapide et très attentive de notre projet, ainsi que pour sa disponibilité. 2 Table des matières Introduction 2 Table des figures 4 1 Approximation par les moindres carrés 1.1 Rappels d’algèbre linéaire . . . . . . . . . . . . . 1.2 Meilleure approximation . . . . . . . . . . . . . . 1.3 Problème des moindres carrés . . . . . . . . . . . 1.4 Problème des moindres carrés pour des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Interpolation polynomiale & noeuds équirépartis 2.1 Polynôme de Lagrange . . . . . . . . . . . . . . . . . . . . . . . 2.2 Erreur d’interpolation . . . . . . . . . . . . . . . . . . . . . . . 2.3 Défauts de l’interpolation polynomiale avec noeuds équirépartis 2.4 Stabilité du polynôme d’interpolation . . . . . . . . . . . . . . . 3 Interpolation de Lagrange par morceaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 6 7 . . . . 10 10 11 14 16 17 4 Forme de Newton du polynôme d’interpolation 20 4.1 Quelques propriétés des différences divisées de Newton . . . . . . . . . . . . . . . 20 4.2 Erreur d’interpolation avec les différences divisées . . . . . . . . . . . . . . . . . . 21 5 Interpolation d’Hermite-Birkhoff 23 Conclusion 24 Références 25 ANNEXE : CODES MATLAB 26 3 Table des figures 1.1 1.2 2.1 2.2 2.3 2.4 3.1 3.2 3.3 3.4 Projection du vecteur v dans le sous-espace W . . . . . . . . . . . . . . . . Lissage de données aléatoires . . . . . . . . . . . . . . . . . . . . . . . . . . Erreur d’interpolation du sinus avec noeuds équirépartis . . . . . . . . . . . Interpolations de sinus avec degré 2,3,4,5,6,8 . . . . . . . . . . . . . . . . . . Contre-exemple de Runge : Interpolation de degré 2,4,5,8 et 12 . . . . . . . Contre-exemple de Runge : Erreurs d’interpolation avec noeuds équirepartis Interpolation linéaire par morceaux de la fonction sinus . . . . . . . . . . . . Erreurs pour l’interpolation par morceaux de la fonction sinus . . . . . . . . Interpolation linéaire par morceaux de la fonction de Runge . . . . . . . . . Erreurs d’interpolation par morceaux de la fonction de Runge . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 9 13 13 15 16 17 18 18 19 1 Approximation par les moindres carrés Dans cette partie du rapport nous allons étudier une méthode appelée approximation au sens des moindres carrés. Cette méthode permet d’approximer un ensemble de couples (xi , yi ) obtenus de manière aléatoires ou par l’intermédiaire d’une fonction. L’approximation n’est pas une interpolation car la fonction résultante obtenue après calcul ne passe pas forcément par tous les couples (xi , yi ). En effet, l’approximation par les moindres carrés est obtenue en résolvant un système d’équations linéaires surdéterminé. 1.1 Rappels d’algèbre linéaire Définition 1.1. Soit V un R-espace vectoriel de dimension finie muni d’un produit scalaire h−, −i. Soient W un sous-espace vectoriel de V et (w0 , w1 , . . . , wn ) une base orthogonale de W . Soit v ∈ V et soit ΠW (v) ∈ W , la projection orthogonale du vecteur v sur le sous-espace W , définie par : n X hv, wi i wi . (1.1) ΠW (v) := hwi , wi i i=0 Définition 1.2. Soit V un R-espace vectoriel de dimension finie muni d’un produit scalaire h−, −i et soit W un sous-espace vectoriel de V . L’espace orthogonal à W est l’ensemble noté W ⊥ défini par : W ⊥ := { v ∈ V | hw, vi = 0 ∀w ∈ W }. C’est un sous-espace vectoriel de V. En effet 0 ∈ W ⊥ , et si w1 , w2 ∈ W ⊥ , α, β ∈ R alors ∀w ∈ W on a hαw1 + βw2 , wi = αhw1 , wi + βhw2 , wi = 0. Donc αw1 + βw2 ∈ W ⊥ . Remarquons que pour tout v ∈ V on a v − ΠW (v) ∈ W ⊥ . De plus, si A ∈ Mn×m (R) alors nous avons Im(A)⊥ = Ker(At ) et Ker(A)⊥ = Im(At ) où on note par At la transposée de A. 1.2 Meilleure approximation Théorème 1.3 ([Hess06],page 62). Soit V un R−espace vectoriel muni d’un produit scalaire h−, −i. Soit W un sous-espace vectoriel de V et soit v ∈ V . Alors ΠW (v) est la meilleure approximation de v dans W , dans le sens où kv − ΠW (v)k< kv − wk, ∀w ∈ W, w 6= ΠW (v) où k.k est la norme engendrée par le produit scalaire h−, −i. V v- v (v) W (v) W W Fig. 1.1 – Projection du vecteur v dans le sous-espace W 5 Démonstration. Soit w ∈ W . On a kv − wk2 = kv − ΠW (v) + ΠW (v) − w k2 . {z } | {z } | ∈W ∈W ⊥ Par le théorème de Pythagore nous avons kv − wk2 = kv − ΠW (v)k2 +kΠW (v) − wk2 . D’où kv − ΠW (v)k2 ≤ kv − wk2 , avec égalité si et seulement si kΠW (v) − wk2 = 0 , ce qui équivaut à w = ΠW (v). 1.3 Problème des moindres carrés Etant donné A ∈ Mn×m (R) et b ∈ Rn , il se peut que le système d’équations linéaires Ax = b avec x ∈ Rm soit inconsistant, qu’il n’y ait pas de solution. La méthode des moindres carrés consiste à trouver une valeur de x qui minimise la norme euclidienne de Ax−b. Selon le Théorème 1.3, la meilleure approximation de b dans Im(A) est ΠIm(A) (b). Or b − ΠIm(A) (b) ∈ Im(A)⊥ = Ker(At ). Alors, si Ax = ΠIm(A) (b), on a At b − At Ax = At (b| −{zAx}) = 0. Ker(At ) D’où At Ax = At b. (1.2) Si At A est inversible, le système a une solution unique x = (At A)−1 At b, t −1 Ax = A(A A) t A b. (1.3) (1.4) On appelle l’équation (1.2) le système normal du système inconsistant et l’équation (1.3) le système associé au moindre carrés. 6 1.4 Problème des moindres carrés pour des fonctions Nous considérons ici l’approximation non pas de vecteurs mais de fonctions réelles. L’utilisation des moindres carrés pour les fonctions permet de synthétiser un ensemble de données, souvent résultats d’expériences, sous forme de polynômes, de polynômes trigonométriques ou d’exponentielles. Cette forme synthétique des données permet ainsi par la suite d’extrapoler des valeurs différentes des noeuds de base. Considérons les données {(xi , yi ), i = 0, . . . , n} où yi peut être vu comme la valeur f (xi ) prise par une fonction f au noeud xi , f étant inconnue à priori. Pour un entier m ≥ 1 donné (en général m ≪ n ), définissons Pm = {v : R → R : v(x) = a0 + a1 x + . . . + an xn , ai ∈ R ∀i } l’ensemble des polynômes de degré plus petit ou égal à m. On cherche un polynôme f˜ ∈ Pm vérifiant l’inégalité n n X X [yi − pm (xi )]2 , (1.5) [yi − f˜(xi )]2 ≤ i=0 i=0 pour tout polynôme pm de degré au plus m. Si elle existe, f˜ est appelée meilleure approximation au sens des moindres carrés dans Pm des données {(xi , yi ), i = 0, . . . , n}. À moins que m ≥ n, il n’est en général pas possible d’avoir f˜(xi ) = yi pour tout i = 0, . . . , n. En posant f˜(x) = a0 + a1 x + · · · + am xm , où les coefficients a0 , . . . , am ∈ R sont inconnus, le problème (1.5) peut être reformulé ainsi : trouver a0 , a1 , . . . , am tels que min Φ(a0 , a1 , . . . , am ) = {bi , i=0,...,m} Φ(b0 , b1 , . . . , bm ), où n X 2 [yi − (b0 + b1 xi + · · · + bm xm Φ(b0 , b1 , . . . , bm ) = i )] . i=0 Résolvons ce problème dans le cas particulier où m = 1. Puisque Φ(b0 , b1 ) = n X [yi2 + b20 + b21 x2i + 2b0 b1 xi − 2b0 yi − 2b1 xi yi ], i=0 le graphe de Φ est un paraboloïde convexe. Le point (a0 , a1 ) où Φ atteint son minimum satisfait les conditions ∂Φ ∂Φ (a0 , a1 ) = 0 , (a0 , a1 ) = 0. ∂b0 ∂b1 En calculant explicitement les deux dérivées partielles, on obtient n n X X [a0 xi + a1 x2i − xi yi ] = 0, [a0 + a1 xi − yi] = 0 , i=0 i=0 qui est un système de deux équations à deux inconnues a0 et a1 : a0 (n + 1) + a1 n X xi = a0 i=0 xi + a1 n X i=0 7 yi , i=0 i=0 n X n X x2i = n X i=0 yi xi . En posant D = (n + 1) Pn P − ( ni=0 xi )2 , la solution s’écrit, grâce à la règle de Cramer : ! n n n n 1 X X 2 X X xi y i , xj xj − yi a0 = D i=0 j=0 j=0 i=0 ! n n n X X X 1 xj yi . xi y i − a1 = (n + 1) D 2 i=0 xi j=0 j=0 i=0 Le polynôme correspondant f˜(x) = a0 + a1 x s’appelle la droite des moindrs carrés, ou de régression linéaire. Cette approche peut être généralisée de plusieurs manières. La première généralisation consiste à prendre un m plus grand. Le système linéaire (m + 1) × (m + 1) associé est symétrique et a la forme suivante : P P Pn a0 (n + 1) + a1 ni=0 xi + . . . + am ni=0 xm = i i=0 yi a0 a0 Pn i=0 xi .. . Pn m i=0 xi + a1 + a1 Pn 2 i=0 xi Pn .. . m+1 i=0 xi + . . . + am .. . + ... + Pn am m+1 i=0 xi .. . Pn 2m i=0 xi = = Pn i=0 xi yi Pn .. . m i=0 xi yi Quand m = n, le polynôme des moindres carrés coïncide avec le polynôme d’interpolation de Lagrange (que nous étudierons au prochain chapitre). Une généralisation de l’approximation au sens des moindres carrés consiste à utiliser dans (1.5) des fonctions f˜ et pm qui ne sont pas des polynômes mais des fonctions d’un espace vectoriel Vm engendré par m + 1 fonctions indépendantes ψj , j = 0, . . . , m. On peut considérer par exemple des fonctions trigonométriques ψj (x) = cos(γjx) (pour un paramètre γ 6= 0 donné), des fonctions exponentielles ψj (x) = eδjx (pour un δ > 0 donné). Le choix des fonctions ψj est en pratique dicté par la forme supposée de la loi décrivant les données. Le lecteur pourra vérifier que les composantes de f˜(x) = m X aj ψj (x), j=0 sont les solutions du système suivant (appelé équations normales) B T Ba = B T b, où B est la matrice rectangulaire (n + 1) × (m + 1) de coefficients bij = ψj (xi ), a est le vecteur des inconnues et b le vecteur des données. 8 Exemple 1.4. Lissage de données aléatoires. Nous allons montrer comment on peut lisser ou synthétiser des données générées aléatoirement. Nous avons généré un ensemble de 10 points représentant des perturbations d’une loi quadratique (ici la fonction de base est f (x) = 10x2 ). Le Programme 1 en annexe montre le code MATLAB utilisé pour générer les données et les afficher. Nous avons utilisé la méthode des moindres carrés pour approximer ces points avec un polynôme du deuxième degré, le choix le plus judicieux, et nous avons effectué une interpolation de Lagrange de degré 9 (voir section suivante). On remarque sur la Figure 1.2 que pour des jeux de données légérement différents, l’approximation au sens des moindres carrés ne change que très peu. C’est en fait une méthode stable numériquement, ce qui n’est pas (pas toujours) le cas de l’interpolation de Lagrange, voir le contre-exemple dans l’Exemple 2.9. Nous pouvons de plus tenter d’extrapoler la valeur de la fonction en x = 2. En effet, une valeur générée pour x = 2 est f (2) = 40.8998, la valeur de l’approximation quadratique est Π2 f (2) = 42.2559, alors que la valeur du polynôme interpolant est Π9 f (2) = 7.0738 · 105 ! L’approximation par les moindres carrés donne ainsi une bonne représentation des données, même aux points où l’on ne connaît pas la fonction, et l’utilisation de l’interpolation de Lagrange n’est pas judicieuse pour ce genre de problème. 15 15 10 10 5 5 0 0 −5 0 0.2 0.4 0.6 0.8 −5 1 (a) Lissage 1 0 0.2 0.4 0.6 0.8 1 (b) Lissage 2 Fig. 1.2 – Comparaison entre la méthode des moindres carrés et l’interpolation de Lagrange pour lisser des données expérimentales (croix ). En trait plein l’approximation de degré 2 au sens des moindres carrés ; en trait discontinu le polynôme d’interpolation de Lagrange de degré 9 9 2 2.1 Interpolation polynomiale & noeuds équirépartis Polynôme de Lagrange Nous voulons trouver un polynôme Πm ∈ Pm passant par n + 1 couples (xi , yi ), appelé polynôme d’interpolation ou polynôme interpolant, tel que Πm (xi ) = am xm i + · · · + a1 xi + a0 = yi i = 0, . . . , n. Les points xi sont appelés noeuds d’interpolation. Si n 6= m le problème est sûr ou sous déterminé. Si n=m, nous avons le théorème suivant : Théorème 2.1. Etant donnée n + 1 points distincts x0 , . . . , xn et n + 1 valeurs correspondantes y0 , . . . , yn , il existe un unique polynôme Πn ∈ Pn tel que Πn (xi ) = yi pour i = 0, . . . , n. Démonstration. Montrons l’existence en construisant Πn . Posons ℓi ∈ Pn : ℓi (x) = n Y x − xj xi − xj i = 0, . . . , n. j=0 j6=i Nous allons montrer que { ℓi , i = 0, . . . , n } est une base de Pn . Remarquons que comme Card{ ℓi , i = 0, . . . , n } = n + 1 = dim Pn , il suffit de montrer que les ℓi sont linéairements indépendants, c’est-à-dire que : ) ( n X αi ℓi = 0 ⇒ α0 = α1 = · · · = αn = 0 avec αi ∈ R, i=0 Or ℓi (xj ) = δij , où δij est le symbole de Kroenecker. Ainsi nous trouvons ∀j = 0, . . . , n 0= n X αi ℓi (xj ) = i=0 n X αi δij = αj . i=0 Donc l’ensemble des polynômes caractéristiques est une base de Pn . En décomposant Πn sur cette base on a n X bj ℓj (x). Πn (x) = j=0 Or on veut Πn (xi ) = n X bj ℓj (xi ) = yi , i = 0, . . . , n. j=0 Comme ℓj (xi ) = δij on obtient bi = yi . Le polynôme d’interpolation existe et s’écrit de cette manière n X yi ℓi (x). (2.1) Πn (x) = i=0 L’unicité se montre comme ceci. Supposons qu’il existe Ψm de degré m ≤ n, tel que Ψm (xi ) = yi , pour i = 0, . . . , n. La différence Πn − Ψm est encore un polynôme de degré n et s’annule alors en n + 1 points distincts xi , elle est donc nulle. Ainsi Ψm = Πn . 10 La formule (2.1) est appelée formule d’interpolation de Lagrange, et les polynômes ℓi (x) sont les polynômes caractéristiques (de Lagrange). Si yi = f (xi ) pour une certaine fonction f donnée, le polynôme Πn (x) sera noté Πn f (x) Définition 2.2. Le polynôme nodale de degré n + 1, noté ωn+1 , est définit par : ωn+1 (x) = n Y (x − xi ). i=0 Proposition 2.3. Le polynôme d’interpolation Πn s’écrit sous la forme suivante : Πn (x) = n X i=0 ωn+1 (x) yi . ′ (x − xi )ωn+1 (xi ) Démonstration. Nous avons ′ ωn+1 (x) = n n Y X (x − xi ), j=0 i=0 i6=j ainsi ′ ωn+1 (xi ) = n Y xi − xj , j=0 j6=i et finalement n Y x − xj ωn+1 (x) = = ℓi (x). ′ (x − xi )ωn+1 (xi ) xi − xj j=0 j6=i Et on retrouve la formule (2.1). Exemple 2.4. Considérons les couples de points suivants (0, 0), (1, 2), (2, 0) avec (x0 = 0, y0 = 0), . . . , (x2 = 2, y2 = 0) pour un degré polynomiale n = 2. Après avoir calculé les polynômes caractéristiques nous obtenons les résultats suivants x2 − 3x + 2 2 ℓ1 (x) = −x2 + 2x x2 − x . ℓ2 (x) = 2 ℓ0 (x) = Ce qui nous donne Π2 (x) = 0( 2.2 x2 − 3x + 2 x2 − x ) + 2(−x2 + 2x) + 0( ) = −2x2 + 4x 2 2 Erreur d’interpolation Dans cette section, nous donnons une évaluation de l’erreur d’interpolation faite quand on remplace une fonction f (donnée) par le polynôme Πn f qui l’interpole aux noeuds x0 , x1 , . . . , xn (par forcément équirépartis). De plus, nous obtenons une estimation plus fine de l’erreur maximale dans le cas particulier où les noeuds sont équirépartis sur un intervalle [a, b]. 11 Théorème 2.5. Soient x0 , . . . , xn , n + 1 noeuds distincts et soit x un point appartenant au domaine de définition de f . On suppose que f ∈ C n+1 (Ix ), où Ix est le plus petit intervalle contenant les noeuds x0 , . . . , xn et x. L’erreur d’interpolation au point x est donnée par En (x) := f (x) − Πn f (x) = f (n+1) (ξ) ωn+1 (x) (n + 1)! (2.2) où ξ ∈ Ix et ωn+1 est le polynôme nodal de degré n + 1. Démonstration. Le résultat est trivial si x coïncide avec l’un des noeuds d’interpolation car ωn+1 (xi ) = 0 ∀i = 0, . . . , n. Autrement, définissons pour t ∈ Ix la fonction G(t) = En (t) − ωn+1 (t)En (x)/ωn+1 (x). Comme nous savons que f ∈ C n+1 (Ix ) et que ωn+1 est un polynôme alors G ∈ C n+1 (Ix ) et possède au moins n + 2 zéros distincts dans Ix . En effet, G(xi ) = En (xi ) − ωn+1 (xi )En (x)/ωn+1 (x) = 0, i = 0, . . . , n G(x) = En (x) − ωn+1 (x)En (x)/ωn+1 (x) = 0. ′ Par le théorème des valeurs intermédiaires, G admet au moins n + 1 zéros distincts, et par récurrence G(j) a au moins n + 2 − j zéros distincts. Par conséquent, G(n+1) a au moins un zéro, (n+1) (n+1) qu’on note ξ. D’autre part, puisque En (t) = f (n+1) (t) et ωn+1 (x) = (n + 1)! on obtient G(n+1) (t) = f (n+1) (t) − (n + 1)! En (x) ωn+1 (x) ce qui donne, avec t = ξ, l’expression voulue pour En (x). Corollaire 2.6. Soient x0 , x1 , . . . , xn ∈ [a, b], n + 1 noeuds équirépartis avec x0 = a et xn = b. On suppose que f ∈ C n+1 ([a, b]). L’erreur d’interpolation sur [a, b] est estimée par b − a n+1 1 max |f (n+1) (x)| (2.3) En (f ) = max |f (x) − Πn f (x)| ≤ 4(n + 1) n x∈[a,b] x∈[a,b] Démonstration. Notons kf k∞ = maxx∈[a,b] |f (x)|. Le théorème 2.5 nous donne déjà que En (f ) ≤ kf (n+1) k∞ kωn+1 k∞ . (n + 1)! (2.4) Il reste à estimer kωn+1 k∞ . Soit x ∈ [a, b] avec x 6= xi ∀i. On a que x ∈ Ik = (xk−1 , xk ) pour un certain k ∈ { 1, . . . , n }. Comme les noeuds sont équirepartis, nous avons xi+1 = xi + h, où h = ( b−a n ). On obtient h2 max|(x − xk−1 )(x − xk )| = x∈Ik 4 de plus on peut estimer |x − xk−2 | par 2h, |x − xk−3 | par 3h etc. D’où n Y h2 n! kωn+1 k∞ = max (x − xi ) ≤ (2.5) (hn−1 n!) = hn+1 4 4 x∈[a,b] i=0 En substituant (2.5) dans (2.4) on obtient kf (n+1) k∞ kf (n+1) k∞ n! b − a n+1 En (f ) ≤ kωn+1 k∞ = (n + 1)! (n + 1)! 4 n n+1 b−a 1 max |f (n+1) (x)|, = 4(n + 1) n x∈[a,b] ce qu’il fallait démontrer. 12 Erreurs Exemple 2.7. Interpolation de la fonction sinus. Nous avons appliqué l’interpolation de Lagrange à la fonction f (x) = sin(x) sur l’intervalle [0, 3π], cela pour les degrés allant de 2 à 8. Nous voyons dans la Figure 2.2(a) & (b), que l’interpolation semble converger vers la fonction sin(x) lorsque le degré augmente. Cela semble aussi évident dans le graphique 2.1 et la table 2.1 où nous comparons l’erreur effective due à l’interpolation et l’estimation théorique donnée par la formule (2.3). Bien que cela conduise à penser que le polynôme interpolant converge vers la fonction f quand n → ∞, nous verrons dans la section suivante que cela dépend en grande partie du choix des noeuds d’interpolation. 9 8 7 6 5 4 3 2 1 0 2 3 4 5 Degré 6 7 8 Fig. 2.1 – Erreur théorique (carrés) et erreur calculée (ronds) de l’interpolation du sinus 1.5 1.5 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 −1 0 2 4 6 0 8 (a) Π2 f (trait mixte), Π3 f (pointillés) et Π4 f (trait discontinu). 2 4 6 8 (b) Π5 f (trait discontinu), Π6 f (trait mixte) et Π8 f (pointillés). Fig. 2.2 – Interpolation de Lagrange avec noeuds équirépartis de la fonction f (x) = sin(x) (trait plein). 13 Tab. 2.1 – Tableau comparatif des erreurs d’interpolation du sinus pour les degrés 2 à 8. On remarque que l’erreur calculée est bien moindre que l’estimation d’erreur théorique et que ces deux erreurs tendent vers 0 lorsque n augmente 2.3 n En (sin) = x∈[0,3π]| sin(x) − Π sin(x)| 3π n+1 max 1 (n+1) (x)| x∈[0,3π]| sin 4(n+1) ( n ) 2 3 4 5 6 7 8 1.5925 1.0000 0.6363 0.4224 0.1301 0.0895 0.0162 8.7205 6.0881 3.6310 1.8689 0.8427 0.3375 0.1214 max Défauts de l’interpolation polynomiale avec noeuds équirépartis Nous étudions dans cette section le comportement de l’erreur d’interpolation lorsque n tend vers l’infini. On rappel que la norme du maximum d’une fonction f ∈ C 0 ([a, b]) est définie par kf k∞ = max |f (x)| x∈[a,b] Nous introduisons une « matrice »triangulaire inférieure X de taille infinie appelée matrice d’interpolation sur [a, b] dont les coefficients xij pour i, j = 0, 1, . . . , représentent des points de [a, b], avec l’hypothèse que sur chaque ligne les coefficients sont tous distincts. Pour n ≥ 0, la n+1-ème ligne de X contient n + 1 valeurs distinctes que l’on identifie à des noeuds. Pour une fonction f donnée, on peut définir de façon unique un polynôme Πn f de degré n qui interpole f en ces noeuds (le polynôme Πn f dépend de X et de f ). Pour une fonction f donnée et pour une matrice d’interpolation X, on définit l’erreur d’interpolation En,∞ (X) = kf − Πn f k∞ , n = 0, 1, . . . On note p∗n ∈ Pn la meilleure approximation polynomiale, i.e l’interpolation pour laquelle En∗ = kf − p∗n k∞ ≤ kf − qn k∞ ∀qn ∈ Pn . On a alors le résultat suivant : Propriété 2.8. Soient f ∈ C 0 ([a, b]) et X une matrice d’interpolation sur [a, b]. Alors En,∞ (X) ≤ En∗ (1 + Λn (X)), n = 0, 1, . . . où Λn (X) désigne la constante de Lebesgue de X définie par n X (n) Λn (X) = |ℓj | j=0 ∞ (n) et où ℓj ∈ Pn est le j-ième polynôme caractéristique associé à la n + 1-ième ligne de X, (n) c’est-à-dire le polynôme satisfaisant ℓj (xnk ) = δjk , j, k = 0, 1, . . . 14 Puisque En∗ ne dépend pas de X, toute l’information concernant les effets de X sur En,∞ (X) doit être cherchée dans Λn (X). Bien qu’il existe une matrice d’interpolation X ∗ telle que Λn (X) soit minimum, la détermination explicite de ses coefficients n’est en général pas une tâche facile. Aussi, pour tout choix de X, il existe une constante C > 0 telle que (voir [Erd61]) Λn (X) > 2 log(n + 1) − C, π n = 0, 1, . . . Cette propriété implique que Λn (X) → ∞ quand n → ∞, ce qui a des conséquences importantes : on peut en particulier montrer que pour une matrice d’interpolation X sur un intervalle [a, b], il existe toujours une fonction continue f sur [a, b] telle que Πn f ne converge pas uniformément vers f. Ainsi, l’interpolation polynomiale ne permet pas d’approcher convenablement toute fonction continue. C’est ce que montre l’exemple suivant. Exemple 2.9. Contre-exemple de Runge. Tentons d’approcher la fonction suivante f (x) = 1 , 1 + x2 (2.6) −5 ≤ x ≤ 5 en utilisant l’interpolation de Lagrange avec noeuds équirépartis. On peut vérifier qu’il existe des points x à l’intérieur de l’intervalle d’interpolation tels que lim |f (x) − Πn f (x)| = 6 0. n→∞ En particulier, l’interpolation de Lagrange diverge pour |x| > 3.63 . . . . Ce phénomène est particulièrement évident au voisinage des extrémités de l’intervalle d’interpolation, comme le montre la Figure 2.3(b). Il est dû au fait que les noeuds sont équirépartis. Notons qu’en choisissant convenablement les noeuds, on peut établir la convergence uniforme du polynôme d’interpolation vers la fonction f . 1 1 0 0.5 −1 −2 0 −3 −0.5 −5 0 −4 −5 5 (a) Π2 f (trait mixte), Π4 f (pointillés) et Π5 f (trait discontinu). 0 5 (b) Π8 f (trait discontinu) et Π12 f (trait mixte). Fig. 2.3 – Contre-exemple de Runge : interpolation de Lagrange avec noeuds équirépartis de la fonction f (x) = 1/(1 + x2 ) (trait plein) 15 4 Erreurs 3 2 1 0 2 3 4 5 6 7 8 Degré 9 10 11 12 Fig. 2.4 – Contre-exemple de Runge : Erreur d’interpolation pour la fonction f (x) = 1/(1 + x2 ) 2.4 Stabilité du polynôme d’interpolation On note f˜ les valeurs résultant de la perturbation d’un ensemble de données f (xi ) en des noeuds xi ∈ [a, b], i = 0, . . . , n. La perturbation peut être due, par exemple, aux erreurs d’arrondi ou à des erreurs dans des mesures expérimentales. En notant Πn f˜ le polynôme qui interpole les valeurs f˜(xi ), on a kΠn f − Πn f˜k∞ = X n ˜ (f (xj ) − f (xj ))ℓj (x) max a≤x≤b j=0 ≤ Λn (X) max |f (xi ) − f˜(xi )| i=0,...,n Par conséquent, de petites modifications sur les données n’induisent des petites modifications sur le polynôme d’interpolation que si la constante de Lebesgue est petite. Cette constante joue le role de conditionnement pour le problème d’interpolation. Comme on l’a noté précédemment, Λn croît quand n → ∞. En particulier, pour l’interpolation de Lagrange sur des noeuds équirépartis on peut montrer que 2n+1 , Λn (X) ≃ n e log n où e = 2.7183 . . . est le nombre de Neper. Ceci montre que, pour n grand, cette forme d’interpolation peut devenir instable. Remarquer qu’on a laissé de côté jusqu’à présent les erreurs liées à la construction de Πn f . On peut néanmoins montrer que leurs effets sont en général négligeables. 16 3 Interpolation de Lagrange par morceaux Lorsqu’on a des noeuds d’interpolation équirépartis, nous avons vu qu’on ne peut pas garantir de convergence uniforme de Πn f vers f . Cependant, l’interpolation de Lagrange de bas degré est assez précise quand on l’utilise sur des intervalles petits (y compris avec des noeuds équirépartis). On peut donc introduire une partition τh de [a, b] en N sous-intervalles Ij = [xj , xj+1 ] de longeur N −1 hj , avec h = max0≤j≤N −1 hj , tels que [a, b] = ∪j=0 Ij et d’utiliser une interpolation de Lagrange (i) sur chaque Ij en k + 1 noeuds équirépartis {xj , 0 ≤ i ≤ k}, avec k petit. Pour k ≥ 1 et pour une partition τh donnée, on introduit Xhk = {v ∈ C 0 ([a, b]) : v|Ij ∈ Pk (Ij ) Ij ∈ τh j = 0, . . . , N − 1} qui est l’espace des fonctions continues sur [a, b] dont la restriction à chaque Ij est polynomiale de degré ≤ k. Pour toute fonction f continue sur [a, b], le polynôme d’interpolation par morceaux (i) Πkh f coïncide sur chaque Ij avec l’interpolant de f|Ij aux k + 1 noeuds {xj , 0 ≤ i ≤ k}. Par conséquent, si f ∈ C k+1 ([a, b]), en utilisant l’équation (2.2) dans chaque intervalle, on obtient l’estimation d’erreur suivante kf − Πkh f k∞ ≤ Chk+1 kf (k+1) k∞ . (3.1) On peut obtenir une petite erreur d’interpolation même pour des valeurs de k peu élevées, dès lors que h est « assez petit ». Remarque : Par la suite nous utiliserons la notation ΠkN f pour le polynôme d’interpolation de degré k sur N morceaux. 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 −1 0 2 4 6 8 0 (a) Π14 f (trait mixte) et Π18 f (trait discontinu). 2 4 6 8 (b) Π110 f (trait mixte) et Π120 f (trait discontinu). Fig. 3.1 – Interpolation linéaire par morceaux de la fonction f (x) = sin(x) (trait plein). Exemple 3.1. Interpolation par morceaux du sinus. Nous avons vu dans l’exemple 2.7 le résultat de l’interpolation de Lagrange du sinus sur l’intervalle [0, 3π]. Nous faisons ici de même pour l’interpolation linéaire (de degré k = 1) par morceaux. On remarque dans la Figure 3.1(b) que l’interpolation converge rapidement vers la fonction lorsque qu’on augmente le nombre de morceaux. Dans la Figure 3.2 nous avons représenté l’erreur d’interpolation ainsi que son estimation théorique donnée par la formule (3.1). L’utilisation d’echelles logarithmiques permet de mettre en évidence l’exposant de h dans la formule. En effet, dans le cas où la partition est régulière, on a h = (b − a)/N , où N est le 17 nombre de morceaux. Le log nous donne donc : ≤ C̃ + (k + 1) log(h) log kf − Πkh f k∞ = (C̃ + (b − a)) − (k + 1) log(N ) (3.2) où C̃ = log Ckf (k+1) k∞ . Ici k = 1, donc la courbe d’erreur théorique, en echelle logarithmique, est une droite de pente −2, et on voit que l’erreur d’interpolation converge rapidement vers cette droite. Ainsi, à partir d’un N assez grand, en doublant le nombre de morceaux, on quadruple le degré de précision. 1 10 0 Erreur (log) 10 −1 10 −2 10 −3 10 2 3 4 5 6 7 8 10 log(N) 15 20 30 40 Fig. 3.2 – Erreurs (ronds) pour l’interpolation linéaire par morceaux de la fonction sinus. En trait plein l’estimation théorique. Exemple 3.2. Interpolation par morceaux de la fonction de Runge. Dans l’Exemple 2.9 nous avons interpolé la fonction f (x) = 1/(1 + x2 ) sur l’intervalle [−5, 5] avec des noeuds équirépartis. Nous avions vu que cette interpolation ne converge pas uniformément vers la fonction lorsque le degré n tend vers l’infini. Ici nous obtenons de bien meilleurs résultats en effectuant une interpolation linéaire par morceaux sur cette fonction. La Figure 3.3(a) montre des polynômes d’interpolation avec un nombre impair de morceaux, et dans la partie (b) les polynômes pour un nombre pair de morceaux. On voit qu’en partitionnant l’intervalle en morceaux de même longueur, la symétrie de la fonction influe sur le résultat de l’interpolation. 1 1 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0 −5 0 0 −5 5 (a) Π15 f (trait mixte) et Π113 f (trait discontinu). 0 5 (b) Π14 f (trait mixte) et Π118 f (trait discontinu). Fig. 3.3 – Interpolation linéaire par morceaux de la fonction f (x) = 1/(1 + x2 ) (trait plein). 18 Dans la Figure 3.4, nous avons comparé l’erreur effective et l’estimation théorique comme fait précédemment dans l’Exemple 3.1 concernant l’interpolation linéaire par morceaux du sinus. À nouveau, l’interpolation par morceaux converge vers la fonction, et l’erreur effective converge, en échelle logarithmique, vers la droite théorique de pente −2. 1 2 10 10 1 Erreur (log) Erreur (log) 10 0 10 0 10 −1 10 −1 10 −2 10 −2 10 1 3 5 7 9 log(N) 13 21 29 39 (a) N impairs 2 4 6 8 10 log(N) 14 20 26 32 40 (b) N pairs Fig. 3.4 – Erreurs (ronds) pour l’interpolation linéaire par morceaux de la fonction de Runge. En trait plein l’estimation théorique. 19 4 Forme de Newton du polynôme d’interpolation La forme de Lagrange (2.1) du polynôme d’interpolation n’est pas la plus commode d’un point de vue pratique. Nous introduisons dans cette section une forme alternative dont le coût de calcul est moins élevé. Notre but est le suivant : étant donné n+1 paires { xi , yi }, i = 0, . . . , n on veut représenter Πn (tel que Πn (xi ) = yi avec i = 0, . . . , n) comme la somme de Πn−1 (tel que Πn−1 (xi ) = yi pour i = 0, . . . , n − 1) et d’un polynôme de degré n qui dépend des noeuds xi et d’un seul coefficient inconnu. On pose donc Πn (x) = Πn−1 (x) + qn (x), (4.1) où qn ∈ Pn . Puisque qn (xi ) = Πn (xi ) − Πn−1 (xi ) = 0 pour i = 0, . . . , n − 1, on a nécessairement qn (x) = an (x − x0 ) · · · (x − xn−1 ) = an ωn (x). Pour déterminer le coefficient an , supposons que yi = f (xi ), i = 0, . . . , n, où f est une fonction donnée, pas nécessairement sous forme explicite. Puisque Πn f (xn ) = f (xn ), on déduit de (4.1) que f (xn ) − Πn−1 f (xn ) . (4.2) ωn (xn ) Le coefficient an est appelé n–ième différence divisée de Newton et on le note en général an = an = f [x0 , x1 , . . . , xn ] (4.3) pour n ≥ 1. Par conséquent, (4.1) devient Πn f (x) = Πn−1 f (x) + ωn (x)f [x0 , . . . , xn ]. (4.4) En posant y0 = f (x0 ) = f [x0 ] et ω0 = 1, on obtient à partir de (4.4) la formule suivante par récurrence sur n Πn f (x) = n X ωk (x)f [x0 , . . . , xk ]. (4.5) k=0 D’après l’unicité du polynôme d’interpolation, cette expression définit le même polynôme que le formule de Lagrange. La forme (4.5) est communément appelée formule des différences divisées de Newton du polynôme d’interpolation. 4.1 Quelques propriétés des différences divisées de Newton On remarque que la n–ième différence divisée f [x0 , . . . , xn ] = an est le coefficient de xn dans Πn f . En isolant ce coefficient dans (2.2) et en l’identifiant avec le coefficient correspondant dans la formule de Newton (4.5), on obtient la définition explicite f [x0 , . . . , xn ] = n X f (xi ) . ′ ω (x ) i=0 n+1 i (4.6) Cette formule a des conséquences remarquables : 1. la valeur prise par la différence divisée est invariante par permutation des indices des noeuds. Ceci peut être utilisé avec profit quand des problèmes de stabilité suggèrent d’échanger des indices (par exemple, si x est le point où le polynôme doit être calculé, il peut être commode d’introduire une permutation des indices telle que |x − xk | ≤ |x − xk−1 | pour k = 0, . . . , n) ; 20 2. si f = αg + βh pour α, β ∈ R, alors f [x0 , . . . , xn ] = αg[x0 , . . . , xn ] + βh[x0 , . . . , xn ]; 3. si f = gh, on a la formule suivante (appelée formule de Leibniz) (voir [Die93]) f [x0 , . . . , xn ] = n X g[x0 , . . . , xj ]h[xj , . . . , xn ]; j=0 4. une manipulation algébrique de (4.6) donne la formule de récurrence suivante permettant le calcul des différences divisées f [x0 , . . . , xn ] = f [x1 , . . . , xn ] − f [x0 , . . . , xn−1 ] . xn − x0 (4.7) À l’aide de la formule (4.7), on peut calculer les différences divisées de Newton sous forme d’une matrice triangulaire inférieure stockée sous la forme suivante. Les coefficients intervenant dans x0 x1 x2 .. . f [x0 ] f [x1 ] f [x1 ] .. . f [x0 , x1 ] f [x1 , x2 ] xn f [xn ] f [xn−1 , xn ] f [x0 , x1 , x2 ] .. . f [xn−2 , xn−1 , xn ] .. . ... f [x0 , . . . , xn ] la formule de Newton sont les éléments diagonaux de la matrice. . En utilisant (4.7), seulement n(n + 1) additions et n(n + 1)/2 divisions sont nécessaires pour constuire la matrice complète. Si on disposait de la valeur prise par f en un nouveau noeud xn+1 , on aurait à calculer seulement une ligne supplémentaire (f [xn , xn+1 ], . . . , f [x0 , . . . , xn+1 ]). Ainsi, pour construire Πn+1 f à partir de Πn f , il suffit d’ajouter à Πn f le terme an+1 ωn+1 (x), ce qui nécessite (n + 1) divisions et 2(n + 1) additions. . Remarquer que f [x0 , . . . , xn ] = 0 pour tout f ∈ Pn−1 . Néanmoins cette propriété n’est pas toujours satisfaite numériquement car le calcul des différences divisées peut être fortement affecté par des erreurs d’arrondi. 4.2 Erreur d’interpolation avec les différences divisées Soit Πn f le polynôme d’interpolation de f aux noeuds x0 , . . . , xn et soit x un noeud distinct des précédents ; en posant xn+1 = x, on note Πn+1 f le polynôme interpolant f aux noeuds xk , k = 0, . . . , n + 1. En utilisant la formule des différences divisées de Newton, on a Πn+1 f (t) = Πn f (t) + (t − x0 ) · · · (t − xn )f [x0 , . . . , xn , t]. Puisque Πn+1 f (x) = f (x), on obtient l’expression suivante pour l’erreur d’interpolation en t=x: En (x) = f (x) − Πn f (x) = Πn+1 f (x) − Πn f (x) = (x − x0 ) · · · (x − xn )f [x0 , . . . , xn , x] = ωn+1 (x)f [x0 , . . . , xn , x]. 21 (4.8) En supposant f ∈ C (n+1) (Ix ) et en comparant (4.8) à (2.2), on a donc f [x0 , . . . , xn , x] = f (n+1) (ξ) (n + 1)! (4.9) pour un certain ξ ∈ Ix . Comme (4.9) est le reste du développement de Taylor de f , la formule d’interpolation de Newton (4.5) peut être vue comme un développement tronqué autour de x0 (à condition que |xn − x0 | ne soit pas trop grand). 22 5 Interpolation d’Hermite-Birkhoff On peut généraliser l’interpolation de Lagrange d’une fonction f pour prendre en compte, en plus de ses valeurs nodales, les valeurs de ses dérivées en certains noeuds (ou en tous les noeuds). On se donne (xiP , f (k) (xi )), pour i = 0, . . . , n, k = 0, . . . , mi où mi ∈ N. En posant N = ni=0 (mi + 1), on peut montrer (voir [Dav63]) que si les noeuds xi sont distincts, il existe un unique polynôme HN −1 ∈ PN −1 , appelé polynôme d’interpolation d’Hermite, tel que (k) (k) HN −1 (xi ) = yi , pour tous i = 0, . . . , n, et k = 0, . . . , mi . Ce polynôme s’écrit HN −1 (x) = mi n X X (k) yi Lik (x) (5.1) i=0 k=0 (k) yi où = f (k) (xi ), pour tous i = 0, . . . , n, et k = 0, . . . , mi . Les fonctions Lik ∈ PN −1 sont appelées les polynômes caractéristiques d’Hermite et sont définies par les relations dp 1 si i = j et k = p (Lik )(xj ) = p 0 sinon dx En définissant les polynômes ℓij (x) = n (x − xj )j Y x − xk mk +1 , i = 0, . . . , n, j = 0, . . . , mi j xi − xk k=0 k6=i et en posant Limi (x) = ℓimi (x) pour i = 0, . . . , n, on a les relations de récurrence suivantes pour les polynômes Lij Lij (x) = ℓij (x) − mi X (k) ℓij (xi )Lik (x) j = mi − 1, mi − 2, . . . , 0. k=j+1 Concernant l’erreur d’interpolation, on a l’estimation f (x) − HN −1 (x) = f (N ) (ξ) ΩN (x) ∀x ∈ R, N! o˘ ξ ∈ I(x; x0 , . . . , xn ) et ΩN est le polynôme de degré N défini par ΩN = (x − x0 )m0 +1 (x − x1 )m1 +1 · · · (x − xn )mn +1 , avec I(x; x0 , . . . , xn ) le plus petit intervalle contenant x, x0 , . . . , xn . 23 Conclusion Dans ce projet nous avons abordé l’approximation au sens des moindres carrés, l’interpolation polynomiale avec noeuds équirépartis sur un ou plusieurs morceaux, ainsi que l’interpolation d’Hermite-Birkhoff qui prend en compte les valeurs aux noeuds, des dérivées d’une fonction en plus des valeurs de cette fonction. Il existe beaucoup d’autres extensions de l’interpolation numérique : La première est ce qu’on appelle les fonctions splines, qui sont en fait des interpolations polynomiales par morceaux, mais qui demandent en plus que les dérivées des polynômes interpolants soient égales, cela aux points de jointure entre les morceaux. On obtient ainsi une fonction polynomiale par morceaux qui est (au moins) C 1 , vue sur l’ensemble du domaine d’interpolation. Ensuite, l’interpolation peut se faire non pas grâce à des polynômes, mais par exemple avec des polynômes trigonométriques, ou des fonctions exponentielles. La seconde extension concerne la dimension du problème. En effet, il est possible d’interpoler des courbes paramétrées (dans le plan ou l’espace) et d’interpoler des surfaces de l’espace (surfaces paramétrées, ou fonction de R2 dans R). Les lecteurs interressés trouverons plus d’information sur ces sujets dans [Quart07]. 24 Références [Axler97] S. Axler. (1997) Linear Algebra Done Right (Second Edition). Undergraduate Texts in Mathematics, Springer-Verlag. [Dav63] Davis P. (1963) Interpolation and Approximation. Blaisdell Pub., New York [Die93] Dierckx P. (1993) Curve and Surface Fitting with Splines. Claredon Press, New York. [Erd61] Erdös P. (1961) Problems and Results on the Theory of Interpolation. Acta Math. Acad. Sci. Hungar. 44 : 235-244 [Hess06] Hess Bellwald K. (2006) Algèbre Linéaire I / II (notes manuscrites de Pablo CROTTI) [Quart07] A. Quarteroni, R. Sacco and F. Saleri, (2007) Méthodes numériques. Springer, Italia. 25 . ANNEXE : CODES MATLAB 26 Programme 1 - Lissage : Génération et lissage de donnée aléatoire function Lissage % LISSAGE Approxime un jeu de 10 points, perturbation d’une loi quadratique x = linspace(0,1,10); f = 10*x.ˆ2+rand(size(x)); % perturbations sur la loi quadratique pol9 = polyfit(x,f,9); % polynôme interpolant de degré 9 pol2 = polyfit(x,f,2); % approximation de degré 2 au sens des moindres carrés x2 = linspace(0,1,100); y9 = polyval(pol9,x2); y2 = polyval(pol2,x2); figure(’Name’,’Lissage’); axes(’Box’,’on’); hold on; plot(x,f,’+r’); plot(x2,y9,’--b’); plot(x2,y2,’-k’); x = 2; f2 = 10*x.ˆ2+rand(size(x)) %valeur réelle de f au point x=2 y92 = polyval(pol9,2) %valeur du polynôme interpollant en x=2 y22 = polyval(pol2,2) %valeur de l’approximation en x=2 legend(char(’f’,’Degré 9’,’Degré 2’),’Location’,’NorthEastOutside’); return; 27 Programme 2 - LagrangeMorc : Interpolation de Lagrange par morceaux function [X,Y,YFUN,E] = LagrangeMorc(fun,a,b,T,K,npoint) % [X, Y, YFUN, E]=LagrangeMorc(fun,a,b,T,K,npoint) Fait l’interpolation % par morceaux de la function fun, sur l’intervalle [a,b] % T est un vecteur de noeuds qui définit la partition de [a,b]. % Si T est un scalaire, T est le nombre de morceaux équirepartis. % K est le degré d’interpolation % npoint est le nombre de point où il faut evaluer le polynôme % d’interpolation sur chaque intervalle % X,Y sont les points du polynôme, YFUN est les points de la fonction fun % évaluée en X % E est l’erreur maximale entre fun et le polynôme m = length(T); if m == 1 xpart = linspace(a,b,T+1); else xpart = T; end m = length(xpart); X = []; Y = []; for i=1:m-1 xnods = linspace(xpart(i),xpart(i+1),K+1); ynods = feval(fun,xnods); pol = polyfit(xnods,ynods,K); xplot = linspace(xpart(i),xpart(i+1),npoint); yplot = polyval(pol,xplot); if i==1 X = xplot; Y = yplot; else %évite de doubler des points X = [X(1:end-1),xplot]; Y = [Y(1:end-1),yplot]; end end; if nargout>2 YFUN = feval(fun,X); E = max(abs(YFUN-Y)); end return; 28