Suite de Fibonacci

Cet outil est un calculateur de la suite de Fibonacci. Il calcule :
- Le terme de la suite de fibonacci de rang n.
- La somme des n premiers termes de cette suite.


Suite de Fibonacci

On appelle suite de fibonacci la suite de nombres entiers naturels dans laquelle chaque terme s'obtient en additionnant les deux termes précédents, les deux premiers étant égaux à 0 et 1. Le terme général de la suite de Fibonacci s'écrit,

`F_0 =0, F_1 =1`

`F_n = F_(n-1) + F_(n-2)` pour tout `n >= 2`

Formule de Binet

La formule de Binet donne une formule explicite du n-ième terme de la suite de Fibonacci. Ainsi, si `F_n` est le terme de la suite de Fibonaci de rang n alors, il s'écrit,

`F_n=1/sqrt(5)*(((1+sqrt(5))/2)^n-((1-sqrt(5))/2)^n)`

Une autre manière d'écrire cette formule en utilisant le nombre d'or `phi` :

`phi = (1+sqrt(5))/2`

`F_n=1/sqrt(5)*(phi^n-(-phi)^-n)`

Algorithmes de calcul

Algorithme simple


//Cet algorithme applique strictement la définition des nombres de Fibonacci
fonction fibonacci(n)
    si n = 0
        retourner 0

    si n = 1
        retourner 1
    	
    retourner fibonacci(n-1) + fibonacci(n-2)

Cet algorithme est précisé ici à titre pédagogique, il n'est pas conseillé de l'utiliser spécialement pour des grandes valeurs de n car il n'est pas optimal,
- il recalcule systématiquement plusieurs fois les termes de la suite précédant le n-ième terme.
- son temps d'exécution est exponentiel en fonction de n.

Algorithme dynamique


fonction fibonacci(n)
	//initialisation de la liste des nombres de fibonacci
	f = (0,1)

	Pour i de 2 à n
        ajouter à la liste f la valeur : f[i-1] + f[i-2]
 
    retourner f[n]

L'avantage de cet algorithme est qu'il évite les recalculs des termes tel que l'on a vu dans le premier algorithme.

Calcul avec la formule de Binet


//cette fonction calcule les nombres de Fibonacci à partir du nombre d'or
fonction fibonacci(n)
	phi = (1+sqrt(5))/2
	retourner (phi^n-(-phi)^(-n))/sqrt(5)

Cet algorithme est plus rapide puisqu'il ne nécessite pas de calcul des termes précédents. Son inconvénient est que selon la machine sur lequel il est exécuté, on peut se heurter plus ou moins rapidement, à partir d'un certain rang de n, à des problèmes d'arrondi qui viendront fausser le résultat.

Les 50 premiers termes de la suite de Fibonacci

Notations:
n : le rang
`F_n` : le terme de rang n de la suite de Fibonacci
`S_n` : la somme des n premiers termes de la suite de Fibonacci
`F_n/F_(n-1)` : le rapport entre 2 termes consécutifs (approximation du nombre d'or)

Nombre d'or : ` phi = (1+sqrt(5))/2 approx` 1.6180339887499
On remarque dans le tableau ci-dessous que le rapport `F_n/F_(n-1)` converge rapidement vers le nombre d'or.

n `F_n` `S_n` `F_n/F_(n-1)`
000
111
2121
3242
4371.5
55121.66666666666667
68201.6
713331.625
821541.61538461538462
934881.61904761904762
10551431.61764705882353
11892321.61818181818182
121443761.61797752808989
132336091.61805555555556
143779861.61802575107296
1561015961.61803713527851
1698725831.61803278688525
17159741801.61803444782168
18258467641.61803381340013
194181109451.61803405572755
206765177101.61803396316671
2110946286561.6180339985218
2217711463671.61803398501736
2328657750241.6180339901756
24463681213921.61803398820533
25750251964171.6180339889579
261213933178101.61803398867044
271964185142281.61803398878024
283178118320391.6180339887383
2951422913462681.61803398875432
3083204021783081.6180339887482
31134626935245771.61803398875054
32217830957028861.61803398874965
33352457892274641.61803398874999
345702887149303511.61803398874986
359227465241578161.61803398874991
3614930352390881681.61803398874989
3724157817632459851.6180339887499
38390881691023341541.61803398874989
39632459861655801401.6180339887499
401023341552679142951.61803398874989
411655801414334944361.6180339887499
422679142967014087321.6180339887499
4343349443711349031691.6180339887499
4470140873318363119021.6180339887499
45113490317029712150721.6180339887499
46183631190348075269751.6180339887499
47297121507377787420481.6180339887499
484807526976125862690241.6180339887499
497778742049203650110731.6180339887499
5012586269025329512800981.6180339887499

Voir aussi

Suite arithmétique
Suite géométrique