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
© Copyright 2024 ExpyDoc