#!/usr/bin/env python # coding: utf-8 # # Suites - Réseau social InstaBook # ## Présentation de l'activité # - **Niveau de classe :** # - Classe de première de la voie générale (spécialité mathématiques). # - Classe de première de la voie technologique (tronc commun). # - **Références au programme:** # - Spécialité mathématiques de première générale: *Calcul de termes d’une suite, de sommes de termes, de seuil*. # - Tronc commun de première de la voie technologique : *Calcul d'un terme de rang donné d’une suite, d'une somme finie de termes*. # - Tronc commun de première de la voie technologique : *Déterminer une liste de termes d’une suite et les représenter*. # - Tronc commun de première de la voie technologique : *Algorithme de seuil*. # - **Description :** Activité classique d'étude d'une suite arithmético-géométrique mise en contexte. # ## Situation # # Le nouveau réseau social $\texttt{InstaBook}$ avait $100\ 000$ inscrits en janvier $2018$. Chaque mois, on peut estimer que $5\%$ des membres se désinscrivent (on arrondira à l'entier inférieur) et qu'il y a $20\ 000$ nouveaux inscrits. Pour un entier naturel $n$, on note $u_{n}$ le nombre d'inscrits au bout de $n$ mois depuis janvier $2018$. Par exemple $u_{0}$ représente le nombre d'inscrits en janvier $2018$ et $u_{5}$ représente le nombre d'inscrits en juin $2018$. # On a $u_0=100\ 000$ et $\forall n>0,\ u_{n+1}=\textrm{Ent}(0.95\times u_n)+20\ 000$. #
# # Suggestions pédagogiques # #
# # - **Mathématiques débranchées** # - Calculer $u_2$ (sans programmation). # - Expliquer la relation de récurrence entre $u_n$ et $u_{n+1}$. # ## Nombre d'inscrits au bout de $n$ mois # # La fonction `nombreInscrits` prend en paramètre un entier `n` correspondant au nombre de mois écoulés depuis janvier 2018. Elle renvoie la valeur de $u_n$. # In[1]: def nombreInscrits(n): u = 100000 for i in range(n): u = int(0.95*u)+20000 return u print("Nombre d'inscrits au bout de 10 mois :",nombreInscrits(10)) #
# # Suggestions pédagogiques # #
# # - **Compléter un programme** # # Le programme précédent étant fourni en remplaçant les lignes 2 et 4 par `u = ...` et `... = ...`, demander aux élèves de compléter les lignes 2 et 4. . # - **Expliquer un programme** # # Que fait la ligne 4 ? # - **Tester** la fonction`nombreInscrits` pour déterminer le nombre d'inscrits en février $2029$. # # Évolution du nombre d'inscrits # La fonction `tableauNombreInscrits` prend en paramètre un entier `n` correspondant au nombre de mois écoulés depuis janvier 2018. Elle renvoie une liste contenant les nombres d'inscrits tous les mois jusqu'au $n$-ième mois. # In[3]: def tableauNombreInscrits(n): tab = [] u = 100000 for i in range(n): u = int(0.95*u)+20000 tab.append(u) return tab #
# # Suggestions pédagogiques # #
# # - **Compléter un programme** # # Le programme précédent étant fourni en remplaçant la ligne 6 par `...append(...)`, demander aux élèves de compléter la ligne 6. . # - **Expliquer un programme** # # Que fait la ligne 4 ? # - **Tester** la fonction `tableauNombreInscrits` pour différentes valeurs et conjecturer une tendance. # **Représentation graphique du nombre d'inscrits en fonction du temps** # # Le programme suivant permet la représentation des termes de la suite $(u_n)$ en fonction de $n$ pour $n$ allant de 0 à 100. # In[4]: get_ipython().run_line_magic('matplotlib', 'inline') import matplotlib.pyplot as plt n = 100 plt.plot(tableauNombreInscrits(n),'.') plt.show() #
# # Suggestions pédagogiques # #
# # - **Conjecturer** # # Quelle conjecture peut-on émettre sur l'évolution du nombre d'inscrits à long terme ? # ## Calcul de seuil # Le réseau social projette de réaliser des investissements (serveurs, publicité, etc.) à partir de $250\,000$ inscrits. # La fonction `seuil` calcule le nombre de mois nécessaires pour atteindre un nombre d'inscrits `k`. Elle prend en paramètres le nombre `k` d'inscrits à atteindre et renvoie le nombre de mois nécessaires. # In[5]: def f(x): return 0.95*x+20000 def seuil(k): u = 100000 n = 0 while u # # Suggestions pédagogiques # # # # - **Compléter un programme** # # Le programme précédent étant fourni en remplaçant les lignes 7, 8 et 9 par `while ...`, `... = f(...)`,`n = ...`, demander aux élèves de compléter les lignes 7, 8 et 9. # - **Expliquer un programme** # # Que font les lignes 7, 8 et 9 ? # - **Tester** la fonction `seuil` afin de déterminer le nombre de mois au bout desquels il faut réaliser des investissements. # - **Écrire un programme** # # Écrire une fonction permettant de déterminer le nombre de mois au bout desquels il faut réaliser des investissements.