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).

Répondre

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)?
soixante huit plus quinze
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.

Retour

Résumé de la discussion (messages les plus récents en premier)

zizou47
09-07-2019 11:43:28

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

yoshi
08-07-2019 16:45:17

Re,

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

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

@+

zizou47
08-07-2019 13:40:33

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

yoshi
08-07-2019 11:45:20

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
>>>
zizou47
08-07-2019 10:48:31

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 ?

yoshi
06-07-2019 14:49:51

RE,

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

Bin, t'es formidable !!!!

@+

zizou47
06-07-2019 14:14:00
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 :)

yoshi
06-07-2019 09:18:17

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... ^_^

@+

yoshi
05-07-2019 18:30:44

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$

zizou47
05-07-2019 15:17:54

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

Pied de page des forums