Cours – Suites numériques : définition et programmation
BTS SIO SISR 2e année – Pour aller plus loin – S01 – à lire avant les exercices
Ce que tu dois savoir déjà
- Prérequis : les boucles
POURetTANT QUE(S04 de la 1re année) ; l'écriture d'une fonction en Python. - Outils : Papier, calculatrice, éditeur Python intégré au site
À la fin de ce cours tu sauras
- Définir une suite par une formule explicite ou par récurrence ;
- Calculer des termes à la main et par programme ;
- Représenter une suite par un tableau de valeurs ;
- Reconnaître le sens de variation d'une suite ;
- Choisir entre formule explicite et récurrence.
I. Qu'est-ce qu'une suite ?
Une suite numérique associe à chaque entier naturel \(n\) un nombre réel noté \(u_n\) (on lit « u indice n »). L'entier \(n\) est le rang ; \(u_n\) est le terme de rang \(n\). La suite entière se note \((u_n)\).
Exemple : la place occupée sur un disque à la fin de chaque mois est une suite. À la fin du mois 0, le disque contient 120 Go ; à la fin du mois 1, 135 Go… Le terme de rang \(n\) est la place occupée à la fin du mois \(n\).
Warning
\(u_n\) est le terme de rang \(n\) ; \(u_{n+1}\) est le terme suivant ; \(u_n + 1\) est le terme \(u_n\) augmenté de 1. Ce n'est pas la même chose.
II. Deux façons de définir une suite
Formule explicite
On donne \(u_n\) directement en fonction de \(n\) : \(u_n = f(n)\).
Exemple : \(u_n = 3n + 2\). Alors \(u_0 = 2\), \(u_1 = 5\), \(u_2 = 8\), \(u_3 = 11\), et \(u_{100} = 302\) sans calculer les termes précédents.
Relation de récurrence
On donne le premier terme et une règle qui fait passer d'un terme au suivant : \(u_{n+1} = f(u_n)\).
Exemple : \(u_0 = 1\) et \(u_{n+1} = 2u_n + 1\). Alors \(u_1 = 3\), \(u_2 = 7\), \(u_3 = 15\), \(u_4 = 31\). Pour obtenir \(u_{100}\), il faut calculer tous les termes précédents (ou trouver une formule explicite, ce qu'on apprend à faire dans les séances suivantes).
| Définition | Avantage | Inconvénient |
|---|---|---|
| Explicite | Accès direct à n'importe quel terme | Pas toujours connue |
| Récurrence | Décrit simplement un mécanisme (« chaque mois on ajoute… ») | Il faut tous les termes précédents |
III. Calculer par programme
Formule explicite : une simple fonction.
Récurrence : une boucle qui garde le terme courant.
def u(n):
terme = 1 # u_0
for _ in range(n): # n passages : u_1, ..., u_n
terme = 2 * terme + 1
return terme
Après \(k\) tours, terme vaut \(u_k\) : c'est l'invariant de la boucle. Pour garder tous les termes, on les range dans une liste :
def premiers_termes(n):
termes = [1]
for _ in range(n):
termes.append(2 * termes[-1] + 1)
return termes # premiers_termes(4) donne [1, 3, 7, 15, 31]
IV. Tableau de valeurs
| \(n\) | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| \(u_n = 3n + 2\) | 2 | 5 | 8 | 11 | 14 |
| \(u_n\) avec \(u_0 = 1\), \(u_{n+1} = 2u_n+1\) | 1 | 3 | 7 | 15 | 31 |
V. Sens de variation
Une suite est :
- croissante si \(u_{n+1} \ge u_n\) pour tout \(n\) ;
- décroissante si \(u_{n+1} \le u_n\) pour tout \(n\) ;
- constante si \(u_{n+1} = u_n\) pour tout \(n\).
En pratique, on étudie le signe de \(u_{n+1} - u_n\).
Exemple : \(u_n = n^2 - 4n\). Alors \(u_{n+1} - u_n = (n+1)^2 - 4(n+1) - n^2 + 4n = 2n - 3\). Ce nombre est négatif pour \(n \le 1\) et positif pour \(n \ge 2\). Les premiers termes sont \(0, -3, -4, -3, 0\) : la suite décroît jusqu'à \(u_2\) puis croît à partir du rang 2. Une suite peut ne pas être monotone sur tous les rangs.
Tip
Pour montrer qu'une suite n'est pas croissante, un seul contre-exemple suffit (ici \(u_1 < u_0\)). Pour montrer qu'elle l'est, il faut une preuve valable pour tout \(n\).
VI. Choisir sa définition
- Pour prévoir une valeur lointaine ou comparer deux scénarios : formule explicite.
- Pour décrire un mécanisme (« chaque jour, on ajoute les nouveaux journaux ») : récurrence.
- Pour programmer : une boucle avec récurrence est simple et exacte ; une formule explicite évite la boucle.
Test flash. Avec \(u_0 = 2\) et \(u_{n+1} = 3u_n - 1\), que vaut \(u_2\) ?
Voir la réponse
\(u_1 = 3 \times 2 - 1 = 5\), puis \(u_2 = 3 \times 5 - 1 = 14\).
À retenir
- Une suite associe un terme \(u_n\) à chaque rang \(n\).
- Explicite : \(u_n = f(n)\). Récurrence : \(u_0\) donné et \(u_{n+1} = f(u_n)\).
- En Python : une fonction (explicite) ou une boucle qui garde le terme courant (récurrence).
- Sens de variation : signe de \(u_{n+1} - u_n\).