Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Suite de Syracuse

Posté par
Marseillais-31
28-09-13 à 13:13

Bonjour, je dois faire cette exercice pour la semaine prochaine mais je n'ai absolument rien compris et j'aurai besoin d'aide.. Je vous laisse lire :

la suite de syracuse d'un entier non nul est la suite definie par recurrence par u0= N et, pour tout n E N : un+1= un/2 si un est pair ou 3un+1 si un est impair. Il existe une conjecture célèbre sur ces suites : quel que soit l'entier N, la suite de Syracuse d'un entier N contiendra le nombre 1 (et donc 2 et 4)
Cette conjecture porte le nom de conjecture de Collatz, du nom de son découvreur dans les années 1950.
A ce jour, elle n'est toujours pas démontrée... Une des pistes explorées, qui permet de démontrer aisément la conjecture pour 75% des entiers, utilise les temps de vol de cette suite. On appelle temps de vol d'une suite de Syracuse (un) le plus petit rang n de la suite tel que un=1. Parmi les suites de Syracuse des entiers inférieurs à 1000, quelle est celle qui a le plus grand temps de vol ?

Merci d'avance...

Posté par
klux
re : Suite de Syracuse 28-09-13 à 13:36

Bonjour,

1. Écris un algorithme qui calcule u_n.

2. Écris un algorithme qui calcule le premier n tel que u_n = 1.

Posté par
Marseillais-31
re : Suite de Syracuse 28-09-13 à 13:39

Oui mais je ne sais pas du tout comment faire, peut tu m'écrire l'algorithme ?

Posté par
Glapion Moderateur
re : Suite de Syracuse 28-09-13 à 13:42

Bonjour, le plus simple est d'écrire un algorithme qui calcule les temps de vol de tous les nombres de 1 à 1000 et affiche celui qui a le plus long.
Ecrit déjà l'algorithme qui calcule le temps de vol pour un N donné puis après tu le modifieras en l'encadrant par une boucle Pour P allant de 1 à 1000 et en captant le nombre qui aura le plus grand temps de vol.
Pour progresser dans les algorithmes, il faut se battre un peu avec. Si je te donne directement la solution, ça ne te fera pas progresser.

Posté par
klux
re : Suite de Syracuse 28-09-13 à 13:43

C'est le but de l'exercice...

Je t'écris l'algorithme qui calcule u_p, avec u_0 = N, avec des trous pour t'aider :

Variables : N, P, U

Entrer N

Entrer P

Affecter la valeur ... à U

Si ... alors

   Affecter la valeur ... à U

Fin si

Si ... alors

   Affecter la valeur ... à U

Fin si

Afficher U

Posté par
Marseillais-31
re : Suite de Syracuse 28-09-13 à 13:43

Oui tu as raison merci. Mais je n'ai pas compris ce qu'etais le temps de vol..

Posté par
Marseillais-31
re : Suite de Syracuse 28-09-13 à 13:44

Je vais l'écrire, as tu une adresse mail pour que je puisse t'envoyer ce que j'ai fais ?

Posté par
auekgviqr
re : Suite de Syracuse 28-09-13 à 17:57

Bonjour.

Je suis dans le même cas que Marseillais-31 sauf que l'échéance est plus proche ...

En fait, j'ai trouvé le premier algorithme tout seul (avec seulement deux inconnues mais il marche quand même).
Cependant, je n'arrive pas à "capter le nombre qui aura le plus long temps de vol".

Merci d'avance pour votre aide.

Posté par
Glapion Moderateur
re : Suite de Syracuse 29-09-13 à 12:25

Voilà toujours une solution sous algobox (on peut la copier/coller en mode editeur de texte ou en ligne sur proglab ).
Pour capter le nombre qui a le plus long temps de vol, regarde ce que j'ai fait. je fais varier k de 1 à 1000. Pour chaque k, je calcule le temps de vol, il est stocké dans la variable n.
Puis il suffit de tester si n est plus grand que le plus grand temps de vol calculé jusqu'à maintenant (Max dans l'algorithme), si oui on remplace Max par le nouveau n et on stocke le nouveau candidat (que j'ai appelé NN) en mettant k dans NN.
Et enfin en sortie de boucle , on affiche le vainqueur.


 VARIABLES
  u EST_DU_TYPE NOMBRE
  n EST_DU_TYPE NOMBRE
  k EST_DU_TYPE NOMBRE
  Max EST_DU_TYPE NOMBRE
  NN EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  Max PREND_LA_VALEUR 0
  NN PREND_LA_VALEUR 0
  POUR k ALLANT_DE 1 A 1000
    DEBUT_POUR
    u PREND_LA_VALEUR k
    n PREND_LA_VALEUR 0
    TANT_QUE (u != 1) FAIRE
      DEBUT_TANT_QUE
      n PREND_LA_VALEUR n+1
      SI (u%2==0) ALORS
        DEBUT_SI
        u PREND_LA_VALEUR u/2
        FIN_SI
        SINON
          DEBUT_SINON
          u PREND_LA_VALEUR 3*u+1
          FIN_SINON
      FIN_TANT_QUE
    SI (n > NN) ALORS
      DEBUT_SI
      NN PREND_LA_VALEUR k
      Max PREND_LA_VALEUR n
      FIN_SI
    FIN_POUR
  AFFICHER "le nombre qui a le temps de vol le plus grand est "
  AFFICHER NN
  AFFICHER " ; le temps de vol est de : "
  AFFICHER Max
FIN_ALGORITHME

Posté par
Marseillais-31
re : Suite de Syracuse 29-09-13 à 13:45

J'ai trouver que le nombre est 313 et le temps de vol est 130. Est ce cela ?

Posté par
Glapion Moderateur
re : Suite de Syracuse 29-09-13 à 13:47

oui

Posté par
Glapion Moderateur
re : Suite de Syracuse 29-09-13 à 13:47

Facile, hein, quand on a un algorithme qui marche

Posté par
Marseillais-31
re : Suite de Syracuse 29-09-13 à 14:06

Merci beaucoup ! Mais es tu certain de ta réponse car avec l'algorithme que il y a plus haut, je ne trouve pas le même résultat

Posté par
Glapion Moderateur
re : Suite de Syracuse 29-09-13 à 14:17

je ne le vois pas l'algorithme plus haut montre le moi, je te dirai s'il est plus credible ou non que celui-là.

Posté par
Marseillais-31
re : Suite de Syracuse 29-09-13 à 14:53

C'est celui de Klux, la ou il y a des trou dans l'algorithme

Posté par
klux
re : Suite de Syracuse 29-09-13 à 14:56

L'algorithme que je t'avais proposé servait uniquement à calculer le p-ième terme la suite pour le premier terme N fixé.

Il y avait encore du travail pour arriver à un algorithme répondant au problème posé (voir celui de Glapion) !

Posté par
Marseillais-31
re : Suite de Syracuse 29-09-13 à 15:02

Donc celui de Glapion suiffit a répondre ?

Posté par
klux
re : Suite de Syracuse 29-09-13 à 15:10

Je lui fait confiance pour cela !

Essaye de comprendre l'algorithme et pose des questions si tu ne comprends pas certains points.

Lance ensuite l'algorithme pour avoir la réponse au problème posé.

Posté par
Marseillais-31
re : Suite de Syracuse 29-09-13 à 15:19

Merci beaucoup. Je ne comprend pas juste la valeur NN dans ton algorithme. Merci d'avance..
Et merci a vous deux !

Posté par
Glapion Moderateur
re : Suite de Syracuse 29-09-13 à 15:30

NN stocke le nombre k qui a le meilleurs temps de vol.
Au début il vaut 0 et à chaque fois que l'on trouve un nombre k qui a un meilleurs temps de vol, NN prend la valeur de k donc stocke le nombre qui a la meilleure performance.

Evidemment à la fin, on a essayé tous les nombres entre 1 et 1000 donc NN stocke le nombre vainqueur et on l'affiche (c'est ce qu'on cherche en fait).

Posté par
Marseillais-31
re : Suite de Syracuse 29-09-13 à 15:52

Merci beaucoup. Je t'en remercie! Est ce que je peux te donner mon email pour tu m'envoies un message pour que j'ai le tiens et si un jour j'ai quelque chose a te demander, que je puisse t'envoyer un mail ? Ça serait très gentil de ta part

Posté par
Glapion Moderateur
re : Suite de Syracuse 29-09-13 à 15:55

non je ne fais jamais ça. Si tu as quelque chose à demander, fait le sur le forum.

Posté par
Marseillais-31
re : Suite de Syracuse 29-09-13 à 15:56

D'accord... Tant pis pour moi
J'ai trouver tes explications très clairs et c'est la première fois que je comprend aussi vite !

Posté par
Marseillais-31
re : Suite de Syracuse 02-10-13 à 14:36

D'après mon prof c'est algorithme est faux !!! Help s'il vous plait

Posté par
alb12
re : Suite de Syracuse 02-10-13 à 16:23

salut, 871 a un temps de vol de 178.

Posté par
Glapion Moderateur
re : Suite de Syracuse 02-10-13 à 16:50

ha oui il y avait une erreur dans l'algorithme, c'est SI (n > Max) ALORS au lieu de SI (n > NN) ALORS


VARIABLES
  u EST_DU_TYPE NOMBRE
  n EST_DU_TYPE NOMBRE
  k EST_DU_TYPE NOMBRE
  Max EST_DU_TYPE NOMBRE
  NN EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  Max PREND_LA_VALEUR 0
  NN PREND_LA_VALEUR 0
  POUR k ALLANT_DE 2 A 1000
    DEBUT_POUR
    u PREND_LA_VALEUR k
    n PREND_LA_VALEUR 0
    TANT_QUE (u != 1) FAIRE
      DEBUT_TANT_QUE
      n PREND_LA_VALEUR n+1
      SI (u%2==0) ALORS
        DEBUT_SI
        u PREND_LA_VALEUR u/2
        FIN_SI
        SINON
          DEBUT_SINON
          u PREND_LA_VALEUR 3*u+1
          FIN_SINON
      FIN_TANT_QUE
    SI (n > Max) ALORS
      DEBUT_SI
      NN PREND_LA_VALEUR k
      Max PREND_LA_VALEUR n
      FIN_SI
    FIN_POUR
  AFFICHER "le nombre qui a le temps de vol le plus grand est "
  AFFICHER NN
  AFFICHER " ; le temps de vol est de : "
  AFFICHER Max
FIN_ALGORITHME


désolé

Posté par
Marseillais-31
re : Suite de Syracuse 02-10-13 à 17:24

Tu es sûre de toi la ? Tu l'as testé ? Tu as obtenu quoi?

Posté par
Glapion Moderateur
re : Suite de Syracuse 02-10-13 à 17:28

Et toi ? paresseux.

j'ai obtenu le résultat d'alb12

Posté par
Marseillais-31
re : Suite de Syracuse 02-10-13 à 17:47

Merci l'ami !



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 !