(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
On considère l'évolution d'une population (fictive) de lapins, régie par les règles suivantes :Activer la cellule ci-dessous pour obtenir une illustration dynamique des premiers mois d'observation.
- Initialement, il y a un couple de jeunes lapins ;
- Un nouveau couple de lapins doit attendre 1 mois avant d'être adulte et de pouvoir se reproduire ;
- Chaque mois, chaque couple de lapins adulte donne naissance à un nouveau couple de jeunes lapins ;
- Les couples de lapins ne meurent jamais.
#Sélectionner cette zone puis SHIFT+ENTREE
from IPython.display import display, HTML ; display(HTML('fig_dyn_GeoGebra/Fibonacci.html'))
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).
1.1. Soit $n \in \mathbb{N}$. Exprimer $F_{n+2}$ en fonction de $F_{n+1}$ et $F_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.
1.2. Exécuter les cellules Python suivantes. Pour chacune, expliquer ce que permet d'obtenir la syntaxe proposée.
Fibo = [1,1,2,3,5]
Fibo
[1, 1, 2, 3, 5]
Fibo[-1]
5
Fibo[-2]
3
a = Fibo[-1]+Fibo[-2]
Fibo.append(a)
Fibo
[1, 1, 2, 3, 5, 8]
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$.
# Écrire ici la fonction Fibonacci
def Fibonacci(N):
"fonction qui renvoie la liste des premiers termes de la suite de Fibonacci"
L = [1,1]
for k in range(N-2):
L.append(L[-1]+L[-2])
return L
1.4. À l'aide la fonction Fibonacci, obtenir la liste des 30 premiers termes de la suite de Fibonacci $(F_n)_{n \geq 0}$.
# Écrire ici un appel à la fonction Fibonacci
Fibonacci(30)
[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, 121393, 196418, 317811, 514229, 832040]
Notations :Remarque :
- $\displaystyle \phi$ est une lettre grecque qui se lit "phi" ;
- $\displaystyle \psi$ est une lettre grecque qui se lit "psi".
Le nombre $\phi$ ainsi défini s'appelle le nombre d'or.
On pose $\displaystyle \phi=\frac{1+\sqrt{5}}{2}$ et $\displaystyle \psi=\frac{1-\sqrt{5}}{2}$, et on considère :
- la suite $(u_n)_{n \geq 0}$ géométrique de premier terme $u_0=\phi$ et de raison $\displaystyle \phi$.
- la suite $(v_n)_{n \geq 0}$ géométrique de premier terme $v_0=\psi$ et de raison $\displaystyle \psi$.
2.0 Valider la cellule suivante.
$\;\;\;$Les fonctionnalités importées de sympy permettront d'effectuer des calculs avec racines carrées en valeurs exactes.
from sympy import sqrt,simplify
sqrt(5) # syntaxe pour la racine carrée de 5
2.1. Créer des variables Python phi et psi correspondant respectivement à $\phi$ et $\psi$.
$\quad\;\;$Écrire ensuite des fonctions Python u et v d'argument n permettant le calcul de $u_n$ et $v_n$.
#Utiliser ces zones de saisies pour créer phi et psi, puis pour définir u et v
phi = (1+sqrt(5))/2
phi
psi = (1-sqrt(5))/2
psi
def u(n):
return phi**(n+1)
def v(n):
return psi**(n+1)
2.2. Exécuter les cellules suivantes. Qu'observe-t-on ?
On 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$ .
simplify( (u(3)-v(3))/sqrt(5) )
simplify( (u(4)-v(4))/sqrt(5) )
La formule de Binet affirme que pour tout $n \in \mathbb{N}$ ; $\displaystyle F_{n} = \frac{u_{n}-v_{n}}{\sqrt{5}} $.
2.3. Question différenciée suivant le niveau :
Version 1ère Spé Math
À l'aide de saisies Python, calculer $\displaystyle \frac{u_{n}-v_{n}}{\sqrt{5}}$ pour tous les entiers $n$ de 0 jusqu'à 29.
(on appliquera la fonction simplify)
Comparer les résultats avec ceux de la question 1.4.
Pour la suite, on admettra que la formule de Binet est vraie pour tout $n \in \mathbb{N}$.Version Tale Spé Math
a. Démontrer que $\phi$ et $\psi$ sont les racines du polynôme $x²-x-1$.
$\quad$ ($\phi$ et $\psi$ vérifient donc $1+\phi=\phi^2$ et $1+\psi=\psi^2$).
b. À l'aide d'un raisonnement par récurrence, démontrer que la formule de Binet est vraie pour tout $n \in \mathbb{N}$.
Version 1ère Spé Math
Voir la saisie Python ci-dessous. On retrouve les mêmes valeurs que dans la question 1.4.
Version Tale Spé Math
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}$.
b. On note $P(n)$ la propriété : " Pour $0 \leq k \leq n$ ; $\displaystyle F_k=\frac{u_{k}-v_{k}}{\sqrt{5}}$ "
- $\displaystyle \frac{u_{0}-v_{0}}{\sqrt{5}}=\frac{\phi-\psi}{\sqrt{5}}=\frac{1}{\sqrt{5}} \times \left( \frac{1+\sqrt{5}}{2}-\frac{1-\sqrt{5}}{2} \right)=\frac{1}{\sqrt{5}} \times \sqrt{5}=1$
$\displaystyle \frac{u_{1}-v_{1}}{\sqrt{5}}=\frac{\phi^2-\psi^2}{\sqrt{5}}=\frac{1+\phi- \left( 1+\psi \right) }{\sqrt{5}}=\frac{\phi-\psi}{\sqrt{5}}=1$ donc $P(1)$ est vraie.- Supposons que $P(n)$ soit vraie pour un entier $n \geq 1$ fixé.
Alors:
$F_{n+1}=F_n+F_{n-1}$
$\displaystyle F_{n+1}=\frac{\phi^{n+1}-\psi^{n+1}}{\sqrt{5}}+\frac{\phi^{n}-\psi^{n}}{\sqrt{5}}$
$\displaystyle F_{n+1}=\frac{\phi^{n+1}-\psi^{n+1}+\phi^{n}-\psi^{n}}{\sqrt{5}}$
$\displaystyle F_{n+1}=\frac{(\phi+1)\phi^{n}-(\psi+1)\psi^{n}}{\sqrt{5}}$
$\displaystyle F_{n+1}=\frac{\phi^2\phi^{n}-\psi^2\psi^{n}}{\sqrt{5}}$
$\displaystyle F_{n+1}=\frac{\phi^{n+2}-\psi^{n+2}}{\sqrt{5}}$
ce qui prouve que $P(n+1)$ est vraie.- On a démontré que $P$ est fondée pour $n=1$ et héréditaire à partir de ce rang, donc $P(n)$ est vraie pour tout $n \geq 1$.
Ainsi, la formule de Binet est bien démontrée.
# Zone pour les saisies Python (version 1ère Spé Math)
[ simplify( (u(n)-v(n))/sqrt(5) ) for n in range(30) ]
[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, 121393, 196418, 317811, 514229, 832040]
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$.
# Écrire ici la fonction F
def F(n):
return simplify( (u(n)-v(n))/sqrt(5) )
$\quad$b. Effectuer une saisie Python pour calculer $F_{10}$, puis pour calculer $F_{50}$.
# Effectuer ici les appels à la fonction F
F(10),F(50)
(89, 20365011074)
3.1. Exécuter les cellules Python suivantes.
$\quad\;\;$Indiquer ce que permet d'obtenir chaque cellule. Quelle conjecture permettent-elles d'énoncer ?
Les cellules Python permettent d'évaluer $\displaystyle \frac{F_{21}}{F_{20}}$ et $\displaystyle \frac{F_{101}}{F_{100}}$.
Au vu des résultats, on peut conjecturer que $\displaystyle \frac{F_{n+1}}{F_{n}}$ a pour limite $\phi$ quand $n$ tend vers $+\infty$
float(F(21)/F(20))
1.618033985017358
float(F(101)/F(100))
1.618033988749895
float(phi)
1.618033988749895
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$.
$\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$
$\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}}$.
$\quad\;$c. Conclure : Quelle est la limite de $\displaystyle \frac{F_{n+1}}{F_n}$ quand $n$ tend vers $+\infty$ ?
(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/