Vous êtes sur la page 1sur 4

Université Clermont Auvergne Introduction à l’analyse numérique

UFR Mathématiques Année 2022 – 2023

TP 4 – Approximation et interpolation
Exercice 1. (calcul formel et polynômes sous python)
Le module sympy permet de faire de calculs formels sous python. Comme d’habitude,
pour utiliser ce module on doit ajouter la ligne suivante en début du programme :
import sympy as sp
(a) Déclarer la variable formelle X :
sp.var("X")
(b) Définir le polynôme P = 3X 2 − X + 2.
Indication : une fois la variable X définie, définir P simplement en lui attribuant la
valeur 3*X**2 - X + 2
(c) Représenter graphiquement le polynôme P sur l’intervalle [0, 4]. Pour cela :
— Créer un tableau x= (xi )0≤i<201 (de type numpy.array) contenant 201 nombres
équi-distribués dans l’intervalle [−1, 1].
— Créer un deuxième tableau y=(yi )0≤i<201 dont ses éléments vérifient yi = P (xi ).
Indication : La commande P.subs(X, 3) remplace X par 3 dans l’expression P.
— A l’aide de la commande plot du module matplotlib.pyplot, représenter gra-
phiquement la courbe donnée par (xi , yi )0≤i<201 .
(d) Dans une autre figure, représenter graphiquement une nouvelle fois le polynôme P sur
l’intervalle [−1, 1], mais cette fois on utilisera la commande plot du module sympy.
Indication : taper help(sp.plot) dans la console.

Exercice 2. (interpolation de Lagrange)


(a) Écrire une fonction d’entête :
def lagrange(x, y):
recevant comme arguments deux listes x = (xi )0≤i≤n et y = (yi )0≤i≤n ayant n + 1
éléments (xi , yi ∈ R et xi distincts) et rendant une expression symbolique de variable
X représentant l’unique polynôme P de degré inférieur ou égal à n vérifiant P (xi ) = yi
pour tout 0 ≤ i ≤ n.
Indication : Chercher P sous la forme P = a0 + a1 X + · · · + an X n . Les coefficients
(ai )0≤i≤n seront obtenus comme la solution d’un système linéaire de n + 1 équations
données par P (xi ) = yi . Écrire ce système sous forme matricielle, construire la matrice
comme un tableau deux dimensionnel numpy et résoudre le système ainsi obtenu à
l’aide la fonction solve du module numpy.linalg.
(b) A l’aide de la fonction précédente, trouver le polynôme P de degré 2 passant par les
points de coordonnées (0, 2), (1, 0) et (2, 0).
Indication : x = [0, 1, 2] et y = [2, 0, 0].
Représenter graphiquement ce polynôme sur l’intervalle [0, 4]. Compléter ce graphique
en représentant les points de coordonnées (0, 2), (1, 0) et (2, 0).
1
(c) Définir une fonction f qui à chaque x ∈ [−1, 1] associe . Représenter graphi-
25x2 + 1
quement cette fonction (dans une nouvelle figure).

1
Introduction à l’analyse numérique Université Clermont Auvergne
Année 2022 – 2023 UFR Mathématiques

(d) Prenons simplement des points (xi )0≤i≤n équidistants sur l’intervalle [−1, 1] et soient
(yi )0≤i≤n définis par yi = f (xi ) pour tout 0 ≤ i ≤ n.
A l’aide de la fonction lagrange définie à la question (a), calculer le polynôme de
Lagrange associé aux vecteurs x et y pour n = 7, 9 et 11. Compléter la figure de la
question (c) par les graphiques de ces trois polynômes d’interpolation. Ajouter une
légende à la figure.
Expliquer le phénomène observé (phénomène de Runge).
 
1 (2i + 1)π
(e) Prenons maintenant (xi )0≤i≤n donnés par xi = cos pour tout 0 ≤ i ≤ n
2(n + 1)
et soient yi = f (xi ) pour tout 0 ≤ i ≤ n.
A l’aide de la fonction lagrange définie à la question (a), calculer le polynôme de
Lagrange associé à ces nouveaux vecteurs x et y pour n = 7, 9 et 11. Compléter la
figure de la question (c) par les graphiques de ces trois polynômes d’interpolation.

Exercice 3. La méthode de calcul du polynôme de Lagrange proposée à l’exercice 2. (a)


n’est pas utilisé en pratique : elle requiert trop d’opérations élémentaires, notamment pour
la résolution d’un système linéaire. La méthode la plus efficace de calcul du polynôme de
Lagrange Pn aux points (xi , f (xi ))0≤i≤n (appelé également le polynôme de Lagrange de la
fonction f ) est donnée par la formule de Newton suivante :
n
X i−1
Y
Pn = f [x0 , . . . , xi ] (X − xk ). (1)
i=0 k=0

Dans la formule précédente f [ · · · ] désigne les différences divisées de f définies par

f [xi ] = f (xi ) pour tout i ∈ {0, . . . , n}


f [xk+1 , . . . , xℓ ] − f [xk , . . . , xℓ−1 ]
f [xk , . . . , xℓ ] = pour 0 ≤ k < ℓ ≤ n.
xℓ − x k

(a) Écrire une fonction d’entête :


def lagrange_dd(x, y):
recevant comme arguments deux listes x= (xi )0≤i≤n et y= (yi )0≤i≤n ayant n + 1
éléments (xi , yi = f (xi ) ∈ R et xi distincts) et rendant une expression symbolique de
variable X représentant l’unique polynôme Pn donné par (1).
Indication : Calculer d’abord les différences divisés en les stockant dans une matrice.
Calculer ensuite le polynôme Pn en utilisant l’algorithme de Horner :
P ←− f [x0 , . . . , xn ]
pour j décroissant de n − 1 à 0 :
P ←− (X − xj )P + f [x0 , . . . xj ]
fin
(b) Vérifier que la fonction lagrange_dd fonctionne correctement en reprenant les ques-
tions (c) et (d) de l’exercice 2.
 
(2i + 1)π
1. Les points xi = cos sont les racines du polynôme de Tchebychev sur l’intervalle [−1, 1].
2(n + 1)

2
Université Clermont Auvergne Introduction à l’analyse numérique
UFR Mathématiques Année 2022 – 2023

Exercice 4. (Approximation au sens de moindres carrés)


(a) Soit n ∈ N⋆ et soit (xi )0≤i≤n n + 1 nombres équi-distribués dans l’intervalle [0, 10].
Soit yi = x2i + 1 + ξi , où ξi sont des réalisations d’une variable aléatoire de loi uniforme
sur l’intervalle [−1, 1[.
Pour n = 20, construire les vecteurs x et y. Afficher graphiquement les points de
coordonnées (xi , yi ) (sans les relier). Dans la même figure, tracer le graphique de la
fonction f (x) = x2 + 1 sur l’intervalle [0, 10].
Indication : Pour créer un vecteur dont les composantes sont des réalisations d’une
variable aléatoire de loi uniforme sur l’intervalle [0, 1[ utiliser la fonction random du
module numpy.random.
(b) Construire la matrice B ∈ Mn+1,2 (R) définie par
 
1 x0
 1 x1 
B =  ..
 

 . · · ·
1 xn

T
et calculer la solution u = u0 u1 ∈ R2 du système linéaire :

B T Bu = B T y.

(c) Représenter graphiquement (dans la même figure que pour la question (a)) la fonction
g(x) = u0 + u1 x sur l’intervalle [0, 10], où u = u0 u1 est le vecteur trouvé à la
question précédente.
(d) Construire la matrice B2 ∈ Mn+1,3 (R) définie par
 
1 x0 x20
 1 x1 x2 
1
B2 =  .. ..

.. 
. . .
1 xn x2n

T
et calculer la solution v = v0 v1 v2 ∈ R3 du système linéaire :

B2T B2 u = B2T y.

(e) Représenter graphiquement (dans la même figure que pour la question


 (a)) la fonction
2
h(x) = v0 + v1 x + v2 x sur l’intervalle [0, 10], où v = v0 v1 v2 est le vecteur trouvé
à la question précédente.
(f) Ré-exécuter le programme pour ξ des réalisation d’une variable aléatoire de loi uni-
forme sur [−5, 5].

3
Introduction à l’analyse numérique Université Clermont Auvergne
Année 2022 – 2023 UFR Mathématiques

Exercice 5. Interpolation d’Hermite 2


Soit a < b et soit f : [a, b] → R une fonction de classe C 1 ([a, b]).
(a) Montrer (sur papier) qu’il existe un unique polynôme P ∈ R3 [X] vérifiant :

P (a) = f (a) P (b) = f (b)
P ′ (a) = f ′ (a) P ′ (b) = f ′ (b).

(b) Écrire une fonction d’entête


def hermite(a, b, fa, fb, fpa, fpb)
d’arguments a, b, fa, fb, fpa, fpb nombres réels tels que a̸= b et qui rendra un
polynôme P de degré 3 de variable symbolique X (utiliser le module sympy) tel que
P′ (a) = fpa

P(a) = fa,
P(b) = fb, P′ (b) = fpb.
(c) A l’aide de la fonction hermite déterminer le polynôme P ∈ R3 [X] tel que
P (−1) = −1, P (1) = 1, P ′ (−1) = 3, P ′ (1) = 3.
Représenter graphiquement ce polynôme sur l’intervalle [−1, 1].
(d) Soit n ∈ N. Soit les nombres réels (xi )0≤i≤n deux à deux distincts ordonnés en ordre
croissante et soit (yi )0≤i≤n d’autres (n + 1) nombres réels. On définit (zi )0≤i≤n comme
suit
y1 − y0


 , si i = 0
 xy1 −−x0



i+1 yi−1
zi = , si 1 ≤ i ≤ N − 1
 xi+1 − xi−1

 yN − yN −1
, si i = N.


xN − xN −1

On définit la fonction h : [x0 , xn ] → R comme suit : h(xn ) = yn et pour tout 0 ≤ i < n


h(t) = Pi (t), ∀t ∈ [ti , ti+1 [,
où Pi est le polynôme de degré 3 tel que
P (xi ) = yi , P (xi+1 ) = yi+1 , P ′ (xi ) = zi , P ′ (xi+1 ) = zi+1 .
(i) Écrire une fonction d’entête
def h(x, y, t):
d’arguments :
— x : un vecteur contenant N + 1 nombres réels distincts en ordre croissante
— y : un vecteur contenant N + 1 nombres réels
— t : un nombre réel dans l’intervalle [x[0],x[n]].
Cette fonction rendra la valeur h(t) correspondante.
1
(i) Soit f : [−1, 1] → R définie par f (x) = et (xi )0≤i≤10 11 nombres équi-
1 + 25x2
distribués dans l’intervalle [−1, 1]. On pose yi = f (xi ) et on définie la fonction h
en utilisant la procédure décrite plus haut. Représenter graphiquement les deux
fonctions f et h sur l’intervalle [−1, 1].

2. Cet exercice est facultatif.

Vous aimerez peut-être aussi