Informatique en PCSI et MPSI Champollion 2013

publicité
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
Téléchargement