Université d’Orléans Outils numériques
L3 groupe 2 2ème semestre 2006/2007
Feuille de TP 2
—————————————————
Exercice 1 : Algorithme de Hörner
Le calcul des valeurs d’un polynôme peut s’effectuer de deux manières. La méthode classique est celle de la
somme des puissances:
p(x) =
N
X
i=0
aixi.
Une autre méthode est celle de Hörner:
p(x) = x(x(x(...(aN)...) + a2) + a1) + a0.
Ecrire l’algorithme de Hörner sous la forme d’une suite récurrente, et programmer une fonction Scilab
y=Horner(p, x)calculant la valeur au point xdu polynôme représenté par le vecteur ligne p= (a0a1. . . aN)
de ses coefficients.
En langage Scilab, cela se programme de la manière suivante:
p= [a0a1. . . aN];
pol=poly(p,"x","coeff") ;
horner(pol,x)
—————————————————
Exercice 2 : Phénomène de Runge
1. Soit x={x0, x1, . . . , xN}le tableau des N+ 1 points d’interpolation et y={y0, . . . , yN}le tableau des
valeurs de la fonction aux points xi. Programmer une fonction Scilab p=interpolV DM(x, y)calculant
le polynôme d’interpolation pN, par la méthode d’inversion de la matrice de Van der Monde.
On définira xet ycomme des vecteurs ligne.
2. Faire un script Scilab T racepolyV DM pour tracer sur un même graphique la fonction cos et son polynôme
d’interpolation aux points xi= 2/(N+ 1),i∈ {0, . . . , N + 1}. On prendra N= 1,2,5,10.
On représentera sur le même graphique les points d’interpolation par des points ou des croix. On utilisera
pour évaluer le polynôme d’interpolation en un point la fonction horner.
3. Considérons la fonction f(t)=1/(1 + 25t2)sur l’intervalle [1,1]. Comme précédemment, écrire un
script construisant les polynômes d’interpolation de Lagrange pNde degré Naux points tj=1+2j/N ,
j= 0,1, . . . , N, pour N= 5 et N= 10, et les représentant sur un graphe, ainsi que la fonction f.
Constater l’instabilité numérique du procédé : l’interpolant présente de grandes oscillations au voisinage
des extrémités de l’intervalle. C’est le phénomène de Runge.
Que se passe-t-il si on interpole aux points suivants, dit points de Tchebychev ? (avec ici a=1, b = 1)
tj=a+ba
21 + cos (2j+ 1)π
2(N+ 1) , j = 0,1, . . . , N
1
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) = yii∈ {0,1, . . . , n}.On rappelle
que
pn(x) = y[x0] + y[x0, x1](xx0) + y[x0, x1, x2](xx0)(xx1) + · · · +y[x0, . . . , xn](xx0)(xx1). . . (xxn1)
où les différences divisées sont définies par
y[xi] = yi
y[x0, x1] = y[x1]y[x0]
x1x0
y[x0, x1, x2] = y[x1, x2]y[x0, x1]
x2x0
.
.
.
y[x0, . . . , xn] = y[x1, . . . , xn]y[x0, . . . , xn1]
xnx0
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(n2) T ab(n1) T ab(n)
0y0y1y2. . . yn2yn1yn
1y[x0, x1]y[x1, x2]. . . . . . y[xn2, xn1]y[xn1, xn]
2y[x0, x1, x2]. . . . . . . . . y[xn2,n1,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) + (xx0)(T ab(1) + (xx1)(T ab(2) + · · · + (xxn1)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= 2/(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
1 / 2 100%