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\).

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