Bonjour, j'aurais besoin d'aide pour mon exercice de maths sur Python car je ne suis pas très fort sur Python.
Soit (un) la suite définie par u0= 5 et, pour tout entier naturel n, un+1=(4un−1)/(un+ 2)
a) Recopier et compléter le programme ci-dessous pour qu'il affiche la liste des n premiers termes de la suite arrondis au centième.
b) Écrire ce programme dans un éditeur Python
c) Afficher liste(100) puis liste(1000)
Quelles conjectures peut-on émettre sur le sens de variation et sur la convergence de la suite (un) ?
as tu calculé u1 et u2 à la main, juste pour voir ?
au départ, en effet u=5
avec l'instruction L=[u], tu places 5 dans la liste.
c'est bien
ensuite tu fais une boucle for
si tu écris for i in range ( n, n+1) ca veut dire que tu veux passer pour i allant de n à n+1 - 1 soit combien de fois ?
Quand tu passes dans cette boucle la première fois, tu calcules u=(4u-1)/(u+2) , que vas tu obtenir ?
Bonsoir,
De passage, attiré par Python....
En attendant que Leile revienne...
OK pour u1 et u2.
nb : il n'est pas utile de citer mes messages.
la boucle for :
si tu écris for i in range ( n, n+1) ca veut dire que tu veux passer pour i allant de n à n+1 - 1 soit combien de fois ?
Quand tu passes dans cette boucle la première fois, tu calcules u=(4u-1)/(u+2) , que vas tu obtenir ?
inutile de citer mes messages.
oui, pour i allant de n à n+1 c'est juste 1 fois, et oui, en passant dans la boucle une fois tu vas calculer u1.
toi tu veux calculer tous les termes de 1 à n.
tu veux passer dans la boucle pour i allant de ? à ?
donc tu vas écrire for i in range( ?? , ??)
mieux !
on va plutot écrire for i in range (1 , n+1) pour que python aille jusque n compris.
donc ca donne :
def liste(n):
u=5
L=[u]
for i in range(1, n+1):
u = (4*u-1)/(u+2)
L.append(round(u,2))
return L
remarque que j'ai écrit 4*u (au lieu de 4u qui ne va pas pour python).
l'instruction L.append ajoute à la liste L un élement (à chaque tour).
saisis cet algo et fais le tourner pour n = 5 par exemple.
pour le lancer et afficher le résultat, tu peux taper
print (liste(5))
qu'est ce que tu obtiens ?
J'obtiens la liste des 5 premiers termes. [5, 2.71, 2.09, 1.8, 1.63, 1.52]
Merci beaucoup
Et donc si j'ai bien compris pour obtenir la liste (100) et (1000) je dois remplacer n+1 par 100 et 1000 ?
ou plutot, tu lances ton algo avec
print (liste(100)) ou print(liste(1000))
ou bien tu saisis n
et tu écris print(liste(n))...
Et les conjectures que l'on peut émettre sur le sens de variation et la convergence sont :
- la suite un semble décroissante
- la suite un semble converger vers 1
Bonjour
Attention, si on veut que le programme « liste(n) » affiche les n premiers termes de la suite, il faut s'arrêter un cran avant.
En effet, on démarre avec u0, donc on doit s'arrêter à un-1.
La liste L est initialisée avec u0, la boucle « for » doit donc démarrer à 1 et s'arrêter à n-1 inclus.
bonjour alma78,
tu as raison, si on compte u0 comme premier terme, il faut s'arrêter un cran avant.
la boucle for doit alors s'écrire for i in range (1 , n)
heureusement, cela n'impacte pas les conjectures.
non, Lou0115, ca ne veut pas dire que ton programme est faux !
ca veut dire que si tu écris
for i in range (1 , n) tu auras les n premiers termes y compris u0.
si tu écris
for i in range (1 , n+1) tu auras les n premiers termes après u0, ou si tu préfères les n+1 premiers termes y compris u0.
(Donc un terme de plus).
pour n=100, tu afficheras 101 valeurs. Et pour n=1000 tu afficheras 1001 valeurs.
Cela ne change rien à ta conjecture.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :