Académique Documents
Professionnel Documents
Culture Documents
L3-Mathématiques I. DANAILA
2011–2012 ionut.danaila@univ-rouen.fr
À la fin de cette séance vous enverrez vos programmes à mon adresse Email, avec
L3-CS-TP2 en sujet et votre nom et prénom dans le corps du message.
TP 2 : Interpolation numérique 1D et 2D
Considérons un phénomène décrit par une fonction inconnue f (x) : [a, b] → IR. Nous disposons de
n + 1 observations (mesures), y0 , y1 , . . . yn correspondant à n + 1 valeurs du paramètre x :
a = x0 < x1 < . . . xn−1 < xn = b. Nous nous proposons de modéliser le phénomène f pour prédire
son comportement pour une valeur x̃ différente des points de mesure.
Nous utiliserons l’interpolation de Lagrange pour approcher f (x) par le polynôme de Lagrange pn (x).
1. Définir les paramètres du problème : a = 0, b = 1, n = 8, et la fonction qui va nous permettre de
tester le programme f (x) = sin(10 ∗ x ∗ cos(x)) (Consulter la documentation pour définir une
fonction).
2. Définir deux vecteurs xx et yy de taille n + 1 . Remplir xx avec des valeurs entre a et b, distri-
buées de manière équidistante (chaque sous-intervalle est de longueur constante h). Remplir yy
avec les valeurs f (xx(i)).
3. Ecrire dans un fichier, sur deux colonnes, xx et yy et tracer le graphique de f avec Gnuplot.
4. Calculer les différences divisées dans un tableau c de taille n + 1 suivant l’algorithme
pour k = 0 % n faire :
ck ← yyk
fin
pour p = 1 % n faire :
pour k = n & p faire :
ck ← (ck − ck−1 )/(xk − xk−p )
fin
fin
5. Définir un vecteur xP qui contient des abscisses des points (de prédiction) distribuées entre a et
b avec un pas constant de h/2.
6. Le vecteur f xP va contenir les valeurs correspondant à l’évaluation du polynôme d’interpola-
tion : pn (xPi ). Calculer ces valeurs en utilisant l’algorithme de Horner pour calculer y = pn (x̃) :
y = cn
pour k = n − 1 & 0 faire :
y = (x̃ − xk )y + ck
fin
7. Ecrire dans un fichier, sur deux colonnes, xP et f xP et tracer le points interpolés ; superposer
avec le graphique de f .
1
8. Rajouter dans le programme un calcul de f x par interpolation linéaire ar morceaux (utiliser l’al-
gorithme présenté en cours basé sur les éléments finis 1D). Superposer sur une même figure les
trois courbes, comme dans l’exemple plus bas.
Interpolation 1D f(x)=sin(10.*x*cos(x))
1
echantillonage (n=8)
Lagrange (n=16)
Lineaire par morceaux (n=16)
sin(10.*x*cos(x))
0.5
-0.5
-1
-1.5
0 0.2 0.4 0.6 0.8 1
Utiliser le programmer précédent pour approcher la fonction f (x) = (0.1 + x2 )−1 sur [−1, 1]. On
considère h = 0.2. Commenter le résultat.
Nous allons explorer les possibilités offertes par FreeFem++ pour interpoler une fonction 2D, f (x, y).
1. Construire le maillage (Thg) du carré [−1, 1] × [−1, 1] avec (n = 20) × (m = 30) points
distribués sur les frontières (consulter la documentation pour l’instruction square).
2. Définir l’espace des éléments finis P 1 (linéaires) associé à Thg et représenter sur ce maillage
grossier la fonction f (x, y) = (x + y) ∗ exp(−6. ∗ (x ∗ x + y ∗ y)). On va noter l’approximation
P 1 ainsi obtenue par fg. Visualiser cette variable.
3. Construire un maillage fin (Thf) du même carré avec (n = 70) × (m = 70) points distribués
sur les frontières. Trouver ff qui l’interpolé de fg sur le nouveau maillage. Visualiser ff. Com-
menter.
4. Réaliser la situation inverse : on dispose d’un maillage fin et on calcule l’interpolé de la fonction
sur un maillage grossier. (programme TP2_ex3b.edp)