Approximation du nombre d'or On note $\varphi=\dfrac{1+\sqrt{5}}{2}$ le nombre d'or. Suite n°1 On admet que la suite $(a_n)$ définie par $a_0=2$ et pour tout entier $n$ : $$a_{n+1}=1+\dfrac{1}{a_n}$$ converge vers $\varphi$.
def phi1(p): a = 2 n = 0 diff = 2 while diff >=p: a2 = a a = 1 + 1.0/a diff = abs(a2-a) n = n+1 return [n,a] print phi1(0.001) print phi1(0.000001) print phi1(0.000000001) Suite n°2 On admet que la suite $(b_n)$ définie par $b_0=2$ et pour tout entier $n$ : $$b_{n+1}=\sqrt{1+b_n}$$ converge vers $\varphi$.
from math import* def phi2(p): b = 2 n = 0 diff = 2 while diff >=p: b2 = b b = sqrt(1.0+b) diff = abs(b2-b) n = n+1 return [n,b] print phi2(0.001) print phi2(0.000001) print phi2(0.000000001) Suite n°3 On admet que la suite $(c_n)$ définie par $c_0=2$ et pour tout entier $n$ : $$c_{n+1}=\dfrac{c_n^2+1}{2c_n-1}$$ converge vers $\varphi$.
from math import* def phi3(p): c = 2 n = 0 diff = 2 while diff >=p: c2 = c c = (c*c+1.0)/(2*c-1.0) diff = abs(c2-c) n = n+1 return [n,c] print phi3(0.001) print phi3(0.000001) print phi3(0.000000001) À partir de la suite de Fibonacci La suite de Fibonacci est définie par $u_0=u_1=1$ et pour tout entier $n$ : $$u_{n+2}=u_{n+1}+u_n.$$ On admet que la suite $(d_n)$ définie pour tout entier $n$ par $d_n=\dfrac{u_{n+1}}{u_n}$ converge vers $\phi$.

def fibonacci(n): v = 1 u = 1 for i in range(1,n): w = v v = u u = u+w return u def ratio(n): return (1.0*fibonacci(n+1))/fibonacci(n) def convergence(p): diff = 2 n = 0 while diff >= p: diff = abs( ratio(n+1)-ratio(n) ) n = n+1 return [n,ratio(n)] print convergence(0.001) print convergence(0.000001) print convergence(0.000000001)