Chapitre 818 minIntermédiaire
Algorithme de seuil : à partir de quel rang ? (Python, calculatrice, tableur)
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- trouver un seuil avec la table de la calculatrice ou avec un tableur ;
- écrire, compléter et tracer un algorithme de seuil avec une boucle « tant que » ;
- programmer une fonction de seuil en Python ;
- résoudre une inéquation avec le logarithme et justifier le rang trouvé ;
- éviter les erreurs de condition, d'initialisation et de rang.
5 exercices corrigés1 schéma
Un algorithme de seuil calcule les termes d'une suite les uns après les autres, tant qu'une condition n'est pas atteinte, et renvoie le premier rang n pour lequel uₙ dépasse (ou passe sous) une valeur donnée. Il répond à la question la plus fréquente des sujets : « à partir de quelle année… ? ». Ce chapitre montre les quatre façons d'y répondre, la table de la calculatrice, le tableur, la boucle « tant que » en pseudo-code et en Python, et le calcul avec le logarithme, puis les pièges qui coûtent des points.
Le problème du seuil
Le pool tank du NAS de Sorbier Logistique contient 9 TiB d'archives, qui augmentent de 25 % par an, plus 4,3 TiB d'autres données stables. Le seuil de remplissage du pool est de 22,56 TiB (cours TrueNAS) : les archives ne doivent pas dépasser 22,56 − 4,3 = 18,26 TiB. À partir de quelle année les archives dépassent-elles 18,26 TiB ?
Les archives forment la suite géométrique uₙ = 9 × 1,25ⁿ, où n est le nombre d'années depuis 2026. On cherche le plus petit entier n tel que uₙ > 18,26. Comme la suite est croissante, une fois le seuil franchi, tous les termes suivants le dépassent aussi : on cherche le premier rang qui convient.
Avec la calculatrice : la table de la suite
Les calculatrices graphiques courantes ont un menu dédié aux suites, qui affiche la table des termes. Voici les étapes sur trois modèles répandus.
TI-83 Premium CE Edition Python
- Appuie sur
mode, descends à la ligne FONCTION PARAMÉTRIQUE POLAIRE SUITE (la cinquième), sélectionne SUITE avec les flèches et valide avecentrer. Quitte avec2ndemode. - Appuie sur
f(x). Sur la ligne TYPE, laisse SUITE(n). RèglenMin=0, puis saisisu(n)=1.25*u(n-1)(u s'obtient avec2nde7, n avec la toucheX,T,θ,n) etu(nMin)=9. - Appuie sur
2ndefenêtre(déf table) : départ à 0, pas de 1. - Appuie sur
2ndegraphe(table) et descends dans la colonne u(n) jusqu'au premier terme supérieur à 18,26.
Casio Graph 90+E
- Dans le menu principal, ouvre le menu Récurrence (touche
8). - Appuie sur
F3(TYPE), puisF2(an+1) pour une relation de récurrence. - Saisis la relation
a(n+1)=1.25×an: la variable aₙ s'obtient avecF4(n.an…) puisF2(an). Valide avecEXE. - Appuie sur
F5(SET) : premier terme a0 = 9, valeur de départ 0, valeur de fin 10. Valide. - Appuie sur
F6(TABL) : la table des termes s'affiche.
Sur Graph 35+E II, le menu s'appelle RECUR et les touches sont les mêmes.
Casio Graph Math+
- Ouvre le menu 7 Suites.
- Dans Configuration > Type, choisis Un+1 (récurrence).
- Saisis la relation et le premier terme ; les variables n et Un s'obtiennent avec la touche
CATALOG, rubrique Suites. Valide avec Exécuter. - Ouvre l'onglet Table.
Sur les trois modèles, la table donne : u₃ ≈ 17,58 et u₄ ≈ 21,97. Le seuil est franchi au rang 4, soit en 2030.
Avec le tableur
Dans LibreOffice Calc ou Excel :
| A | B | |
|---|---|---|
| 1 | n | uₙ |
| 2 | 0 | 9 |
| 3 | =A2+1 | =B2*1,25 |
| 4 | =A3+1 | =B3*1,25 |
- Écris les en-têtes, puis 0 en A2 et le premier terme 9 en B2.
- En A3,
=A2+1; en B3, la relation de récurrence=B2*1,25. - Sélectionne A3:B3 et recopie vers le bas avec la poignée de recopie : chaque ligne calcule le terme suivant à partir de celui du dessus.
- Lis le premier rang dont la valeur dépasse 18,26.
Pour une suite explicite, écris directement en B2 =9*1,25^A2 et recopie vers le bas. Pour faire apparaître le seuil, ajoute en C2 =SI(B2>18,26;"dépassé";"") et recopie : le premier « dépassé » donne la réponse. Pour une somme cumulée, mets =B2 en C2, puis =C2+B3 en C3, et recopie.
Avec un algorithme : la boucle « tant que »
On ne sait pas à l'avance combien de termes il faudra calculer : c'est le cas typique de la boucle TantQue (while en Python). Le principe :
En pseudo-code, dans les conventions du cours d'algorithmique :
Algorithme SeuilArchives
// Rôle : premier rang n tel que uₙ = 9 × 1,25ⁿ dépasse 18,26
// Sortie : n, le rang cherché
Variables
u : réel
n : entier
Début
u ← 9
n ← 0
TantQue u ≤ 18,26 Faire
u ← 1,25 × u
n ← n + 1
FinTantQue
Afficher(n)
Fin
En Python :
u = 9 # u0, en TiB
n = 0
while u <= 18.26:
u = 1.25 * u
n = n + 1
print(n, u) # 4 21.97265625
La boucle fait 4 tours ; à la sortie, n vaut 4 et u vaut u₄ ≈ 21,97. Pour vérifier qu'un algorithme est juste, fais sa trace : la valeur des variables à chaque test.
| Test n° | u | n | u ≤ 18,26 ? | Action |
|---|---|---|---|---|
| 1 | 9 | 0 | Vrai | On calcule le terme suivant |
| 2 | 11,25 | 1 | Vrai | On continue |
| 3 | 14,0625 | 2 | Vrai | On continue |
| 4 | 17,578125 | 3 | Vrai | On continue |
| 5 | 21,97265625 | 4 | Faux | On sort et on affiche 4 |
Le même modèle pour toutes les suites. Seules l'initialisation, la condition et la mise à jour changent :
| Question | Initialisation | Condition pour continuer | Mise à jour |
|---|---|---|---|
| Archives : premier rang où uₙ > 18,26 | u = 9 | u <= 18.26 | u = 1.25 * u |
| Abonnés : premier rang où aₙ ≥ 1 450 | a = 1000 | a < 1450 | a = 0.8 * a + 300 |
| Portable : premier rang où vₙ < 100 | v = 1200 | v >= 100 | v = 0.7 * v |
| Budget : premier rang où le total cumulé dépasse 100 000 | c = 18000, total = 0 | total <= 100000 | total = total + c puis c = 1.06 * c |
Pour les abonnés, la boucle renvoie 11, comme le calcul du chapitre 7. Pour le budget des licences, elle renvoie 5 : le total dépasse 100 000 € au cours de la cinquième année (101 467,67 €).
En fonction. Pour réutiliser l'algorithme, écris une fonction qui prend les données en paramètres :
def seuil_geometrique(u0, q, s):
"""Premier rang n tel que u0 * q**n > s (avec u0 > 0 et q > 1)."""
u = u0
n = 0
while u <= s:
u = u * q
n = n + 1
return n
print(seuil_geometrique(9, 1.25, 18.26)) # 4
print(seuil_geometrique(45, 1.12, 80)) # 6
Le second appel répond à la question du lien Lyon – Marseille : le trafic de pointe (45 Mbit/s, + 12 % par an) dépasse 80 Mbit/s au rang 6, en 2032.
Avec le calcul : l'inéquation et le logarithme
Pour une suite arithmétique, on résout une inéquation du premier degré (chapitre 2).
Pour une suite géométrique, l'inconnue est en exposant : 9 × 1,25ⁿ > 18,26 ⟺ 1,25ⁿ > 2,0289. On la fait descendre avec le logarithme népérien ln, la fonction de la touche ln de la calculatrice, qui transforme les puissances en produits : ln(qⁿ) = n × ln(q).
1,25ⁿ > 2,0289
n × ln(1,25) > ln(2,0289) (ln est croissante, l'inégalité se conserve)
n > ln(2,0289) / ln(1,25) (ln(1,25) > 0, l'inégalité se conserve)
n > 3,17
Le plus petit entier qui convient est n = 4.
Le logarithme appartient au module « Fonctions d'une variable réelle » de l'EF2 : le cours Fonctions et intégrales le présente en détail. À l'examen, la méthode par l'algorithme ou par la table suffit souvent ; la question précise la méthode attendue.
Les pièges qui coûtent des points
| Piège | Symptôme | Correction |
|---|---|---|
| Condition de la boucle à l'envers | while u > 18.26 ne fait aucun tour et renvoie 0 | Écrire la condition pour continuer : le contraire du but |
| Inégalité stricte ou large | « dépasse » (>) traité comme « atteint » (≥) | Relire l'énoncé : avec while v < 900, on obtient le premier rang où v ≥ 900 |
| Rang et année confondus | « n = 4 » laissé sans conclusion | Conclure avec les mots de l'énoncé : « en 2030 », « au bout de 4 ans » |
| Seuil jamais atteint | Le programme tourne sans fin | Vérifier avec la limite que le seuil est atteignable (chapitre 6) |
| Mise à jour oubliée ou dans le mauvais ordre | n augmente mais pas u, ou le total ajoute le terme suivant au lieu de l'actuel | Faire la trace sur les deux premiers tours |
| Initialisation au mauvais rang | n = 1 alors que u₀ est la valeur de départ | Le couple (u, n) doit toujours correspondre : u contient uₙ |
Exercices
Exercice 1 sur 5 Compléter un algorithme Réussi À revoir
Un serveur vaut 500 € de valeur de revente et perd 15 % de sa valeur chaque année. On veut savoir au bout de combien d'années il vaudra moins de 100 €. Complète l'algorithme, puis donne sa réponse.
u ← 500
n ← 0
TantQue ........ Faire
u ← ........
n ← ........
FinTantQue
Afficher(n)
Voir la réponseMasquer la réponse de l'exercice 1
On cherche u < 100, donc on continue tant que u ≥ 100 ; la mise à jour est u ← 0,85 × u (perdre 15 %, c'est multiplier par 0,85) et n ← n + 1.
u = 500
n = 0
while u >= 100:
u = 0.85 * u
n = n + 1
print(n) # 10
L'algorithme affiche 10 : au bout de 10 ans, le serveur vaut 500 × 0,85¹⁰ ≈ 98,44 €. Au bout de 9 ans, il valait encore 500 × 0,85⁹ ≈ 115,81 €.
Tu avais trouvé ?
Exercice 2 sur 5 Faire la trace Réussi À revoir
Fais la trace de cet algorithme et donne ce qu'il affiche.
u = 2
n = 0
while u < 50:
u = 3 * u - 1
n = n + 1
print(n, u)
Voir la réponseMasquer la réponse de l'exercice 2
| Test | u | n | u < 50 ? |
|---|---|---|---|
| 1 | 2 | 0 | Vrai |
| 2 | 5 | 1 | Vrai |
| 3 | 14 | 2 | Vrai |
| 4 | 41 | 3 | Vrai |
| 5 | 122 | 4 | Faux |
Le programme affiche 4 122 : u₄ = 122 est le premier terme de la suite u₀ = 2, uₙ₊₁ = 3uₙ − 1 qui atteint ou dépasse 50.
Tu avais trouvé ?
Exercice 3 sur 5 Trouver l'erreur Réussi À revoir
Pour savoir quand le serveur de journaux (180 Gio, + 12 Gio par jour) atteindra 900 Gio, un étudiant écrit :
v = 180
n = 1
while v > 900:
v = v + 12
n = n + 1
print(n)
Il obtient 1. Trouve les deux erreurs et corrige le programme.
Voir la réponseMasquer la réponse de l'exercice 3
- La condition est à l'envers : 180 > 900 est faux dès le premier test, la boucle ne tourne pas. On continue tant que le seuil n'est pas atteint :
while v < 900. - L'initialisation est décalée : v = 180 est la valeur au jour 0, donc
n = 0. Avecn = 1, le résultat serait trop grand d'une unité.
v = 180
n = 0
while v < 900:
v = v + 12
n = n + 1
print(n) # 60
Le programme affiche 60, comme la résolution de 180 + 12n ≥ 900 au chapitre 2.
Tu avais trouvé ?
Exercice 4 sur 5 Une fonction de seuil pour les sommes Réussi À revoir
Écris une fonction annees_budget(c0, q, budget) qui renvoie le nombre d'années au bout duquel le coût cumulé d'un contrat (c0 la première année, multiplié par q chaque année) dépasse budget. Teste-la avec le budget des licences : 18 000 €, + 6 % par an, budget de 100 000 €.
Voir la réponseMasquer la réponse de l'exercice 4
def annees_budget(c0, q, budget):
c = c0 # coût de l'année en cours
total = 0
annees = 0
while total <= budget:
total = total + c
c = c * q
annees = annees + 1
return annees
print(annees_budget(18000, 1.06, 100000)) # 5
La fonction renvoie 5 : sur quatre ans, le cumul vaut 78 743,09 € ; sur cinq ans, 101 467,67 €. On ajoute le coût de l'année avant de passer à l'année suivante, sinon le premier coût serait oublié.
Tu avais trouvé ?
Exercice 5 sur 5 Au tableur Réussi À revoir
Pour la liste de diffusion (a₀ = 1 000, aₙ₊₁ = 0,8aₙ + 300), quelles formules écris-tu en A3 et B3 pour obtenir la table, et dans quelle ligne lis-tu le premier rang où aₙ ≥ 1 450 ?
Voir la réponseMasquer la réponse de l'exercice 5
En A2 : 0 ; en B2 : 1000 ; en A3 : =A2+1 ; en B3 : =0,8*B2+300. On recopie A3:B3 vers le bas. Le rang 0 est en ligne 2, donc le rang n est en ligne n + 2 : la valeur 1 457,05 du rang 11 apparaît en ligne 13, première valeur supérieure ou égale à 1 450 (la ligne 12, rang 10, affiche 1 446,31).
Tu avais trouvé ?