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