Un article de Wikipedia.y-project.com.
En analyse numérique, la méthode de la sécante est un algorithme de recherche de racines d'une fonction f.
[] La méthode
La méthode de la sécante est une méthode dérivée de celle de Newton où l'on remplace <math>f'(x_n)\,</math> par <math>\frac)}}</math>
On obtient la relation de récurrence
- <math>x_ = x_n - \frac})} f(x_n). </math>
L'initialisation nécessite 2 points x0 et x1, proches, si possible, de la solution recherchée.
[] Démonstration
Etant donné a et b, on construit le segment reliant (a, f(a)) et (b, f(b)). La droite peut être définie ainsi :
- <math> y - f(b) = \frac (x-b). </math>
On choisit c de telle sorte que c soit la racine de cette droite (c'est-à-dire, f(c)=0).
- <math> f(b) + \frac (c-b) = 0. </math>
Si on extrait c de cette équation, on retrouve la relation de récurrence citée plus haut.
[] Convergence
Si les valeurs initiales de x0 et de x1 sont suffisamment proches de la solution, la méthode aura un ordre de convergence de
- <math> \varphi = \frac} \approx 1.618 </math> qui est le nombre d'or.
Toutefois, la fonction f doit être 2 fois continuement différentiable et ce doit être une racine simple.
[] Exemple d'implémentation
Ce programme en C résout le problème f(x) = cos(x) - x3 = 0. Les tests d'arrêts sont les suivants :
- <math> |x_ - x_n| < e </math>
- <math> n > m </math>
m et e étant donnés.
#include <stdio.h>
#include <math.h>
double f(double x)
{
return cos(x) - x*x*x;
}
double SecantMethod(double xn_1, double xn, double e, int m)
{
int n;
double d;
for (n = 1; n <= m; n++)
{
d = (xn - xn_1) / (f(xn) - f(xn_1)) * f(xn);
if (fabs(d) < e)
return xn;
xn_1 = xn;
xn = xn - d;
}
return xn;
}
int main(void)
{
printf("%0.15f\n", SecantMethod(0, 1, 5E-11, 100));
return 0;
}
On obtient les résultats suivants :
- <math> x_0 = 0\,\!</math>
- <math> x_1 = 1\,\!</math>
- <math> x_2 = 0.685073357326045\,\!</math>
- <math> x_3 = 0.841355125665652\,\!</math>
- <math> x_4 = 0.870353470875526\,\!</math>
- <math> x_5 = 0.865358300319342\,\!</math>
- <math> x_6 = 0.865473486654304\,\!</math>
- <math> x_7 = 0.865474033163012\,\!</math>
- <math> x_8 = 0.865474033101614\,\!</math>
[] Voir aussi
DernierMirror
Le Texte ci-dessus est disponible sous GNU Free Documentation License.
La source est wikipedia http://fr.wikipedia.org/wiki/Méthode de la sécante