{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![En tête general](img/En_tete_general.png)\n", "\n", "\n", "*(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/*\n", "\n", " Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# La suite de Fibonacci \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sommaire\n", "\n", "1. Définition par récurrence de la suite de Fibonacci.
\n", "2. Formule de Binet : calculs directs des termes de la suite.
\n", "3. Complément sur la suite de Fibonacci : Quotients de termes successifs. (Tale Spé Math)
\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Définition par récurrence de la suite de Fibonacci." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "On considère l'évolution d'une population (fictive) de lapins, régie par les règles suivantes :\n", "\n", "
\n", "Activer la cellule ci-dessous pour obtenir une illustration dynamique des premiers mois d'observation.
\n", "Pour faire apparaître et activer l'animation, sélectionner la cellule ci-dessous et valider avec SHIFT+Entrée.
\n", "Vous pouvez ensuite utiliser les menus cinématiques :\n", "\n", "![Menus_animation](img/menus_animation_GeoGebra.png)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Sélectionner cette zone puis SHIFT+ENTREE\n", "from IPython.display import display, HTML ; display(HTML('fig_dyn_GeoGebra/Fibonacci.html'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "On 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", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__1.1. Soit $n \\in \\mathbb{N}$. Exprimer $F_{n+2}$ en fonction de $F_{n+1}$ et $F_n$.__\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__1.2. Exécuter les cellules Python suivantes. Pour chacune, expliquer ce que permet d'obtenir la syntaxe proposée.__\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Fibo = [1,1,2,3,5]\n", "Fibo " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Fibo[-1]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Fibo[-2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "a = Fibo[-1]+Fibo[-2]\n", "Fibo.append(a)\n", "\n", "Fibo" ] }, { "cell_type": "markdown", "metadata": {}, "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 suite [1,1] que l'on complètera ensuite progressivement à l'aide d'une boucle." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Écrire ici la fonction Fibonacci\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "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}$.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Écrire ici un appel à la fonction Fibonacci\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Formule de Binet : calculs directs des termes de la suite." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Notations :\n", " \n", " Remarque :
\n", " Le nombre $\\phi$ ainsi défini s'appelle le nombre d'or.\n", "
\n", "\n", "\n", "
\n", "On pose $\\displaystyle \\phi=\\frac{1+\\sqrt{5}}{2}$ et $\\displaystyle \\psi=\\frac{1-\\sqrt{5}}{2}$, et on considère :\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "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.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sympy import sqrt,simplify\n", "\n", "sqrt(5) # syntaxe pour la racine carrée de 5" ] }, { "cell_type": "markdown", "metadata": {}, "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$.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Utiliser ces zones de saisies pour créer phi et psi, puis pour définir u et v\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__2.2. Exécuter les cellules suivantes. Qu'observe-t-on ?__\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "simplify( (u(3)-v(3))/sqrt(5) )" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "simplify( (u(4)-v(4))/sqrt(5) )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "La formule de Binet affirme que pour tout $n \\in \\mathbb{N}$ ; $\\displaystyle F_{n} = \\frac{u_{n}-v_{n}}{\\sqrt{5}} $. \n", "
\n", "\n", "2.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" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Zone pour les saisies Python (version 1ère Spé Math)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "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$.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Écrire ici la fonction F\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\quad$__b. Effectuer une saisie Python pour calculer $F_{10}$, puis pour calculer $F_{50}$.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Effectuer ici les appels à la fonction F\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Complément sur la suite de Fibonacci : Quotients de termes successifs. (Tale Spé Math)" ] }, { "cell_type": "markdown", "metadata": {}, "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" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "float(F(21)/F(20))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "float(F(101)/F(100))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "float(phi)" ] }, { "cell_type": "markdown", "metadata": {}, "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" ] }, { "cell_type": "markdown", "metadata": {}, "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" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\quad\\;$__c. Conclure : Quelle est la limite de $\\displaystyle \\frac{F_{n+1}}{F_n}$ quand $n$ tend vers $+\\infty$ ?__\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Fibonacci](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.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/*\n" ] } ], "metadata": { "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 2 }