{"cells":[{"metadata":{},"cell_type":"markdown","source":"![En tête general](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/En_tete_general.png)\n\n\n© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
\nLes activités partagées sur Capytale sont sous licence Creative Commons.\n\n Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.\n"},{"metadata":{},"cell_type":"markdown","source":"# La suite de Fibonacci (Corrigé)\n"},{"metadata":{},"cell_type":"markdown","source":"### Sommaire\n\n1. Définition par récurrence de la suite de Fibonacci.
\n2. Formule de Binet : calculs directs des termes de la suite.
\n3. Complément sur la suite de Fibonacci : Quotients de termes successifs. (Tale Spé Math)
\n\n"},{"metadata":{},"cell_type":"markdown","source":"## 1. Définition par récurrence de la suite de Fibonacci."},{"metadata":{},"cell_type":"markdown","source":"
\nOn considère l'évolution d'une population (fictive) de lapins, régie par les règles suivantes :\n\n
\nActiver la cellule ci-dessous pour obtenir une illustration dynamique des premiers mois d'observation.
\nPour faire apparaître et activer l'animation, sélectionner la cellule ci-dessous et valider avec SHIFT+Entrée.
\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"#Sélectionner cette zone puis SHIFT+ENTREE\nfrom IPython.display import HTML ; HTML(\"\"\"\"\"\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"
\nOn note $F_n$ le nombre de couples de lapins à l'étape $n$, où $n \\in \\mathbb{N}$ est le rang du mois de l'observation (en considérant que $n=0$ correspond à l'étape initiale).\n
"},{"metadata":{},"cell_type":"markdown","source":"__1.1. Soit $n \\in \\mathbb{N}$. Exprimer $F_{n+2}$ en fonction de $F_{n+1}$ et $F_n$.__\n

\n$F_{n+2}=F_{n+1}+F_{n}$ où $F_{n+1}$ correspond aux couples déjà présents le mois précédent (ils ne meurent pas) et où $F_n$ correspond au nombre de naissance de nouveaux couples de lapin, égal au nombre de couples de lapins adultes le mois précédent, c'est à dire au nombre total de lapins il y a deux mois."},{"metadata":{},"cell_type":"markdown","source":"__1.2. Exécuter les cellules Python suivantes. Pour chacune, expliquer ce que permet d'obtenir la syntaxe proposée.__\n

\n\nLes cellules permettent :\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"Fibo = [1,1,2,3,5]\nFibo ","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"Fibo[-1]","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"Fibo[-2]","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"a = Fibo[-1]+Fibo[-2]\nFibo.append(a)\n\nFibo","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__1.3. Écrire une fonction Python Fibonacci qui reçoit N non nul en argument et qui renvoie la liste des termes $F_n$ pour $0 \\leq n \\leq N$.__\n
\n$\\quad\\;$Aide : On pourra initialiser une liste [1,1] que l'on complètera ensuite progressivement à l'aide d'une boucle."},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la fonction Fibonacci\n\ndef Fibonacci(N):\n \"fonction qui renvoie la liste des premiers termes de la suite de Fibonacci\"\n L = [1,1]\n for k in range(N-2):\n L.append(L[-1]+L[-2])\n return L\n ","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__1.4. À l'aide la fonction Fibonacci, obtenir la liste des 30 premiers termes de la suite de Fibonacci $(F_n)_{n \\geq 0}$.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici un appel à la fonction Fibonacci\nFibonacci(30)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2. Formule de Binet : calculs directs des termes de la suite."},{"metadata":{},"cell_type":"markdown","source":"
\n Notations :\n \n Remarque :
\n Le nombre $\\phi$ ainsi défini s'appelle le nombre d'or.\n
\n\n\n
\nOn pose $\\displaystyle \\phi=\\frac{1+\\sqrt{5}}{2}$ et $\\displaystyle \\psi=\\frac{1-\\sqrt{5}}{2}$, et on considère :\n\n
"},{"metadata":{},"cell_type":"markdown","source":"__2.0 Valider la cellule suivante.__
\n$\\;\\;\\;$__Les fonctionnalités importées de sympy permettront d'effectuer des calculs avec racines carrées en valeurs exactes.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"from sympy import sqrt,simplify\n\nsqrt(5) # syntaxe pour la racine carrée de 5","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__2.1. Créer des variables Python phi et psi correspondant respectivement à $\\phi$ et $\\psi$.
\n$\\quad\\;\\;$Écrire ensuite des fonctions Python u et v d'argument n permettant le calcul de $u_n$ et $v_n$.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"#Utiliser ces zones de saisies pour créer phi et psi, puis pour définir u et v\nphi = (1+sqrt(5))/2\nphi ","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"psi = (1-sqrt(5))/2\npsi","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"def u(n):\n return phi**(n+1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"def v(n):\n return psi**(n+1)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__2.2. Exécuter les cellules suivantes. Qu'observe-t-on ?__\n

\nOn observe que $\\displaystyle \\frac{u_3-v_3}{\\sqrt{5}}=3=F_3$ et $\\displaystyle \\frac{u_4-v_4}{\\sqrt{5}}=5=F_4$ ."},{"metadata":{"trusted":false},"cell_type":"code","source":"simplify( (u(3)-v(3))/sqrt(5) )","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"simplify( (u(4)-v(4))/sqrt(5) )","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"
\nLa formule de Binet affirme que pour tout $n \\in \\mathbb{N}$ ; $\\displaystyle F_{n} = \\frac{u_{n}-v_{n}}{\\sqrt{5}} $. \n
\n\n2.3. Question différenciée suivant le niveau :\n
\n\n
\n Version 1ère Spé Math
\n À l'aide de saisies Python, calculer $\\displaystyle \\frac{u_{n}-v_{n}}{\\sqrt{5}}$ pour tous les entiers $n$ de 0 jusqu'à 29.\n
(on appliquera la fonction simplify)\n
Comparer les résultats avec ceux de la question 1.4.\n
Pour la suite, on admettra que la formule de Binet est vraie pour tout $n \\in \\mathbb{N}$.\n
\n
\n Version Tale Spé Math
\n a. Démontrer que $\\phi$ et $\\psi$ sont les racines du polynôme $x²-x-1$.
\n $\\quad$ ($\\phi$ et $\\psi$ vérifient donc $1+\\phi=\\phi^2$ et $1+\\psi=\\psi^2$).
\n b. À l'aide d'un raisonnement par récurrence, démontrer que la formule de Binet est vraie pour tout $n \\in \\mathbb{N}$.\n
\n \n
\n\n
\nCorrigé :\n
\n Version 1ère Spé Math
\n Voir la saisie Python ci-dessous. On retrouve les mêmes valeurs que dans la question 1.4.\n
\n
\n Version Tale Spé Math
\n a. $x²-x-1$ a pour discriminant $\\Delta = 5 > 0$ donc ce polynôme a deux racines distinctes $\\displaystyle \\phi=\\frac{1+\\sqrt{5}}{2}$ et $\\displaystyle \\psi=\\frac{1-\\sqrt{5}}{2}$.
\n b. On note $P(n)$ la propriété : \" Pour $0 \\leq k \\leq n$ ; $\\displaystyle F_k=\\frac{u_{k}-v_{k}}{\\sqrt{5}}$ \"
\n\n
\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Zone pour les saisies Python (version 1ère Spé Math)\n\n[ simplify( (u(n)-v(n))/sqrt(5) ) for n in range(30) ]","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__2.4.a. À l'aide des fonctions Python u et v, écrire une fonction Python F d'argument n qui permet le calcul direct de $F_n$.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la fonction F\ndef F(n):\n return simplify( (u(n)-v(n))/sqrt(5) )","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"$\\quad$__b. Effectuer une saisie Python pour calculer $F_{10}$, puis pour calculer $F_{50}$.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici les appels à la fonction F\nF(10),F(50)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3. Complément sur la suite de Fibonacci : Quotients de termes successifs. (Tale Spé Math)"},{"metadata":{},"cell_type":"markdown","source":"__3.1. Exécuter les cellules Python suivantes.__
\n$\\quad\\;\\;$__Indiquer ce que permet d'obtenir chaque cellule. Quelle conjecture permettent-elles d'énoncer ?__\n

\nLes cellules Python permettent d'évaluer $\\displaystyle \\frac{F_{21}}{F_{20}}$ et $\\displaystyle \\frac{F_{101}}{F_{100}}$.
\nAu vu des résultats, on peut conjecturer que $\\displaystyle \\frac{F_{n+1}}{F_{n}}$ a pour limite $\\phi$ quand $n$ tend vers $+\\infty$
"},{"metadata":{"trusted":false},"cell_type":"code","source":"float(F(21)/F(20))","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"float(F(101)/F(100))","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"float(phi)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__3.2.a. Vérifier que $\\displaystyle \\left| \\frac{\\psi}{\\phi} \\right|<1$ et en déduire la limite de $\\displaystyle \\left( \\frac{\\psi}{\\phi} \\right)^n$ quand $n$ tend vers $+\\infty$.__\n

\n$\\displaystyle \\left| \\frac{\\psi}{\\phi} \\right|= \\left| \\frac{1-\\sqrt{5}}{1+\\sqrt{5}} \\right| \\simeq 0,38$ donc $\\displaystyle \\left| \\frac{\\psi}{\\phi} \\right|<1$, donc (résultat sur les suites géométriques) :$\\displaystyle\\lim\\limits_{n \\to +\\infty}{ \\left( \\frac{\\psi}{\\phi} \\right)^n }=0$\n"},{"metadata":{},"cell_type":"markdown","source":"$\\quad\\;$__b. Démontrer que pour tout $n \\in \\mathbb{N}$ ; $\\displaystyle \\frac{F_{n+1}}{F_n}= \\phi \\times \\frac{1-\\left( \\frac{\\psi}{\\phi} \\right)^{n+2}}{1-\\left( \\frac{\\psi}{\\phi} \\right)^{n+1}}$.__\n

\n\nPour tout $n \\in \\mathbb{N}$ ;
\n$\\displaystyle \\frac{F_{n+1}}{F_n}=\\frac{\\phi^{n+2}-\\psi^{n+2}}{\\sqrt{5}}\\times\\frac{\\sqrt{5}}{\\phi^{n+1}-\\psi^{n+1}}$
\n$\\displaystyle \\frac{F_{n+1}}{F_n}=\\frac{\\phi^{n+2}-\\psi^{n+2}}{\\phi^{n+1}-\\psi^{n+1}}$
\n$\\displaystyle \\frac{F_{n+1}}{F_n}=\\frac{ \\phi^{n+2} \\left( 1-\\frac{\\psi^{n+2}}{\\phi^{n+2}} \\right) }{\\phi^{n+1} \\left( 1-\\frac{\\psi^{n+1}}{\\phi^{n+1}} \\right)}$
\n$\\displaystyle \\frac{F_{n+1}}{F_n}= \\phi \\times \\frac{1-\\left( \\frac{\\psi}{\\phi} \\right)^{n+2}}{1-\\left( \\frac{\\psi}{\\phi} \\right)^{n+1}}$ \n
\n"},{"metadata":{},"cell_type":"markdown","source":"$\\quad\\;$__c. Conclure : Quelle est la limite de $\\displaystyle \\frac{F_{n+1}}{F_n}$ quand $n$ tend vers $+\\infty$ ?__\n

\n\n$\\displaystyle\\lim\\limits_{n \\to +\\infty}{ \\left( \\frac{\\psi}{\\phi} \\right)^{n+2} }=0 \\;$ et $\\displaystyle\\lim\\limits_{n \\to +\\infty}{ \\left( \\frac{\\psi}{\\phi} \\right)^{n+1} }=0\\;$ donc $\\displaystyle \\lim \\limits_{n \\to +\\infty}{ \\frac{1-\\left( \\frac{\\psi}{\\phi} \\right)^{n+2}}{1-\\left( \\frac{\\psi}{\\phi} \\right)^{n+1}} }=1.$
\nOn en déduit que $\\displaystyle\\lim\\limits_{n \\to +\\infty}{\\frac{F_{n+1}}{F_n}}=\\phi$.\n
"},{"metadata":{},"cell_type":"markdown","source":"![Fibonacci](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/Leonardo_Fibonacci.jpg)\n\n
Leonardo Fibonacci (env. 1175 - env. 1250) est un mathématicien italien qui a donné son nom à la suite de Fibonacci.
"},{"metadata":{},"cell_type":"markdown","source":"© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
\nLes activités partagées sur Capytale sont sous licence Creative Commons.\n

\nDernière modification de l'activité : Juillet 2022"}],"metadata":{"celltoolbar":"Raw Cell Format","kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}