Informatique en PCSI et MPSI Champollion 2013-2014 Méthodes d’Analyse Numériques Implémentation et Application en Python Intégration Numérique A. HASSAN 23 avril 2014 A. Hassan@Champollion PCSI-MPSI – 1 Intégration Numérique (Quadrature) A. Hassan@Champollion Intégration Numérique (Quadrature) L’intégration : une histoire d’Aire L’intégration : une Histoire d’Aire Introduction Pourquoi l’intégration numérique? Le problème Le Problème (suite) Polynômes d’interpolation de Lagrange Méthodes Élémentaires de Quadrature (de Newton-Cotes) (Suite) (suite) Méthodes d’ordre zéro: Exemple des Rectangles gauches Méthodes d’ordre zéro: Rectangles Droits Méthodes des Rectangles Milieux Implémentation en Python (à compléter) Implémentation en Python Méthode des rectangles: Calcul de l’erreur Rectangle des milieux: Calcul de l’erreur Méthodes d’ordre un: méthode des Trapèzes Méthode des Trapèzes: PCSI-MPSI –2 Calcul de l’erreur Méthode d’ordre 2: L’intégration : une histoire d’Aire Aire par Triangulation triangle quelconque : s = 21 a.b a rectangle b triangle rectangle carrée a.b a2 A. Hassan@Champollion 1 2 ab PCSI-MPSI – 3 L’intégration : une Histoire d’Aire Le cas des contours courbés 3 2 Cf 1 -2 a -1 -1 Aire = 2 f(x) dx a b 1 b R 3 Cf −n→+∞ −−−−→ b a Cf b a A. Hassan@Champollion PCSI-MPSI – 4 Introduction Intégrale (de Riemann) sur un segment : f est intégrable sur [a; b], ssi pour toute subdivision σn = ( x0 < x1 < · · · < xn ) les sommes ci-dessous convergent |{z} |{z} =a =b i=n−1 X i=0 ∀ti ∈[xi ;xi+1 ] (xi+1 − xi )f(ti ) −−−n→+∞ −−−−−−→ L noté Théorème fondamental de l’Analyse : Soit f continue sur [a; b] et F une primitive de f alors : Zb x=b Z x=a f(x) dx f(t) dx = F(b) − F(a) a Le calcul d’une intégrale devient un calcul de primitive que l’on peut exprimer, si possible, à l’aide des fonctions élémentaires et leurs composées. A. Hassan@Champollion PCSI-MPSI – 5 Pourquoi l’intégration numérique ? 1. Impossibilité d’exprimer une primitive à l’aide des fonctions usuelles : 2013 Z 0 2. 1 p 1 + x4 −x2 e 0 dx; Z2 0 cos(x) dx; x+6 Primitive compliquée : coût d’évaluation élevé Zx 0 2 √ √ x +x 2+1 1 2 √ dt = ln 2 8 1 + t4 x −x 2+1 √ 2 + 4 3. dx; 2014 Z √ i h √ arctan x 2 + 1 + arctan x 2 − 1 Expression analytique de f non disponible : f est donnée sous forme d’une table de valeurs i.e. (xi ; f(xi )) (Exemple : mesures physiques). A. Hassan@Champollion Intégration Numérique (Quadrature) L’intégration : une histoire d’Aire L’intégration : une Histoire d’Aire Introduction Pourquoi l’intégration numérique? Le problème Le Problème (suite) Polynômes d’interpolation de Lagrange Méthodes Élémentaires de Quadrature (de Newton-Cotes) (Suite) (suite) Méthodes d’ordre zéro: Exemple des Rectangles gauches Méthodes d’ordre zéro: Rectangles Droits Méthodes des Rectangles Milieux Implémentation en Python (à compléter) Implémentation en Python Méthode des rectangles: Calcul de l’erreur Rectangle des milieux: Calcul de l’erreur Méthodes d’ordre un: méthode des Trapèzes Méthode des Trapèzes: PCSI-MPSI –6 Calcul de l’erreur Méthode d’ordre 2: Le problème Données : En général on dispose des valeurs (abscisses) (xi )16i6n (subdivision) dans [a; b] et leurs images (f(xi ))16i6n bc bc bc bc bc bc Cf bc bc bc t0 |{z} bc bc =a Deux méthodes principales : 1. 2. bc bc bc bc bc tn |{z} =b Subdivision régulière de [a; b] ⇒ xi = xi−1 + h = a + h.i où h = (b − a)/n À la Gauss : les points de la subdivision sont fixés à l’avance : Racines de famille orthogonale de polynômes. A. Hassan@Champollion Intégration Numérique (Quadrature) L’intégration : une histoire d’Aire L’intégration : une Histoire d’Aire Introduction Pourquoi l’intégration numérique? Le problème Le Problème (suite) Polynômes d’interpolation de Lagrange Méthodes Élémentaires de Quadrature (de Newton-Cotes) (Suite) (suite) Méthodes d’ordre zéro: Exemple des Rectangles gauches Méthodes d’ordre zéro: Rectangles Droits Méthodes des Rectangles Milieux Implémentation en Python (à compléter) Implémentation en Python Méthode des rectangles: Calcul de l’erreur Rectangle des milieux: Calcul de l’erreur Méthodes d’ordre un: méthode des Trapèzes Méthode des Trapèzes: PCSI-MPSI –7 Calcul de l’erreur Méthode d’ordre 2: Le Problème (suite) Soit I = [a; b] et f une fonction définie sur I, on cherche à évaluer b R numériquement : I(f) = f(t) dt a Soit T = ( x0 < x1 < x2 < · · · < xn−1 < xn ) une subdivision (pas |{z} |{z} =a nécéssairement régulière) de I = [a; b] On suppose les valeurs de f(xi ) connues Problème : Trouver (ωi )06i6n tels que =b I(f) = b R a f(x) dx ≈ S = i=n P ωi f(xi ) i=0 Trouver (ωi )06i6n les coefficients de pondération qui minimisent i=n I(f) − P ωi f(xi ) ? i=0 A. Hassan@Champollion PCSI-MPSI – 8 Polynômes d’interpolation de Lagrange Soit les n + 1 points (xk , f(xk ))06k6n tels que : x0 < x1 < x2 < · · · < xn Trouver P ∈ Kn [X] tel que P(xk ) = f(xk ) pour k ∈ [[ 0, n ]] ?. Une solution(polynômes de Lagrange) : Lk (X) = n Q (X − xj ) n Q (xk − xj ) 16j6n k6=j 16j6n k6=j ⇒ Lk (xi ) = δki = 1 si k = i 0 sinon Les (Lk )16k6n forment une base de Kn [X] (le démontrer ? ?), P(X) = f(x0 ).L0 (X) + f1 (x1 ).L1 (X) + · · · + f(xn ).Ln (X) = k=n X f(xk ).Lk (X) k=0 est LE polynôme interpolant f aux points (xk ; f(xk ))06k6n A. Hassan@Champollion PCSI-MPSI – 9 Méthodes Élémentaires de Quadrature (de Newton-Cotes) Sur un intervalle élémentaire [xi ; xi+1 ], la fonction f est remplacée par un polynôme interpolateur Pn de degré n. La méthode renvoie un résultat exact si f est un polynôme de degré n. b−a (pas régulier) On pose xi+1 − xi = h = N Définition : Une méthode d’intégration est dite d’ordre n, si elle renvoie un résultat exact pour tout f ∈ Rn [X] et non exact pour un élément de Rn+1 [X]. Voici les plus célèbres : Méthode des rectangles où le Polynôme interpolateur est constant P0 (x) = f(xi ) Rectangles gauches . . . . . . . . . . . . Ordre 0 P0 (x) = f(xi+1 ) Rectangles droits . . . . . . . . . . . . Ordre 0 1 P0 (x) = f( (xi + xi+1 )), Rectangles milieux . . . . . . . . . . . . . Ordre 1 2 A. Hassan@Champollion Remarque : Ces méthodes font référence aux sommes de Riemann. PCSI-MPSI – 10 (Suite) Méthode d’ordre 1, ou des trapèzes : Polynôme interpolateur de degré 1 (droite affine) x − xi+1 x − xi f(xi ) + f(xi+1 ) xi − xi+1 xi+1 − xi 1 = [(x − xi )f(xi+1 ) − (x − xi+1 )f(xi )] h 1 = [(x − xi )yi+1 − (x − xi+1 )yi ] h P1 (x) = On verra que cette méthode est d’ordre 1, i.e. elle est exacte pour les fonctions affines (polynômes de degré 1) A. Hassan@Champollion PCSI-MPSI – 11 (suite) Méthode d’ordre 2, ou de S IMPSON : Polynôme interpolateur de degré 2 (parabole). On interpole les points (xi , f(xi )), (xi+1 ; f(xi+1 )) et (xi+2 ; f(xi+2 )) (x − xi )(x − xi+2 ) (x − xi+2 )(x − xi+1 ) f(xi ) + f(xi+1 ) (xi − xi+1 )(xi − xi+2 ) (xi+1 − xi )(xi+1 − xi+2 ) (x − xi )(x − xi+1 ) f(x ) + (xi+2 − xi )(xi+2 − xi+1 ) i+2 (x − xi+2 )(x − xi+1 ) (x − xi )(x − xi+2 ) P2 (x) = yi − yi+1 h2 h2 (x − xi )(x − xi+1 ) yi+2 + 2 2h P2 (x) = Remarque : D’autres approches interpolent les points d’abscisses xi , xi+1 et 1 leur milieu (xi + xi+1 ) 2 Cette méthode est exacte pour les polynômes de degré 2. Méthodes d’ordre n ou de Newton-Cotes : On utilise un polynôme interpolateur de degré n. A. Hassan@Champollion PCSI-MPSI – 12 Méthodes d’ordre zéro : Exemple des Rectangles gauches Le polynôme interpolateur est constant L0 (X)|[xi ;xi+1 ] = f(xi ) = yi Cf b a Intervalle élémentaire : Ie = évaluation de f à gauche). Il vient : I(f) = Zb a A. Hassan@Champollion xi+1 R xi f(t) dt ≈ f(x)dx ≈ SR = xi+1 R xi n−1 X P0 (t) dt ≈ (xi+1 − xi )f(xi ) (i.e. (xi+1 − xi )f(xi ) = h i=0 n−1 X yi i=0 PCSI-MPSI – 13 Méthodes d’ordre zéro : Rectangles Droits Le polynôme interpolateur est constant P0 (X)|[xi ;xi+1 ] = f(xi+1 ) = yi+1 Cf b a Intervalle élémentaire : xi gauche). Il vient : Zb a A. Hassan@Champollion xi+1 R f(t)dt ≈ n−1 X f(t) dt ≈ (xi+1 − xi )f(xi+1 ) (i.e. évaluation de f à xZ i+1 i=0 xi P0 (t) dt = n−1 X (xi+1 − xi )f(xi+1 ) = h i=0 n−1 X yi+1 i=0 PCSI-MPSI – 14 Méthodes des Rectangles Milieux Le polynôme interpolateur est toujours constant P0 (X)|[xi ;xi+1 ] = 1 [f(xi ) + f(xi+1 )] 2 bc Affine⇒Méthode exacte bc bc bc bc bc xi bc 1 2 (xi Intervalle élémentaire bc a f(t)dt ≈ A. Hassan@Champollion n−1 P i=0 bc bc bc + xi+1 ) xi+1 xi+1 R xi b R bc f(t)dt ≈ (xi+1 − xi )f( 12 (xi + xi+1 )) (xi+1 − xi )f( 12 (xi + xi+1 )) = h n−1 X i=0 h f(xi + ) 2 PCSI-MPSI – 15 Implémentation en Python (à compléter) Rectangles Gauches : 1 2 3 4 5 6 7 def LeftBox (f ,a ,b , N ): s ,x ,h =0 ,a ,( b - a )/ n .................. .................. .................. .................. return s Rectangles des Milieux : 1 2 3 4 5 6 7 8 def MiddleBox (f ,a ,b , n ): s ,x , h =0 ,a ,( b -a )/ n .................. .................. .................. .................. .................. return s A. Hassan@Champollion Rectangles Droits : 1 2 3 4 5 6 7 def RightBox (f ,a ,b , n ): s ,x , h =............ .................. .................. .................. .................. return s Intégration Numérique (Quadrature) L’intégration : une histoire d’Aire L’intégration : une Histoire d’Aire Introduction Pourquoi l’intégration numérique? Le problème Le Problème (suite) Polynômes d’interpolation de Lagrange Méthodes Élémentaires de Quadrature (de Newton-Cotes) (Suite) (suite) Méthodes d’ordre zéro: Exemple des Rectangles gauches Méthodes d’ordre zéro: Rectangles Droits Méthodes des Rectangles Milieux Implémentation en Python (à compléter) Implémentation en Python Méthode des rectangles: Calcul de l’erreur Rectangle des milieux: Calcul de l’erreur Méthodes d’ordre un: méthode des Trapèzes Méthode des Trapèzes: PCSI-MPSI – 16 Calcul de l’erreur Méthode d’ordre 2: Implémentation en Python Rectangle Gauches 1 2 3 4 5 6 def LeftBox (f ,a ,b , N ): s ,x , h =0 ,a ,( b -a )/ n f o r k in range ( n ): s += h* f (x ) x += h return s Rectangles des Milieux 1 2 3 4 5 6 def MiddleBox (f ,a ,b , n ): s ,x , h =0 ,a ,( b -a )/ n f o r k in range ( n ): s += h *f ( x+ h /2) x += h return s Rectangles Droits 1 2 3 4 5 6 def RightBox (f ,a ,b , n ): s ,x , h =0 ,a ,( b -a )/ n f o r k in range ( n ): x += h s += h* f (x ) return s A. Hassan@Champollion Intégration Numérique (Quadrature) L’intégration : une histoire d’Aire L’intégration : une Histoire d’Aire Introduction Pourquoi l’intégration numérique? Le problème Le Problème (suite) Polynômes d’interpolation de Lagrange Méthodes Élémentaires de Quadrature (de Newton-Cotes) (Suite) (suite) Méthodes d’ordre zéro: Exemple des Rectangles gauches Méthodes d’ordre zéro: Rectangles Droits Méthodes des Rectangles Milieux Implémentation en Python (à compléter) Implémentation en Python Méthode des rectangles: Calcul de l’erreur Rectangle des milieux: Calcul de l’erreur Méthodes d’ordre un: méthode des Trapèzes Méthode des Trapèzes: PCSI-MPSI – 17 Calcul de l’erreur Méthode d’ordre 2: Méthode des rectangles : Calcul de l’erreur Sur l’intervalle Iei = [xi ; xi+1 ] xZ xZ i+1 i+1 f(x) − yi = f ′ (ci )(x − xi ) ⇒ f(x) dx − hyi = f ′ (ci )(x − xi ) dx xi ′ xi Si f ′ bornée i.e. ∃M = sup |f (c)| c∈[a;b] x Zi+1 (b − a)2 1 2 f(x) dx − hyi 6 M (xi+1 − xi ) = M 2 2n2 xi b Z n−1 X (b − a)2 En sommant f(x) dx − h yi 6 M 2n i=0 a (b − a)2 Pour une précision de ε on prend n > M 2ε Remarque : La méthode des rectangles-milieux est d’ordre 1. A. Hassan@Champollion PCSI-MPSI – 18 Rectangle des milieux : Calcul de l’erreur Preuve : Par DL2 au voisinage du point milieu xi + h2 et ∀t ∈ Ii = [xi ; xi + h], ∃ci ∈ Ii tel que h h h 1 h ) + (t − xi − )f ′ (xi + ) + (t − xi − )2 f ′′ (ci ) 2 2 2 2 2 xiZ+h xiZ+h h h 1 h h (t − xi − )f ′ (xi + ) + (t − xi − )2 f ′′ (ci )dt f(t) dt − hf(xi + ) = 2 2 2 2 2 f(t) = f(xi + xi xi chang. var ============== = ⇒ 1 u=t−xi − 2 h xiZ+h (t − xi − xi h ) dt = 2 1 2h Z − 12 h u du = 0 et si sup |f ′′ (x)| 6 M x∈[a;b] x i+1 Z M 3 h h f(x) dx − hf(xi + ) 6 2 3 xi b Z n−1 3 X M (b − a) h 3 Par sommation : f(x) dx − h × nh = M f(xi + ) 6 2 3 3n2 i=0 a A. Hassan@Champollion PCSI-MPSI – 19 Méthodes d’ordre un : méthode des Trapèzes bc bc h xi+1 xi Ie = xi+1 R xi Zb a 1 2 f(t)dt ≈ (xi+1 − xi ) .(yi + yi+1 ) = f(t) dt ≈ S = " 1 2 h (y + yi+1 ) 2 i h [(y0 + y1 ) + (y1 + y2 ) + · · · + (yn−1 + yn )] 2 S = h − (y0 + yn ) + A. Hassan@Champollion Cf n X 0 # yi ⇒ S = h 2 n−1 P 1 yi (y + yn ) + 2 0 1 PCSI-MPSI – 20 Méthode des Trapèzes : Calcul de l’erreur (b − a)3 Théorème : Si f est telle que < M alors |I(f) − S| 6 M 12n2 1 Preuve : Soit [xi ; xi+1 ] = [xi ; xi + h], L2 (x) = [(x − xi )yi+1 − (x − xi+1 )yi ] h 1 ϕ(t) = f(t) − M(t − xi )(xi+1 − t) ⇒ ϕ ′′ (t) = f ′′ (t) + M > 0 ⇒ ϕ convexe 2 1 ψ(t) = f(t) − M(t − xi )(xi+1 − t) ⇒ ψ est concave 2 ϕ en dessous de L2 et ψ en dessus 1 1 t∈[xi ;xi+1 ] f(t) + M(t − xi )(xi+1 − t) 6 L2 < f(t) − M(t − xi )(xi+1 − t)⇐===========⇒ 2 2 x +h iZ M par 1 f(t) − L2 (t) dt 6 |f(t) − L2 (t)| 6 M(t − xi )(xi+1 − t) ================ ⇒ (xi+1 − xi )3 intégration 2 12 xi x=b Z i=n−1 X M M 3 En sommant : f(x) dx 6 (b − a) (xi+1 − xi )3 ⇒ |I(f) − S| 6 12 | {z } 12n2 C2 x=a A. Hassan@Champollion sup |f ′′ (t)| i=0 1 (b−a) =h= n PCSI-MPSI – 21 Méthode d’ordre 2 : S IMPSON bc bc CL2 bc bc h xi h CP bc bc Cf xi+1 xi+2 changement ⇐=============== ⇒ −h 0 Cf h var x−xi+1 =t L2 (x) = (x − xi+1 )(x − xi+2 ) (x − xi )(x − xi+2 ) (x − xi )(x − xi+1 ) y + yi+2 y + i i+1 h2 (−h2 ) 2h2 Intégrale élémentaire : xZ xZ i+2 i+2 Ie = f(x) dx ≈ L2 (x) dx xi I≈ X xi () Erreur : ε 6 h3 A. Hassan@Champollion PCSI-MPSI – 22 Méthode Simpson : Démonstration deg(L2 ) = 2 yi = f(xi ) = L2 (xi ) Preuve : Soit [xi ; xi+2 ] tel que yi+1 = f(xi+1 ) = L2 (xi+1 ) yi+2 = f(xi+2 ) = L2 (xi+2 ) Ie = xZ i+2 xi f(x) dx ≈ xZ i+2 L2 (x) dx xi Par un changement de variable t = xi − h on se ramène à yi = ah2 − bh + c h R (at2 + bt + c) dt avec yi+1 = c I≈ . −h yi+2 = ah2 + bh + c Par ======== ⇒ Ie ≈ 2 Parité Zh 2 3 at2 + c dt = a.h3 + 2ch t=0 A. Hassan@Champollion PCSI-MPSI – 23 Méthode de Simpson : (Suite) yi +yi+2 =2ah2 +2c h h 2 (yi + 4yi+1 + yi+2 ) 2ah + 6c ================== = = = = = = = ⇒ I ≈ Ie ≈ e 2 3 3 yi +yi+2 =2ah +2yi+1 Il vient : S= h [y + 4y1 + y2 3 0 + y2 + 4y3 + y4 + y4 + 4y5 + y6 .. .. .. + . + . + . +y2n−2 + 4y2n−1 + y2n ] Avec un nombre pair de subdivisions, h = Zb a A. Hassan@Champollion f(x) dx ≈= " b−a : 2n h y2n − y0 + 3 n−1 X i=0 2y2i + 4y2i+1 # PCSI-MPSI – 24 Mise en œuvre de la méthode de S IMPSON(à compléter) (b − a) (donc 2n + 1 points). 2n 1 SINON : l’interpolation est faite sur les points : xi ; mi = (xi + xi+1 ) et xi+1 et 2 xi+1 R h f(t) dt ≈ (yi + 4f(mi ) + yi+1 ) Ie = 6 xi On choisit un nombre pair d’intervalles ⇒ h = 1 2 3 4 5 6 7 8 9 10 11 12 ## def Simpson (f ,a ,b , n ): n2 =2* n # nombre pair de points s ,h =0 ,( b -a )/ n2 # initialisation x1 = a # abscisses d ’ ordre pair f o r ::::::::::::: ................. ................. ................. ................. ................. r e t u r n s *h /3 A. Hassan@Champollion PCSI-MPSI – 25 Mise en œuvre de la méthode de S IMPSON (b − a) (donc 2n + 1 points). 2n 1 SINON : l’interpolation est faite sur les points : xi ; mi = (xi + xi+1 ) et xi+1 et 2 xi+1 R h f(t) dt ≈ (yi + 4f(mi ) + yi+1 ) Ie = 6 xi On choisit un nombre pair d’intervalles ⇒ h = 1 2 3 4 5 6 7 8 9 10 ## def Simpson (f ,a ,b , n ): n2 =2* n # nombre pair de points s ,h =0 ,( b -a )/ n2 # initialisation x1 = a # abscisses d ’ ordre pair f o r i in range (0 , n ): s += 2* f ( x1 )+4* f ( x1 + h) x1 = x1 +2* h s += f( b ) -f ( a) r e t u r n s *h /3 A. Hassan@Champollion PCSI-MPSI – 26 Erreur de la méthode de Simpson, méthodes de Newton-Cotes Théorème[admis] : Si la dérivée d’ordre 4 de f vérifie sup |f(4) (x)| 6 M alors x∈[a;b] b−a (b − a)5 avec h = |I(f) − Sp | 6 M n n4 Les méthodes précédentes font partie des méthodes de Newton-Cotes, où l’on interpole n + 1 points par un polynôme de degré n. 1. 2. 3. Newton-Cotes d’ordre 1 ⇐⇒ Méthode des trapèzes Newton-Cotes d’ordre 2 ⇐⇒ Méthode Simpson On montre que, selon la parité de n : n pair ⇒ Résultat exact dans Rn+1 [X], n impair ⇒ Résultat exact dans Rn [X] Ainsi la méthode de Simpson (i.e. n = 2) est exacte pour des polynômes de degré 3 Exemple : pour n = 4, i.e. 4 points d’interpolations et donc 3 subdivisions (avec h = xi+1 − xi et xi < c < xi+3 ) : xZ i+3 3 f(t) dt = h [f(xi ) + 3f(xi+1 ) + 3f(xi+2 ) + f(xi+3 )] + E(h) avec E(h) 6 M.h5 8 | {z } xi A. Hassan@Champollion =−3h5 .f(4) (c)/80 PCSI-MPSI – 27 Comparaison des méthodes 1 2 3 4 5 6 7 8 9 10 11 12 13 ## def f( x ): # x 7→ πx sin(2πx) r e t u r n np . pi * x * np . sin (2* np . pi * x) # ---------- -- -- - -- -- -- - -- -- -- - -- -- -# fonction definies a la volee : # ----------- - -- -- -- -- - -- -- -- -- - fc =lambda x :1 # ( x 7→ 1) fa =lambda x :x # ( x 7→ x) fq =lambda x :x **2 # ( x 7→ x2 ) fcub =lambda x : x **3 # ( x 7→ x3 ) √ ft =lambda x :x **( -0.5) # ( x 7→ 1/ x) # 1 2 0 3 4 5 6 7 8 9 10 11 12 A. Hassan@Champollion # intervalle d ’ int {\ ’ e } gration [0, 1] R1 # Valeur exacte 1 dx = 1 a , b =0 ,1 cl = LeftBox ( fc ,a ,b ,100) cr = RightBox ( fc ,a ,b ,100) cm = MiddleBox (fc ,a ,b ,100) ct = Trapeze ( fc ,a ,b ,100) cs = Simpson ( fc ,a ,b ,50) cq = spi . quad ( fc ,a ,b ) # commande de Python p r i n t (" ---- fonction CONSTANTE ---- ") p r i n t (" LeftBox =%5.5 f , RightBox =%5.5 f" %( cl , cr )); p r i n t (" Middle =%5.5 f , Trapeze =%5.5 f " %( cm , ct )) p r i n t (" Simpson =%5.5 f , Quad =%5.5 f" %( cs , cq [0])) PCSI-MPSI – 28 Résultats On considère n = 100 subdivisions de l’intervalle [0, 1] On a utilisé la commande quad(f,a,b) du module scipy.integrate Intégrales Rect. Gauches Rect. Droits Rect. Mil. Trapèzes Simpson Python quad Val. Exact. R1 1 dx 1.000 1.000 1.000 1.000 1.000 1.000 1 x dx 0.49500 0.50500 0.5000 0.5000 0.5000 0.5000 1/2 x2 dx 0.32835 0.33835 0.333325 0.33335 0.3333 0.3333 1/3 x3 dx 0.24502 0.25502 0.24998 0.250025 0.2500 0.2500 1/4 πx sin(2πx) dx -0.49984 -0.49984 -0.50009 -0.49984 -0.50001 -0.500 −1/2 √1 x 2.84757 1.85767 1.93715 2.35262 2.20601 2.000 2 0 R1 0 R1 0 R1 0 R1 0 R1 0 dx A. Hassan@Champollion PCSI-MPSI – 29 Erreurs d’intégration : Tableau comparatif Définition : On dit que f = O(g) (ou O), f est "grand Oh" de g au voisinage de a, ssi il existe K > 0 tel que a a ∃V ∈ V(a), ∀x ∈ V : |f(x)| 6 K|g(x)| Notons n le nombre de subdivisions de [a; b] (donc h = Méthode Rectangles Gauches (ou Droits) Rectangles Milieux Trapèzes Simpson A. Hassan@Champollion b−a ) n Erreur 1 O +∞ n 1 O +∞ n2 1 O +∞ n2 1 O 4 +∞ n PCSI-MPSI – 30 L’instruction quad du module scipy.integrate Syntaxe : forme simplifiée : from scipy.integrate import quad s=quad(func, a, b) func : Fonction à intégrer a : borne inférieur de l’intégrale b : borne supérieur de l’intégrale Elle renvoie s[0] valeur approchée l’intégrale et s[1] : une estimation de l’erreur Pour une syntaxe plus complète, faire help(quad) Exemples : 1 2 3 4 5 6 7 from scipy . integrate import quad f=lambda x : x **2 # f : x 7→ x2 R6 s , err = quad (f ,0 ,6) # s = 0 x2 dx >>> p r i n t ( s ) 72.00000000000001 # val . exacte 72 >>> p r i n t ( err ) 7.993605777301129 e -13 1 # definition de la fonction a la volee 2 ff =lambda x : np . exp ( -x **2) # i .e . x 7→ e−x # utilisation de quad R∞ 2 s , err = quad ( ff , -10 ,10) # ≈ −∞ e−x dx √ >>> s # val theorique π 1.772453850905516 >>> err # erreur 3.696676120408319 e -13 √ >>> ( np . pi )**(0.5) # π 1.7724538509055159 3 4 5 6 7 8 9 10 A. Hassan@Champollion 2 /2 PCSI-MPSI – 31 Exemple : Période du pendule simple Déterminer l’expression de la période d’un pendule simple en fonction de θ0 l’angle initial. Solution : v=Lθ ′ 1 2 mv − mgh = 0 − mgh0 = const (conservation de l’énergie) ============⇒ h=L cos(θ) 2 2g 1 mL2 θ ′2 − mgL cos(θ) = 0 − mgL cos(θ0 ) ⇒ θ ′2 = (cos(θ) − cos(θ0 )) 2 L r ′ −θ 2g Par radical : p = Attention au signe (−) : variations θ et θ ′ oppposées L cos(θ) − cos(θ0 ) Intégration de t = 0 à t = T/4 avec θ(0) = θ0 et θ(T/4) = 0 ⇒ s θ Z0 dθ θ L p Angle moitié : cos(θ) = 1 − 2 sin2 T =4 2g 2 cos(θ) − cos(θ0 ) 0 ⇒ T =2 s L g θ Z0 0 sin(θ/2) sin(u)= sin(θ 0 /2) dθ q ==================⇒ T = 4 chang. var θ sin2 ( 20 ) − sin2 ( θ2 ) π s L θ0 T =4 · K(sin( )) où K(x) = g 2 A. Hassan@Champollion Z2 0 du q 1 − x2 sin2 (u) π s L g Z2 0 du q 1 − sin2 ( θ20 ) sin2 (u) PCSI-MPSI – 32 (suite) π du q , s’appelle fonction intégrale elliptique, elle 0 1 − x2 sin2 (u) ne peut s’exprimer à l’aide des fonctions usuelles(sinon on l’aurait su). La fonction x 7→ K(x) = T =4 r π L R2 q g 0 R2 du 1 − sin2 ( θ20 ) sin2 (u) = 2 T .K(sin(θ0 /2)) π 0 Quelques approximations : r L (formule connue) (•) θ0 ≈ 0 ⇒ T ≈ T0 = 2π g DL 1 (•) θ0 petit ========= ========= ⇒ (1 − sin2 (θ0 /2) sin2 (u))− 2 ≈ 1 + α (1+u) ≈1+αu En intégrant ========= =================== ⇒ T ≈ T0 (1 + R= π/2 avec 0 A. Hassan@Champollion sin2 (u) du= π 4 1 sin2 (θ0 /2) sin2 (u) 2 | {z } 2 1 2 θ0 1 2 θ ) [Formule de Bordas] 16 0 PCSI-MPSI – 33 Implémentation en Python et comparaison # 2 import numpy as np 3 import scipy . integrate as spi 4 import matplotlib . pyplot as mp 5 # ------------ -- -- - -- -- -- -- -- - -q 2 6 def fellip (x ,u ): #x 7→ 1/ 1 − u2 . sin (x) 7 r e t u r n 1/ np . sqrt ( 1 - u **2*( np . sin ( x ))**2) 8 # 9 t = np . linspace (0.01 ,1.57 ,20) 10 nt = len ( t ) 11 y =[] 12 yellip =[] 13 f o r tg in t : 14 s =2* spi . quad (f ,0 , tg , args =( tg ,))[0]/ np . sqrt (2)/ np . pi 15 u = np . sin ( tg /2) 16 sellip =2* spi . quad ( fellip ,0 , np . pi /2 , args =(u ,))[0]/ np . pi 17 y . append (s ) 18 yellip . append ( sellip ) 19 # 20 fig = mp . figure () 21 mp . draw () 22 mp . axis ([0. ,1.7 ,0.8 ,1.3]) 23 mp . plot (t , yellip , ’g ’ ,t ,(1+ t **2/16) , ’or ’) 24 mp . title ( " Comparaison " ) 25 mp . xlabel (" Angle initial ") 26 mp . ylabel (" Période T " ) 27 mp . legend ([ " Exact " ," approch . " ]) 28 mp . grid () 29 mp . show () A. Hassan@Champollion 1 PCSI-MPSI – 34 Illustration graphique θ20 2 Courbe de T (θ0 ) = T0 K(sin(θ0 /2)) et Ta (θ0 ) = T0 (1 + ) (en pointillé) π 16 A. Hassan@Champollion PCSI-MPSI – 35