Intersection#
L’algorithme de la sécante est une méthode numérique utilisée pour trouver les intersections d’une fonction avec l’axe des x, c’est-à-dire les points où la fonction coupe l’axe des x. Pour ce faire, l’algorithme utilise deux points de départ initiaux, x0 et x1, et calcule une approximation de la racine de la fonction en utilisant une formule basée sur la pente de la sécante entre ces deux points. Ensuite, il répète ce processus en utilisant le nouveau point calculé jusqu’à ce qu’une précision suffisante soit atteinte.
Dans notre implémentation, la fonction intersection prend en paramètres la fonction dont nous voulons trouver la racine, ainsi que deux points de départ initiaux, initial_guess1 et initial_guess2. L’algorithme utilise ces points pour calculer progressivement une meilleure approximation de la racine en utilisant la méthode de la sécante. La boucle while True est utilisée pour itérer jusqu’à ce que la différence entre deux approximations successives soit inférieure à un seuil de précision défini.
La fonction f(x) est la fonction dont nous voulons trouver la racine, dans cet exemple, f(x) = x^3 - 2x - 5.
Enfin, l’algorithme renvoie la valeur de la racine calculée avec une précision suffisante.
Fonction#
1import math
2
3def intersection(function, initial_guess1, initial_guess2):
4 """
5 Finds the intersection of the function with the x-axis using the secant method.
6
7 Args:
8 function: The function for which to find the root.
9 initial_guess1: The first initial guess.
10 initial_guess2: The second initial guess.
11
12 Returns:
13 The root of the function.
14 """
15 x_n = initial_guess1
16 x_n1 = initial_guess2
17
18 while True:
19 x_n2 = x_n1 - (function(x_n1) / ((function(x_n1) - function(x_n)) / (x_n1 - x_n)))
20 if abs(x_n2 - x_n1) < 10**-5:
21 return x_n2
22 x_n = x_n1
23 x_n1 = x_n2
24
25def f(x):
26 """
27 The function f(x) = x^3 - 2x - 5.
28
29 Args:
30 x: The input value.
31
32 Returns:
33 The result of the function.
34 """
35 return math.pow(x, 3) - (2 * x) - 5
print(intersection(f, 3, 3.5))
2.0945514815435184