2022 PSI* Python 2 Ingénierie numérique et simulation 1 Intégration numérique .

2022 PSI* Python 2 Ingénierie numérique et simulation 1 Intégration numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1 Principe général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 La méthode des rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 La méthode des trapèzes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Utiliser scipy.integrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Recherche des zéros d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1 Recherche d’un zéro de fonction par dichotomie . . . . . . . . . . . . . . . . . . 5 2.2 Méthode de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Méthode du point fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Utiliser scipy.optimize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 https://www.peakpx.com/395863/backhoe-wire-sculpture cz 2021-2022 http://psietoile.lamartin.fr 1/15 2022 PSI* Python 2. Ingénierie numérique et simulation 1 Intégration numérique Étant donnés deux réels a et b tels que a < b et une fonction f continue sur le segment [a, b], on souhaite, à l’aide de suites, obtenir une valeur approchée de l’intégrale de f sur [a, b]. On note I(f) = ˆ b a f(t)dt = ˆ b a f l’intégrale à approcher. Les valeurs de f peuvent provenir de la connaissance de la fonction, ou alors de la connaissance de valeurs de la fonction pour certaines valeurs de t (dans le cas, par exemple, de mesures régulières). 1.1 Principe général Pour tout n ∈N∗, on va partager le segment [a, b] à l’aide d’une subdivision (xi)0⩽i⩽n à pas constant égal à b−a n en posant ∀i ∈J0, nK, xi = a + ib −a n Sur chaque segment [xi−1, xi], on remplace f par une fonction dont on sait calculer l’intégrale. Nous présentons deux méthodes. • La méthode des rectangles où les fonctions utilisées pour approcher f sont constantes. • La méthode des trapèzes où les fonctions utilisées pour approcher f sont affines. 1.2 La méthode des rectangles 1.2.1 Définition de la suite associée à cette méthode Sur chaque intervalle [xi, xi+1], on remplace f par la fonction constante de valeur f(xi). L’intégrale de f est alors approchée par la somme Rn(f) des aires algébriques des rectangles de sommets (xi, 0), (xi+1, 0), (xi+1, f(xi)) et (xi, f(xi)), où i ∈{0, . . . , n −1}. t f(t) a b O n = 8 Chaque rectangle a un côté de mesure (positive) xi+1−xi = b−a n et un autre côté de mesure (algébrique) f(xi) de telle sorte que ∀n ∈N∗, Rn(f) = b −a n n−1 X i=0 f(xi). 2/15 http://psietoile.lamartin.fr 2021-2022 2022 PSI* Python 2. Ingénierie numérique et simulation 1.2.2 Convergence de cette suite Si f est de classe C1 sur l’intervalle d’intégration [a, b], alors on peut démontrer que |I(f) −Rn(f)| = O  1 n  . Ainsi la suite (Rn(f))n∈N∗converge vers I(f). 1.2.3 Ordre de la méthode Comme il existe un nombre M tel que |I(f) −Rn(f)| ⩽M n , on dit que la méthode est d’ordre 1. 1.2.4 Algorithme et complexité def rectangle(f, a, b, n): """ valeur approchée de l'integrale de f sur [a,b] application de la methode des rectangles""" int_rect = 0 h = (b-a)/n t = a for k in range(n): # t est ak = a + kh # int_rect approxime ´ ak a f(t) dt int_rect += h * f(t) t += h return int_rect  1.3 La méthode des trapèzes 1.3.1 Définition de la suite associée à cette méthode Sur chaque segment [xi, xi+1], on remplace f par la fonction affine qui coïncide avec f en xi et en xi+1. L’intégrale de f est alors approchée par la somme Tn(f) des aires algébriques des trapèzes de sommets (xi, 0), (xi+1, 0), (xi+1, f(xi+1)) et (xi, f(xi)), où i ∈{0, . . . , n −1}. t f(t) a b O n = 8 Chaque trapèze a une aire algébrique qui vaut (b −a) n (f(xi) + f(xi+1)) 2 de telle sorte que 2021-2022 http://psietoile.lamartin.fr 3/15 2022 PSI* Python 2. Ingénierie numérique et simulation ∀n ∈N∗, Tn(f) = b −a 2n n−1 X i=0 (f(xi) + f(xi+1)) = b −a n f(a) + f(b) 2 + n−1 X i=1 f(xi) ! 1.3.2 Convergence de cette suite Si f est de classe C2 sur l’intervalle d’intégration [a, b] alors on peut démontrer que |I(f) −Tn(f)| = O  1 n2  . Ainsi la suite (Tn(f))n∈N∗converge vers I(f). Sa convergence vers I(f) est plus rapide que celle de la suite (Rn(f)). 1.3.3 Ordre de la méthode Comme il existe un nombre M tel que |I(f) −Tn(f)| ⩽M n2 , on dit que la méthode est d’ordre 2. 1.3.4 Algorithme et complexité def trapeze(f,a,b,n): """ valeur approchée de l'integrale de f sur [a,b] application de la methode des trapèzes""" h = (b-a)/n int_trapeze = 0. t = a for k in range(n): # t est ak # int_trapeze approxime ´ ak a f(t) dt int_trapeze += h * (f(t) + f(t+h)) / 2 t += h return int_trapeze  Exercice. Estimer la complexité de l’algorithme précédent. Peut-elle être simplement améliorée ? 1.4 Utiliser scipy.integrate La fonction scipy.integrate.trapz permet de mettre en œuvre la méthode des trapèzes sans la programmer. Si on peut/doit utiliser une fonction de bibliothèque, on privilégiera scipy.integrate.quad, plus rapide et performante que les méthodes au programme de notre classe. 4/15 http://psietoile.lamartin.fr 2021-2022 2022 PSI* Python 2. Ingénierie numérique et simulation 2 Recherche des zéros d’une fonction Dans ce paragraphe, nous allons voir comment évaluer numériquement une solution d’équation de la forme f(x) = 0. 2.1 Recherche d’un zéro de fonction par dichotomie Si f(a) et f(b) sont de signe contraire, f étant continue, un zéro de f se trouve entre a et b par le théorème des valeurs intermédiaires. On peut le localiser dans l’une des moitiés du segment [a, b] en étudiant le signe de f au milieu de [a, b]. Cf b a def dicho(f, a, b, epsilon = 1e-6): """ donne une valeur approchée d'un zéro de f à epsilon près par défaut On suppose a < b et f(a)*f(b)<= 0 """ assert f(a) * f(b) <= 0, "Il n'y a peut-être pas de zéro entre {} et {}".format(a,b) g = a d = b while d-g > epsilon: # Invariant : un zéro est entre g et d, et d-g > epsilon m = (g + d)/2 if f(g)*f(m) <= 0: # attention au cas f(m) == 0 d = m # zéro entre g et m else: g = m # zéro entre m et d return g  Cet algorithme se termine, et sa complexité est très bonne. On peut aussi proposer une version récursive de cet algorithme. On peut aussi effectuer une recherche dichotomique dans une liste triée. 2.2 Méthode de Newton Lorsque f (que l’on suppose s’annuler une unique fois) est de classe C2 et que sa dérivée ne s’annule pas, on peut s’approcher de son zéro en « prenant la tangente ». 2021-2022 http://psietoile.lamartin.fr 5/15 2022 PSI* Python 2. Ingénierie numérique et simulation Cf x0 x1 α Cela revient à définir la suite donnée par la relation de récurrence : xn+1 = xn −f(xn) f′(xn) qui converge, sous certaines hypothèses, vers le zéro de f. def newton(f, fprime, x0, eps = 1e-6): """ zéro approchée de f, x0 valeur initiale """ x = x0 y = x - f(x)/fprime(x) k = 0 while abs(y - x) > eps and k < 50: x = y # x = xk y = y - f(y)/fprime(y) # y = xk+1 k += 1 return uploads/s3/ python-2.pdf

  • 37
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager