- Suite de fibonacci
-
Suite de Fibonacci
La suite de Fibonacci est une suite d'entiers très connue. Elle doit son nom à un mathématicien italien connu sous le nom de Leonardo Fibonacci 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 :
- « Un homme met un couple de lapins dans un lieu isolé de tous les côté par un mur. Combien de couples obtient-on en un an si chaque couple engendre tous les mois un nouveau couple à compter du troisième mois de son existence ? »
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 :
- le premier mois, il y a juste une paire de lapereaux ;
- les lapereaux ne sont pubères qu'à partir du troisième mois ;
- chaque mois, toute paire susceptible de procréer engendre effectivement une nouvelle paire de lapereaux ;
- les lapins ne meurent jamais (donc la suite de Fibonacci est strictement croissante).
Présentation mathématique
Formule de récurrence
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.
Nombres de Fibonacci
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 ... Expression fonctionnelle
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 :
- et . ( est le nombre d'or).
Les suites et engendrent alors l'espace vectoriel des suites vérifiant un + 2 = un + 1 + un. Il en résulte que :
- ( et sont des constantes à déterminer à partir de et .)
Les conditions initiales et conduisent au système suivant :
Ce qui donne le résultat suivant :
- et .
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.
La suite pour les nombres négatifs
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 :
- si n est pair alors
- si n est impair alors
Ainsi, autour de 0, la séquence est :Limite des quotients
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.
Bases et espaces vectoriels
- La dénomination de « suite de Fibonacci généralisée » est attribuée plus généralement à toute fonction définie sur vérifiant pour tout entier naturel , . Ces fonctions sont précisément celles pour lesquelles il existe des nombres a et b, tels que pour tout entier naturel n, . Ainsi, l'ensemble des suites de Fibonacci est un espace vectoriel, et les suites et en forment une base.
- Le nombre d'or est la racine positive de l'équation du second degré , ainsi . Si on multiplie les deux côtés par , on obtient , donc la fonction est une suite de Fibonacci. La racine négative de l'équation du second degré, , possède les mêmes propriétés, et les deux fonctions linéairement indépendantes et , forment une autre base de l'espace vectoriel.
Algorithmes de calcul des nombres de Fibonacci
Avec la formule de Binet
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 :
Algorithme récursif naïf
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.
Algorithme linéaire
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 et l'espace mémoire occupé constant.
Algorithme logarithmique
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 :
Curiosité algorithmique
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 :
- 18 35/2 = 315
- 315 13/7 = 585
- 585 17/39 = 255
- 255 130/17 = 1950
- 1950 17/39 = 850
- 850 130/17 = 6500
- 6500 19/13 = 9500
- 9500 23/95 = 2300
- 2300 57/23 = 5700
- 5700 23/95 = 1380
- 1380 57/23 = 3420
- 3420 23/95 = 828
- 828 57/23 = 2052
- 2052 1/19 = 108 = 2233
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.
Propriétés de la suite de Fibonacci
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 :
DémonstrationPar récurrence d'ordre 2 sur
- Initialisation
- (rang ) :
- (rang ) : (Définition de la suite de Fibonacci)
- Hypothèses de récurrence :
- (au rang ),
- (au rang ),
- Hérédité (rang ) :
- (Définition de la suite de Fibonacci)
- (Hypothèses de récurrence)
- (Factorisation)
- (Définition)
Propriété 2 :DémonstrationPar récurrence sur
- Initialisation (rang ) : (vrai car tout entier naturel divise 0)
- Hypothèse de récurrence : au rang ,
- Hérédité (rang ) :
- (Propriété 1)
- (Hypothèse de récurrence)
- Corollaire : si et est premier, est premier.
- En effet, supposons composé. Si est un diviseur propre de , on a d'après la propriété 2 : , contrairement à l'hypothèse que est premier. Donc est premier.
- On peut écrire le corollaire comme suit, en désignant par l'ensemble des nombres premiers :
- La réciproque est fausse, car .
Propriété 3 :DémonstrationPar récurrence sur k
- Initialisation (rang k = 0) : et
- Hypothèse de récurrence : au rang k,
- Hérédité (rang k + 1) :
- (Définition de la suite de Fibonacci)
- (Associativité, commutativité)
- (Hypothèse de récurrence pour et )
Propriété 4 :DémonstrationSoient p et q deux entiers naturels. Soit et
- et donc et (Propriété 2), d'où nous tirons que , et donc .
- La généralisation du théorème de Bézout nous permet d’affirmer qu’il existe deux entiers naturels a et b () tels que ou . Supposons que (une démonstration analogue peut être faite pour l'autre cas). D'autre part, et donc et (Propriété 2). Comme en divise aussi toute combinaison linéaire, c'est-à-dire (Propriété 3), soit donc autrement dit . Or tout terme de la suite de Fibonacci est positif ou nul, nous en concluons que .
- En particulier, c.-à-d. que
Propriété 5 :- (Précision : les nombres de Lucas ont même relation de récurrence mais ont pour initialisation et )
DémonstrationPar récurrence d'ordre 2 sur n
- Initialisations
- (n = 1) : et
- (n = 2) : et
- Hypothèses de récurrence :
- au rang n,
- au rang n+1,
- Hérédité (rang n + 2) :
- (Définition de la suite de Fibonacci)
- (Associativité, commutativité)
- (Hypothèses de récurrence)
- (Définition des nombres de Lucas)
Propriété 6 :Démonstration- (définition des nombres de Lucas)
- (simplification)
- (Propriété 5)
- (Définition de la suite de Fibonacci)
- (Simplification, définition de la suite de Fibonacci)
- (Simplication)
Propriété 7 :DémonstrationOn distinguera deux cas
- Pour n = 0 : et
- Pour n > 0,
- (Propriété 1)
- (Factorisation)
- (Propriété 5)
Propriété 8 :- par application directe de la propriété 1 pour p = n et q = n -1
Propriété 9 : (identité de Cassini)DémonstrationEn remplaçant k par n - 1 dans la propriété 3
En multipliant par (-1) et en remplaçant par 1
Propriété 10 :DémonstrationPar récurrence sur n.
- Initialisation (n = 0) : et
- Hypothèse de récurrence : au rang n,
- Hérédité (rang n + 1) :
- (Calcul sur les sommes)
- (Hypothèse de récurrence)
- (Définition de la suite de Fibonacci)
Propriété 11 :DémonstrationPar récurrence sur n
- Initialisation (n = 0) : et
- Hypothèse de récurrence : au rang n,
- Hérédité (rang n + 1) :
- (Calcul sur les sommes)
- (Hypothèse de récurrence)
- (Définition de la suite de Fibonacci)
Propriété 12 : où les sont des coefficients binomiaux.DémonstrationEn 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.
- Initialisation
- (n = 0) : et
- (n = 1) : et
- Hypothèses de récurrence :
- au rang n,
- au rang n + 1,
- Hérédité (rang n + 2) :
-
-
- (Formule du triangle de Pascal)
-
-
-
- Car )
-
-
-
- (Hypothèse de récurrence, changement de variable )
-
- (Hypothèse de récurrence)
- (Définition de la suite de Fibonacci)
- Cela signifie que, dans un triangle de Pascal, les nombres de Fibonacci s'obtiennent en sommant les termes situés sur une diagonale (du bas vers la droite)
Propriété 13 :DémonstrationPar récurrence sur
- Initialisation () :
- Hypothèse de récurrence : au rang ,
- Hérédité (rang ) :
- (Calculs sur les puissances)
- (Distributivité)
- (Hypothèse de récurrence appliquée au cas )
- (Factorisation)
- (Définition de la suite de Fibonacci)
Propriété 14 :DémonstrationIl suffit de remplacer par son expression en fonction de et , et de simplifier l'expression.
Formules closes
- La formule suivante permet de retrouver tous les nombres de Fibonacci (formule de Binet):
- La formule suivante permet de retrouver tous les nombres de Lucas (formule de Maillet):
Bestiaire de formules
Primalité des nombres de Fibonacci
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 à ce jour (avril 2009) est qui possède 341905 chiffres.
Depuis 1964, on connait des suites vérifiant en même temps les trois conditions suivantes :
Par exemple:
- suite A082411 de l’OEIS (John Nicol, 1999) déterminée par :
- suite A083216 de l’OEIS (Herbert Wilf, 1990) déterminée par :
- et suite A083103 de l’OEIS (Robert Graham, 1964; non vérifiée, selon l'OEIS) déterminée par:
Applications
- En poésie, un fib est un petit poème, sorte de haïku, dont le nombre de pieds des premiers vers correspond aux premiers nombres de la suite (1, 1, 2, 3, 5, 8).
- La suite de Fibonacci apparaît dans de nombreux problèmes de dénombrement. Par exemple, le terme d'indice n (pour n supérieur ou égal à 2) de la suite de Fibonacci permet de dénombrer le nombre de façons de parcourir un chemin de longueur n-1 en faisant des pas de 1 ou 2. Ce problème apparaît d'aillleurs très tôt en Inde, sous le nom maatraameru (montagne de cadence), dans le travail du grammairien de Sanskrit Pingala, le Chhandah-shastra, (l'art de la Prosodie), 450 ou 200 av. J.-C.). Le mathématicien Indien Virahanka en a donné des règles explicites au VIIIe siècle. Le philosophe Indien Hemachandra (c.1150) (et aussi Gopala) ont revisité le problème de manière assez détaillée. En Sanskrit en effet, les voyelles peuvent être longues (L) ou courtes (C), et Hemachandra a souhaité calculer combien on peut former de cadences différentes d'une longueur donnée, chaque cadence étant définie par les longueurs des voyelles qui la constituent. Si la voyelle longue est deux fois plus longue que la courte, les solutions sont, en fonction de la longueur totale de la cadence :
-
- 1 C → 1
- 2 CC,L → 2
- 3 CCC, CL, LC → 3
- 4 CCCC, CCL, CLC, ,LCC, LL → 5
- 5 CCCCC, CCCL, CCLC, CLCC, LCCC, CLL, LCL, LLC → 8
- Le nombre de cadences fait apparaître les termes de la suite de Fibonacci. En effet, une cadence de longueur n peut être constituée en ajoutant C à une cadence de longueur n-1, ou L à une cadence de longueur n-2. Ainsi le nombre de cadences de longueur n est la somme des deux nombres précédents de la série. Ce problème est également équivalent au dénombrement des emballages de longueur n donnée, constitué d'articles de longueur 1 ou 2, tel qu'on le trouve par exemple dans The Art of Computer Programming de Donald Knuth.
- Les nombres de Fibonacci interviennent dans l'étude de l'exécution de l'algorithme d'Euclide qui détermine le plus grand commun diviseur de deux entiers.
- Matiyasevich a montré que les nombres de Fibonacci pouvaient être définis par une équation diophantienne, ce qui a conduit à la résolution du dixième problème d'Hilbert. En 1975, Jones en a déduit que, pour des valeurs de x et y entières positives ou nulles, les valeurs positives du polynôme 2xy4 + x2y3 − 2x3y2 − y5 − x4y + 2y étaient exactement les nombres de Fibonacci. Ces valeurs positives s'obtiennent d'ailleurs en attribuant pour valeurs à x et y deux nombres de Fibonacci successifs.
- Les nombres de Fibonacci apparaissent dans la formule des diagonales du triangle de Pascal (voir Propriétés, Propriété 11).
- Une utilisation intéressante des suites de Fibonacci est la conversion des miles en kilomètres. Par exemple, pour savoir combien de kilomètres font 5 miles, il suffit de considérer le et le suivant . 5 miles font environ 8 kilomètres. Cela fonctionne parce que le facteur de conversion des miles aux kilomètres, environ 1,609, est grossièrement égal à ,
- Une bonne approximation d'un rectangle d'or peut être construite à l'aide de carrés dont les côtés sont égaux aux nombres de Fibonacci.
- Une spirale logarithmique peut être approchée de la manière suivante : on commence à l'origine d'un repère cartésien, on se déplace de unités vers la droite, puis de unités vers le haut, on se déplace de unités vers la gauche, ensuite de unités vers le bas, puis de unités vers la droite, etc. Cela ressemble à la construction mentionnée dans l'article sur le nombre d'or. Les nombres de Fibonacci apparaissent souvent dans la nature lorsque des spirales logarithmiques sont construites à partir d'une unité discrète, telles que dans les tournesols ou dans les pommes de pin.
- La plupart des êtres vivants sexués sont issus de deux parents, de sorte que leurs ancêtres à la ne génération, supposés distincts, sont au nombre de 2n. Mais les hyménoptères sont tels que les femelles sont issues de deux parents, et les mâles sont issus d'une mère seulement. Il en résulte que leurs ancêtres à la ne génération sont constitués :
-
- pour les femelles, de mâles et femelles,
- pour les mâles, de mâles et femelles.
DémonstrationPar récurrence sur N que l'on considéra comme la longueur horizontale du rectangle 2×N :
- Initialisation :
- Le rectange 2×1 est un domino 2×1 ; il y a 1 seule façon de paver ce rectangle .
- Supposons qu'il y ait façons de paver le rectangle 2×N.
- Considérons le rectangle 2× :
- Ce rectangle 2×(N+1) peut être construit comme la juxtaposition d'un rectangle 2×(N-1) et de 2 dominos placés horizontalement (la longueur du rectangle d'origine est toujours N+1) ; il y a par hypothèse façons de paver le rectangle auquel on a retiré les 2 dominos.
- Ce rectangle 2×(N+1) peut aussi être construit comme la juxtaposition d'un rectangle 2×N et d'un domino placé verticalement (la longueur du rectangle d'origine est toujours N+1) ; il y a par hypothèse façons de paver le rectangle auquel on a retiré le domino.
- Le nombre de façons de paver le rectangle 2×(N+1) est donc la somme , ce qui termine le raisonnement par récurrence.
Généralisations
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.
Suites de Fibonacci généralisées
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).
Suites de Lucas
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.
Articles détaillés : Suite de Lucas et Nombre de Lucas.Suites de k-bonacci
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.
Voir aussi
Articles connexes
Liens externes
- Divisibilité des nombre de Fibonacci
- Suite de Fibonacci et nombre d'or dans l'ensemble de Mandelbrot
- Suite de Fibonacci dans le dictionnaire des nombres
- Les suites de Fibonacci aléatoires, conférence de Benoît Rittaud à la Cité des sciences et de l'industrie
- (en) Théorème de Zeckendorf
- Portail des mathématiques
Catégorie : Suite d'entiers
Wikimedia Foundation. 2010.