Méthode de la sécante On considère une fonction $f$ strictement monotone sur un intervalle $[a\,;b]$ et telle qu'il existe un unique $x_0\in[a\,;b]$ solution de l'équation $f(x)=0$.
On cherche une valeur approchée de $x_0$.

On donne une application avec la fonction $f$ définie sur $[0\,;+\infty[$ par $f(x)=x^2-2$ (et la recherche donc d'une approximation de $\sqrt{2}$), puis on donne un algorithme générique pour toute fonction remplissant les conditions énoncées précédemment. Exemple Xmin = -1 Xmax = 3 Ymin = -2.2 Ymax = 2.2 function traceS(){ couleur = noir peinture = blanc transparence = 1 rectangle([-5,5],20,20) traceG(4) traceX() traceY() couleur = bleu graphe(f,0,10) couleur = rouge } function f(x){ return x*x-2 } function dicho(n){ traceS() a = 0 b = 2 for(i = 0; i < n-1; i++){ c = a-f(a)*(b-a)/(f(b)-f(a)) if( f(c) < 0 ){ a = c } else{ b = c } } segment([a,f(a)],[b,f(b)]) c = a-f(a)*(b-a)/(f(b)-f(a)) if( f(c) < 0 ){ a = c } else{ b = c } couleur = vert point([c,0]) segment([c,0],[c,f(c)],[5,2]) segment([0,f(c)],[c,f(c)],[5,2]) couleur = noir texte(c,[-0.5,1]) } traceS() curseur("k",1,1,50,1) dicho({k})

def f(x): return x*x-2 def secante(n): a = 0 b = 10 for i in range(0,n): c = a-f(a)*(b-a)*1.0/(f(b)-f(a)) if f(c) < 0: a = c else: b = c return c print(secante(10)) print(secante(20)) print(secante(30)) print(secante(40)) print(secante(94)) print(secante(95))

Cas générique def f(x): return x*x-2 def t(x): return x**3-2 def secante(f,a,b,n): for i in range(0,n): c = a-f(a)*(b-a)*1.0/(f(b)-f(a)) if f(c)*f(a) < 0: a = c else: b = c return c print(secante(f,0,10,50)) print(secante(t,0,2,200))