1
Cnam-Paris-2008-2009 CSC012 F.Guiraud
Lundi 12 Janvier 2009
Dérivation numérique I Matrice de dérivation
Connaissant les (n+1) valeurs y i = f(x i) prises par une fonction (généralement inconnue) aux points de collocation x i, on souhaite évaluer les dérivées de cette fonction en ces mêmes x i. A l'aide du polynôme d'interpolation de Lagrange, construit sur les x i, on peut obtenir les y i(d)
(c.-à-d. les valeurs de la dième dérivée aux points de collocation); ce qui s'écrit sous la forme du produit matrice vecteur: D n(d)
×y = y(d) où y(d) et y sont les vecteurs contenant les y i(d)
et y i
et D n(d)
est la matrice de dérivation dième
1 Polynöme de Lagrange construit sur deux points Soient deux points (x 0, y0) , (x
1 ,y
1) , le polynôme d’interpolation de Lagrange est : P(x)= x-x1
x0-x1 y0 + x-x0
x1-x0 y1 ; P’ (x) = y0
x0-x1 + y1 x1-x0 . Si x
1 - x
0= h, P’ (x) = 1 h ( - y
0 + y
1 )
2 . Polynôme de Lagrange construit sur trois points Soient trois points (x 0, y0) , (x
1 ,y
1), (x
2 ,y
2) le polynôme d’interpolation de Lagrange est : P(x)=
(x-x1)(x- x
2) (x0-x
1)( x
0-x
2) y
0 +
(x-x0)(x- x
2) (x1-x
0)( x
1-x
2) y
1 +
(x-x1)(x- x
0) (x2-x
1)( x
2-x
0) y
2
P’ (x) =
x- x2
(x0-x
1)( x
0-x
2) y0 +
x- x1
(x0-x
1)( x
0-x
2) y0 + (x-x0) (x1-x
0)( x
1-x
2) y1+ (x-x2) (x1-x
0)( x
1-x
2) y1+
x-x1 (x2-x
1)( x
2-x
0) y
2 + x-x0
(x2-x
1)( x
2-x
0) y
2 .
Dans le cas de points de collocation équidistants x i = x 0 + i.h, P’(x0) = 1
2h ( - 2y
0- y
0 + 4y
1 - y
2 ) = 1 2h ( -3 y
0 4y
1 - y
2) P’(x1 ) = 1
2h ( -y0 + y1 - y1-3 y2 ) = 1
2h ( -y0 + y2) P’(x2 ) = 1
2h ( y0 - 4 y1 + y2 +2 y2) = 1
2h ( y0 - 4 y1 +3 y2)
Ce qui donne une matrice de dérivation ne dépendant plus que de h, le pas (la taille de l'intervalle) entre points successifs.
D2 = 1 2h
-3 4 -1
-1 0 1 1 -4 3
2 D’où l’égalité :
P'(x0) P'(x1) P'(x2)
= 1 2h
-3 4 -1
-1 0 1 1 -4 3
y0
y1
y2
Exemple
Soit la fonction sin(x) et les trois points ( 0, 0), (π 4 , 1
2 ), (π 2 , 1)
P'(0) P'(π
4) P'(π
2)
= 2 π
-3 4 -1
-1 0 1 1 -4 3
0 1 2 1
on trouve P’(0) = 2
π ( 2 2 -1) = 1.164
P’(1) = 2
π = 0.636 ; P’(2) = 2
π ( -2 2 +3) = 0.109 A comparer avec les valeurs exactes 1 , 1
2 , 0.
II Calcul de la dérivée première numérique 1 Approche
Soit f : [ a,b] → R , continue ; on définit le pas de discrétion ∆x = b - a
n , n ∈ N et on suppose que l’on connaît f(a) , f(a +∆x) , ….., f(a + i. ∆x) ,…,f(b)
On rappelle la définition de la dérivée f ’(x) =
h f(x) ) h limf(x
0
− +
h→ soit au point xj : f ’(xj ) = h
) f(x ) h
limf(xj j
0
− +
h→
2 Schéma numérique f n’est connue qu’aux points x
0, x
1 , …., xj …. xn
Soit h = ∆x = b - a
n = xj - xj-1 et on définit trois méthodes de calcul approché de la dérivée première :
a) dérivée première décentrée à droite : ( f ’
d )j = f(a +(j+1)∆x) - f(a+j∆x)
∆x valeur approchée du nombre dérivé à droite en x = a + j∆x Remarque : On ne peut pas calculer f’
d en x = b b) dérivée première décentrée à gauche
(f ’g )j = f(a +(j-1)∆x) - f(a+j∆x)
- ∆x = f(a +j∆x) - f(a+(j -1).∆x)
∆x valeur approchée du nombre dérivé à gauche en x = a + j.∆x
Remarque : On ne peut pas calculer f‘
g en x = a c) dérivée première centrée
on fait la moyenne des deux dérivées décentrée à gauche et à droite fc ’(x) =
2h
h) - f(x ) h limf(x
0
− +
h→
on a
2h
h) - f(x ) h f(x+ −
= 1
2 h
f(x) ) h f(x+ −
+ 1
2 h
h) - f(x ) f(x − d’où
3 (f’c)
j= 1 2 [(f ’
d)
j+ (f ’
g)
j] =
f(xj+1) - f(x
j-1) 2∆x Remarque : On ne peut pas calculer f‘
c en x = a ou x = b Tp sur Matlab
1 ) polynômes de Lagrange
Il s’agit d’écrire un programme fonction qui calcule P(x
0) , les valeurs des (x i ,y i) et x
0étant passé en paramètres puis d’utiliser ce programme pour interpoler la fonction x→ 1
1 + x2
Voici le programme de calcul des valeurs d’interpolation pour interpoler la fonction : x→ 1
1 + x2 entre -5 et 5 pour 20 points pour mettre en évidence les oscillations de Runge
function P= lagrange (X,Y,a) n =length(X)
L=1 ;P=0 ; for i=1:n for j=1:n if j~= i
L=L*(a-X(j))/(X(i)-X(j));
end end
P=P+L*Y(i) end
-5 -4 -3 -2 -1 0 1 2 3 4 5
-1 0 1 2 3 4 5 6 7 8 9
2): Dérivation :
soient la fonction f : x → sin(x) et le segment [0 ; π
2 ] que l’on divise en 10 intervalles. Représenter les dérivées f’
c , f ’ d , f ’
g en chacun des points de la subdivision.
Programme script
X=linspace(-5,5,20);
Y=1./(1+X.^2);
x=-5:0.05:5;
P=zeros(1,length(x));
for i=1:length(x)
P(i)= lagrange(X,Y,x(i));
end hold on
plot(x,1./(1+x.^2),'r') plot(x,P(1:length(x)))
4
0 0.5 1 1.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
h=pi/20;
hold on for i=1:9
fd=(sin((i+1)*(pi/20))-sin(i*pi/20))/h;
fg=(sin(i*pi/20)-sin((i-1)*pi/20))/h fc=(sin((i+1)*pi/20)-sin((i-1)*pi/20))/(2*h)
plot(i*pi/20,fg,'*r,i*pi/20,fd,'*g',i*pi/20 ,fc,'*b') end