Exercice 3 : Algorithme des différences divisées
Rappel de l’algorithme. On donne n+ 1 points (x0, y0), . . . , (xn, yn)où les xisont distincts. On note pn(x)
le polynôme d’interpolation de Lagrange (de degré n) qui satisfait pn(xi) = yi∀i∈ {0,1, . . . , n}.On rappelle
que
pn(x) = y[x0] + y[x0, x1](x−x0) + y[x0, x1, x2](x−x0)(x−x1) + · · · +y[x0, . . . , xn](x−x0)(x−x1). . . (x−xn−1)
où les différences divisées sont définies par
y[xi] = yi
y[x0, x1] = y[x1]−y[x0]
x1−x0
y[x0, x1, x2] = y[x1, x2]−y[x0, x1]
x2−x0
.
.
.
y[x0, . . . , xn] = y[x1, . . . , xn]−y[x0, . . . , xn−1]
xn−x0
Calcul pratique des différences divisées. Pour le calcul pratique des différences divisées, on range les
valeurs yidans un tableau T ab, puis on modifie ce tableau en nétapes successives :
T ab(0) T ab(1) T ab(2) . . . T ab(n−2) T ab(n−1) T ab(n)
0y0y1y2. . . yn−2yn−1yn
1y[x0, x1]y[x1, x2]. . . . . . y[xn−2, xn−1]y[xn−1, xn]
2y[x0, x1, x2]. . . . . . . . . y[xn−2,n−1,n]
.
.
.. . . . . . . . . . . .
n y[x0, . . . , xn]
Les espaces blancs dans le tableau ci-dessus signifient qu’on ne change pas la valeur de T ab. Remarquer
également que pour coder en Scilab cet algorithme, il faut décaler tous les indices de 1car un tableau ne
commence jamais à 0.
Dans les questions suivantes, xdésigne un tableau de taille n+ 1 contenant les réels distincts xi, et ydésigne
un tableau de même taille contenant les yi.
1. Programmer une fonction Scilab T ab =taby(n, x, y)calculant les différences divisées. T ab est le tableau
de même taille que ytel que T ab(k) = y[x0, . . . , xk].
Pour calculer la valeur pn(t)du polynôme d’interpolation à partir des différences divisées, on utilise le
schéma de Hörner :
pn(t) = T ab(0) + (x−x0)(T ab(1) + (x−x1)(T ab(2) + · · · + (x−xn−1)T ab(n))).
2. Programmer une fonction Scilab val =Hornerbis(x, y, t)calculant la valeur du polynôme d’interpolation
pn(t)au point t. Cette fonction fera appel à la fonction taby précédente.
3. Faire un programme Scilab T racepoly pour tracer sur un même graphique la fonction cos et son polynôme
d’interpolation aux points xi= 2iπ/(n+ 1),i∈ {0, . . . , n + 1}. On prendra n= 1,2,10,20.
4. Faire le tracé pour d’autres fonctions, par exemple cos(1/x)(avec xvariant entre > 0et 1), ou encore
xiuniformément réparti sur [0,1] et yichoisis aléatoirement dans [0,1].
2