TP N°1 Interpolation Solution
TP N°1 Interpolation Solution
TP N°1 Interpolation Solution
TP N◦ 1 Interpolation
Solutions proposées
Solution de l’exercice 1. 1. Pour tout ensemble de couples {xi , yi }, i = 0, · · · , n avec des noeuds distincts
xi , il existe un unique polynôme noté Pn de degré inférieur ou égal à n appelé polynôme d’interpolation des
valeurs yi aux noeuds xi tel que Pn (xi ) = yi . La forme de Lagrange de Pn est donnée par
n n
X Y x − xj
Pn (x) = yk .
xk − xj
k=0 j=0,j6=k
2. Soit c une nombre réel. La fonction Matlab qui donne la valeur de Pn (c) est la suivante.
fi
function u=i n t e r p o l L ( x , y , c )
% u=i n t e r p o l L ( x , y , c ) , x e t y de meme l o n g u e u r
ss
% u e s t p ( c ) , p e t a n t l e polynome i n t e r p o l a n t l e s y ( j ) aux p o i n t s x ( j ) : p ( x )=y
% La f o n c t i o n n ’ a c c e p t e pas d e s c v e c t e u r s
% On u t i l i s e l a f o r m u l e de Lagrange
S = y ; % v e c t e u r dont l a somme s e r a p ( c )
n = length ( x ) ;
f o r i =1:n
ou
L = c−x ; % L( i )=c−x ( i )
f o r j =1:n
i f ( j == i )
.Y
L( j ) = 1 ;
else
L( j ) = L( j ) / ( x ( i ) − x ( j ) ) ;
end % pour i f
end % pour f o r j
S ( i ) = S ( i ) ∗prod (L) ; % prod (L) c ’ e s t l e p r o d u i t d e s L( j )
end % pour f o r j
.A
x 0 1 2
f (x) 0 -1 − 32
Pr
Pour tester la fonction ’interpolL’ on se place dans la fenêtre ’Command Window’, ensuite on execute les com-
mandes
% Test de l a f o n c t i o n i n t e r p o l L
x0 = [ 0 , 1 , 2 ] ;
f=@( x ) ( −3.∗ x ) ./(2+ x ) ;
y0=f ( x0 ) ;
i n t e r p o l L ( x0 , y0 , 2 )
ans =
-1.5000
Faite la comparaison sachant que Le polynôme d’interpolation de f aux points 0, 1 et 2 est P2 (x) = 41 x2 − 45 x.
Solution de l’exercice 2. La fonction Matlab qui donne la valeur de Pn (c) dans le cas où c est un vecteur est
la suivante.
1
function u=i n t e r p o l L v e c ( x , y , c )
% u=i n t e r p o l L ( x , y , c ) , x e t y de meme l o n g u e u r
% u e s t p ( c ) , p e t a n t l e polynome i n t e r p o l a n t l e s y ( j ) aux p o i n t s x ( j ) : p ( x )=y
% La f o n c t i o n a c c e p t e d e s c v e c t e u r s
% On u t i l i s e l a f o r m u l e de Lagrange
u = zeros ;
for k = 1 : length ( c )
u(k) = interpol (x , y , c (k) ) ;
end
end
%% Deuxieme f o n c t i o n u t i l i s e e par l a p r e m i e r e
function u=i n t e r p o l ( x , y , c )
S = y ; % v e c t e u r dont l a somme s e r a p ( c )
n = length ( x ) ;
fo r j =1:n
L = c−x ; % L( j )=c−x ( j )
fi
for k = 1 : n
i f ( k == j )
L( k ) = 1 ;
ss
else
L( k ) = L( k ) / ( x ( j ) − x ( k ) ) ;
end % pour i f
end % pour f o r k
end % pour f o r j
ou
S ( j ) = S ( j ) ∗prod (L) ; % prod (L) c ’ e s t l e p r o d u i t d e s L( j )
% Test de l a f o n c t i o n i n t e r p o l L v e c
x0 = [ 1 , − 1 , 2 ] ;
c =[0 ,1 ,2];
.A
f=@( x ) ( 1 . / 2 ) . ∗ x . ˆ 2 + ( 1 . / 2 ) . ∗ x −2;
y0=f ( x0 ) ;
i n t e r p o l L v e c ( x0 , y0 , c )
ans =
-2.0000 -1.0000 1.0000
Solution de l’exercice 3. 1. Soit f une fonction définie sur [a, b] et x0 , x1 ,· · · , xn n + 1 points distincts
deux à deux de [a, b] où l’on connaı̂t les valeurs de la fonction f . La forme de Newton du polynôme Pn
d’interpolation de f aux points x0 , x1 ,· · · , xn est donnée par
n
X k−1
Y
Pn (x) = P0 (x) + f [x0 , x1 , · · · , xk ] (x − xj ), avec P0 (x) = f (x0 )
k=1 j=0
2. Notons d’abord une remarque importante, c’est que l’indexation pour Matlab commence toujours par 1 et
non pas par 0. La fonction Matlab qui retourne la valeur Pn (c), c est une valeur réelle, en utilisant la forme
de Newton du polynôme d’interpolation est
function u = newton2020 ( x , y , c )
% u=i n t e r p o l N ( x , y , c ) , x e t y de meme l o n g u e u r
2
% u e s t p ( c ) , p e t a n t l e polynome i n t e r p o l a n t l e s y ( j ) aux p o i n t s x ( j ) : p ( x (
j ) )=y ( j )
% La f o n c t i o n a c c e p t e d e s c v e c t e u r s
% On u t i l i s e l a forme de Newton
n=min( length ( x ) , length ( y ) ) ; % S i x e t y n ’ ont pas l a meme l o n g u e u r l a
f o n c t i o n marche
u=zeros ;
v=y ; % Vecteur q u i d o i t c o n t e n i r a l a f i n l e s c o e f f i c i e n t s dans l a b a s e de
Newton
L=zeros ;
% v ( 1 ) e s t d e j a bon : i l ne d o i t pas c h a n g e r
w = y ; % Vecteur i n t e r m e d i a i r e pour l e c a l c u l de v
f o r k=2:n
f o r j=k : n
w( j ) =(v ( j )−v ( j −1) ) / ( x ( j )−x ( j −(k−1) ) ) ;
end % pour f o r j
f o r j=k : n
fi
v ( j ) = w( j ) ; % On s t o c k e l e s c o e f f i c i e n t s d e j a bons
end % pour f o r j
end % pour f o r k
ss
f o r k=2:n
f o r j =1:k−1
L( j ) = c−x ( j ) ;
end
end
ou
u ( k ) = v ( k ) ∗prod (L) ;
u = v ( 1 )+sum( u ) ;
end
.Y
−3x
Application : On cosidère la fonction f (x) = x+2 .
x 0 1 2
f (x) 0 -1 − 32
% Test de l a f o n c t i o n newton2020
x0 = [ 0 , 1 , 2 ] ;
f=@( x ) ( −3.∗ x ) ./(2+ x ) ;
y0=f ( x0 ) ;
newton2020 ( x0 , y0 , 2 )
ans =
Pr
-1.5000
Faite la comparaison sachant que Le polynôme d’interpolation de f aux points 0, 1 et 2 est P2 (x) = 14 x2 − 45 x.
Solution de l’exercice 4. 1. Le script file qui donne l’interpolation de Lagrange de fonction f et qui affiche
1
dans le même repère la courbe de f et celle du polynôme d’interpolation de f (x) = 1+x2 .
% Test de i n t e r p o l L .m
x0 = − 1 : 0 . 0 1 : 1 ;
f = @( x ) 1./(1+ x . ˆ 2 ) ;
x1 = f ( x0 ) ;
xx = − 1 : 0 . 1 : 1 ;
yy = zeros ;
f o r j =1: length ( xx )
yy ( j ) = i n t e r p o l L ( x0 , x1 , xx ( j ) ) ;
end
3
z z = f ( xx ) ; % Les noeuds d ’ i n t e r p o l a t i o n
hold on
plot ( x0 , x1 , ’ r ’ , xx , yy , ’−g ’ , xx , zz , ’ b : ∗ ’ ) ;
grid ;
legend ( ’ e x a c t ’ , ’ i n t e r p o l ’ , ’ noeud ’ ) ;
t i t l e ( ’ I n t e r p o l a t i o n de Lagrange ’ ) ;
fi
ss
ou
2. Le script file qui donne l’interpolation de f (x) dans le cas où x est un vecteur et qui affiche les deux courbes.
.Y
Nous allons considérer le tableau suivant
x -1 -0.5 0 0.5 1
f (x) 0.5 0.8 1 0.8 0.5
Le polynôme d’interpolation de f relatif à ce tableau est
Dans le même repère nous allons tracer les graphes de : la fonction f , du polynôme P4 , des 5 noeuds
d’interpolation ainsi que les valeurs issues de l’algorithme d’interpolation génerer par interpolLvec. Ceci
nous permet de visualiser le phénomène de Runge.
% Phenomene de Runge
x0 = − 1 : 0 . 5 : 1 ;
Pr
f=@( x ) 1./(1+ x . ˆ 2 ) ;
x1=f ( x0 ) ; % Les p o i n t s d ’ i n t e r p o l a t i o n
P=@( x ) 0 . 4 . ∗ x . ˆ 4 −0.9.∗ x . ˆ 2 + 1 ;% Le polynome d ’ i n t e r p o l a t i o n
xx = − 1 : 0 . 1 : 1 ;
yy=i n t e r p o l L v e c ( x0 , x1 , xx ) ;
z z=f ( xx ) ;
x2=P( xx ) ;
hold on
plot ( xx , x2 , ’−k ’ , ’ LineWidth ’ , 1 )% Graphe du polynome d ’ i n t e r p o l a t i o n
hold on
plot ( x0 , x1 , ’ o r ’ , ’ M a r k e r S i z e ’ , 1 6 )% Graphe d e s noeuds d ’ i n t e r p o l a t i o n
hold on
plot ( xx , yy , ’ ob ’ , ’ LineWidth ’ , 3 )% Graphe de l ’ a l g o r i t h m e d ’ i n t e r p o l a t i o n
hold on
plot ( xx , zz , ’−g ’ , ’ LineWidth ’ , 1 )% Graphe de l a f o n c t i o n
grid ;
legend ( ’ p o l y ’ , ’ noeud ’ , ’ i n t e r p o l ’ , ’ e x a c t ’ ) ;
4
t i t l e ( ’ Phenomene de Runge ’ ) ;
f p r i n t f ( ’L ’ ’ e r r e u r maximale e s t : \ n ’ )
max( abs ( yy−z z ) ) % <10ˆ(−5)
fi
ss
Solution de l’exercice 5. Le script file qui donne le polynôme d’interpolation de Newton de la fonction
ou
% Test de i n t e r p o l N .m
x0 = − 1 : 0 . 5 : 1 ; %Nous avons 5 p o i n t s
f (x) = x4 − 1.
.Y
f 0 = @( x ) x . ˆ 4 −1; %C’ e s t un polynome de d e g r e 4
c0 = − 1 : 0 . 0 1 : 1 ;
u0 = i n t e r p o l N ( x0 , f 0 ( x0 ) , c0 ) ;
z0 = f 0 ( c0 ) ;
max( abs ( u0−z0 ) ) ;
plot ( x0 , f 0 ( x0 ) , ’ og ’ , ’ M a r k e r S i z e ’ , 3 2 ) ,
hold on
.A