Suite de Fibonacci : encyclopédie mathématiques
Cet article est issu de l'encyclopédie libre Wikipedia.La suite de Fibonacci est une suite d'entiers très connue. Elle doit son nom à Leonardo Fibonacci, dit Leonardo Pisano, un mathématicien italien du XIIIe siècle qui, dans un problème récréatif posé dans un de ses ouvrages, le Liber Abaci, décrit la croissance d'une population de lapins :
Ce problème est à l'origine de la suite dont le n-ième terme correspond au nombre de paires de lapins au n-ème mois. Dans cette population (idéale), on suppose que :
Notons le nombre de couples de lapins au début du mois n. 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 (n + 2) :
désigne la somme des couples de lapins au mois n + 1 et des couples nouvellement engendrés. Or, n'engendrent au mois (n + 2) que les couples pubères, c'est-à -dire ceux qui existent deux mois auparavant. On a donc :
pour tout entier n strictement positif. On choisit alors de poser , de manière que cette équation soit encore vérifiée pour n = 0.
On obtient 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 termes de cette suite sont appelés nombres de Fibonacci (suite A000045 de l’OEIS) :
| … | |||||||||||||||||||||||||||
| 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 | 144 | 233 | 377 | 610 | 987 | 1597 | 2584 | 4181 | 6765 | 10946 | 17711 | 28657 | 46368 | 75025 | ... |
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 linéairement 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 :
où φ est le nombre d'or.
Les suites (φn) et (φ'n) engendrent alors l'espace vectoriel des suites vérifiant un + 2 = un + 1 + un. Il en résulte que :
Les conditions initiales et
conduisent au système suivant :
ce qui donne :
Nous obtenons finalement l'expression fonctionnelle recherchée, qui porte le nom de formule de Binet :
Quand n tend vers l'infini, est équivalent Ã
. Plus précisément, φn tend vers l'infini et φ'n tend vers zéro car | φ' | < 1 < φ.
En fait, dès le rang n = 1, le deuxième terme est assez petit pour que les nombres de Fibonacci puissent être obtenus uniquement à partir du premier terme :
Il existe d'autres démonstrations de la formule de Binet, 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, y compris pour n entier négatif quand la suite est prolongée comme ci-dessous.
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 :
ou plus généralement :
Ainsi, autour de 0, la séquence est :
Comme l'avait déjà remarqué Johannes Kepler[1], le taux de croissance des nombres de Fibonacci, c'est-à -dire , converge vers le nombre d'or, noté φ.
En effet, puisque la suite est équivalente Ã
(cf supra, section Expression fonctionnelle), la suite
est équivalente Ã
qui est donc sa limite.
En fait plus généralement, toutes les suites vérifiant la même relation de récurrence que la suite de Fibonacci (cf infra, section Suites de Fibonacci généralisées) satisfont cette propriété.
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’à = 308 061 521 170 130, 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 1,618 033 988 749 89…, et d'après la formule de Binet,
est l'entier le plus proche du réel
, qui le dépasse à peine. Compte tenu de l'ordre de grandeur de ce réel, le théorème des accroissements finis permet de s'assurer que pour le calculer à 0,5 près par défaut, 1,618 033 988 749 89 est une approximation suffisante de φ.
On trouve que le réel (1,618 033 988 749 89)50/√5 est à peine inférieur à l'entier 12 586 269 025, d'où
si bien que
La mise en œuvre récursive naïve qui suit la définition de la suite de Fibonacci est immédiate en appliquant la fonction donnée par l'algorithme suivant :
fonction fibo(n): // entrée : un nombre entier n // sortie : le terme de rang n de la suite de Fibonacci // // deux premiers cas : fibo(0) est égal à 0 et fibo(1) est égal à 1 si (n <= 1) retourner n // récurrence à partir du terme de rang 2 sinon retourner fibo(n - 1) + fibo(n - 2) fin de la fonction
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_{-1} = 1 f_n = 0 # F_0 = 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): # (n, F_{n-1}, F_n) 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 mais l'espace mémoire occupé n'est pas constant dans le second cas car Python n'optimise pas la récursivité terminale (au contraire du langage Scheme par exemple). La récursivité terminale n'est pas encouragée en Python, qui lui préfère un véritable itérateur !
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 :
Le programme FRACTRAN défini par 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] et appliqué à l'entier 3 génère une suite qui contient tous les termes de la forme 2a3b, où a et b sont deux termes consécutifs de la suite de Fibonacci.
La suite de Fibonacci présente de remarquables propriétés. En voici quelques-unes, démontrées à partir de la formule de Binet ou par récurrence (pour certaines, on peut aussi utiliser le calcul matriciel et les identités données au paragraphe précédent). Nous donnons également quelques propriétés liant la suite de Fibonacci et la suite des nombres de Lucas définie par la même relation de récurrence mais avec pour initialisation
et
, et pour laquelle l'analogue de la formule de Binet est :
.
Propriété 1 : ou encore :
Propriété 2 :
Propriété 3 :
Propriété 4 :
Propriété 5 : (identité de Catalan) et
(identité de Cassini).
Pour prouver la première propriété, il suffit de considérer l'identité de Cassini et de résoudre l'équation du second degré obtenue d'inconnue
, Ã savoir
La suite de Fibonnacci apparaît également comme une suite récurrente du premier ordre, mais non linéaire.
Pour en déduire la fin du corollaire, on fait un petit décalage d'indice dans la formule précédente, en remarquant que les termes de la suite de Fibonacci sont entiers.
Propriété 6 : en particulier
Le cas nk = 0 est immédiat et le cas k < 0 se déduit du cas k > 0. On peut donc supposer k > 0 et .
En particulier,
Propriété 7 : Pour tout entier naturel n différent de 4, si est premier, alors n est premier.
Propriété 8 : où
désigne le PGCD de nombres entiers.
Soient et
(qui sont tous deux positifs ou nuls).
Propriété 9 : En particulier :
Propriété 10 :
Par somme et différence, il revient au même de démontrer que
La seconde égalité est immédiate et la première résulte de la propriété 9 :
Propriété 11 :
Les deux premières égalités s'obtiennent par somme télescopique :
La troisième s'en déduit en les additionnant, de façon différente suivant la parité de 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.
Une première approche de la question de la divisibilité de par un entier a consiste à étudier la suite des restes de
modulo a : cette suite (rn) vérifie (dans Z/aZ) la même récurrence (rn + 2 = rn + 1 + rn) et est donc périodique de période au plus a2 (les longueurs des périodes en fonction de n forment la suite des périodes de Pisano (en) suite A001175 de l’OEIS) ; on en déduit que pour tout a, il existe n inférieur ou égal à a2 tel que
(et donc
) soit divisible par a. Plus précisément, l'étude de cette récurrence dans le corps Z/pZ (où p est un nombre premier) amène à des formules analogues à la formule de Binet, d'où l'on déduit finalement (selon que 5 est ou n'est pas un carré modulo p ; voir la loi de réciprocité quadratique) que
est divisible par 5, et que si p est premier autre que 5,
est divisible par p si p est de la forme 5m+1 ou 5m+4, et
est divisible par p sinon (des résultats un peu plus précis peuvent être obtenus ; ainsi, dans le premier cas,
est divisible par p si (p-1)/2 est pair). Enfin, si p>2 est premier et divise
, pk divise
, et 2k+1 divise
; ces derniers résultats sont des conséquences du lemme de Hensel[2],[3].
On ignore s'il existe une infinité de nombres de Fibonacci premiers. On sait que divise
(voir Propriétés, Propriété 6), et donc que, pour tout
, si
est premier, alors
est premier, mais la réciproque est fausse (
est le premier contre-exemple non trivial). À ce jour (août 2011), le plus grand nombre premier de Fibonacci connu est
[4] et le plus grand nombre de Fibonacci probablement premier connu est
[5], qui possède 341 905 chiffres.
Depuis 1964, on connait des suites vérifiant en même temps les trois conditions suivantes :
Par exemple:
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.
On appelle suite de Fibonacci généralisée toute suite définie par la même relation de récurrence que la suite de Fibonacci, mais dont les termes initiaux sont différents de 0 et 1. Sur le modèle de la démonstration donnée plus haut (voir section Expression fonctionnelle), une telle suite un est encore de la forme αφn + βφ'n où φ est le nombre d'or et φ' = − 1 / φ. Elle est donc équivalente à αφn, si bien que (comme la suite des quotients de la suite de Fibonacci) la suite converge 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é 9).
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.
Le groupe de metal progressif Tool structure le rythme de certaines parties du morceau Lateralus selon une suite de Fibonacci[6].
Le Corbusier et son Modulor, une mesure harmonique à l'échelle humaine applicable universellement à l'Architecture et à la mécanique.
N. Vorobiev, Caractères de Divisibilité, Suite de Fibonacci, coll. Initiation aux Mathématiques, Editions Mir, Moscou, 1973
Cet article est issu de l'encyclopédie libre Wikipedia.