Bonjour,
En génie mathématiques, on me demande d’implémenter la méthode des points fixes en Python et de la tester avec différentes fonctions. Pour chaque fonction, on me demande de tester également 3 $x_0$ de départ. Voici le code que j’ai produit :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # coding: utf-8 from math import * def point_fixe(g, x0, epsilon, n_itermax): """ Retourne un tableau avec tous les points calculés ou une erreur """ itr = 0 xp = {} x = 0 while (itr < n_itermax): try: x = g(x0) except OverflowError: break xp[itr] = x0 if abs(x - x0) <= epsilon: return xp x0 = x itr += 1 return "Aucun point fixe" def print_table(xp): """ Affiche un tableau avec toutes les valeurs ou l'erreur """ s = "" if isinstance(xp, str): s = xp else: for key, value in xp.items(): s += "n = {}\t\tx = {}\n".format(key, value) print(s) |
Ce qui me pose problème c’est le test de la fonction $1-x^2$ avec $x_0 = 4$.
1 | print_table(point_fixe(lambda x: 1 - x**2, 4, 10e-10, 100)) |
En effet, vers l’itération 20, le calcul du $x_{n+1}$ sera vraiment lent. J’ai regardé la tête de la valeur de $x$ et c’est vraiment un nombre énorme donc la fonction est clairement divergente. Comment faire en sorte que Python s’arrête plus tôt ?
Merci à vous.
+0
-0