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.
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.
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
et afficher les six premiers termes. En Python, \((-1)^n\) sâĂ©crit (-1)**n.
Suite définie par récurrence#
On considĂšre :
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.
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.
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 :
seule la formule de mise Ă jour change.
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.
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.
Pour une suite récurrente, on ajoute le terme actuel avant de calculer le suivant.
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.
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.
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}\).
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.
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 :
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.
é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.
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 :
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.
Dans le parcours