Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Suite par récurrence python

Posté par
oui23175
26-10-20 à 17:22

Bonjour, je bloque depuis un certain temps sur un exercice de programmation python:

Soit la suite (Un) définie par U0=2 et  Un=1.3U(n-1)-n+4  pour tout n>0 , écrire un programme qui affiche le terme de rang n, ce rang étant demandé et saisi en début de programme.

J'ai tenté d'exprimer U(n+1) en fonction de Un et j'ai trouvé U(n+1)=1.3Un-(n+1)+4
soit Un+1=1.3Un-n+3 .
J'ai alors essayé le programme suivant, qui n'affiche pas les bons résultats:

n=int(input("rang=?"))
u=2
for i in range(1,n+1):
   u=1.3*u-n+3
print(u)

Je ne vois pas comment résoudre le problème, si quelqu'un peut m'aider m'aider, merci d'avance .

Posté par
mathafou Moderateur
re : Suite par récurrence python 26-10-20 à 17:38

Bonjour
tu t'es compliqué la vie inutilement et donc tu te trompes
de plus faut pas confondre i (le rang de l'élément courant à calculer au fur et à mesure
et n (le dernier)

c'est directement Un=1.3U(n-1)-n+4

U1 = 1.3 U0 -1 + 4

dans la première exécution de la boucle i = 1 et u contient U0
donc avec directement la formule de l'énoncé c'est bon, on obtient bien U1

( à condition d'utiliser le rang de l'élément courant à calculer, qui est i et pas n !!)

Posté par
oui23175
re : Suite par récurrence python 26-10-20 à 17:55

Merci beaucoup j'ai compris mon erreur!  J'ai remplacé le n par le i dans la boucle et je trouve alors les bons résultats. Faut-il cependant ajouter une condition au programme puisque Un n'est pas définie pour n=0? Je pense à ajouter une condition telle que if n==0:
Print("Un n'est pas définie") est-ce réellement nécessaire ?

Posté par
mathafou Moderateur
re : Suite par récurrence python 26-10-20 à 18:21

Un est parfaitement définie pour n = 0
cela vaut U0 = 2

en ce qui concerne Python si on lui dit n = 0 il va faire la boucle dans un range(1, 1) c'est à dire pour les nombres de 1 à 0 inclus (!!)
la doc Python dit plus ou moins que
>>> list(range(1,1))
[]
liste vide, donc aucune boucle exécutée

donc ça baigne : il donne la valeur initiale inchangée de u qui est justement U0 = 2

mais bof ... la clarté de la chose (devoir se reporter à la doc Python sur des effets de bord de valeurs non usuelles) ne saute pas aux yeux !

Posté par
oui23175
re : Suite par récurrence python 26-10-20 à 18:25

D'accord! Merci beaucoup pour tes réponses cela m'aide vraiment



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !