TP5 IntegNum Interp
TP5 IntegNum Interp
TP5 IntegNum Interp
1 Intégration numérique
Soient a et b des réels tels que a < b et f une fonction réelle continue sur l’intervalle [a, b]. On souhaite calculer une
Rb
valeur approchée de I(f ) = a f (x)dx par une méthode numérique, aussi appelée formule de quadrature.
Ordre d’une formule de quadrature. Une formule de quadrature In est dite d’ordre k pour k ∈ N si et seulement si
elle est exacte pour tout polynôme de degré inférieur ou égal à k, c’est-à-dire si et seulement si I (P ) = In (P ) , ∀P ∈
Pk .
Vitesse de convergence. On peut estimer la vitesse de convergence grâce au théorème central limite :
n
!
√ 1X
n f (Xi ) − E[f (X)] → N (0, σ 2 ) en loi
n
i=1
1
2 Applications
2.1 Application 1 : texte de la session 2013
1. Lire le texte de la session 2013 portant sur un modèle de réacteur biologique. On ne reviendra pas dans ce TP
sur la section 3.
2. Programmer le schéma numérique (9) du texte avec l’intégrale approchée S̃n donnée par (10) (obtenue par la
méthode des trapèzes).
3. Pour u0 = 0.1 et un temps final de 5, tracer la solution ũn en fonction du temps pour différentes valeurs de κ.
On prendra par exemple un pas de temps h = 0.01. Comparer vos résultats à la figure 1 du texte.
R1
2.2 Application 2 : calcul de I(f ) = 0 sin(3x)dx
1. Utiliser la fonction Scilab integrate (ou la fonction Scilab intg) ou la fonction quad de scipy.integrate sous
Python pour calculer une approximation de I(f ).
2. Comparer la valeur approchée donnée par cette fonction à la solution exacte.
3. Ecrire trois fonctions calculant une approximation de I(f ) par une méthode composée (avec N = 100 par
exemple) utilisant respectivement la méthode des rectangles à gauche, celle des trapèzes et celle de Simpson.
4. Comparer les valeurs approchées obtenues par chacune des méthodes à la solution exacte.
5. Calculer une approximation de I(f ) par la méthode de Monte-Carlo (avec n = 100 par exemple) et comparer
le résultat à la solution exacte.
Méthode : on découpe l’intervalle [−1, 1] en n ∈ N? sous-intervalles [xi , xi+1 ] de même longueur h = xi+1 − xi , de
telle sorte que −1 = x0 < x1 < · · · < xn = 1, h = n2 et xi = −1 + ih.
Les polynômes de Lagrange associés aux points xi sont définis par
x − xj
ln,i (x) = Πnj=0,j6=i , ∀i = 0, . . . , n.
xi − xj
Le polynôme d’interpolation de Lagrange de f est donné par
n
X
Pn,f (x) = f (xi ) ln,i (x) .
i=0
C’est le polynôme de degré n qui a les mêmes valeurs que f aux n + 1 points xi , i = 0, . . . , n.
On approche alors I (f ) par
Z 1 Xn Z 1 n
X
In (f ) = Pn,f (x) dx = f (xi ) ln,i (x) dx = f (xi ) ωi ,
−1 i=0 −1 i=0
R1
où les poids sont donnés par ωi = −1 ln,i (x) dx.
2
3.1 Forme de Newton du polynôme d’interpolation
Dans la suite de ce TP, on s’intéresse à la construction du polynôme d’interpolation d’une fonction f donnée.
La forme de Lagrange du polynôme d’interpolation n’est pas la plus commode d’un point de vue algorithmique (no-
tamment, l’ajout d’un point d’interpolation nécessite la redéfinition de tous les polynômes ln,i (x)). On introduit ici la
forme de Newton dont le coût de calcul est moins élevé :
n
X
Pn,f (x) = f [x0 ] + πk−1 (x)f [x0 , . . . , xk ], (2)
k=1
où πk (x) est donné par πk (x) = (x − x0 ) . . . (x − xk ), f [xi ] = f (xi ) et f [x0 , . . . , xk ] est appelée la k−ième différence
divisée de Newton, vérifiant la relation de récurrence
f [x1 , . . . , xk ] − f [x0 , . . . , xk−1 ]
f [x0 , . . . , xk ] = , (3)
xk − x0
appelée différence divisée.
Exemple. Pour 4 points d’interpolation, on peut calculer les différences divisées à l’aide du diagramme suivant :
x0 f [x0 ] = f (x0 )
f [x1 ] − f [x0 ]
x1 f [x1 ] = f (x1 ) f [x0 , x1 ] =
x1 − x0
f [x2 ] − f [x1 ] f [x1 , x2 ] − f [x0 , x1 ]
x2 f [x2 ] = f (x2 ) f [x1 , x2 ] = f [x0 , x1 , x2 ] =
x2 − x1 x2 − x0
f [x3 ] − f [x2 ] f [x2 , x3 ] − f [x1 , x2 ] f [x1 , x2 , x3 ] − f [x0 , x1 , x2 ]
x3 f [x3 ] = f (x3 ) f [x2 , x3 ] = f [x1 , x2 , x3 ] = f [x0 , x1 , x2 , x3 ] =
x3 − x2 x3 − x1 x3 − x0
3.2 Application
1. Ecrire une fonction qui construit un tableau contenant n+1 points d’interpolation dont la répartition dans [−1, 1]
peut être uniforme, aléatoire (utiliser la fonction Scilab rand ou la fonction random.rand de numpy sous
(2k + 1)π
Python) ou suivre les zéros des polynômes de Tchebychev sur [−1, 1] donnés par xk = cos ,
2(n + 1)
k = 0, . . . , n.
2. Ecrire une fonction qui calcule les différences divisées pour n + 1 paires (xi , f (xi )), i = 0, . . . , n, et renvoie
uniquement les termes nécessaires à la forme de Newton, i.e. les f [x0 , . . . , xk ], pour k = 0, . . . , n.
3. Ecrire une fonction qui, étant donnés une fonction f et n + 1 points d’interpolation xi , calcule le polynôme
d’interpolation de la fonction f aux points xi , i = 0, . . . , n, en utilisant les différences divisées.
4. Afficher les polynômes obtenus pour la fonction f (x) = sin(πx) sur [−1, 1] pour différentes valeurs de n et
différentes répartitions des points d’interpolation. Comparer à la fonction f .
1
5. Considérer la fonction f (x) = 1+(5x)2 sur l’intervalle [−1, 1]. Mettre en évidence le phénomène de Runge, quand
n → ∞, pour les points uniformément répartis, et la convergence lorsque les points de Tchebychev sont utilisés.