info_analyse_numerique_enonce

Lycée Sainte Geneviève
BCPST 2
2014-2015
Informatique. Séance 4 : Analyse numérique
1
Recherche de solution approchée d'équation
On s'intéresse à une équation qui peut s'écrire f (x) = 0. On suppose savoir (par exemple avec le TVI) que f
s'annule une unique fois dans un certain intervalle, mais on ne sait pas calculer explicitement la solution qu'on note
α. On en cherche donc une valeur approchée.
1.1
Dichotomie
On suppose ici que f est continue au voisinage de α.
En utilisant le principe de dichotomie, écrire une fonction Python qui prend comme argument f , deux réels
a < b (on supposera que la solution appartient à [a, b]) et un nombre réel ε > 0 et qui renvoie une valeur approchée à
ε près de la solution de l'équation f (x) = 0 ainsi que le nombre de découpages en deux réalisés.
Testez-la, par exemple avec f : x 7→ x2 − 2.
1.2
Méthode de Newton
On supposera cette fois que f est dérivable au voisinage de α et que sa dérivée ne s'y annule pas.
On rappelle que la méthode de Newton consiste au nal à voir α comme la limite de la suite (xn ) dénie par
récurrence avec la relation xn+1 = xn −
α, sinon la méthode peut échouer.
f (xn )
. Il est nécessaire de prendre comme x0 une valeur pas trop éloignée de
f 0 (xn )
Écrire une fonction Python qui prend en argument f , x0 et un entier N et qui renvoie le N -ième terme de la
suite décrite ci-dessus. Pour obtenir la valeur du nombre dérivée d'une fonction f en un point a, on peut utiliser dans
le module scipy, la commande misc.derivative(f,a).
Comparer la rapidité de convergence de la méthode de Newton par rapport à la dichotomie.
2
Approximations d'intégrales
On peut ne pas savoir calculer une primitive d'une fonction continue f et dans ce cas on est bien embêté pour
calculer son intégrale sur un intervalle [a, b]. On va voir qu'on peut en calculer une valeur approchée de diérentes
façons.
2.1
Méthode des rectangles
n−1 (b − a)
(b − a) X
f a+k
Le théorème des sommes de Riemann nous dit qu'on peut approcher
f (t)dt par
N
N
a
k=0
pour N grand. Ce qui revient à approcher l'intégrale cherchée par la somme de N rectangles dont les hauteurs sont xées par f .
Z
Z
b
b
Écrire une fonction Python qui prend comme argument f , a < b et N et qui renvoie une valeur approchée de
f (t)dt en utilisant la méthode des rectangles.
a
Testez-la, par exemple avec
Z
1
et dt. Faites varier N et comparer avec la vraie valeur.
0
1
2.2
Méthodes des trapèzes
Si on reprend l'idée précédente mais qu'on utilise des trapèzes plutôt que des rectangles. On peut avoir l'espoir
d'être plus précis. Dans ce cas la formule d'approximation devient :
n−1
(b − a)
(b − a)
(b − a) X 1
f a+k
+ f a + (k + 1)
N
2
N
N
k=0
Z
b
Écrire une fonction Python qui prend comme argument f , a < b et N et qui renvoie une valeur approchée de
f (t)dt en utilisant la méthode des trapèzes.
a
Testez-la et comparer sa vitesse de convergence (quand N tend vers l'inni) avec la méthode des rectangles.
2.3
Méthode de Montecarlo
On supposera ici que f est positive sur [a, b] et qu'elle atteint son maximum en b. On va estimer la proportion
du rectangle de largeur (b − a) et de hauteur f (b) occupée par l'aire sous la courbe représentative de f . Pour cela on
tire au hasard un grand nombre de points dans ce rectangle et on calcule la proportion de ces points qui sont sous la
courbe représentative.
Écrire une fonction
Python qui prend en arguments f , a < b et N , le nombre de points tirés, et qui renvoie une
Z
b
approximation de
f (t)dt par la méthode de Montecarlo. On utilisera la commande random() du module random
a
qui renvoie un nombre pseudo-aléatoire dans [0, 1[.
Testez-la. Combien faut-il de points pour être aussi précis que dans les autres méthodes ?
Remarque
Le sous module de \scipy, scipy.integrate possède une fonction quad qui permet d'obtenir une
valeur approchée d'une intégrale de la forme
Z
b
f (t)dt. La commande s'utilise comme ceci : quad(f,a,b)
a
2