Calcul des termes d'une suite définie par récurrence

Clemarze Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

J'ai un QCM de python à faire, mais j'ai beaucoup de mal. Serait-il possible qu'une personne m'aide à le résoudre ? 

J'ai par exemple cette question : 

Calculer le terme d'indice {962} de la suite (u_n) définie par :
u_{n+1}={12.0\cdot \sin \left( u_{n}+2.0\cdot n \right)}, \ u_0={2.0}

Vous donnez votre réponse comme un décimal avec au moins cinq chiffres significatifs.

Je ne vois pas qu'elle programme je peux faire ?

En vous remerciant.

A voir également:

5 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
0
Clemarze
 

Bonjour, 

Mais Ducoup pour la question que j’ai posé sur les suites je ne vois pas dutout comment faire j’ai essayé de la faire mais je ne vois pas comment faire des suites en Python ?

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

Tu connais bien Python?

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Bonjour,

C'est pas Ducoup, c'est du coup :-)

Mais avant de la programmer en Python, est-ce que tu sais le faire sur le papier ?

0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 

Bonjour,

Peut-être devrais-tu commencer par chercher comment écrire une fonction récursive en python ? Et normalement la suite devrait être assez naturelle.

Pour rappel, la fonction sinus en python correspond à math.sin

from math import sin

print(sin(0))

Bonne chance

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

L'utilisation d'une fonction récursive me semble une distraction gaspilleuse dans ce contexte.

0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Ah bon ? Pourtant u(n+1) dépend de u(n) donc à moins d'avoir une forme close de u(n) je ne vois pas trop comment tu t'en sors sans fonction récursive.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention  
 

u(n+1)=u(n)*(n+1)
u1=1

Je peux faire avec une fonction récursive, je préfère faire avec une boucle.  Moins gourmand, et plus accessible pour un débutant.

def factrec(n):
    if n<2:
        return 1
    else:
        return n*factrec(n-1)
def factloop(n):
    f=1
    for i in range(2,n+1):
        f=f*i
    return f
print(factrec(5))
print (factloop(5))
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention  
 

Ce qui compte, pour moi, ce n'est pas la facilité d'écriture, c'est la compréhension des concepts.  De mon point de vue, le pire, c'est d'écrire sans comprendre.

Je pense qu'un débutant doit bien maitriser les concepts itératifs avant de passer aux concepts récursifs.

1
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Dans l'absolu je suis d'accord, mais fait amusant, le premier langage que ma promotion a vu en école d'ingénieur était... OCamL... donc tout en récursif, y compris parcourir une liste :-) L'avantage c'est qu'on était au point sur les critères d'arrêts après ça :D

1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PierrotLeFou
 

Je suis d'accord avec yg_be.
Bien sûr, la solution récursive est plus élégante, mais la solution itérative est aussi simple dans le cas présent.
Le terme courant ne dépend que du terme précédent qui peut être accumulé dans une simple variable.
Même un problème comme la suite de Fibonacci se fait facilement en itératif.

0