Feuille de TP 2 - ljll.math.upmc.fr · PDF fileFaire un script Scilab TracepolyVDM pour tracer...

2
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 i=0 a i x i . Une autre méthode est celle de Hörner: p(x)= x(x(x(...(a N )...)+ a 2 )+ a 1 )+ a 0 . 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 x du polynôme représenté par le vecteur ligne p =(a 0 a 1 ... a N ) de ses coefficients. En langage Scilab, cela se programme de la manière suivante: p =[a 0 a 1 ... a N ] ; pol=poly(p,"x","coeff") ; horner(pol,x) ————————————————— Exercice 2 : Phénomène de Runge 1. Soit x = {x 0 ,x 1 ,...,x N } le tableau des N +1 points d’interpolation et y = {y 0 ,...,y N } le tableau des valeurs de la fonction aux points x i . Programmer une fonction Scilab p = interpolV DM (x, y) calculant le polynôme d’interpolation p N , 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 T racepolyV DM pour tracer sur un même graphique la fonction cos et son polynôme d’interpolation aux points x i =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 utilisera pour évaluer le polynôme d’interpolation en un point la fonction horner. 3. Considérons la fonction f (t)=1/(1 + 25t 2 ) sur l’intervalle [-1, 1]. Comme précédemment, écrire un script construisant les polynômes d’interpolation de Lagrange p N de degré N aux points t j = -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) t j = a + b - a 2 1 + cos (2j + 1)π 2(N + 1) , j =0, 1,...,N 1

Transcript of Feuille de TP 2 - ljll.math.upmc.fr · PDF fileFaire un script Scilab TracepolyVDM pour tracer...

Page 1: Feuille de TP 2 - ljll.math.upmc.fr · PDF fileFaire un script Scilab TracepolyVDM pour tracer sur un même graphique la ... pour évaluer le polynôme d’interpolation en un point

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

Page 2: Feuille de TP 2 - ljll.math.upmc.fr · PDF fileFaire un script Scilab TracepolyVDM pour tracer sur un même graphique la ... pour évaluer le polynôme d’interpolation en un point

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