Suite de Fibonacci
- 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)` |
---|---|---|---|
0 | 0 | 0 | |
1 | 1 | 1 | |
2 | 1 | 2 | 1 |
3 | 2 | 4 | 2 |
4 | 3 | 7 | 1.5 |
5 | 5 | 12 | 1.66666666666667 |
6 | 8 | 20 | 1.6 |
7 | 13 | 33 | 1.625 |
8 | 21 | 54 | 1.61538461538462 |
9 | 34 | 88 | 1.61904761904762 |
10 | 55 | 143 | 1.61764705882353 |
11 | 89 | 232 | 1.61818181818182 |
12 | 144 | 376 | 1.61797752808989 |
13 | 233 | 609 | 1.61805555555556 |
14 | 377 | 986 | 1.61802575107296 |
15 | 610 | 1596 | 1.61803713527851 |
16 | 987 | 2583 | 1.61803278688525 |
17 | 1597 | 4180 | 1.61803444782168 |
18 | 2584 | 6764 | 1.61803381340013 |
19 | 4181 | 10945 | 1.61803405572755 |
20 | 6765 | 17710 | 1.61803396316671 |
21 | 10946 | 28656 | 1.6180339985218 |
22 | 17711 | 46367 | 1.61803398501736 |
23 | 28657 | 75024 | 1.6180339901756 |
24 | 46368 | 121392 | 1.61803398820533 |
25 | 75025 | 196417 | 1.6180339889579 |
26 | 121393 | 317810 | 1.61803398867044 |
27 | 196418 | 514228 | 1.61803398878024 |
28 | 317811 | 832039 | 1.6180339887383 |
29 | 514229 | 1346268 | 1.61803398875432 |
30 | 832040 | 2178308 | 1.6180339887482 |
31 | 1346269 | 3524577 | 1.61803398875054 |
32 | 2178309 | 5702886 | 1.61803398874965 |
33 | 3524578 | 9227464 | 1.61803398874999 |
34 | 5702887 | 14930351 | 1.61803398874986 |
35 | 9227465 | 24157816 | 1.61803398874991 |
36 | 14930352 | 39088168 | 1.61803398874989 |
37 | 24157817 | 63245985 | 1.6180339887499 |
38 | 39088169 | 102334154 | 1.61803398874989 |
39 | 63245986 | 165580140 | 1.6180339887499 |
40 | 102334155 | 267914295 | 1.61803398874989 |
41 | 165580141 | 433494436 | 1.6180339887499 |
42 | 267914296 | 701408732 | 1.6180339887499 |
43 | 433494437 | 1134903169 | 1.6180339887499 |
44 | 701408733 | 1836311902 | 1.6180339887499 |
45 | 1134903170 | 2971215072 | 1.6180339887499 |
46 | 1836311903 | 4807526975 | 1.6180339887499 |
47 | 2971215073 | 7778742048 | 1.6180339887499 |
48 | 4807526976 | 12586269024 | 1.6180339887499 |
49 | 7778742049 | 20365011073 | 1.6180339887499 |
50 | 12586269025 | 32951280098 | 1.6180339887499 |
Voir aussi
Suite arithmétique
Suite géométrique