Algorithme de calcul des premiers termes d’une suite
Situation
On considère une suite $ \left(u_{n}\right) $ définie par son premier terme $ u_{0} $ et par une relation de récurrence du type $ u_{n+1}=f\left(u_{n}\right) $
On souhaite écrire un algorithme permettant de calculer et d'afficher les termes $ u_{0} $ à $ u_{k} $ où $ k $ est un nombre entré par l'utilisateur.
1. Algorithme
Voici un algorithme répondant à la question pour la suite $ \left(u_{n}\right) $ définie par :
Remarque : Cet algorithme n'est pas le seul possible.
| 1. | Variables | $ i $ et $ k $ sont des entiers naturels |
|---|---|---|
| 2. | $ u $ est un réel | |
| 3. | Entrée | Saisir la valeur de $ k $ |
| 4. | Début traitement : | $ u $ prend la valeur 3 |
| 5. | Afficher $ u $ | |
| 6. | Pour $ i $ allant de $ 1 $ à $ k $ | |
| 7. | $ \quad u $ prend la valeur $ 0,5\times u+2 $ | |
| 8. | $ \quad $ Afficher $ u $ | |
| 9. | Fin Pour | |
| 10. | Fin traitement |
2. Commentaires
Lignes 1 et 2 : On définit 3 variables :
- $ k $ contiendra la valeur saisie par l'utilisateur qui déterminera l'arrêt de la boucle. $ k $ ne sera pas modifié lors du traitement mais gardera une valeur constante
- $ i $ contiendra le rang (indice) du terme que l'on calcule à partir du rang 1. $ i $ variera de $ 1 $ à $ k $
- $ u $ contiendra les valeurs de $ u_{i} $. Notez que l'on définit une seule variable pour l'ensemble des termes de la suites. Au départ cette variable sera initialisée à $ u_{0} $. Puis on calculera $ u_{1} $ qui viendra «écraser» $ u_{0} $. Puis $ u_{2} $ viendra écraser $ u_{1} $ et ainsi de suite...
Ligne 3 : La valeur saisie par l'utilisateur qui déterminera l'arrêt de l'algorithme est stockée dans la variable $ k $
Ligne 4 : On initialise $ u $ en lui donnant la valeur de $ u_{0} $ (ici $ u_{0}=3 $).
Ligne 5 : On affiche la valeur de $ u $ (qui contient actuellement $ 3 $). Cette ligne est nécessaire pour afficher la valeur de $ u_{0} $ car la boucle qui suit n'affichera que les valeurs de $ u_{1} $ à $ u_{n} $.
Ligne 6 : On crée une boucle qui fera varier l'indice $ i $ de $ 1 $ à $ k $. Puisqu'ici on connait le nombre d'itérations $ k $, une boucle Pour a été préférée à une boucle Tant que.
Ligne 7 : On modifie la valeur de $ u $ : La nouvelle valeur de $ u $ sera égale à l'ancienne valeur de $ u $ fois $ 0,5 $ plus $ 2 $. Cela traduit bien la relation de récurrence $ u_{n+1}= 0,5u_{n}+2 $.
Ligne 8 : On affiche le terme que l'on vient de calculer (à savoir $ u_{i} $).
Ligne 9 : On « ferme » la boucle; on retourne à la ligne 6; si $ i $ valait $ k $, la boucle se terminera alors et on passera à la ligne 10.
Ligne 10 : L'algorithme est terminé !
Remarque :Il faut toujours être très attentif au nombre de passages dans la boucle et au nombre d'affichages. Pour vérifier son algorithme, on peut :
- faire « tourner » l'algorithme (c'est à dire créer un tableau contenant les valeurs des variables étape par étape) - voir 3. ci-dessous.
- compter le nombre d'affichages :
Ici on souhaite afficher les valeurs de $ u_{0} $ à $ u_{k} $, c'est à dire $ k+1 $ valeurs.
La ligne 5. effectue un premier affichage (de $ u_{0} $).
La boucle affichera, quant à elle, $ k $ valeurs puisque $ i $ varie de $ 1 $ à $ k $
En tout on a donc bien effectué $ k+1 $ affichages.
3. Résultats
Le tableau ci dessous récapitule les valeurs prises par les variables pour $ k=4 $
| $ k $ | $ i $ | fin de boucle ? | $ u $ |
|---|---|---|---|
| 4 | - | - | 3 |
| 4 | 1 | non | 3,5 |
| 4 | 2 | non | 3,75 |
| 4 | 3 | non | 3,875 |
| 4 | 4 | non | 3,9375 |
| 4 | 5 | oui |
4. Variante
Cette fois, on ne souhaite pas afficher toutes les valeurs de $ u_{0} $ à $ u_{k} $ mais uniquement la valeur $ u_{k} $.
Les modifications à apporter à l'algorithme sont les suivantes :
- On supprime la ligne 5 puisque l'on ne souhaite plus afficher $ u_{0} $
- On supprime la ligne 8 puisque l'on ne souhaite plus afficher tous les termes de $ u_{1} $ à $ u_{n} $
- On ajoute une ligne « Afficher $ u $ » après la boucle pour afficher la dernière valeur calculée dans la boucle (et qui correspond à $ u_{k} $)
On obtient l'algorithme ci-dessous :
| 1. | Variables | $ i $ et $ k $ sont des entiers naturels |
|---|---|---|
| 2. | $ u $ est un réel | |
| 3. | Entrée | Saisir la valeur de $ k $ |
| 4. | Début traitement : | $ u $ prend la valeur 3 |
| 5. | Pour $ i $ allant de $ 1 $ à $ k $ | |
| 6. | $ \quad u $ prend la valeur $ 0,5\times u+2 $ | |
| 7. | Fin Pour | |
| 8. | Afficher $ u $ | |
| 9. | Fin traitement |