informatique - cn2 - intégration numérique · 2019-03-08 · informatique - cn2 intégration...
TRANSCRIPT
Informatique - CN2Intégration numérique
D.Malka
MPSI 2018-2019
D.Malka Informatique - CN2 MPSI 2018-2019 1 / 28
Sommaire
Sommaire
1 Position du problème
2 Méthode des rectangles
3 Méthode des trapèzes
4 Fonction prédéfinie du module scipy.integrate
D.Malka Informatique - CN2 MPSI 2018-2019 2 / 28
Position du problème
Sommaire
1 Position du problème
2 Méthode des rectangles
3 Méthode des trapèzes
4 Fonction prédéfinie du module scipy.integrate
D.Malka Informatique - CN2 MPSI 2018-2019 3 / 28
Position du problème Pourquoi une intégration numérique?
Intégration d’une fonction sur un intervalle
Le but de ce chapitre est d’aborder le calcul numérique de l’intégrale d’une fonction fsur un domaine fini délimité par ses bornes a et b :∫ b
af (x)dx
Pourquoi une intégration numérique?I calcul analytique fastidieuxI expression exacte coûteuseI l’intégrale n’admet pas d’expression analytique
Exemple d’intégrale non exprimable analytiquement
Erf(x) =2√π
=∫ x
0e−u2
du
D.Malka Informatique - CN2 MPSI 2018-2019 4 / 28
Position du problème Principe d’une intégration numérique
Principe d’une intégration numérique
Il existe différentes méthodes d’intégration numériques (Newton-Cotes,Legendre-Gauss, Monte-Carlo. . .). Nous nous intéressons à deux avatars de laméthode de Newton-Cotes composite : la méthode des rectangles et la méthode destrapèzes.
Principe de la méthode de Newton-Cotes composites
Soit J =∫ b
a f (x)dx .On calcule une valeur approchée J̃ de J en remplaçant la fonction f par uneapproximation f̃ puis on intègre cette fonction :
J ≈ J̃∫ b
af̃ (x)dx
D.Malka Informatique - CN2 MPSI 2018-2019 5 / 28
Méthode des rectangles
Sommaire
1 Position du problème
2 Méthode des rectangles
3 Méthode des trapèzes
4 Fonction prédéfinie du module scipy.integrate
D.Malka Informatique - CN2 MPSI 2018-2019 6 / 28
Méthode des rectangles Principe
Principe de la méthode des rectangles
On décompose l’intervalle [a,b] en N intervalles Ik de longueur h : [a,a + h],[a + h,a + 2h], . . ., [a + kh,a + (k + 1)h], . . . [b−h,b].
Évidemment : Nh = b−a soit h =b−a
N.
h est appelé le pas d’intégration de l’algorithme.
Sur chaque intervalle Ik = [a + kh,a + (k + 1)h], on approche la fonction f par la fonctionf̃k : x → f (xk ) où xk = a + kh.
D.Malka Informatique - CN2 MPSI 2018-2019 7 / 28
Méthode des rectangles Principe
Principe de la méthode des rectangles
Géométriquement :
f(x)
xxk
f(xk)Aire Ai=f(xk)(xk+1-xk)
xk+1a b
Cf
hOn approche l’aire sous la courbe représentative de f par la somme des aires desrectangles de hauteur f (xk ) et de largeur (xk+1− xk ).
D.Malka Informatique - CN2 MPSI 2018-2019 8 / 28
Méthode des rectangles Principe
Principe de la méthode des rectangles
Analytiquement, sur l’intervalle [a,b], on obtient :
J =∫ b
af (x)dx =
N−1
∑k=0
∫ xk+1
xk
f (x)dx
⇒ J̃ =N−1
∑k=0
∫ xk+1
xk
f̃k (x)dx
⇔ J̃ =N−1
∑k=0
∫ xk+1
xk
f (xk )dx
⇔ J̃ =N−1
∑k=0
f (xk )(xk+1− xk )
avec xk = a + kh et xk+1 = a + (k + 1)h :
J̃ =N−1
∑k=0
f (xk )h avec xk = a + kh
D.Malka Informatique - CN2 MPSI 2018-2019 9 / 28
Méthode des rectangles Implémentation
Implémentation en Python
� �1 def rect_integ(f,a,b,n):2 """3 Approximate the integral of function f over [a,b] using the
rectangle method.4 h=(b-a)/n is the integration step.5 """6 h=(b-a)/n7 J=08 for k in range(n):9 J=J+f(a+k*h)*h
10 return J� �
D.Malka Informatique - CN2 MPSI 2018-2019 10 / 28
Méthode des rectangles Implémentation
Essai
Essai sur J =∫ 1
0 4√
(1− x2)dx = π.
CODE PYTHON
In [1]: rect_integ(lambda x:4*sqrt(1-x**2),0,1,10)# h=0.1Out[1]: 3.30451832625
In [2]: rect_integ(lambda x:4*sqrt(1-x**2),0,1,10000)# h=0.0001Out[2]: 3.14179147761
L’erreur e = |J̃− J| semble diminuer avec la valeur du pas h.
D.Malka Informatique - CN2 MPSI 2018-2019 11 / 28
Méthode des rectangles Majoration de l’erreur
Majoration de l’erreur
Erreur sur l’intégrale calculée
Soit e = |J̃− J| l’erreur sur le calcul de l’intégrale J sur [a,b].
e <12
Sup[a,b]|f ′(ξ)|h
L’erreur commise au pire sur J est de l’ordre du pas d’intégration h.
La méthode des rectangles est une méthode d’ordre 1.
D.Malka Informatique - CN2 MPSI 2018-2019 12 / 28
Méthode des rectangles Majoration de l’erreur
Majoration de l’erreur
Preuve - Erreur d’intégration sur Ik = [xk ,xk+1].
I Soit ek =∫ xk+1
xkf (xk )− f (x)dx l’erreur d’intégration sur Ik = [xk ,xk+1].
I En supposant f C 1 sur [a,b] donc sur Ik , d’après le théorème des accroissementsfinis :
∀x ∈ Ik ,∃ξ ∈ Ik tel que f (x) = f ′(ξ)(x− xk ) d’où :
I ek =∫ xk+1
xkf ′(ξ)(x− xk )dx
I ⇒ |ek | = |∫ xk+1
xkf ′(ξ)(x− xk )dx |
I ⇒ |ek | ≤∫ xk+1
xk|f ′(ξ)(x− xk )|dx
I ⇒ |ek | ≤ SupIk |f′(ξ)|
∫ xk+1xk|(x− xk )|dx
I ⇔ |ek | ≤ SupIk |f′(ξ)| (xk+1− xk )2
2
I ⇔ |ek | ≤ SupIk |f′(ξ)|h
2
2
D.Malka Informatique - CN2 MPSI 2018-2019 13 / 28
Méthode des rectangles Majoration de l’erreur
Majoration de l’erreur
Preuve - Erreur d’intégration sur I = [a,b].
I Soit e = |J̃− J| l’erreur d’intégration sur Ik = [a,b].I e = ∑
N−1k=0 ek
I ⇒ |e| = |∑N−1k=0 |ek |
I Or, on a montré que : |ek | ≤ SupIk |f′(ξ)|h
2
2donc :
I e ≤ ∑N−1k=0 SupIk |f
′(ξ)|h2
2
I ⇒ e ≤ ∑N−1k=0 Sup[a,b]|f ′(ξ)|h
2
2
I e ≤ NSup[a,b]|f ′(ξ)|h2
2
I Or N =(b−a)
h, d’où :
I e ≤ Sup[a,b]|f ′(ξ)| (b−a)2
h
Au pire, l’erreur commise sur J̃ est de l’ordre du pas d’intégration h.D.Malka Informatique - CN2 MPSI 2018-2019 14 / 28
Méthode des rectangles Complexité (vs efficacité)
Complexité (vs efficacité)
� �1 def rect_integ(f,a,b,n):2 """3 Approximate the integral of function f over [a,b] using the
rectangle method.4 h=(b-a)/n is the integration step.5 """6 h=(b-a)/n7 J=08 for k in range(n):9 J=J+f(a+k*h)*h
10 return J� �Unité de mesure : appel de la fonction f .
Complexité linéaire avec n : O(n) = O
(1h
).
Compromis efficacité/précision : quand h↗, la précision augmente mais le nombre decalculs également.
D.Malka Informatique - CN2 MPSI 2018-2019 15 / 28
Méthode des trapèzes
Sommaire
1 Position du problème
2 Méthode des rectangles
3 Méthode des trapèzes
4 Fonction prédéfinie du module scipy.integrate
D.Malka Informatique - CN2 MPSI 2018-2019 16 / 28
Méthode des trapèzes Principe
Principe de la méthode des trapèzes
On procède de manière analogue à la méthode des rectangles.
On décompose l’intervalle [a,b] en N intervalles Ik de longueur h : [a,a + h],[a + h,a + 2h], . . ., [a + kh,a + (k + 1)h], . . . [b−h,b].
Évidemment : Nh = b−a soit h =b−a
N.
h est appelé le pas d’intégration de l’algorithme.
C’est le choix de la fonction f̃k approchant f sur Ik = [a+kh,a+(k +1)h] qui est différent :
f̃k : x → f (xk+1)− f (xk )xk+1− xk
(x− xk ) + f (xk ) avec xk = a + kh
D.Malka Informatique - CN2 MPSI 2018-2019 17 / 28
Méthode des trapèzes Principe
Principe de la méthode des trapèzes
Géométriquement :
f(x)
xxk
f(xk)
Aire Ak=f(xk)(xk+1-xk)+1/2(f(xk+1)-f(xk))(xk+1-xk)=1/2(f(xk+1)+f(xk))(xk+1-xk)
x k+1
f(xk+1)
xOn approche l’aire sous la courbe représentative de f par la somme des aires destrapèzes de largeur (xk+1− xk ).
D.Malka Informatique - CN2 MPSI 2018-2019 18 / 28
Méthode des trapèzes Principe
Principe de la méthode des trapèzes
Analytiquement, sur l’intervalle [a,b], on obtient :
J =∫ b
af (x)dx =
N−1
∑k=0
∫ xk+1
xk
f (x)dx
⇒ J̃ =N−1
∑k=0
∫ xk+1
xk
f̃k (x)dx
En intégrant f̃k (x) ou plus simplement en évaluant géométriquement l’aire sous lesegment de droite, on obtient :
⇔ J̃ =N−1
∑k=0
12
(f (xk+1) + f (xk ))(xk+1− xk )
avec xk = a + kh et xk+1 = a + (k + 1)h :
J̃ =12
N−1
∑k=0
(f (a + (k + 1)h) + f (a + kh))h
D.Malka Informatique - CN2 MPSI 2018-2019 19 / 28
Méthode des trapèzes Implémentation
Implémentation en Python
� �1 def trap_integ(f,a,b,n):2 """3 Approximate the integral of function f over [a,b] using the
trapezoidal method.4 h=(b-a)/n is the integration step.5 """6 h=(b-a)/n7 J=08 for k in range(n):9 J=J+(f(a+(k+1)*h)+f(a+k*h))*h
10 J=1/2*J11 return J� �
D.Malka Informatique - CN2 MPSI 2018-2019 20 / 28
Méthode des trapèzes Implémentation
Essai
Essai sur J =∫ 1
0 4√
(1− x2)dx = π.
CODE PYTHON
In [3]: trap_integ(lambda x:4*sqrt(1-x**2),0,1,10)# h=0.1Out[3]: 3.14057361483
In [4]: trap_integ(lambda x:4*sqrt(1-x**2),0,1,10000)# h=0.0001Out[4]: 3.14159147761
L’erreur e = |J̃− J| semble diminuer avec la valeur du pas h.
D.Malka Informatique - CN2 MPSI 2018-2019 21 / 28
Méthode des trapèzes Majoration de l’erreur
Majoration de l’erreur
Erreur sur l’intégrale calculée
Soit e = |J̃− J| l’erreur sur le calcul de l’intégrale J sur [a,b].
e ≤ 112
Sup[a,b]|f ′′(ξ)|h2
L’erreur commise au pire sur l’évaluation de J est de l’ordre du carré du pasd’intégration h.
La méthode des trapèzes est une méthode d’ordre 2.
D.Malka Informatique - CN2 MPSI 2018-2019 22 / 28
Méthode des trapèzes Majoration de l’erreur
Majoration de l’erreur
Théorème de Taylor-LagrangeSoit f une fonction définie sur un intervalle [u,v ] de R telle que :I ∀ entier naturel k ≤ n, f (n) existe et est continue sur [u,v ] ;I ∀ entier naturel k ≤ n, f (n+1) existe sur ]u,v [.
Alors, ∃ξ ∈ [u,v ] tel que :
f (u) = f (v ) + f ′(u)(v−u) +12
f ′′(u)(v−u)2 + · · ·+ 1n!
f (n)(u)(v−u)n +f (n+1)(ξ)(n + 1)!
(v−u)n+1
D.Malka Informatique - CN2 MPSI 2018-2019 23 / 28
Méthode des trapèzes Majoration de l’erreur
Majoration de l’erreur
Preuve - Erreur d’intégration sur Ik = [xk ,xk+1].
I Soit ek =∫ xk+1
xk
12
(f (xk+1− f (xk )))(xk+1− xk )− f (x)dx l’erreur d’intégration sur
Ik = [xk ,xk+1].I On suppose f C 2 sur [a,b] donc sur Ik quelque soit k .I En utilisant le développement de Taylor-Lagrange à l’ordre 2 sur [xk ,x ], x ≤ xk+1 :
f (x) = f (xk ) + f ′(xk )(x− xk ) +12
f ′′(ξ)(x− xk )2
I Après intégration et majoration, il vient :
|ek | ≤1
12SupIk |f
′′(ξ)|h3
I Puis, on applique l’inégalité triangulaire à e = ∑N−1k=0 ek :
|e| ≤N−1
∑k=0|ek |
I Ce qui donne : |e| ≤ 112
Sup[a,b]|f ′′(ξ)|h2
D.Malka Informatique - CN2 MPSI 2018-2019 24 / 28
Méthode des trapèzes Complexité (vs efficacité)
Complexité (vs efficacité)
� �1 def trap_integ(f,a,b,n):2 """3 Approximate the integral of function f over [a,b] using the
trapezoidal method.4 h=(b-a)/n is the integration step.5 """6 h=(b-a)/n7 J=08 for k in range(n):9 J=J+(f(a+(k+1)*h)+f(a+k*h))*h
10 J=1/2*J11 return J� �Unité de mesure : appel de la fonction f .
Complexité linéaire avec n : O(n) = O
(1h
).
Compromis efficacité/précision : quand h↗, la précision augmente mais le nombre decalculs également.
D.Malka Informatique - CN2 MPSI 2018-2019 25 / 28
Méthode des trapèzes Méthode des trapèzes vs méthode des rectangles
Méthode des trapèzes vs méthode des rectangles
Essai sur J =∫ 1
0 4√
(1− x2)dx = π.
CODE PYTHON
In [5]: rect_integ(lambda x:4*sqrt(1-x**2),0,1,10)# h=0.1Out[5]: 3.30451832625
In [6]: trap_integ(lambda x:4*sqrt(1-x**2),0,1,10)# h=0.1Out[6]: 3.14057361483
Méthode Complexité Erreur
Rectangles O
(1h
)∼ h
Trapèzes O
(1h
)∼ h2
A complexité égale, la méthode des trapèzes fournit une approximation de l’intégralenettement plus précise. En pratique, on préfère utiliser une méthode d’approximationd’ordre supérieur plutôt que diminuer le pas.
D.Malka Informatique - CN2 MPSI 2018-2019 26 / 28
Fonction prédéfinie du module scipy.integrate
Sommaire
1 Position du problème
2 Méthode des rectangles
3 Méthode des trapèzes
4 Fonction prédéfinie du module scipy.integrate
D.Malka Informatique - CN2 MPSI 2018-2019 27 / 28
Fonction prédéfinie du module scipy.integrate
Fonctions prédéfinies du module scipy.integrate
Fonction quad. Utilise un algorithme à pas adaptatif écrit en langage FORTRAN.
Essai sur J =∫ 1
0 4√
(1− x2)dx = π.
CODE PYTHON
In [7]: trap_integ(lambda x:4*sqrt(1-x**2),0,1,1e8)# h=1e-8Out[7]: 3.14159265355
In [8]: scipy.integrate.quad(lambda x:4*sqrt(1-x**2),0,1)# h variableOut[8]: (3.1415926535897922, 3.533564552071766e-10)
On constate aussi que quad est nettement plus rapide que trap_integ !
En pratique, on utilisera les fonctions prédéfinies du module scipy.integrate plutôtque des fonctions implémentées par nos soins.
D.Malka Informatique - CN2 MPSI 2018-2019 28 / 28