Tutoriaux : calcul des termes de la suite de Fibonacci
1. Introduction :
La suite de Fibonacci est définie par ses deux premiers termes u(0) et u(1) et par la relation de récurrence : u(n+2) = u(n+1) + u(n) pour tout entier naturel n supérieur ou égal à 0. Le quotient u(n+1)/u(n) converge vers le nombre d'or appelé phi et solution de l'équation du second degré : x² = x + 1.
Cette suite est introduite en 1202 par FIBONACCI. Le problème posé est le suivant : partant d'un couple, combien de couple de lapins obtiendrons-nous après un nombre n de mois sachant que chaque couple produit chaque mois un nouveau couple, lequel ne devient productif qu'après deux mois ? Réponse au bout de n mois, il y aura u(n) couples avec u(0) = u(1) = 1.
2. Le code
Ci-dessous le code qui permet de calculer les n premiers termes de la suite de Fibonacci. Vous pouvez copier et coller ce script (en bleu) dans le panneau action de la première image de la scène principale. Les valeurs de la suite et les approximations successives du nombre d'or sont affichées à l'aide la fonction trace.
Création d'une fonction qui prend 4 arguments : l'argument "precision" permet de définir la précision utilisée pour l'affichage des approximations successives du nombre d'or.
fibonacci = function(u0, u1, n, precision) {
Création d'une boucle : le paramètre i varie entre 2 et n (n inclus) et est incrémenté d'une unité à chaque boucle.
for(var i = 2; i <= n; i++) {
la variable résultat est égale à la somme des termes u0 et u1.
resultat = u1 + u0;
la variable affichage est une chaine de caractère. Le signe + permet la concaténation.
affichage = "u(" + i + ") = " + resultat;
la variable nombre est égale à l'approximation du nombre d'or obtenue en calculant le quotient de 2 termes consécutifs de la suite de Fibonacci. La fonction Math.round renvoie le nombre entier le plus proche.
nombre = Math.round(precision*resultat/u1)/precision;
x += 3 revient à écrire : x = x + 3. Cette ligne de code permet de donner une suite à la chaine de caractères affichage et de comprendre comment phi est calculé.
La fonction trace permet d'afficher la chaine de caractère dans la fenêtre de sortie.
trace(affichage);
Toute la difficulté du script réside dans les deux lignes suivante ! La variable u0 prend la valeur de u1.
u0 = u1;
La variable u1 prend la valeur de la variable resultat.
u1 = resultat;
Fin de la boucle for et fin de la fonction !
}
}
Appel de la fonction Fibonacci avec ses 4 arguments numériques : u(0) = u(1) = 1 ; n = 25 et precision = 1000000000.
fibonacci(1 , 1, 25, 1000000000);
Il était également possible de placer sur la scène principale un champ de texte dynamique puis d'écrire les termes de la suite et les approximations du nombre d'or dans ce champ. C'est bien évidemment ce qu'il faut faire mais j'ai voulu écrire un script qui fonctionnait en faisant un simple copier-coller sans aucun élément sur la scène.
Évidemment pour ce qui est de la présentation des données et de l'interactivité, il y a beaucoup mieux. On peut évidemment étoffer le script afin de pouvoir faire varier les valeurs initiales u(0) et u(1) ainsi que l'indice n comme le montre l'animation suivante :
5. L'animation flash
6. Pour aller plus loin ...
La suite de Fibonacci n'est rien d'autre qu'un exemple de suite de récurrence double et linéaire c'est à dire de la forme : u(n+2) = a x u(n+1) + b x u(n) avec a, b, u(0) et u(1) donnés. Pour calculer les n premiers termes de cette suite, quelques simples modifications de notre script s'imposent.
Voici le script qui permet d'afficher les 30 premiers termes de la suite définie par la relation :
u(n+2) = 2 x u(n+1) - 3 x u(n) avec u(0) = 1 et u(1) = 4.
En espérant avoir été clair et concis ! N'hésitez pas à formuler des critiques sur ce tutoriel, à me dire ce que vous en pensez et à me signaler les erreurs...