Collatz et les puissances de 2

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
nodjim
Membre Complexe
Messages: 3241
Enregistré le: 24 Avr 2009, 16:35

par nodjim » 24 Nov 2015, 19:58

Attention, Ben314 est revenu, la récréation est finie :ptdr:



syrac

par syrac » 25 Nov 2015, 01:55

Ben314 a écrit:Perso, ce que je comprend pas, c'est la même chose que Doraki : Quel peut bien être l'intérêt de ton algorithme qui est bien plus compliqué et bien plus long à exécuter que l'algorithme découlant immédiatement de la définition des suites de Collatz ?

Chacun vit dans sa propre réalité. Si dans la tienne mon algorithme n'a aucun intérêt, alors je ne vais pas perdre mon temps à essayer de te démontrer qu'il en a.

nodjim
Membre Complexe
Messages: 3241
Enregistré le: 24 Avr 2009, 16:35

par nodjim » 25 Nov 2015, 07:56

Certes, mais les maths, c'est fait justement pour mettre tout le monde d'accord à partir de la seule raison.

Sylviel
Membre Transcendant
Messages: 6466
Enregistré le: 20 Jan 2010, 12:00

par Sylviel » 25 Nov 2015, 09:18

Donc prenant l'attitude de syrac j'affirme que tous les nombres peuvent s'écrire avec moins de 100 chiffres. Et je l'ai même testé pour une quantité incroyable de nombres. Je me demande bien pourquoi les grands nombres prendraient un costume d'extra terrestre et ne vérifierais plus cette propriété.
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

syrac

par syrac » 25 Nov 2015, 11:52

Au fil des remarques je me suis aperçu que quelque chose n'était pas clair dans mon papier. Si on confond ce que produit cet algorithme avec une suite impaire c'est qu'il y a un problème. J'ai donc apporté les modifications suivantes :

Image

Et à la page suivante :

Image

Enfin, voici un développement intéressant que j'ai ajouté au document. Ou comment générer des suites impaires de trois termes à volonté :

Image

syrac

par syrac » 26 Nov 2015, 02:23

nodjim a écrit:Certes, mais les maths, c'est fait justement pour mettre tout le monde d'accord à partir de la seule raison.

Tout à fait d'accord. Mais quand on commence la discussion en disant "ton truc est sans intérêt, l'algorithme de Collatz est 100 fois plus rapide" ça veut dire qu'on a lu les explications qui précédaient en diagonale, voire pas du tout, et donc qu'on n'a même pas envie de comprendre. Dans ces conditions il est inutile de s'évertuer à convaincre.

Ça peut vouloir dire aussi que lesdites explications n'étaient pas claires, raison de mon post précédent. Mais j'ai pondu cet algorithme au début de l'année (2015), alors j'avais fini par oublier comment il fonctionnait, techniquement s'entend. Je m'étais ensuite totalement désintéressé de ce sujet durant plusieurs mois, jusqu'en novembre. C'est bien de faire un break de temps en temps, on repart ensuite avec un esprit neuf, un regard nouveau.

syrac

par syrac » 26 Nov 2015, 17:54

Il me semble qu'on peut démontrer facilement que 3*(l'avant-dernier terme)+1 est une puissance de 2, qui donnera donc 1 à l'étape suivante, la dernière :

Image

En supposant bien sûr que la première expression ait été démontrée. J'ai tout faux ou non ?

G.Renault
Membre Naturel
Messages: 47
Enregistré le: 19 Oct 2015, 11:27

par G.Renault » 26 Nov 2015, 22:16

syrac a écrit:Les choses se compliquent sérieusement dès qu'on essaie de produire des suites de 4 termes.


Je ne vois pas en quoi c'est difficile.
Il suffit de raisonner sur la suite de Collatz en partant de la fin, c'est-à-dire de 1 et de faire quelques tests bien pensés... N'importe quel programme peut tester aisément si a*2^n-1 est divisible ou non par un nombre particulier pour un entier a.

Par exemple, n0=69 renvoie une suite impaire de 4 termes (et il était possible de le trouver de tête !).

Si j'étais plus taquin, je te dirais qu'il suffit de faire le programme de Collatz pour tous les nombres, de faire un programme qui compte les impairs et qui renvoie les suites impaires de 4 termes :we:
http://www.mathiculture.fr/
Frise chronologique des mathématiciens, Histoires de maths, Cours, Activités...

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 27 Nov 2015, 02:12

syrac a écrit:...ça veut dire qu'on a lu les explications qui précédaient en diagonale, voire pas du tout, et donc qu'on n'a même pas envie de comprendre. Dans ces conditions il est inutile de s'évertuer à convaincre.
J'ai tout lu, parfaitement compris de quoi il en retourne et comment fonctionne l'algorithme et je maintient : c'est sans aucun intérêt vu que ça ne permet de montrer strictement rien de plus que le bête algorithme de la définition des suites en question (sauf que c'est nettement plus long a exécuter.... :hum:)

Sur ce, je vais faire comme Doraki, a savoir aller voir ailleurs... :ptdr:
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

syrac

par syrac » 27 Nov 2015, 19:13

G.Renault a écrit:Si j'étais plus taquin, je te dirais qu'il suffit de faire le programme de Collatz pour tous les nombres, de faire un programme qui compte les impairs et qui renvoie les suites impaires de 4 termes :we:

Je ne sais pas, j'ai pourtant l'impression de parler français...

Il ne s'agit pas de produire des suites de N termes, ce qui est effectivement à la portée de n'importe quel demeuré, mais de choisir une valeur de N puis de calculer une valeur de n0 telle que sa suite aura exactement N termes. La nuance est d'importance.

G.Renault a écrit:Je ne vois pas en quoi c'est difficile. Il suffit de raisonner sur la suite de Collatz en partant de la fin, c'est-à-dire de 1 et de faire quelques tests bien pensés...

De toute évidence tu ne t'es jamais penché sur la question, parce que "raisonner en partant de la fin" n'est pas aussi simple que tu crois, à moins qu'on soit un calculateur de génie. Voici pour preuve la manière de construire une suite impaire à partir de la fin, laquelle ne peut d'ailleurs pas être 1 mais le terme (impair) qui le précède. Je précise à toutes fins utiles qu'aucun mathématicien sérieux n'accepterait une approche du problème de Collatz qui se ferait depuis la fin.

Image

La prochaine fois, avant de prétendre qu' "il suffit de", commences donc par te demander si tu sais de quoi tu parles !

G.Renault
Membre Naturel
Messages: 47
Enregistré le: 19 Oct 2015, 11:27

par G.Renault » 27 Nov 2015, 20:58

syrac a écrit:Je ne sais pas, j'ai pourtant l'impression de parler français...

Il ne s'agit pas de produire des suites de N termes, ce qui est effectivement à la portée de n'importe quel demeuré, mais de choisir une valeur de N puis de calculer une valeur de n0 telle que sa suite aura exactement N termes. La nuance est d'importance.


Effectivement, le problème est peut-être là, tu parles français au lieu de parler mathématique.
Ta nuance n'a pas de sens si tu l'exprimes de cette manière puisque si tu sais produire une suite (impaire) de N termes, tu sais aussi donner le n0 correspondant.
Donc si je choisis une valeur de N, je peux créer en remontant une suite de N termes et te donner le n0 correspondant. C'est ce que tu dis vouloir.
À moins que ton utilisation du terme calcul soit à préciser ? Est-ce que tu cherches une fonction qui prend en argument N et qui renvoie SANS AUCUN TEST et par une formule explicite le nombre n0 ? Si c'est le cas tu es d'autant plus malhonnête que ce n'est pas du tout ce que fait ton programme te permettant de créer des suites de 3 termes...

syrac a écrit:De toute évidence tu ne t'es jamais penché sur la question, parce que "raisonner en partant de la fin" n'est pas aussi simple que tu crois, à moins qu'on soit un calculateur de génie. Voici pour preuve la manière de construire une suite impaire à partir de la fin, laquelle ne peut d'ailleurs pas être 1 mais le terme (impair) qui le précède.
[...]
La prochaine fois, avant de prétendre qu' "il suffit de", commences donc par te demander si tu sais de quoi tu parles !


Pas de bol, je me suis penché sur la question et j'ai construit, à la main et sans calculatrice en un peu plus d'une heure sans trop me presser (conseil de classe oblige) :
1 suite de Collatz de 1 terme impair
1 suite de Collatz de 2 termes impairs
1 suite de Collatz de 3 termes impairs
1 suite de collatz de 4 termes impairs
1 suite de Collatz de 5 termes impairs
2 suites de Collatz de 6 termes impairs
3 suites de Collatz de 7 termes impairs
5 suites de Collatz de 8 termes impairs
6 suites de Collatz de 9 termes impairs

Et puis je me suis arrêté car les calculs devenaient lourds et que le conseil de classe s'est terminé...

Contrairement à toi, je n'affirme rien sans avoir réfléchi ou sans avoir une preuve et je ne mélange surtout pas conjecture, pseudo-certitude et affirmation.
Tu multiplies dans tes discours les affirmations ambigües ou que tu ne sais pas prouver...

* Par exemple la phrase :
"Il existe un entier impair n non divisible par 3 (il n'en existe aucun dans une suite de Collatz) tel que 3n+1=d5 ==> n=(d5-1)/3" est ambigüe.
Ton implication est vraie, que l'entier n existe ou non. Ce qui veut dire que tu confonds implication entre deux assertions et démonstration de la véracité d'une assertion, ou plus simplement que tu ne sais pas utiliser correctement une flèche d'implication. J'expliquais ça à des bac+1 cette année, c'est difficile je te l'accorde...

* Autre exemple :
"Il est évident qu'on peut calculer autant de termes supplémentaires qu'on veut sur la gauche, c'est-à-dire rendre la suite aussi longue qu'on veut."
C'est peut-être vrai, mais peut-être pas et je suis à peu près persuadé que tu ne sais pas le montrer... Mais je me ferais une joie de lire ta démonstration si tu en as une.
Mes collégiens utilisent le même procédé pour camoufler leur ignorance : "c'est évident m'sieur"...

La prochaine fois, avant de répondre de manière agacée, commence par expliquer correctement ce que tu fais et par définir rigoureusement tes objectifs...
http://www.mathiculture.fr/
Frise chronologique des mathématiciens, Histoires de maths, Cours, Activités...

syrac

par syrac » 27 Nov 2015, 21:58

G.Renault a écrit:Est-ce que tu cherches une fonction qui prend en argument N et qui renvoie SANS AUCUN TEST et par une formule explicite le nombre n0 ? Si c'est le cas tu es d'autant plus malhonnête que ce n'est pas du tout ce que fait ton programme te permettant de créer des suites de 3 termes...

Je cherche une fonction qui prend pour arguments une puissance de 2 ainsi que N, et qui renvoie une ou plusieurs valeurs de n0 telles que leur suite impaire comptera exactement N termes. C'est exactement ce que fait la fonction suite3termes(p), sauf qu'on ne spécifie pas N puisqu'elle est conçue pour calculer des valeurs de n0 dont la suite impaire compte 3 termes.

Serais-tu en train de comprendre le sens de la phrase : "Les choses deviennent beaucoup plus compliquées lorsqu'on cherche à produire des suites de 4 termes" ?

G.Renault a écrit:Pas de bol, je me suis penché sur la question et j'ai construit, à la main et sans calculatrice en un peu plus d'une heure sans trop me presser (conseil de classe oblige) :
1 suite de Collatz de 1 terme impair
1 suite de Collatz de 2 termes impairs
1 suite de Collatz de 3 termes impairs
etc.

Fabuleux !

G.Renault a écrit:"Il existe un entier impair n non divisible par 3 (il n'en existe aucun dans une suite de Collatz) tel que 3n+1=d5 ==> n=(d5-1)/3" est ambigüe.

De 3n+1 = d5 on déduit que n = (d5-1)/3. Mais tu as peut-être du temps à perdre...

G.Renault a écrit:"Il est évident qu'on peut calculer autant de termes supplémentaires qu'on veut sur la gauche, c'est-à-dire rendre la suite aussi longue qu'on veut."

Il y a déjà un bon moment je me suis amusé à écrire une fonction Mathematica qui automatise cet algorithme. Il suffit de lui passer le nombre de termes désiré pour qu'elle renvoie une suite impaire comptant très précisément ce nombre de termes, quel qu'il soit. Cerise sur le gâteau, elle choisit les diviseurs aléatoirement, ce qui fait qu'elle ne produit jamais deux fois la même suite impaire de N termes.

G.Renault a écrit:C'est peut-être vrai, mais peut-être pas et une chose est sûre : tu ne sais pas le montrer... Car cet énoncé impliquerait qu'il existe une infinité de suites de Collatz avec n0 impair qui aboutissent à 1, ce qui est déjà un résultat en soi (maigre mais mieux que rien). Mais sans doute n'y avais-tu pas réfléchi...

Je laisse cette démonstration à qui s'intéresserait à la question, car ça n'aurait aucune espèce d'utilité. Une pure perte de temps. On ne peut pas démontrer que toutes les suites se terminent par 1 si on les construit à partir de 1. L'ai-je suffisamment répété ?

syrac

par syrac » 27 Nov 2015, 22:13

J'ai oublié celle-là : "Effectivement, le problème est peut-être là, tu parles français au lieu de parler mathématique.".

Le seul domaine des mathématiques dans lequel je suis assez à l'aise c'est l'algèbre, donc il ne faut pas trop m'en demander. J'ai aussi un QI de 135, ce qui aide.

G.Renault
Membre Naturel
Messages: 47
Enregistré le: 19 Oct 2015, 11:27

par G.Renault » 27 Nov 2015, 22:37

syrac a écrit:Je cherche une fonction qui prend pour arguments une puissance de 2 ainsi que N, et qui renvoie une ou plusieurs valeurs de n0 telles que leur suite impaire comptera exactement N termes. C'est exactement ce que fait la fonction suite3termes(p), sauf qu'on ne spécifie pas N puisqu'elle est conçue pour calculer des valeurs de n0 dont la suite impaire compte 3 termes.

Serais-tu en train de comprendre le sens de la phrase : "Les choses deviennent beaucoup plus compliquées lorsqu'on cherche à produire des suites de 4 termes" ?


Ok, donc c'est bien ce que je te dis, ton programme "renvoie" une ou plusieurs valeurs de n0 telles que la suite impaire contienne N termes.
Donc un algorithme qui prend N en argument et qui calcule les suites de Collatz jusqu'à en trouver une avec N termes impaires et qui enfin te balance n0 en retour répond à tes attentes.
Qu'est-ce que tu ne comprends pas là-dedans ?

D'autre part, tu ne dis pas du tout l'intérêt pour toi de mettre en argument une puissance de 2.

Je répète encore : d'après ce que tu dis, un algo qui part de 1, s'arrête après avoir trouvé 4 termes impairs et te renvoie le n0 répond aussi à tes attentes.

Fabuleux !

Merci, j'ai fait de tête quelque chose qui répond à tes attentes, tu dois être aux anges.

La suite est assez phénoménale. Je te cite :
Serais-tu en train de comprendre le sens de la phrase : "Les choses deviennent beaucoup plus compliquées lorsqu'on cherche à produire des suites de 4 termes" ?

Il y a déjà un bon moment je me suis amusé à écrire une fonction Mathematica qui automatise cet algorithme. Il suffit de lui passer le nombre de termes désiré pour qu'elle renvoie une suite impaire comptant très précisément ce nombre de termes, quel qu'il soit.

On peut le croiser avec ce que tu as dis un peu plus tôt :
Il ne s'agit pas de produire des suites de N termes, ce qui est effectivement à la portée de n'importe quel demeuré, mais de choisir une valeur de N puis de calculer une valeur de n0 telle que sa suite aura exactement N termes.


Si tu ne vois pas que tu racontes tout et son contraire, je ne peux rien pour toi...

Et vraiment, penche toi sur ce que tu ne comprends pas dans la phrase : "si j'arrive à produire une suite de N termes par un algo, je peux dire à l'algo de me renvoyer n0 et j'ai répondu à ta question"...

Je laisse cette démonstration à qui s'intéresserait à la question, car ça n'aurait aucune espèce d'utilité. Une pure perte de temps. On ne peut pas démontrer que toutes les suites se terminent par 1 si on les construit à partir de 1. L'ai-je suffisamment répété ?


Euh c'est peut-être une pure perte de temps mais dans ce cas n'affirme pas cela comme si c'était évident car en réalité tu n'en sais rien du tout.

Pour le coup du QI tu tombes bien bas... Essaies-tu de justifier ton incompétence ou tes propos obscurs par ton QI ? Pas besoin d'afficher ici ton complexe d'infériorité, fais des maths et garde ton discours pour épater qui est assez naïf pour le vouloir...
http://www.mathiculture.fr/
Frise chronologique des mathématiciens, Histoires de maths, Cours, Activités...

syrac

par syrac » 27 Nov 2015, 23:16

G.Renault a écrit:Ok, donc c'est bien ce que je te dis, ton programme "renvoie" une ou plusieurs valeurs de n0 telles que la suite impaire contienne N termes.

Exact.

G.Renault a écrit:Donc un algorithme qui prend N en argument et qui calcule les suites de Collatz jusqu'à en trouver une avec N termes impaires et qui enfin te balance n0 en retour répond à tes attentes.

Non. Il calcule l'expression suivante, qui figure dans le post incriminé mais que tu n'as sans doute pas vue :

Image

D'autre part, tu ne dis pas du tout l'intérêt pour toi de mettre en argument une puissance de 2.

la puissance de 2 est p, que tu retrouves souvent dans mon papier. La fonction suite3termes(e) prend un exposant de 2 en argument pour ensuite calculer 2^e, pour la raison que e est utilisé plus loin.

G.Renault a écrit:Je répète encore : d'après ce que tu dis, un algo qui part de 1, s'arrête après avoir trouvé 4 termes impairs et te renvoie le n0 répond aussi à tes attentes.

Je ne comprends pas. Pourrais-tu préciser le sens de la question ?

G.Renault a écrit:Il ne s'agit pas de produire des suites de N termes, ce qui est effectivement à la portée de n'importe quel demeuré, mais de choisir une valeur de N puis de calculer une valeur de n0 telle que sa suite aura exactement N termes.

C'est pourtant ce que fait l'expression de n0 ci-dessus, sous sa forme générale ou particulière pour N = 3. Il y a probablement quelque chose qui t'échappe encore...

Et merci pour les amabilités finales.

Tant que j'y suis, voici la fonction suiteAleatoire(lg), qui renvoie une suite impaire aléatoire de la longueur lg spécifiée en paramètre. lg correspond bien sûr à N.

Image

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

par Doraki » 27 Nov 2015, 23:19

syrac a écrit:JJe précise à toutes fins utiles qu'aucun mathématicien sérieux n'accepterait une approche du problème de Collatz qui se ferait depuis la fin.


je ne suis donc pas un mathématicien sérieux

;_;

;;_;;

syrac

par syrac » 27 Nov 2015, 23:43

@G.Renaud

Voici un exemple de suite aléatoire générée par suiteAleatoire(15) :

8647, 12971, 19457, 14593, 10945, 8209, 6157, 2309, 433, 325, 61, 23, 35, 53, 5, 1

La valeur finale 1 étant toujours ajoutée, la suite compte en réalité 16 termes.

Si maintenant je fais suiteAleatoire(15,0), la fonction renvoie les 15 diviseurs qui ont construit cette suite (ou une autre. Puisqu'elle est aléatoire je ne sais pas si ces diviseurs sont en rapport avec la suite ci-dessus) :

16, 8, 4, 2, 4, 4, 2, 2, 2, 8, 4, 16, 2, 2, 1024

Le mieux pour le savoir est de calculer la suite impaire créée par cette suite de diviseurs :

Image

divs2suite[{16, 8, 4, 2, 4, 4, 2, 2, 2, 8, 4, 16, 2, 2, 1024}] = 19013, 3565, 1337, 1003, 1505, 1129, 847, 1271, 1907, 2861, 1073, 805, 151, 227, 341, 1

Tu peux remarquer que là-encore le terme final 1 est ajouté à la fin, avant de renvoyer la suite : AppendTo[suite,1]; suite

@Doraki

je ne suis donc pas un mathématicien sérieux

Toi seul peut en juger...

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 28 Nov 2015, 00:35

Doraki a écrit:je ne suis donc pas un mathématicien sérieux
;_;
;;_;;
Avec moi, ça en fait au moins 2 vu que je pense aussi que de partir de la fin risque d'être une bonne approche... :zen:
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

syrac

par syrac » 28 Nov 2015, 00:51

Alors voici qui va te satisfaire.

Je viens de penser à une chose importante que je n'ai pas précisée. Dans les déclarations de variables de suiteAleatoire() figurent

..., suite={1}, diviseurs={}, ...

Puis dans le corps de la boucle While on trouve

PrependTo[suite,m1]; PrependTo[diviseurs,divActu];

PrependTo, selon la syntaxe de Mathematica, signifie "ajouter au début de la liste". Les termes de la suite, ainsi que les diviseurs, sont donc calculés en partant du dernier terme de la suite impaire - pas 1 mais celui qui le précède - et en remontant "vers la gauche" jusqu'à ce que le nombre de termes spécifiés par lg soit atteint. Le terme final 1 n'est pas ajouté à la liste suite ; il était là depuis sa déclaration, on l'a ensuite fait précéder des autres termes. La variable diviseurs, puisqu'elle était vide au départ, compte donc un terme de moins que suite.

Il s'agit donc bien d'un calcul "par la fin". La fonction divs2suite() calcule également la suite impaire en partant du dernier diviseur et en remontant vers le premier. Elle se fonde sur l'algorithme dont j'ai expliqué ci-dessus la méthodologie, à ceci près qu'elle ne cherche pas les diviseurs puisqu'il sont déjà à disposition.

syrac

par syrac » 28 Nov 2015, 01:02

G.Renault a écrit:Donc un algorithme qui prend N en argument et qui calcule les suites de Collatz jusqu'à en trouver une avec N termes impaires et qui enfin te balance n0 en retour répond à tes attentes.

C'est bon, j'ai compris. Je n'ai pas d'attentes particulières en la matière, mais puisque la fonction suiteAléatoire() calcule une suite aléatoire de N termes il est évident que le premier correspond toujours à n0, quel que soit N. Il n'y a là-dedans aucune notion de "calculer des suites impaires jusqu'à tomber sur une qui compte N termes" ; le processus est continu, il ne fonctionne pas par essais successifs.

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite