• Aucun résultat trouvé

Suites et fonctions en Python – Corrigés

N/A
N/A
Protected

Academic year: 2022

Partager "Suites et fonctions en Python – Corrigés"

Copied!
2
0
0

Texte intégral

(1)

Suites et fonctions en Python – Corrigés

Exemple 1.

1. u1 = 1

5u0+ 1 30 = 1

5 ×8 + 1 = 13

5 etu2 = 1

5u1+ 1 31 = 1

5× 13 5 + 1

3 = 64 75

2. a. Lorsqu’on exécute terme(2), la variable u prend initialement la valeur 8. Ensuite, il n’y a qu’un seul tour de bouclefor(carivarie de 1 et 2−1 = 1 donci ne prend que la valeur 1) et uprend la valeur 1

5×8 + 1 31 = 29

15. On n’obtient donc pas la valeuru2 comme attendu.

b. La fonction proposée ne convient pas en raison de l’intervalle d’itérationrange(1,n).

Lorsqu’on calcule la valeur de un, on va d’abord calculer u1 grâce à la formule de récurrence u1 = 1

5u+ 1

30. Ici, il faut donc que i soit égal à 0. Ensuite, on continue ainsi jusqu’au calcul de un qui se fait à l’aide de la formule un = 1

5 ×un

1 + 1 3n1. Ici, la valeur dei est n−1. Ainsi, il faut itérer dans la boucle forsur des valeurs de i entre 0 et n−1.

On obtient la fonction modifiée suivante : def terme(n):

u=8

for i in range(0,n):

u=1/5*u+1/(3**i) return(u)

ou de façon équivalente

def terme(n):

u=8

for i in range(n):

u=1/5*u+1/(3**i) return(u)

Remarque. On constate donc que la convention en Python qui fait que range(a,b) renvoie les entiers entre a et b-1est en fait parfaitement adaptée au calcul des termes d’une suite.

Exemple 2

def somme(n):

U=1 S=1 K=0

while (K<n-1):

U=2*U-K+1 S=S+U K=K+1 return(S)

Explication. La variable U prend les valeurs successives de la suite (un), la variable S prend les valeurs successives de la somme des premiers termes de (un) et la variableKprend les valeurs successives d’un entier de 0 à n−1. En effet, si on note, pour tout k ∈N, Sk la somme des k premiers termes de la suite (un) alors

(2)

• à l’entrée de la boucle, la variableK à une valeur k;

• on affecte à U la valeur de uk+1 = 2ukk+ 1 ;

• on affecte à S la valeur Sk+uk+1 =Sk+1;

• on affecte à K la valeur k+ 1.

On arrête la boucle whilelorsqu’on a obtenuSn =u0+u1+· · ·+un

1 i.e. lorsque la valeur K en sortie de boucle vautn−1 i.e. lorsque la valeur de K en entrée de boucle vaut n−2. Ceci se traduit par le fait qu’on arrête les itérations quandK vautn−1 pour la première fois i.e. on continue tant que la valeur de K en entrée de boucle est strictement inférieur à n−1.

Exemple 3. En s’inspirant de ce qui a été vu dans l’exercice 1, on obtient la fonction suivante : def terme3(n):

v=1

for i in range(n):

v=9/(6-v) return(v)

Exemple 4. Dans cet exercice, on aurait envie de considérer la fonction suivante : def terme4(n):

u=2 v=10

for i in range(n):

u=(2*u+v)/3 v=(u+3*v)/4 return(u,v)

Cependant, cette fonction ne convient pas car, dans la boucle for, lors du calcul de v, on a besoin de la valeur deutelle qu’elle était à l’entrée de la boucle. Or, cette valeur a été modifiée lors de l’affectation précédente. Ainsi, si u etv ont pour valeurs respectives uk et vk à l’entrée de boucle alors l’affectation u=(2*u+v)/3 donnera la valeur 2un+vn

3 = un+1 à u (ce qui est bien ce qu’on veut) mais, commeu a été modifiée, l’affectationv=(u+3*v)/4 donnera la valeur

2un+1+vn

4 àv (e qui n’est pas ce qu’on veut).

Pour contourner ce problème, on va utiliser une variable supplémentaire pour conserver en mémoire la valeur de u à l’entrée de la boucle.

def terme4(n):

u=2 v=10

for i in range(n):

w=u

u=(2*w+v)/3 v=(w+3*v)/4 return(u,v)

Ainsi, la variable w stocke la valeur de u à l’entrée de la boucle et n’est pas modifiée lors d’une itération donc on peut l’utiliser pour calculer la nouvelle valeur de uet la nouvelle valeur de v.

Remarque. L’affectation u=(2*w+v)/3 pourrait tout aussi bien être u=(2*u+v)/3 puisqu’à cet endroit-là de l’itération la variable u n’a pas encore été modifiée.

Références

Documents relatifs

[r]

[r]

Les instructions dans cette boucle sont répétées tant que la condition est vraie.. La condition est généralement un test d’égalité

[r]

Entourer dans les deux algorithmes (1. et 2.) la/les instructions qui ont été modifiées2. Quelle est la valeur contenue dans la variable P en fin d’exécution

La petite soupe a mangé, La petite chaise a cassé, Sur le petit lit s'est couchée.. Elle s'est réveillée, les

Or pour Marx, ce qui échappe à Aristote, c’est l’élément commun car, par définition, ces deux valeurs d’usage sont disparates, pour devenir valeur d’usage, leur

Expliquer pourquoi cette fonction ne convient pas et proposer une modification qui permette d’obtenir la fonction voulue.