Suites#

Les fonctions, les boucles et les listes prennent ici un sens très concret : calculer plusieurs termes d’une suite, suivre leur évolution et conserver les valeurs obtenues.

Dès la première

Suite définie par une formule explicite#

Une formule explicite donne directement \(u_n\) en fonction de \(n\). Pour \(u_n=2n+3\), une fonction Python traduit la formule.

Exemple
Six termes d’une suite explicite
Prêt
Sortie

La boucle parcourt les rangs 0 à 5. Il s’agit donc des six premiers termes lorsque la suite commence à \(u_0\). Décris maintenant l’algorithme en langage naturel, sans employer les mots def, for ou print : quelles valeurs sont parcourues, quel calcul est effectué et quel résultat est produit à chaque étape ?

Une autre suite peut être étudiée en changeant uniquement la formule.

Exemple
Suite des carrés
Prêt
Sortie

Quelle suite est définie ? Ajoute le rang dans l’affichage sans modifier la fonction u.

Mise en pratique

Créer une fonction définissant

\[u_n=\frac{5n-2}{4+(-1)^n}\]

et afficher les six premiers termes. En Python, \((-1)^n\) s’écrit (-1)**n.

À toi
Suite explicite
À faire
Sortie

Suite définie par récurrence#

On considère :

\[u_0=2 \qquad\text{et}\qquad u_{n+1}=u_n+3.\]

Si l’on utilise seulement cette relation de récurrence, il faut calculer les termes dans l’ordre : chaque nouveau terme dépend du précédent.

Exemple
Calculer des termes successifs
Prêt
Sortie

u₀2
+ 3
u₁5
+ 3
u₂8
+ 3
u₃11

L’ordre des deux lignes dans la boucle est essentiel : on affiche le terme actuel avant de calculer le suivant. Échange-les temporairement et explique le décalage observé.

Un rang décalé à corriger#

Pour la même suite, ce programme annonce u(0) = 5 alors que \(u_0=2\). Aucune erreur Python n’apparaît : c’est l’ordre des instructions qui pose problème.

À corriger
Afficher le bon terme au bon rang
Erreur attendue
Sortie

Comment chercher ?

Suivre uniquement le premier passage : n vaut 0, mais u est modifié avant l’affichage. Il faut décider si la valeur associée au rang courant doit être affichée avant ou après le calcul du terme suivant.

Un deuxième exemple#

Pour la suite géométrique :

\[u_0=1 \qquad\text{et}\qquad u_{n+1}=2u_n,\]

seule la formule de mise à jour change.

Exemple
Suite géométrique
Prêt
Sortie

Le sixième terme peut être prévu avant l’exécution. Avec 0,5 à la place de 2, le comportement devient très différent.

Mise en pratique

On considère \(u_0=0{,}1\) et \(u_{n+1}=u_n^2+0{,}5\). Afficher les six premiers termes en respectant leur rang.

À toi
Suite récurrente
À faire
Sortie

Mémoriser les termes#

Afficher une valeur ne permet pas de la réutiliser plus tard. Une liste peut conserver tous les termes calculés.

Exemple
Stocker une suite explicite
Prêt
Sortie

Pour une suite récurrente, on ajoute le terme actuel avant de calculer le suivant.

Exemple
Stocker une suite récurrente
Prêt
Sortie

Les indices 0, 3 et −1 correspondent ici aux rangs 0, 3 et 5. Cette correspondance est vraie parce que la liste commence par \(u_0\) et ne saute aucun terme.

Mise en pratique

Avec une formule explicite. Créer une liste contenant les six premiers termes de \(u_n=3(n+2)^2\), puis afficher cette liste.

À toi
Liste de termes explicites
À faire
Sortie

Avec une relation de récurrence. On considère \(u_0=1\) et \(u_{n+1}=-3u_n\). Stocker les six premiers termes dans une liste et l’afficher.

Besoin d’un indice ?

Crée d’abord une liste vide et initialise u avec \(u_0\). À chaque passage dans la boucle, ajoute le terme actuel à la liste avant de calculer le suivant.

À toi
Liste de termes récurrents
À faire
Sortie

Additionner des termes#

Un accumulateur permet de calculer une somme sans conserver tous les termes. Pour \(u_n=2n+1\), le programme suivant calcule \(u_0+u_1+\cdots+u_{10}\).

Exemple
Somme de onze termes
Prêt
Sortie

Remplace 11 par 6 et vérifie le résultat à la main. Une liste serait utile pour garder les termes ; elle n’est pas nécessaire lorsque seule la somme finale est recherchée.

Mise en pratique

Calculer avec une boucle la somme des carrés des entiers de 1 à 20, puis la somme de leurs cubes. Afficher les deux résultats.

À toi
Sommes de carrés et de cubes
À faire
Sortie

La suite de Fibonacci#

Ses deux premiers termes sont \(F_0=0\) et \(F_1=1\). À partir de là, chaque terme est la somme des deux précédents :

\[F_{n+2}=F_{n+1}+F_n.\]

Pour calculer le terme suivant, il faut donc encore connaître les deux termes précédents. Deux variables peuvent les mémoriser ; après le calcul, elles doivent avancer d’un rang sans perdre trop tôt l’ancienne valeur.

Le tableau suivant montre ce déplacement. La troisième colonne est calculée avant de remplacer les deux premières valeurs.

Faire avancer les deux termes mémorisés#

étape

terme précédent

terme actuel

terme suivant

0

0

1

0 + 1 = 1

1

1

1

1 + 1 = 2

2

1

2

1 + 2 = 3

3

2

3

2 + 3 = 5

Mise en pratique

Écrire une fonction fibonacci(n) qui renvoie la liste des n premiers termes. On attend par exemple [0, 1, 1, 2, 3, 5, 8] pour n = 7.

À toi
Premiers termes de Fibonacci
À faire
Sortie

La suite de Syracuse#

On choisit un entier positif \(a\) et on pose \(u_0=a\). Pour calculer le terme suivant, deux règles sont possibles :

\[\begin{split}u_{n+1}= \begin{cases} \dfrac{u_n}{2} & \text{si }u_n\text{ est pair},\\[4pt] 3u_n+1 & \text{si }u_n\text{ est impair}. \end{cases}\end{split}\]

Avec \(u_0=6\), on obtient :

Dans cette activité, le programme s’arrête dès que 1 est atteint. Sans cet arrêt, les termes 1, 4, 2, 1 se répéteraient. La condition « pair » se teste avec le reste de la division par 2. Toutes les valeurs initiales testées jusqu’à présent finissent par atteindre 1, mais personne ne sait encore le démontrer pour tous les entiers positifs : c’est la conjecture de Syracuse.

Mise en pratique

Écrire une fonction syracuse(a) qui renvoie la liste des valeurs obtenues jusqu’au premier 1, valeur initiale et valeur finale comprises. Tester la fonction avec 6, puis avec 15.

À toi
Parcours de Syracuse
À faire
Sortie

Dans le parcours