Interpolation (Cours Math 4 "Usthb")
Interpolation (Cours Math 4 "Usthb")
Interpolation (Cours Math 4 "Usthb")
epfl
disques intervertebraux
epfl
0.8
0.6
0.2
−0.2
epfl
7000
6000
5000
4000
valeurs mesurées
3000
1900 1920 1940 1960 1980 2000
année
epfl
35
30
25
20
15
10
0
epfl
−5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
où
ωN = e (−2πi)/N = cos(2π/N) − i sin(2π/N),
étant i l’unité imaginaire. On peut calculer le vecteur des
coefficients c = [c1 , . . . , c10 ]T par l’algorithme F.F.T. (Fast Fourier
Transform, Cooley et Tuckey, 1965), implémenté dans Octave avec
la commande fft.
epfl
35
30
25
20
15
10
−5
−10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
epfl
(n = 4)
6 6
5 5
4 4
Πn
3 3
y0 y0
yn
2 2
yn
1 1
0 0
−1
x0 xn −1
x0 xn epfl
−1 0 1 2 3 4 5 6 −1 0 1 2 3 4 5 6
6 6
(n = 4)
5 5
4 4
3
f 3
Πn f
2 2
1 1 f
0 0
x0 xn x0 xn
−1 −1
−1 0 1 2 3 4 5 6 −1 0 1 2 3 4 5 6
epfl
ϕk (xj ) = δjk , k, j = 0, . . . , n,
n
Y (x − xj )
ϕk (x) = .
(xk − xj )
j=0,j6=k
epfl
1.5
(n = 6)
ϕ0 (x) ϕ3 (x)
1
0.5
x1 x4 x6
0
x0 x2 x3 x5
epfl
−0.5
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
1
ϕ0 ϕ1 ϕ2
0.8
0.6
0.4
0.2
0
epfl
−0.2
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
n
X
Πn (x) = yk ϕk (x), (3)
k=0
Pn
car il vérifie Πn (xj ) = k=0 yk ϕk (xj ) = yj .
n
X
Πn f (x) = f (xk )ϕk (x).
k=0
epfl
Qn (xj ) − Πn (xj ) = 0, j = 0, . . . , n.
epfl
(4)
epfl
Π3 f
0.5 f Π f
6
Π2 f
0
Π1 f
−0.5
−1
−1.5
−2
−1 0 1 2 3 4 5 6 7
epfl
epfl
>> f=’cos(x)’;
>> x=[0:0.25:1];
>> y=eval(f);
>> p=polyfit(x,y,4)
p =
0.0362 0.0063 -0.5025 0.0003 1.0000
Remarque
Si la dimension m + 1 de x et y est m + 1 > n + 1 (n étant le
degré du polynôme d’interpolation), la commande
polyfit(x,y,n) retourne le polynôme interpolant de degré n au
sens des moindres carrés (voir sec. 3.4 du livre). Dans le cas où
m + 1 = n + 1, alors on trouve le polynôme d’interpolation
“standard”, puisque dans ce cas les deux coı̈ncident. epfl
>> x=0.4;
>> y=polyval(p1,x)
y =
3.9012
>> x=linspace(0,1,100);
>> y=polyval(p1,x);
>> plot(x,y)
epfl
10
8
Π4 f (x) Π1 f (x)
f (x)
4
0
Π2 f (x)
Π5 f (x)
−2
0 1 2 3 4 5 6 7 8 9 epfl
Example
1
(Runge) Soit f (x) = 1+x 2 , x ∈ [−5, 5]. Si on l’interpole dans des
points équirépartis, au voisinage des extrémités de l’intervalle,
l’interpolant présente des oscillations, comme on peut le voir sur la
figure.
epfl
1.5 Π f (x)
10
1
Π f (x)
5
0.5
0
f(x)
−0.5 epfl
−5 −2.5 0 2.5 5
epfl
a xi−1 xi xi+1 b
Sur chaque sous-intervalle Ii on interpole f|Ii par un polynôme de
degré 1. Le polynôme par morceaux qu’on obtient est noté
ΠH
1 f (x), et on a:
f (xi+1 ) − f (xi )
ΠH
1 f (x) = f (xi ) + (x − xi ) pour x ∈ Ii .
xi+1 − xi
epfl
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
−5 −4 −3 −2 −1 0 1 2 3 4 5
>> f = inline(’1./(1+x.^2)’,’x’);
>> H1 = 2.5; H2=1.0;
>> x1 = [-5:H1:5]; x2 = [-5:H2:5];
>> y1 = feval(f, x1); y2 = feval(f, x2);
>> x_plot = [-5:.1:5];
>> y1_plot = interp1(x1,y1,x_plot);
>> y2_plot = interp1(x2,y2,x_plot);
>> fplot(f, [-5 5]); hold on;
>> plot(x_plot, y1_plot); plot(x_plot, y2_plot);
epfl
H2
E1H (f ) = max | f (x) − ΠH
1 f (x) |≤ max |f ′′ (x)|.
x∈I 8 x∈I
H2
max | f (x) − ΠH
1 f (x) |≤ max | f ′′ (x) | .
x∈[xi ,xi+1 ] 4(1 + 1) x∈Ii
Remarque
On peut montrer que si l’on utilise un polynôme de degré n (≥ 1)
dans chaque sous-intervalle Ii on trouve
H n+1
EnH (f ) ≤ max |f (n+1) (x)| .
4(n + 1) x∈I
epfl
>> f=inline(’1./(1+x.^2)’,’x’);
>> K=[20 40 80 160]; H=10./K;
>> x_fine = [-5:0.001:5];
>> f_fine = feval(f,x_fine);
>> for i=1:4
x = [-5:H(i):5]; y = feval(f, x);
y_fine = interp1(x,y,x_fine);
err1(i) = max(abs(f_fine - y_fine));
end
>> loglog(H,err1);
epfl
>> err1./H.^2
ans =
0.16734 0.22465 0.24330 0.24829
epfl
−2
10
−3
10
−4
10 −2 −1 0
10 10 10
H
epfl
epfl
n
X n
|yi − f˜m (xi )|2 ≤
X
|yi − pm (xi )|2 ∀pm (x) ∈ Pm
i=0 i=0
Remarque
Lorsque yi = f (xi ) (f étant une fonction continue) alors f˜m est dit
l’approximation de f au sens des moindres carrés.
epfl
2 2 2
!
∂Φ X X X
= −2 [yi − (a0 + a1 xi )] = −2 yi − 3a0 − a1 xi
∂a0
i=0 i=0 i=0
= −2(9 − 3a0 − 8a1 )
2 2 2 2
!
∂Φ X X X X
= −2 xi [yi − (a0 + a1 xi )] = −2 xi yi − a0 xi − a1 xi2
∂a1
i=0 i=0 i=0 i=0
= −2(34 − 8a0 − 26a1 )
1 x1 . . . x1m
1 x2 . . . x2m
B= . ..
.. .
1 xn . . . xnm
B T Ba = B T ỹ.
4
ε
−1
0 0.2 0.4 0.6 0.8 1
σ
epfl
8000
7000
population
6000
5000
4000
3000
1900 1920 1940 1960 1980 2000
année
La valeur éstimées par la méthode pour l’année 2010 est
>> t = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9];
>> deb = [0 35 .15 5 0 5 .6 .3 .15 0];
>> f = interpft(deb, 1000);
>> plot(linspace(0, 1, 1000), f); hold on;
>> plot(t, deb, ’r*’)
35
30
25
20
15
10
−5
−10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
epfl
commande action
y=polyval(p,x) y = valeurs de P(x)
p=polyfit(x,y,n) p = coefficients du polynôme d’interpolation Πn
z=roots(p) z = zéros de P tels que P(z) = 0
p=conv(p1 ,p2 ) p = coefficients du polynôme P1 P2
[q,r]=deconv(p1 ,p2 ) q = coefficients de Q, r = coefficients de R
tels que P1 = QP2 + R
y=polyderiv(p) y = coefficients de RP ′ (x)
y=polyinteg(p) y = coefficients de P(x) dx
epfl
epfl
epfl
90
f
80
70
60
50
40
30
s3
20
10
−10
−1.5 −1 −0.5 0 0.5 1 1.5 2 2.5 3 3.5
epfl