Feuille de TP 2 - ljll.math.upmc.fr · PDF fileFaire un script Scilab TracepolyVDM pour tracer...
Transcript of Feuille de TP 2 - ljll.math.upmc.fr · PDF fileFaire un script Scilab TracepolyVDM pour tracer...
Université d’Orléans Outils numériquesL3 groupe 2 2ème semestre 2006/2007
Feuille de TP 2
—————————————————
Exercice 1 : Algorithme de HörnerLe 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∑
i=0
ai xi.
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 Scilaby = Horner(p, x) calculant la valeur au point x du polynôme représenté par le vecteur ligne p = (a0 a1 . . . aN )de ses coefficients.En langage Scilab, cela se programme de la manière suivante:
p = [a0 a1 . . . 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 desvaleurs de la fonction aux points xi. Programmer une fonction Scilab p = interpolV DM(x, y) calculantle polynôme d’interpolation pN , par la méthode d’inversion de la matrice de Van der Monde.
On définira x et y comme des vecteurs ligne.
2. Faire un script Scilab TracepolyV DM pour tracer sur un même graphique la fonction cos et son polynômed’interpolation aux points xi = 2iπ/(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 utiliserapour é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 unscript construisant les polynômes d’interpolation de Lagrange pN de degré N aux 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 voisinagedes 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 +b − a
2
(1 + 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 xi sont 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 rappelleque
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 lesvaleurs yi dans un tableau Tab, puis on modifie ce tableau en n étapes successives :
Tab(0) Tab(1) Tab(2) . . . Tab(n − 2) Tab(n − 1) Tab(n)0 y0 y1 y2 . . . yn−2 yn−1 yn
1 y[x0, x1] y[x1, x2] . . . . . . y[xn−2, xn−1] y[xn−1, xn]2 y[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 Tab. Remarquerégalement que pour coder en Scilab cet algorithme, il faut décaler tous les indices de 1 car un tableau necommence jamais à 0.
Dans les questions suivantes, x désigne un tableau de taille n+1 contenant les réels distincts xi, et y désigneun tableau de même taille contenant les yi.
1. Programmer une fonction Scilab Tab = taby(n, x, y) calculant les différences divisées. Tab est le tableaude même taille que y tel que Tab(k) = y[x0, . . . , xk].
Pour calculer la valeur pn(t) du polynôme d’interpolation à partir des différences divisées, on utilise leschéma de Hörner :
pn(t) = Tab(0) + (x − x0)(Tab(1) + (x − x1)(Tab(2) + · · · + (x − xn−1)Tab(n))).
2. Programmer une fonction Scilab val = Hornerbis(x, y, t) calculant la valeur du polynôme d’interpolationpn(t) au point t. Cette fonction fera appel à la fonction taby précédente.
3. Faire un programme Scilab Tracepoly pour tracer sur un même graphique la fonction cos et son polynômed’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 x variant entre ε > 0 et 1), ou encorexi uniformément réparti sur [0, 1] et yi choisis aléatoirement dans [0, 1].
2