Interpolation Numérique

Commentaires

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

Documents pareils