Suite de Fibonacci : encyclopédie mathématiques
Cet article est issu de l'encyclopédie libre Wikipedia.La suite de Fibonacci est l'une des suites mathématiques les plus connues. Elle doit son nom au mathématicien italien Leonardo Pisano, plus connu sous le pseudonyme de Fibonacci (1175 - 1250). Dans un problème récréatif posé dans un de ses ouvrages, le Liber Abaci, Fibonacci décrit la croissance d'une population de lapins :
Ce problème est à l'origine de la suite dont le -ème terme correspond au nombre de paires de lapins au
-ème mois. Dans cette population (idéale), on suppose que :
Notons le nombre de couples de lapins au mois
. Jusqu’à la fin du deuxième mois, la population se limite à un couple (ce qu'on note :
). Dès le début du troisième mois, le couple de lapins a deux mois et il engendre un autre couple de lapins. On note alors
. Plaçons-nous maintenant au mois
et cherchons à exprimer ce qu'il en sera deux mois plus tard
:
désigne la somme des couples de lapins au mois
et des couples nouvellement engendrés. Or, n'engendrent au mois
que les couples pubères, c'est-à -dire ceux qui existent deux mois auparavant. On a donc :
Nous obtenons ainsi la forme récurrente de la suite de Fibonacci : chaque terme de cette suite est la somme des deux termes précédents ; pour obtenir chacun de ces deux termes, il faut faire la somme de leurs termes précédents… et ainsi de suite, jusqu'à ce que ces deux termes soient les deux termes initiaux, et
, qui sont connus.
Les premières valeurs des nombres de Fibonacci, dans l'ordre croissant en commençant avec n = 0, sont donc données par :
Les termes de cette suite sont appelés nombres de Fibonacci.
| 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 | 144 | 233 | 377 | 610 | 987 | 1597 | 2584 | 4181 | 6765 | 10946 | … |
On souhaite établir une expression fonctionnelle de la suite de Fibonacci, c'est-à -dire une expression telle que le calcul du nombre de couples pour une valeur de donnée ne présuppose la connaissance d’aucun nombre de couples pour une quelconque autre valeur de
, ce que ne permet pas la formule de récurrence. Comme la suite de Fibonacci est récurrente d’ordre deux, on peut écrire son équation caractéristique. On obtient une équation du second degré :
Le calcul du discriminant de cette équation donne les deux solutions du polynôme :
Les suites et
engendrent alors l'espace vectoriel des suites vérifiant un + 2 = un + 1 + un. Il en résulte que :
Les conditions initiales conduisent au système suivant :
Ce qui donne le résultat suivant :
Nous obtenons finalement l'expression fonctionnelle recherchée, qui porte le nom de formule de Binet :
Il existe d'autres démonstrations telles que la transformation en Z et la technique des fonctions génératrices.
Remarquons qu'une fois découverte cette formule se démontre aussi par récurrence.
En général, on n'étudie pas les nombres de Fibonacci pour des valeurs négatives de n, bien qu'ils existent et soient facilement déterminables avec la formule récurrente. Il existe ainsi une règle très simple pour calculer ces nombres quand n < 0 :
Comme l'a remarqué Johannes Kepler, le taux de croissance des nombres de Fibonacci, c'est-à -dire , converge vers le nombre d'or, noté
. Mathématiquement, le résultat s'obtient ainsi :
| (en simplifiant par |
||
| (comme |
Plus précisément, quand tend vers l'infini, le second terme tend vers zéro car
, ainsi les nombres de Fibonacci se comportent comme une exponentielle multipliée par le facteur
, soit
.
En fait, dès le rang , le deuxième terme
est assez petit pour que les nombres de Fibonacci puissent être obtenus uniquement à partir du premier terme, en arrondissant à l'entier le plus proche.
Calculer les nombres de Fibonacci à partir du nombre d'or est une possibilité très pratique. Néanmoins, la précision de calcul de la racine carrée génère des erreurs d'arrondis pour des valeurs assez grandes dépendant du système utilisé. En général, on obtient les bonnes valeurs jusqu’à , sur ordinateur ou sur calculatrice.
Notons qu’au-delà de , les calculs dépassent les possibilités de calcul en notation entière, et sont alors représentés en notation scientifique. Les premiers chiffres significatifs sont alors de nouveau bien représentés par cette formule.
Détail d’un exemple d'application faisable à partir d'une calculatrice : Calcul de .
Le nombre d’or vaut :
Appliquons la formule de Binet, (en ne retenant que le terme significatif) soit :
Arrondissons à l’entier le plus proche soit :
L'implémentation récursive naïve qui suit la définition de la suite de Fibonacci est immédiate. En Python, cela donne :
def fibo(n): if (n <= 1): # cas de base return n # si n=0 return 0 si n=1 return 1 else: # récurrence return fibo(n - 1) + fibo(n - 2)
Ce n'est cependant pas une façon judicieuse de calculer la suite de Fibonacci, car on calcule de nombreuses fois les mêmes valeurs (à moins d'employer une technique de mémoization). Le temps de calcul s'avère exponentiel.
Un moyen bien plus efficace de calculer la suite de Fibonacci consiste à calculer simultanément deux valeurs consécutives de la suite, c'est-à -dire en commençant avec les deux premières valeurs 0 et 1, et en remplaçant répétitivement le premier nombre par le second, et le second nombre par la somme des deux.
En Python, un tel algorithme itératif donne :
def fibo(n): f_n_1 = 1 f_n = 0 for i in range(n): # n fois f_n_1, f_n = (f_n, f_n + f_n_1) return f_n
De manière équivalente, on peut écrire une fonction récursive terminale :
def fibo(n, f_n_1 = 1, f_n = 0): if (n == 0): # cas de base return f_n else: # récurrence return fibo(n - 1, f_n, f_n + f_n_1)
Le temps de calcul est à chaque fois proportionnel à n et l'espace mémoire occupé constant.
En utilisant la relation matricielle suivante, que l'on montre par récurrence :
ou avec les #Propriétés de la suite de Fibonacci, on obtient :
En prenant bien soin de ne pas calculer deux fois les mêmes éléments, on obtient alors un algorithme dont le temps de calcul est proportionnel au logarithme de n. Voici un exemple de programme en Python :
def fibo2(n): """Renvoie F_{n-1}, F_n""" if (n == 0): # cas de base return 1, 0 # F_{-1}, F_0 else: # récurrence f_k_1, f_k = fibo2(n//2) # F_{k-1}, F_k avec k = n/2 f2_k = f_k**2 # F_k^2 if n%2 == 0: # n pair return f2_k + f_k_1**2, f_k*f_k_1*2 + f2_k # F_{2k-1}, F_{2k} else: # n impair return f_k*f_k_1*2 + f2_k, (f_k + f_k_1)**2 + f2_k # F_{2k}, F_{2k+1} def fibo(n): """Renvoie F_n""" return fibo2(n)[1]
En retravaillant les relations de récurrence pour le cas pair on obtient :
Et donc :
Une façon particulièrement curieuse d'obtenir la suite de Fibonacci est la suivante. On considère la liste de fractions [23/95, 57/23, 17/39, 130/17, 11/14, 35/11, 19/13, 1/19, 35/2, 13/7, 7]. Si on part d'un entier de la forme 2F(n − 1)3F(n) et si on le multiplie itérativement par la première fraction qui redonne un résultat entier, alors le premier nombre entier de la suite ainsi obtenue qui n'aura que 2 et 3 comme facteurs premiers sera le nombre 2F(n)3F(n + 1).
Par exemple, si on part de 18 = 2132, on obtient successivement :
Si on itère le procédé, on verra défiler les nombres de Fibonacci dans les exposants des puissances de 2 et 3 décomposant les nombres ainsi obtenus.
La suite de Fibonacci, ainsi définie, présente de remarquables propriétés. En voici quelques-unes, données avec leur démonstration (celles-ci font en général appel au raisonnement par récurrence). Nous donnons également quelques propriétés liant la suite de Fibonacci et les nombres de Lucas.
Propriété 1 :
Par récurrence d'ordre 2 sur
Propriété 2 :
Par récurrence sur
Propriété 3 :
Par récurrence sur k
Propriété 4 :
Soient p et q deux entiers naturels. Soit et
Propriété 5 :
Par récurrence d'ordre 2 sur n
Propriété 6 :
Propriété 7 :
On distinguera deux cas
Propriété 8 :
Propriété 9 :   (identité de Cassini)
En remplaçant k par n - 1 dans la propriété 3
En multipliant par (-1) et en remplaçant par 1
Propriété 10 :
Par récurrence sur n.
Propriété 11 :
Par récurrence sur n
Propriété 12 : où les
sont des coefficients binomiaux.
En réalité, la somme n'est pas infinie car tous les sont nuls pour k > n - k mais on sommera sur
pour faciliter les démonstrations.
Par récurrence d'ordre 2 sur n.
Propriété 13 :
Par récurrence sur
Propriété 14 :
Il suffit de remplacer par son expression en fonction de
et
, et de simplifier l'expression.
On ignore s'il existe une infinité de nombres de Fibonacci premiers. On sait que divise
(voir Propriétés, Propriété 2), et donc que, pour tout
, si
est premier, alors
est premier, mais la réciproque est fausse. Le plus grand nombre de Fibonacci premier connu est
qui possède 126377 chiffres.
Il existe des suites vérifiant en même temps les trois conditions suivantes :
Les plus petits exemples connus sont déterminés par :
Par récurrence sur N que l'on considéra comme la longueur horizontale du rectangle 2×N :
Il existe plusieurs voies pour généraliser la suite de Fibonacci : on peut modifier les valeurs initiales, modifier les coefficients de la relation de récurrence ou modifier le nombre de termes (ou ordre) de la relation de récurrence.
Ce sont des suites qui conservent la même relation de récurrence mais dont les termes initiaux ont changé. Comme l'a démontré la première partie, ces suites sont des combinaisons linéaires des deux suites géométriques et
où φ est le nombre d'or. Le quotient de deux termes consécutifs tend toujours vers φ.
Parmi ces suites de nombres, il faut signaler les nombres de Lucas obtenus en choisissant comme initialisation : et
. Cela donne la suite 2, 1, 3, 4, 7, 11, 18, 29, … On trouve parfois une initialisation
et
qui ne consiste qu'à décaler la suite d'un rang. Ces nombres interviennent dans la résolution d'équations diophantiennes. Ils sont très liés à la suite de Fibonacci, en particulier par la relation suivante :
pour tout entier n strictement positif (voir Propriétés, Propriété 5).
Ce sont les suites où la relation de récurrence a changé : elle est devenue
Elles sont de deux types selon que l'initialisation est de u0 = 0 et u1 = 1 ou qu'elle est v0 = 2 et v1 = P.
La suite de Fibonacci est alors une suite u de Lucas de paramètres P = 1 et Q = 1. La suite des nombres de Lucas est alors une suite v de Lucas de paramètres P = 1 et Q = 1.
Ce sont des suites dont la relation de récurrence est d'ordre k. Un terme est la somme des k termes qui le précèdent
Parmi ces suites, on distingue la suite de Tribonacci (récurrence d'ordre 3) et la suite de Tetranacci (récurrence d'ordre 4). Selon ce nouveau classement de suites, la suite de Fibonacci est une suite de 2-bonacci.
Si on modifie tout à la fois (initialisation, récurrence, ordre) on arrive à l'ensemble très général des suites à récurrence linéaire.
Cet article est issu de l'encyclopédie libre Wikipedia.