Valeur approchée d`une racine d`une fonction
Transcription
Valeur approchée d`une racine d`une fonction
regula-falsi.pdf —1— Valeur approchée d’une racine d’une fonction Méthode Regula-Falsi Mathématiquement parlant La méthode Regula-Falsi est aussi appelée méthode de la fausse position. Soit z une solution de l’équation f (x) = 0, appelée traditionnellement racine ou zéro de la fonction f . On choisit un intervalle [a, b], contenant z, et tel que f (a) et f (b) soient de signes contraires (f (a) · f (b) < 0). On suppose également que f (x) est continue sur l’intervalle [a, b]. On trace la sécante S passant par les points de coordonnées (a, f (a)) et (b, f (b)). Elle a pour équation f (b) − f (a) S ≡ y = f (a) + · (x − a) b−a On calcule l’intersection de cette droite avec l’axe des abscisses (c1) qui sera une première valeur approchée de z. f (b) − f (a) 0 = f (a) + · (c1 − a) b−a f (b) − f (a) −f (a) = · (c1 − a) b−a −f (a) c1 − a = f (b) − f (a) b−a b−a c1 = a − f (a) · f (b) − f (a) On réitère ensuite le processus sur l’intervalle [a, c1] si f (a) · f (c1) < 0, ou sur l’intervalle [c1, b] si f (c1) · f (b) < 0, ce qui revient à faire le même calcul en remplaçant respectivement b par c1 ou a par c1. Cette méthode converge moins vite que la méthode de Newton-Raphson, mais elle a l’avantage de ne pas utiliser la dérivée de la fonction f . c JM Desbonnez regula-falsi.pdf —2— Informatiquement parlant On choisit les valeurs pour a et pour b, ainsi qu’une valeur proche de 0 pour la précision souhaitée. Comme on n’est pas certain de trouver la valeur exacte de la racine, on arrête le processus dès qu’on aura trouvé une valeur c telle que |f (c)| < precision. Algorithme et traduction Ruby # Algorithme Regula-falsi # dit de la fausse position # calcul de zéro(s) d’une fonction # –––––––––––––––––––– def f(x) # expression analytique de f(x) return x**3-x-1 end # –––––––––––––––––––––––––precision=10**-15 # précision souhaitée compteur=1 # compteur d’itérations a=1.0 b=2.0 # intervalle [a,b] tel que f(a).f(b)<O # contenant la racine z begin c=a-f(a)*(b-a)/(f(b)-f(a)) puts c compteur=compteur+1 if f(c)*f(a)<0 b=c else a=c end end while f(c).abs>precision puts c;puts compteur Exemple La fonction f (x) = x3 −x−1 a un zéro dans l’intervalle [1, 2] (appelé nombre de Padovan ou aussi nombre plastique). Avec l’algorithme ci-dessus, en posant a = 1, b = 2 et precision = 10−15 , on obtient, après 42 itérations, la valeur 1,3247179572447458. Pour traiter une autre fonction f (mathématique), il suffit de modifier de modifier la formule dans le module de définition de la fonctions f (x). 3 1 x et une autre dans , 2 . Au travail ! La fonction 3x + sin x − e a une racine dans 0, 2 2 c JM Desbonnez