Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 05-07-2019 15:17:54

zizou47
Membre
Inscription : 05-07-2019
Messages : 9

Suite arithmético-géométrique

bonjour, j'ai une questions svp !
1 ) on a :
un+1=3un+1 ; u0 = 0
Question :
Créez une variable u_0 qui a pour valeur u0, puis une variable u_1 qui a pour valeur u1 et enfin une variable u_2 qui a pour valeur u2.

Question  :
Définissez une fonction u_terme qui renvoie la valeur de un.

Question  :
On admet que la suite (un)n∈N est croissante et non majorée. Ecrivez une fonction atteint qui admet un unique paramètre M et qui renvoie le rang N à partir duquel les termes de la suite sont supérieurs à M. (Autrement dit, N est le premier entier tel que uN≥M.)
______
moi j'ai fait :
def uterme(Un):
    u0,u1,u2 = 0,1,4
    for i in range (1,Un+2):
        Un = 3 * Un + 1
    return Un
' pour la 3eme Q'
print(uterme(0))
print(uterme(1))
print(uterme(2))
print(uterme(3))
j'arrive pas a trouver la solution, merci

Hors ligne

#2 05-07-2019 18:30:44

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 13 351

Re : Suite arithmético-géométrique

Bonsoir

Le but de l'exo est d'écrire une fonction u_terme qui admet un seul paramètre M
1. Crois-tu qu'en écrivant
   def u_terne(Un):
   tu es sur le bon chemin ?
   Où est passé ce paramètre M ?
   La comparaison avec M doit décider de l'arrêt des calculs.
   Si dans la fonction, M est inconnu il ne peut exister a aucun test qui dise que Un est devenu strictement supérieur à M.
   Donc ?
  Ta fonction doit être appelée ainsi : u_terme(125):
  la valeur 125, que j'ai choisie arbitrairement  (tu prends ce que tu veux), est récupérée par la fonction si tu écris ça :
  def u_terme(M):
   
2. Pourquoi Un+2 ?

3. Ici tu dois boucler tant que $U_n\leqslant M$
    Il y a deux façons de faire ça ...
    * Soit avec une boucle for et un test d'arrêt avec

    if Un>M:
       return i, Un, M

    * Soit avec une boucle while qui signifie justement... "tant que"
      Je l'écris en français :
      Tant Que Un <= M:
           ajouter 1 à i (ton compteur d'indice)
           Un prend la valeur 3*Un +1
      retourne i, Un, M

Je te propose de chercher sur la base de ces indications.
En attendant, je te mets les deux solutions en spoiler...

Mes deux propositions

1. Avec boucle for


def u_terme(M):
    u0,u1,u2=0,1,4
    Un=u2
    for i in range(3,101):
        Un=3*Un+1
        if Un>M:
            return i, Un, M
   
n, Un, M=u_terme(125) #Appel  de la fonction et récupération des valeurs.
On obtient :
print("Un =",Un,"est supérieur à M =",M,"pour n =",n) # Demande d'affichage des réponses
Un = 364 est supérieur à M = 125 si n = 6
 

2. Avec boucle while :

def u_terme(M):
    u0,u1,u2=0,1,4
    Un,n=u2,3
    while Un<=M:
        Un=3*Un+1
        i=i+1
    return i, Un, M
   
>>> n, Un, M=u_terme(1000)
>>> print("Un =",Un,"est supérieur à M =",M,"si n =",n)
Un = 1093 est supérieur à M= 1000 si n = 7
>>>

Ici, je dois gérer moi-même mon compteur d'indice qui doit augmenter de 1 à chaque tour d'où le i=i+1 qu'on écrit le plus souvent en Python :   i+=1

Questions ?

@+

[EDIT] la boucle while est plus "naturelle" ici : on ne sait pas à l'avance la limite supérieure du compteur i.
En effet, en général dans ce cas la boucle for est indiquée puisqu'elle gère elle-même l'avance du compteur.
Heureusement, dans cet exercice, un augmente très très vite, donc j'ai mis une limite supérieure pas trop élevée dans la boucle for, 101 (et on ne pourra donc aller au-delà de U100...
Et, sauf à prendre un M particulièrement grand, le script sortira de la boucle avant...
Pour information :
$U_{100} = 257688760366005665518230564882810636351053761000$

Dernière modification par yoshi (06-07-2019 06:42:58)


Arx Tarpeia Capitoli proxima...

Hors ligne

#3 06-07-2019 09:18:17

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 13 351

Re : Suite arithmético-géométrique

Re,

Je constate que ici https://www.maths-forum.com/superieur/s … 08425.html celui qui a répondu est passé à côté de 3 choses :

Ecrivez une fonction atteint qui admet un unique paramètre M et qui renvoie le rang N

1. (...) une fonction qui admet un unique paramètre M (...)
2. (...) qui renvoie le rang N (...)
3. Laisser écrire : def u_terme (n):
    n étant le rang cherché que doit renvoyer la fonction (cf return n), il n'est pas logique de le passer en paramètre à cette fonction :
     cf def u_terme(n).
    En effet si on connait cette valeur, la question est sans objet et l'exercice n'en est plus un...

Pour ta culture personnelle, sache qu'il est assez mal vu de poser la même question sur des forums différents...
Ce n'est pas toi ?
Ok ! Tu sauras comme ça... ^_^

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#4 06-07-2019 14:14:00

zizou47
Membre
Inscription : 05-07-2019
Messages : 9

Re : Suite arithmético-géométrique

yoshi a écrit :

Re,

Je constate que ici https://www.maths-forum.com/superieur/s … 08425.html celui qui a répondu est passé à côté de 3 choses :

Ecrivez une fonction atteint qui admet un unique paramètre M et qui renvoie le rang N

1. (...) une fonction qui admet un unique paramètre M (...)
2. (...) qui renvoie le rang N (...)
3. Laisser écrire : def u_terme (n):
    n étant le rang cherché que doit renvoyer la fonction (cf return n), il n'est pas logique de le passer en paramètre à cette fonction :
     cf def u_terme(n).
    En effet si on connait cette valeur, la question est sans objet et l'exercice n'en est plus un...

Pour ta culture personnelle, sache qu'il est assez mal vu de poser la même question sur des forums différents...
Ce n'est pas toi ?
Ok ! Tu sauras comme ça... ^_^

@+

c moi, merci pour le conseil :)

Hors ligne

#5 06-07-2019 14:49:51

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 13 351

Re : Suite arithmético-géométrique

RE,

Pas de questions  ? T'as tout compris alors ?...

Bin, t'es formidable !!!!

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#6 08-07-2019 10:48:31

zizou47
Membre
Inscription : 05-07-2019
Messages : 9

Re : Suite arithmético-géométrique

Re
l'exercice a demandé 2 fonctions
j'ai mis n+1 après j'ai essayé u0 sur un IDE online il n'a pas donné toute les valeur de Un
___________
pourquoi tu mis Un = u2 ?

Hors ligne

#7 08-07-2019 11:45:20

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 13 351

Re : Suite arithmético-géométrique

Salut,

Comment ça : l'exercice a demandé 2 fonctions ???
L'énoncé que tu as donné dit :

Définissez UNE fonction u_terme qui renvoie la valeur de un.

Alors ?

j'ai mis n+1 après j'ai essayé u0 sur un IDE online il n'a pas donné toute les valeur de Un

Ça veut dire quoi ça ?
Je te certifie que les deux méthodes données fonctionnent parfaitement...
L'énoncé te demande LA valeur de n (donc une seule ! ) pour laquelle $U_n >M$.
Je te fournis cette valeur...
Que veux-tu de plus ?

pourquoi tu mis Un = u2 ?

Il faut bien amorcer la pompe ...
Je sais déjà que u0=0, u1=1, u2=4...
Je n'ai pas besoin de les recalculer....
Donc je cherche directement u3....
Et pour ça j'ai besoin de dire que un = u2 (c'est à dire 4) et que on commence à n=2 (avec la boucle while parce que c'est moi qui gère le compteur).

Voilà deux versions supplémentaires avec boucle while, l'affichage doit donc être géré depuis la fonction qui retourne le n cherché pour faire joli et que c'est demandé (mais je n'utilise pas ce n à l'extérieur de la fonction).
u_termeC qui affiche toutes les valeurs depuis u3 jusqu'à la fin
u_termeD qui affiche toutes les valeurs depuis u0 jusqu'à la fin.

def u_termeC(M):
    u0,u1,u2=0,1,4
    un,n=u2,2
    while un<=M:
        un=3*un+1
        n+=1
        print ("n =",n,"U"+str(n)+" =", un)
    return n
 

def u_termeD(M):
    u0,u1,u2=0,1,4
    un,n=u0,0
    print ("n =",n,"U"+str(n)+" =", un)
    while un<=M:
        un=3*un+1
        n+=1
        print ("n =",n,"U"+str(n)+" =", un)
    return n

Utilisation depuis l'IDLE de Python ;

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
=================== RESTART: C:/Python35/Progs persos/suite_indice_un_sup_M.py ===================
>>> u_termeC(125)
n = 3 U3 = 13
n = 4 U4 = 40
n = 5 U5 = 121
n = 6 U6 = 364
>>>
>>> u_termeD(125)
n = 0 U0 = 0
n = 1 U1 = 1
n = 2 U2 = 4
n = 3 U3 = 13
n = 4 U4 = 40
n = 5 U5 = 121
n = 6 U6 = 364
>>>
>>> u_termeC(9876532)
n = 3 U3 = 13
n = 4 U4 = 40
n = 5 U5 = 121
n = 6 U6 = 364
n = 7 U7 = 1093
n = 8 U8 = 3280
n = 9 U9 = 9841
n = 10 U10 = 29524
n = 11 U11 = 88573
n = 12 U12 = 265720
n = 13 U13 = 797161
n = 14 U14 = 2391484
n = 15 U15 = 7174453
n = 16 U16 = 21523360
>>>
>>> u_termeD(9876532)
n = 0 U0 = 0
n = 1 U1 = 1
n = 2 U2 = 4
n = 3 U3 = 13
n = 4 U4 = 40
n = 5 U5 = 121
n = 6 U6 = 364
n = 7 U7 = 1093
n = 8 U8 = 3280
n = 9 U9 = 9841
n = 10 U10 = 29524
n = 11 U11 = 88573
n = 12 U12 = 265720
n = 13 U13 = 797161
n = 14 U14 = 2391484
n = 15 U15 = 7174453
n = 16 U16 = 21523360
>>>

Dernière modification par yoshi (08-07-2019 16:46:37)


Arx Tarpeia Capitoli proxima...

Hors ligne

#8 08-07-2019 13:40:33

zizou47
Membre
Inscription : 05-07-2019
Messages : 9

Re : Suite arithmético-géométrique

ohh merci yoshi, vous êtes smart, en fait je suis débutant (4 mois de programmation) lol

Hors ligne

#9 08-07-2019 16:45:17

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 13 351

Re : Suite arithmético-géométrique

Re,

4 mois, c'est déjà pas mal...
L'énoncé est très mal foutu.

T'as tout pigé cette fois ?
Sinon, demande...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#10 09-07-2019 11:43:28

zizou47
Membre
Inscription : 05-07-2019
Messages : 9

Re : Suite arithmético-géométrique

oui, oui, merci bq mon prof  "virtuel" :)

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
trente cinq plus cinquante deux
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums