2.3.
Interpolation de Lagrange
Algorithme 2 : Polynôme d’interpolation par la méthode de Lagrange
Données : 1. Les (n + 1) points {(xi , yi ) , i = 0, · · · , n}.
2. Un point x en lequel à évaluer le polynôme d’interpolation pn .
1 début
2 n := degré du polynôme pn
3 pour i ← 0 à n faire
4 si x = xi /* Vérifier si x = xi , i = 0, 1, · · · , n. */
5 alors
6 p = yi
7 écrire p ome de Lagrange en x. */
/* La valeur du polyn^
8 stop
9 pour i ← 0 à n faire
10 di = 1
11 pour j ← 0 à n faire
12 si i 6= j alors
13 di = di ∗ (xi − xj ) /* Calcul des dénominateurs de `i . */
14 num = 1
15 pour i ← 0 à n faire
n
Q
16 num = num ∗ (x − xi ) /* Calcul de (x − xi ) . */
i=0
17 p=0
18 pour i ← 0 à n faire
19 q = num/(x − xi ) /* Évaluation de pn (x). */
20 p = p + yi ∗ q/di
21 écrire p. ome de Lagrange en x. */
/* La valeur du polyn^
Résultat : La valeur du polynôme de Lagrange en x.
17
2.3. Interpolation de Lagrange
Code Matlab 2 : Polynôme d’interpolation de Lagrange
1 function p = polynome lagrange(xi, fxi, x)
2 % Polynôme d'interpolation de Lagrange
3 % Entrée:
4 % 1)xi: Un vecteur ligne contenant les abscisses xi.
5 % 2)fxi: Un vecteur ligne contenant les valeurs f(xi)
6 % de la fonction à interpoler pour les xi correspondants.
7 % 3)x : Un point en lequel à évaluer le polynôme d'interpolation.
8 % Sortie:
9 % 1) p : La valeur du polynôme de Lagrange en x.
10 % Exemple d'appel:
11 % >> xi=[-1 0 1 2 3]
12 % >> fxi=[-2 -1 0 3 2]
13 % >> p = polynome lagrange(xi, fxi, 2.5)
14 n = length(xi);
15 for i = 1 : n
16 if x==xi(i) %Vérifier si x est égal à l'un des xi.
17 p=fxi(i)
18 return
19 end
20 end
21 d = zeros(1,n);
22 for i=1:n
23 d(i)=1;
24 for j=1:n
25 if i6=j
26 d(i) = d(i)*(xi(i)-xi(j)); %Calcul des dénominateurs de L i.
27 end
28 end
29 end
30 num=1;
31 for i=1:n
32 num = num*(x - xi(i)); %Calcul du produit de (x-x i).
33 end
34 p=0;
35 for i=1:n
36 q=num/(x-xi(i));
37 p = p+fxi(i)*q/d(i); %Évaluation de p n(x).
38 end
18
2.4. Interpolation de Newton
Algorithme 3 : Polynôme d’interpolation sous la forme de Newton
Données : 1. Les (n + 1) points {(xi , f (xi )) , i = 0, · · · , n}.
2. Un point x en lequel à évaluer le polynôme d’interpolation pn .
1 début
2 n := degré du polynôme pn
3 pour i ← 0 à n faire
4 di0 := f (xi ) /* La colonne 0 ième de la matrice de */
/* différences divisées d. */
5 pour i ← 1 à n faire
6 pour j ← 1 à i faire
di,j−1 − di−1,j−1
7 dij = /* La table des différences divisées. */
xi − xi−j+1
8 écrire d00 , d11 , · · · , dnn /* Noter que dii = f [x0 , x1 , · · · , xi ]. */
9 définir p = dnn pour i ← n − 1 à 0 faire
10 p = p ∗ (x − xi ) + dii /* pn (x) en utilisant le polyn^
ome de Newton. */
11 écrire p. ome de Newton en x. */
/* La valeur du polyn^
Résultat : 1. La matrice contenant la table de différences divisées.
2. Les coefficients du polynôme de Newton.
3. La valeur du polynôme de Newton en x.
Code Matlab 3 : Polynôme d’interpolation en utilisant la méthode des différences divisées
1 function [d, a, p] = polynome newton(xi, fxi, x)
2 % Polynôme d'interpolation de Newton
3 % Entrée:
4 % 1)xi: Un vecteur ligne contenant les abscisses xi.
5 % 2)fxi: Un vecteur ligne contenant les valeurs f(xi)
6 % de la fonction à interpoler pour les xi correspondants.
7 % 3)x : Un point en lequel à évaluer le polynôme d'interpolation.
8 % Sortie:
9 % 1) d : Matrice contenant la table de différences divisées.
10 % 2) a : Vecteur contenant les coefficients du polynôme de Newton.
11 % 3) p : La valeur du polynôme de Newton en x.
12 % Exemple d'appel:
13 % >> xi=[-1 0 1 2 3]
25
2.4. Interpolation de Newton
14 % >> fxi=[-2 -1 0 3 2]
15 % >> [d, a, p] = polynome newton(xi, fxi, 2.5)
16 n = length(xi);
17 d = zeros(n,n);
18 a = zeros(1,n);
19 d(:,1) = fxi;
20 a(1) = d(1,1);
21 for i=2:n
22 for j=2:i
23 d(i,j) = (d(i,j-1)-d(i-1,j-1))/(xi(i)-xi(i-j+1));
24 end
25 a(i) = d(i,i);
26 end
27 p=a(n);
28 for i=n-1:-1:1
29 p = p*(x - xi(i))+a(i);
30 end
26
2.7. Interpolation d’Hermite
Algorithme 4 : Polynôme d’interpolation d’Hermite
Données : 1. Les (n + 1) points {(xi , f (xi )) , i = 0, · · · , n} et les valeurs f 0 (xi ).
2. Un point x en lequel à évaluer le polynôme d’interpolation d’Hermite
p2n+1 .
1 début
2 n + 1 := nombre de points d’interpolation
3 pour i ← 0 à n faire
4 si x = xi /* Vérifier si x = xi , i = 0, 1, · · · , n. */
5 alors
6 p = f (xi )
7 écrire p ome d’Hermite en x. */
/* La valeur du polyn^
8 stop
9 p=0
10 pour i ← 0 à n faire
11 `i = 1
12 pour j ← 0 à n faire
13 si i 6= j alors
14 `i = `i ∗ (x − xj )/(xi − xj ) /* Calcul des `i (x). */
15 ci = ci + 1/(xi − xj ) /* Calcul des `0i (xi ). */
16 p = p + ((1 − 2 (x − xi ) ci ) f (xi ) + (x − xi ) f 0 (xi )) ∗ `2i /* Calcul de p(x). */
17 écrire p. ome d’interpolation d’Hermite en x. */
/* La valeur du polyn^
Résultat : La valeur du polynôme d’interpolation d’Hermite en x.
Code Matlab 4 : Polynôme d’interpolation d’Hermite
1 function p = polynome hermite(xi, fxi, fpxi, x)
2 % Polynôme d'interpolation d'Hermite
3 % Entrée:
4 % 1)xi: Un vecteur ligne contenant les abscisses xi.
5 % 2)fxi: Un vecteur ligne contenant les valeurs f(xi)
6 % de la fonction à interpoler pour les xi correspondants.
7 % 3)fpxi: Un vecteur ligne contenant les valeurs f'(xi).
8 % 3)x : Un point en lequel à évaluer le polynôme d'Hermite.
9 % Sortie:
42
2.8. Approximation au sens des moindres carrés discrets
10 % 1) p : La valeur du polynôme d'interpolation d'Hermite en x.
11 % Exemple d'appel:
12 % >> xi=[-1 0 1 2 3]
13 % >> fxi=[-2 -1 0 3 2]
14 % >> fpxi=[1 2 1 4 -2]
15 % >> p = polynome hermite(xi, fxi, fpxi, 2.5)
16 n = length(xi);
17 for i = 1 : n
18 if x==xi(i) %Vérifier si x est égal à l'un des xi.
19 p=fxi(i)
20 return
21 end
22 end
23 p=0;
24 L = zeros(1,n);
25 c = zeros(1,n);
26 for i=1:n
27 L(i)=1;
28 for j=1:n
29 if i6=j
30 L(i) = L(i)*(x-xi(j))/(xi(i)-xi(j)); %Calcul de L i(x).
31 c(i) = c(i)+1/(xi(i)-xi(j)); %Calcul de L' i(x i).
32 end
33 end
34 p = p + ( (1-2*(x-xi(i))*c(i))*fxi(i) + (x-xi(i))*fpxi(i) ...
)*L(i)ˆ2; %Évaluation de p {2n+1}(x).
35 end
43