La conjecture de Collatz

1246789

Réponses

  • Pourrais-tu me dire quel est le point commun entre ces 93 nombres ? Ceux que tu cites sont en gras.

    316757, 320341, 320397, 329045, 329493, 329941, 329955, 330097, 330101, 333141, 334933, 334961, 336085, 336099, 336149, 336173, 336213, 336325, 336437, 336477, 336565, 336577, 339285, 339509, 339733, 339811, 339813, 342805, 342837, 342849, 342869, 342925, 342981, 343001, 343045, 343051, 345029, 345045, 345049, 345059, 345109, 345123, 345141, 345157, 345163, 345175, 345207, 364885, 364997, 365269, 365283, 365297, 365397, 365453, 365589, 365603, 365699, 365701, 366357, 366421, 366477, 366513, 366515, 366645, 366661, 366667, 366677, 366705, 366709, 366733, 366743, 366765, 366805, 366819, 366933, 367045, 367117, 367121, 367301, 367309, 367321, 367797, 367813, 367821, 367853, 367863, 368193, 368195, 368197, 368203, 368205, 368215, 368223

  • PMF
    PMF
    Modifié (May 2023)
    @Wilfrid
    Ces 93 nombres sont les éléments du cluster {6, 34} (nombre étapes impaires e= 6 et longueur x=34)
    L'ensemble de ces nombres est composé de i_source et de k-ième déclinaisons de ces i_source tel que :
    i = i_source*2^(2*k-2)+(2^(2*(k-1))-1)/3

    Lorsque l'on trouve dans un cluster des i_source tel que i = i_source*2^(2*1-2)+(2^(2*(1-1))-1)/3 (cad k =1) ces i_source font leur première apparition dans l'ordre de la descendance des impairs générés depuis 16.

    Les i_source dont k = 1 propres à ce cluster sont :
    334961, 366705, 330097, 365297, 366513, 367121, 342849, 368193, 336577, 343001, 345049, 367321, 366819, 329955, 336099, 365283, 345059, 339811, 365603, 345123, 365699, 368195, 366515, 366667, 345163, 368203, 343051, 366743, 345175, 368215, 345207, 367863, 368223
    Tous les autres ont des k>1 et dépendent de i_source apparus dans des clusters précédents.

    La règle est qu'on ne trouve dans un cluster qu'une fois un i_source quel que soit la valeur k qui lui est associée. 

    Sur les 1878 descendants impairs de 16 pour x<=34, on compte 705 i_source. Ce qui veut dire qu'il y a 1173 impairs dont k>1 et qui peuvent être calculés par la formule.

    L'intéret des i_source est que si on vérifie que la suite d'un i_source revient à 1, alors :
    i = i_source*2^(2*k-2)+(2^(2*(k-1))-1)/3 revient à 1 pour tout k>1.
  • Plus simplement, ces 93 nombres constituent la liste exhaustive de tous les nombres impairs dont la suite compressée est de longueur 29 et de type 5 (il existe 5 termes impairs entre $n_0$ et 1). Leur longueur standard est 35 (c'est-à-dire 29 + 5 + 1).

    Ta réponse montre la confusion dans laquelle tu te trouves vis-à-vis du problème de Collatz. Il te suffisait de calculer la longueur de chacune de ces suites pour comprendre ce qui les liait. Au lieu de ça tu as inventé un nouveau concept, i_source, censé expliquer ce que sont ces 93 nombres, mais qui ne fait qu'ajouter à la confusion.

  • Ils sont tous plus grands que $10^5\pi$. J’ai une piste…
  • PMF
    PMF
    Modifié (May 2023)
    @Wilfrid
    bien sûr Wilfrid, bien sûr... 
    je n'ai jamais vu quelqu'un bloquer autant que toi sur un simple problème de mesure. Quelle distance est juste, celle en miles ou celle en kilomètres ?
    Le principe des clusters est de respecter cet intervalle :
    $\frac{2^{x-e-1}}{3^e} < i_{\text{source}} \cdot 2^{2k-2} + \frac{2^{2(k-1)} - 1}{3} < \frac{2^{x-e}}{3^e}$.
  • Je ne comprends rien à ce que tu dis. Qu'est-ce que la mesure vient faire ici ?
  • @Wilfrid
    Tu vas sur https://calculis.net/syracuse
    tu entres un des nombres de ta liste par exemple 316757
    le site va te donner la réponse suivante :

    316757 - 950272 - 475136 - 237568 - 118784 - 59392 - 29696 - 14848 - 7424 - 3712 - 1856 - 928 - 464 - 232 - 116 - 58 - 29 - 88 - 44 - 22 - 11 - 34 - 17 - 52 - 26 - 13 - 40 - 20 - 10 - 5 - 16 - 8 - 4 - 2 - 1

    La durée du vol pour 316757 est de 34 et son altitude est de 950272.

    Donc le monde entier sauf toi considère que la longueur de cette suite est bien 34 comme je l'ai dit.

    Si tu comptes les étapes impaires sauf 1 mais en prenant le premier terme tu trouves 316757, 29, 11, 17, 13, 5 donc SIX étapes impaires, comme je l'ai dit.

    Donc pour tout le monde cette suite appartient au cluster {6, 34} comme je l'ai dit.

    Tu peux aborder l'étude des suites de Collatz comme tu l'entends, mais SVP essaie d'avoir un minimum d'ouverture d'esprit. Sinon je ne vois pas à quoi  servent tes interventions sur ce fil. 

  • Je vois. La durée et le temps de vol sont des concepts uniquement franchouillards, qui ne sont encore utilisés que par ceux qui, malgré des efforts intellectuels constants, n'ont toujours pas réussi à dépasser ce stade primaire de l'analyse du problème, et dont l'erreur majeure est de confondre "durée de vol" avec "longueur".

    Puisque tu parlais de mesure, quelle est la longueur d'un triple décimètre ? Si on remplaçait chaque graduation (centimètre) par la valeur d'un de ses termes, on pourrait parler d'une suite de Collatz de longueur 30, n'est-ce pas ? La durée de vol serait le nombre d'étapes nécessaires à $n_0$ pour atteindre 1 ; autrement dit 29.

    C'est bon ? La lumière commence-t-elle à poindre au bout du tunnel ?

    PMF a écrit :
    Donc pour tout le monde cette suite appartient au cluster {6, 34} comme je l'ai dit.

    Si "tout le monde" signifie "ceux qui savent ce qu'est un cluster au sens de PMF", alors je crains que tu ne sois bien seul ! Allez, disons que vous êtes 3. En attendant, tu n'as toujours pas réussi, après avoir rempli une bonne centaine de pages, à convaincre qui que soit de la validité de ta théorie. Bon, à dire vrai c'est un peu normal : on ne peut pas adhérer à une théorie dans la compréhension de laquelle il faut avancer à l'aide d'une machette.

  • Certes il faut une machette pour avancer, mais ce n'est pas le problème. Et le challenge n'est pas de suivre PMF sur son sentier, c'est d'élargir le sentier pour que PMF lui-même puisse avancer.  On n'est pas dans une situation où PMF nous conduit quelque part, il nous demande de le conduire quelque part.

    Le problème, c'est que ce sentier, on l'a visité en long en large et en travers il y a 3 ans, on savait qu'au bout de ce sentier, il y avait un énorme précipice et le vide sidéral, et on a effectivement eu confirmation que ce sentier menait dans le vide.  Donc refaire le même trajet, pour retomber dans la même impasse, quel serait l'intérêt ?
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • @lourrran
    c'est un forum de philo ? Auquel cas, tu n'as pas beaucoup de capacités dans ce domaine...
    Tes interventions ne servent strictement à rien. Et je ne t'ai pas demandé d'aide à ce que je sache. 
    Si tu veux prouver quelque chose sur tes talents mathématiques, le principe est de montrer que quelque chose est vrai ou faux, pas de sortir du blabla de café du commerce.
    Donc où tu me montres que cette formule est fausse et pourquoi
    $\frac{2^{x-e-1}}{3^e} < i_{\text{source}} \cdot 2^{2k-2} + \frac{2^{2(k-1)} - 1}{3} < \frac{2^{x-e}}{3^e}$
    ou tu n'as rien à dire
  • C'est une grosse boucle ce fil. Et toujours aucune $\pi$ste à l'horizon...
  • Le problème de PMF est qu'il balance cette inégalité sans réaliser qu'elle ne se suffit pas à elle-même. Si on a un vague souvenir de ce que sont les variables e et x, par contre c'est le néant absolu en ce qui concerne k et i_source.

    Je crois même pouvoir affirmer qu'il n'a aucune idée de ce qu'elle signifie. S'il la répète à chacun de ses messages c'est juste pour faire croire qu'il sait de quoi il parle.

  • Cette formule, c'est une vague copie de ce que je t'ai expliqué il y a 3 ans. La principale différence, c'est que dans la formule originale, l'encadrement était  très resserré, alors que là, tu as un encadrement très approximatif.

    Regarde ce lien que je t'avais donné à l'époque : Eric Roosendaal et regarde le paragraphe sur les résidus. Le look est un peu daté, le site en question date d'une quinzaine d'années, mais même s'il date déjà de plusieurs années, il contient déjà les résultats de tes futures recherches.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • PMF
    PMF
    Modifié (May 2023)
    $\textbf{Théorème des i\_source pour la conjecture de Collatz}:$
    Soit un entier positif impair $i_{\text{source}}$ pour lequel la suite de Collatz revient à 1 en $x$ étapes, dont $e$ étapes impaires, avec un successeur $i'$. Alors, pour tout entier positif $k$, le nombre $i = i_{\text{source}} \times 2^{2k - 2} + \frac{2^{2(k - 1)} - 1}{3}$ revient également à 1 dans la suite de Collatz avec le même successeur $i'$.
    Considérons la suite de Collatz pour i_source et ses multiples k-i_source pour différents k. Par exemple, pour i_source = 3, nous avons les suites:
    3, 10, 5, 16, 8, 4, 2, 1
    13, 40, 20, 10, 5, 16, 8, 4, 2, 1
    53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1
    213, 640, 320, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1
    Nous pouvons observer que chaque suite a le même successeur impair dans la suite de Collatz que i_source. Plus précisément, chaque k-i_source est généré en doublant le nombre d'étapes paires entre i_source et son successeur impair i' dans la suite de Collatz.
    Pour tout nombre entier i, il existe une suite infinie de la forme i*2^n. Et pour chaque terme de cette suite, il y a un descendant possible dans la suite de Collatz de la forme (i*2^n-1)/3. Le premier de ces descendants qui est un nombre entier est le i_source.
    Par exemple, lorsque nous générons les descendants impairs depuis 16, nous obtenons la suite 5, 10, 20, 40, 80, 160, 320, 640. De cette suite, nous pouvons obtenir les k-i_source en soustrayant 1 et en divisant par 3, donnant 3, 13, 53, 213, qui sont les k-i_source du i_source = 3.
    Ces k-i_source ont tous le même successeur i' que i_source dans la suite de Collatz, donc si i_source atteint 1 dans la suite de Collatz, alors chaque k-i_source atteindra également 1 dans la suite de Collatz.
    Cela est généralisable à tout i_source et ses multiples k-i_source. Par conséquent, si un i_source donné revient à 1 dans la suite de Collatz, alors tous les multiples k-i_source de i_source reviendront également à 1 dans la suite de Collatz.
    Il existe 705 i_source parmi les 1878 descendants impairs pour x<=34.  Voici le début de la liste : 3, 113, 17, 227, 35, 75, 11, 151, 23, 7, 15, 7281, 1137, 201, 2417, 369, 401, 9, 14563, 2275, 403, 4849, 753, 4835, 739, 803, 19, 241, 9699, 1507...
    Il existe un niveau hiérachique supérieur aux i_source qui sera présenté plus tard.
  • Wilfrid
    Modifié (May 2023)

    PMF a écrit :
    Nous pouvons observer que chaque suite a le même successeur impair dans la suite de Collatz que i_source.

    Et tu n'en a même pas déduit ce qu'il y avait à en déduire, à savoir que 3, 13, 53, 213, 853, 3413, 13653, ... sont les prédécesseurs impairs de 5, raison pour laquelle ils ont tous 5 pour successeur impair.

    C'est ça qui est tuant chez toi : tu fais tout un plat de quelque chose que des tas de gens savaient déjà. Sauf que eux ne sont pas allés le proclamer sur un forum comme étant la découverte du siècle.

    Allez, cadeau pour la route : calcul des 9 premiers prédécesseurs d'un terme impair, en Python :

    def preds(n):
    	m = 3 - n % 3
    	if m == 3:
    		return "Multiple de 3"
    	else:
    		lst = []
    		k = (n * 2**m - 1) // 3
    		lst.append(k)
    		for j in range(1, 9):
    			k = 4 * k + 1
    			lst.append(k)
    	return lst
    
    print(preds(5))

    preds(5) renverra [3, 13, 53, 213, 853, 3413, 13653, 54613, 218453]

  • @Wilfrid
    C'est la relation entre $\frac{2^{x-e-1}}{3^e} < i_{\text{source}} \cdot 2^{2k-2} + \frac{2^{2(k-1)} - 1}{3} < \frac{2^{x-e}}{3^e}$
    et les clusters qui est intéressante :
    Si le i_source = 3 est dans le cluster {2, 7}  (cluster des suites de longueur 7 avec 2 étapes impaires), 
    alors tous les k-ièmes de 3 sont dans les clusters {2, 5+2k}
    je peux donc dire que 234562480592213 est dans le cluster {2, 53} sans avoir besoin de calculer cette suite.
    tu peux le vérifier ici : https://calculis.net/syracuse

    Donc cette formule est une façon de remplir les clusters de même e en y ajoutant un élement lié au i_source tous les x= n+2k
    On peut alors remarquer que pour tout cluster :
    1) il n'y a jamais ensemble un i_source (k=1) et son k-ième (k>1)
    2) on trouve généralement des valeurs de k : 1, 2, 3...n dans les clusters assez grands : par exemple le cluster {6,30} est composé 34 i_sources associés à  16 k =1, 7 k = 2, 7 k = 3, 2 k = 4, 1 k =5 et 1 k = 6.
    3) Certains clusters n'ont que des i_source avec k =1 comme {10, 32} qui contient 57 et 59. Mais d'autres n'ont aucun k=1 comme {10,34} qui contient 229 et 237 , qui sont justement des k-ièmes de 57 et 59 :
    229 = 57*2^(2*2-2)+(2^(2*(2-1))-1)/3
    237 = 59*2^(2*2-2)+(2^(2*(2-1))-1)/3

    A part ça je reste toujours ébahi par tes réponses. Est-ce que tu réfléchis 2 min avant d'écrire ? Comment veux-tu que l'on construise un i_source sans établir sa parenté ? Ce que j'ai écrit : "Pour tout nombre entier i, il existe une suite infinie de la forme i*2^n. Et pour chaque terme de cette suite, il y a un descendant possible dans la suite de Collatz de la forme (i*2^n-1)/3. Le premier de ces descendants qui est un nombre entier est le i_source." et que tu n'as pas lu comme d'hab.
  • PMF
    PMF
    Modifié (May 2023)

    Voici un exemple illustrant la "propagation" de la propriété "retour à 1" d'un nombre ‘’i_source’’ à d'autres nombres ‘’i_source’’ puis à leurs déclinaisons.

    Prenons pour i_source le nombre 3, qui se trouve dans le cluster {2, 7}, donc pour x=7. On sait que 3 "retourne à 1" : 3, 10, 5, 16, 8, 4, 2, 1.

    Nous allons suivre ces étapes d'opérations :
    32*3+17 = 113 et x = 7+6*1-1 = 12
    2*113+1 = 227  et x = 7+ 6*1 = 13
    32*227+17 = 7281 et x = 7+6*2-1 = 18
    2*7281+1 = 14563  et x = 7+ 6*2 = 19
    Cela signifie que nous multiplions alternativement le résultat précédent par 32 et ajoutons 17, puis multiplions le résultat précédent par 2 et ajoutons 1, en calculant x alternativement avec x = 7+6n-1 et 7+6n.

    Les nombres 113, 227, 7281 et 14563 sont des déclinaisons de 3 à différents rangs k et sont tous des nombres i_source. Ce cycle peut être répété indéfiniment, mais pour cet exemple, nous nous arrêtons à 14563 qui est dans le cluster {2, 19}.

    Calculons maintenant la déclinaison de 14563 pour k = 4 : 14563*2^(2*4-2)+(2^(2*(4-1))-1)/3 = 932053 qui se trouve donc dans le cluster {2, 25} (si pour k = 1 on a x=19, pour k = 4, x = 19+2*(k-1) = 25. Notez que nous restons dans e =2.

    Par conséquent, les suites de Collatz :
    3, 10, 5, 16, 8, 4, 2, 1 et
    932053, 2796160, 1398080, 699040, 349520, 174760, 87380, 43690, 21845, 65536, 32768, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1
    sont liées par des déclinaisons qui ont permis de passer de 3 à 932053. Dans ce cas, la propriété "retour à 1" de 3 est transférée à 932053.

    On remarquera que le successeur impair de 3 est (2^4-1)/3 = 5 et celui de 932053 est (2^16-1)/3 = 21845

    En résumé, il est possible d'identifier des "i_source primaires" qui peuvent générer des "i_source secondaires", lesquels auront à leur tour leurs propres déclinaisons.

  • Considérons les suites qui ont exactement deux étapes impaires

    Soit $j$ un entier positif supérieur ou égal à 1. Nous définissons un "i_source" par la formule suivante :

    $i_{\text{source}} = \frac{2^{3j+2-\text{mod}(j,2)}-1}{3}(4-2\text{mod}(j,2)) - \frac{1}{3}$

    De plus, pour tout entier positif $k$ supérieur ou égal à 1, nous pouvons définir un nombre $i$ dérivé de $i_{\text{source}}$ comme suit :

    $i = i_{\text{source}}\cdot2^{2k-2}+\frac{2^{2(k-1)}-1}{3}$

    Ces formules nous permettent d'obtenir tous les nombres impairs possibles qui apparaissent dans les suites de Collatz ayant exactement deux étapes impaires : pour tout $j$ et $k$, ces nombres $i$ retombent à 1 selon la conjecture de Collatz.

    Cela renforce la notion de propriété de transitivité relative à ces formules spécifiques, en partant de l 'hypothèse que si un certain $i$ initial revient à 1 (comme c'est le cas pour $i = 3$ avec $j = 1$ et $k = 1$), alors toutes les déclinaisons de $i$ obtenues par l'application de ces formules pour différentes valeurs de $j$ et $k$ reviendront également à 1.

    Cette analyse suggère qu'il pourrait être possible de généraliser cette approche pour les suites de Collatz ayant un nombre arbitraire d'étapes impaires, en exprimant tous les nombres impairs dans ces suites en termes de paramètres généraux comme ici $j$ et $k$.
  • Wilfrid
    Modifié (May 2023)

    La première mention de l'entité i_source se trouve dans ce message. Sans aucune explication évidemment. Normal, si tu avais compris de quoi il s'agissait tu l'aurais probablement expliqué. Mais comme ce n'était pas le cas, tu t'es contenté du mot i_source.

    Ce que tu appelles i_source est en fait "le plus petit prédécesseur impair d'un terme impair". Parmi l'infinité de ces prédécesseurs, le plus petit est le plus difficile à calculer. Prenons l'exemple de 35 et appelons la fonction ppp(35) (pour Plus Petit Prédécesseur) :

    def ppp(n):
    	m = 3 - n % 3
    	if m == 3:
    		return "Multiple de 3"		# un multiple de 3 n'a aucun prédécesseur
    	else:
    		return (n * 2**m - 1) // 3
    
    print(ppp(35))

    La fonction renverra 23, le fameux i_source, qui est le plus petit prédécesseur de 35.

    On peut ensuite calculer par récurrence autant de prédécesseurs de 35 qu'on veut :

    $p_{i+1}=4\,p_i+1$

    Ce qui donne

    4 * 23 + 1 = 93
    4
    * 93 + 1 = 373
    etc.

    PMF a écrit :
    Il faut noter que des impairs ayant le même i_source partagent le même e avec des valeurs x incrémentées de 2

    Au lieu de calculer les prédécesseurs par récurrence, on peut tout aussi bien faire

    n = 35	# valeurs précédentes de n et m, ainsi que celle calculée du plus petit prédécesseur
    m = 1
    lst = [23]
    for i in range(1, 9):
    	m += 2
    	lst.append((n * 2**m - 1) // 3)
    
    print(lst)  # [23, 93, 373, 1493, 5973, 23893, 95573, 382293, 1529173]

    On reprend la même formule que pour le calcul du plus petit prédécesseur, en incrémentant simplement $m$ de 2 à chaque itération. La méthode par récurrence est cependant plus rapide. Augmenter l'exposant $m$ de 2 implique que pour construire la suite du prédécesseur ainsi obtenu il faudra 2 divisions par 2 supplémentaires. Par exemple,

    23, 35, 53, 80, 40, 20, 10, 5, 8, 4, 2, 1

    93, 140, 70, 35, 53, 80, 40, 20, 10, 5, 8, 4, 2, 1

    373, 560, 280, 140, 70, 35, 53, 80, 40, 20, 10, 5, 8, 4, 2, 1

    On voit que pour atteindre 35 il faut 1, 3 puis 5 étapes. Et bien sûr, le nombre de termes impairs ($e$) dans chacune des suites est invariable (on ne fait qu'ajouter des termes pairs).

    Il va sans dire que tu étais incapable de fournir la moindre explication à ces accroissements successifs de longueur. Tout ce que tu constates est que 93, 373, 1493, 5973, 23893, etc. "possèdent le même i_source" (sic) alors qu'en réalité le i_source en question fait partie de ces prédécesseurs, qu'il est le plus petit d'entre eux. Tout comme tu transformes la réalité en prétendant qu'une suite de longueur 30 est de longueur 29, tu la transformes de nouveau en inventant l'entité i_source dont tu décrètes l'existence indépendante, source de je ne sais quoi et très probablement brique fondamentale dans la démonstration de la conjecture.

  • PMF
    PMF
    Modifié (May 2023)
    @Wilfrid
    Merci pour ta contribution. J'avais compris ce que tu dis mais je ne l'explique pas de la même façon que toi.
    C'est aussi l'intérêt d'échanger sur ce forum. 
    Malheureusement tu retombes dans tes travers habituels à la fin de ton message... Mais bon...
    Tu trouveras dans ce message https://les-mathematiques.net/vanilla/index.php?p=/profile/PMF une version plus aboutie qui établit deux niveaux de hierarchie au dessus d'un impair.
  • PMF
    PMF
    Modifié (May 2023)
    Ce qui est expliqué dans ce message https://les-mathematiques.net/vanilla/index.php?p=/profile/PMF est un apport pour la construction les clusters.
    En effet tous les clusters de la forme {2, x} cad tous les clusters ayant 2 étapes impaires (e=2) pour toutes les longueurs x possibles, sont définis par :
    $i_{\text{source}} = \frac{1}{3} \left( \left(\frac{2^{3j+2-\text{mod}(j,2)}-1}{3}\right) \left(4-2\text{mod}(j,2)\right) -1 \right)$
    et
    $i = i_{\text{source}}\cdot2^{2k-2}+\frac{2^{2(k-1)}-1}{3}$
    et pour la longueur de suite 
    $x = 2k + 3j + 2 - \text{mod}(j,2) + e$

    Si on prend par exemple le cluster {2, 34}, on y trouve : 475354453, 477189461, 477218133, 477218581
    Ce qui revient à :
    475354453 =  113*2^(2*12-2)+(2^(2*(12-1))-1)/3
    477189461 =  7281*2^(2*9-2)+(2^(2*(9-1))-1)/3
    477218133 =  466033*2^(2*6-2)+(2^(2*(6-1))-1)/3
    477218581 =  29826161*2^(2*3-2)+(2^(2*(3-1))-1)/3
    et pour le calcul des i_source :
    113 = ((2^(3*2+2-MOD(2;2))-1)/3*(4-2*MOD(2;2))-1)/3 =  ((2^(3*2+2)-1)/3*4-1)/3
    7281 = ((2^(3*4+2-MOD(4;2))-1)/3*(4-2*MOD(4;2))-1)/3 =((2^(3*4+2)-1)/3*4-1)/3
    466033 = ((2^(3*6+2-MOD(6;2))-1)/3*(4-2*MOD(6;2))-1)/3 =  ((2^(3*6+2)-1)/3*4-1)/3
    29826161 = ((2^(3*8+2-MOD(8;2))-1)/3*(4-2*MOD(8;2))-1)/3 =  ((2^(3*8+2)-1)/3*4-1)/3
    et enfin pour le calcul de x = 2*k+3*j+2-MOD(j;2)+e
    475354453 :  x = 34 = 24 + 8 +2
    477189461 :  x = 34 = 18 + 14 +2
    477218133 :  x = 34 = 12 + 20 +2
    477218581 :  x = 34 = 6+ 26 +2

    Le cluster {2, 34} est donc composé de 4 impairs de paramètres (j, k) : (2, 12), (4, 9), (6, 6), (8, 3). Ces paramètres donnent aussi la même longueur x. Le principe d'un cluster est donc parfaitement explicité pour e = 2.
  • Tu n'as pas défini $j$.
  • Pourquoi fournir des listes de données.  
    Ne peut-on pas s’exprimer clairement ?

    J’entends bien que des exemples éclairent mais faut-il encore commencer par écrire quelque chose de clair. 
  • Dom, ce que PMF via ses clusters et moi-même via une approche combinatoire tentons d'obtenir, c'est la liste de tous les entiers impairs dont la suite de Collatz est de longueur donnée et comprend le nombre donné de termes impairs.
  • Wilfrid
    Modifié (May 2023)

    Wilfrid a écrit :
    Tu n'as pas défini j

    Pas besoin, on peut faire ce calcul beaucoup plus simplement :

    def successeur(n):
    	m = 3 * n + 1
    	n1 = m // (m & -m)
    	m = 3 - n1 % 3
    	return [n1, (n1 * 2**m - 1) // 3]
    
    
    print(successeur(95573))  # Renvoie [35, 23]

    La fonction "successeur(n)" renvoie "[successeur de n, le plus petit prédécesseur de celui-ci]".

    Je ne vois pas ce que tu vas pouvoir en faire, mais c'est ton problème.

  • Merci Wilfrid.
    n1 = m // (m & -m) permet d'obtenir le plus grand diviseur de puissance de deux de $m$, ce qui donne le nombre de divisions par 2 que l'on peut effectuer sur $m$ dans la conjecture de Collatz avant d'obtenir un nombre impair. 
    Ce qui est intéressant ce n'est pas le résultat de ton script, puisque on les obtient avec les suites, mais qu'il existe au moins une opération (binaire dans ce cas) qui permet d'avoir ces résultats sans les suites.
    Pour "emuler" ton script (sans binaire) pour i = 113 par exemple (en utilisant mes notations) :
    i = 113
    3i+1 = 340
    (3i+1)/2 = 170 (c'est pair on continue)
    i' = (3i+1)/4 = 85 (c'est impair, c'est le bon nombre de div par 2)
    k=3-(i'-ENT(i'/3)*3) = 2 
    et la vérification que k est correct :
     i'*2^k = 340 
    i = (i'*2^k-1)/3 = 113
  • Même un calcul d'une telle simplicité tu le rends aussi obscur qu'une énigme à la Da Vinci Code... Pas étonnant que personne ne comprenne rien à tes explications.
  • @Wilfrid
    Ce qui pourrait aider serait une variante de ton script pour créer des suites type composées uniquement des plus petits prédécesseurs pour chaque valeur de $e$. Par exemple pour e = 4, on devrait obtenir :
    11 17 13 5
    401 301 113 85
    201 151 227 341
    51777 38833 29125 5461
    25889 19417 14563 21845
    414251 621377 466033 349525
    6628033 4971025 3728269 1398101
    13256071 19884107 29826161 22369621
  • Wilfrid
    Modifié (May 2023)

    e = 4 ne veut rien dire en soi. Une suite de Collatz est définie par sa longueur et par le nombre de termes impairs qu'elle contient, ce que pour ma part je nomme $L$ et $t$ (pour "type"). Quant au concept de "plus petit prédécesseur de e = 4", aucune idée de ce que c'est. Si tu parles de toutes les suites comptant 4 termes impairs tu oublies une chose : puisque tu comptabilises $n_0$ dans ce nombre, lorsque tu le feras précéder de son plus petit prédécesseur tu te retrouveras avec une suite comptant 5 termes impairs au lieu de 4. Donc ça t'avancera à quoi puisque le sujet de l'étude se sera transformé ?

  • Il s'agit juste de composer des suites de $e$ étapes impaires uniquement composée des plus petits prédécesseurs comme par exemple ces suites qui ont 4 étapes impaires (sans inclure 1) :
    11, 17, 13, 5
    401, 301, 113, 85
    201, 151, 227, 341
    51777, 38833, 29125, 5461
    25889, 19417, 14563, 21845
    414251, 621377, 466033, 349525
    6628033, 4971025, 3728269, 1398101
    13256071, 19884107, 29826161, 22369621
    Comme tu le vois ci dessus nous avons les suites se terminant par i=(2^(2n)-1)/3 avec n un entier positif. Chaque prédécesseur est a priori le plus petit. L'idée serait que le script puisse faire des suites jusqu'à 11 étapes impaires en gardant 2n<=34. 
  • D'accord. Mais tu peux faire débuter tes suites par n'importe quel prédécesseur du second terme. Qu'est-ce ça changera que ce soit l'un ou l'autre ?

    PMF a écrit :
    Comme tu le vois ci dessus nous avons les suites se terminant par i=(2^(2n)-1)/3 avec n un entier positif.

    Tu peux créer des suites se terminant par tout ce que tu veux, aucun problème. Il suffit de partir de ce dernier terme et de lui calculer autant de prédécesseurs que tu veux, que ce soit le plus petit ou non. Je suppose d'ailleurs que c'est ce que tu as fait.

    Toutes les suites que tu peux imaginer existent, la preuve étant qu'à partir d'une suite aléatoire d'exposants de 2, de longueur arbitraire, chacun d'eux correspondant au nombre de divisions par 2 qu'on a effectué pour passer d'un terme impair au suivant, on peut retrouver son premier terme (j'en ai parlé quelque part il y a longtemps. L'algorithme est dû à Collag3n). Crois-moi, tu seras mort bien avant de parvenir à la moindre conclusion.

  • @Wilfrid
    L'idée est de construire des suites composées des plus petits prédécesseurs possibles. 
    Regarde cette suite : 17, 13, 5. 
    elle est composée des termes impairs de la suite hormis le 1 : 17 - 52 - 26 - 13 - 40 - 20 - 10 - 5 - 16 - 8 - 4 - 2 - 1 
    Cette suite appartien au cluster {3, 12}. 3 est son nombre d'étapes impaires, sans le 1, mais en comptant la première. 12 est sa longueur : cette suite comprend 12 nombres sans compter le 1.
    Tu remarques que 13 n'est pas le plus petit prédécesseur car c'est 3. Mais 3 n'a pas de prédécesseur donc on a pris le deuxième plus petit prédécesseur qui est 13. Par contre 17 est bien plus petit prédécesseur de 13.

    Prenons maintenant : 11, 17, 13, 5 qui sont les étapes impaires de la suite 11 - 34 - 17 - 52 - 26 - 13 - 40 - 20 - 10 - 5 - 16 - 8 - 4 - 2 - 1
    On a ajouté le plus petit prédécesseur de 17 à la suite 17, 13, 5 et on est donc désormais dans le cluster {4, 14}. Cette suite est donc composée des plus petits prédécesseurs non multiples de 3 possibles.

    Ce qui veut dire que si je peux faire la suite 75, 113, 85 puisque 75 est bien le plus petit prédécesseur de 113, je suis obligé pour la suite suivante de "passer" 75 et d'aller au suivant qui est 301 (2ème plus petit pred de 113). Donc la suite est  401, 301, 113, 85. La suite en 3 étapes devrait donc être 301, 113, 85 et non pas 75, 113, 85.

    La finalité de ce petit exercice est que si tu trouves tous les plus petits prédécesseurs non multiples de 3 jusqu'à un certain nombre d'étapes impaires, cela devient la liste des i_source, et tu peux générer à partir d'eux des impairs qui en dérivent. Par exemple, si la suite en 3 étapes impaires est initiée par 17, 13, 5 alors on peut changer 17 par 35, 69, 141, 277 qui seront tous suivi de 13, 5. Et ces nombres sont calculables :

    Par exemple pour i_source = 17
    en utilisant $i = i_{\text{source}}\cdot2^{2k-2}+\frac{2^{2(k-1)}-1}{3}$
    avec k = 2 : 69
    avec k = 3 : 277
    et en utilisant : $i = i_{\text{source}}\cdot2^{2k-1}+\frac{2^{2(k)}-1}{3}$
    avec k = 1 : 35
    avec k = 2: 141

    Il est donc possible de trouver des k-ièmes suites de 3 étapes impaires se terminant par 13, 5.

    et le processus est évident répétable pour des suites de 3 étapes impaires se terminant par :
    113, 85 : i_source = 301
    227, 341 : i_source = 151
    29125, 5461 : i_source = 38833
  • Wilfrid
    Modifié (May 2023)

    Voici l'algorithme conçu par Collag3n, bidouillé par moi-même et optimisé par GPT-4. La fonction suiteImpaire(n) est là uniquement pour calculer le dernier terme du segment de suite résultant :

    """
    Suite de Collatz impaire
    """
    def suiteImp(n):
    	lst = [n]
    	while n > 1:
    		m = 3 * n + 1
    		n = m // (m & -m)
    		lst.append(n)
    
    	return lst
    
    """
    Renvoie les premier et dernier termes du segment de suite défini par une séquence d'exposants de 2
    """
    def exp2n0(seq):
    	s = seq.pop()
    	n = (5**(s % 2) * 2**s - 1) // 3
    	for u in reversed(seq):
    		m = 5**(u % 2)
    		inc = 2**(s + 1)
    		while (n - m) % 6 != 0:
    			n += inc
    		n = (n * 2**u - 1) // 3
    		s += u
    
    	q = suiteImp(n)[:len(seq)+2][-1]
    	print(f"{n} | {q}")
    	return None
    
    
    exp2n0([2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 3, 1, 1, 2, 1, 2])  # Affiche 121 | 319

    Avec la suite d'exposants fournie, exp2n0(seq) affiche 121 | 319. Le segment de suite correspondant est

    121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319

    On voit que le nombre de termes pairs situés entre deux termes impairs correspond exactement à la suite d'exposants. Quelle que soit la suite d'exposants, l'algorithme calculera le segment de suite auquel elle correspond. Donc toutes les suites existent, aucune ne fait exception. Chercher un ou des cas particuliers serait une perte de temps.

  • Cette méthode fournit une manière systématique de calculer tous les termes impairs spécifiques, désignés ici comme les "i_source", qui sont les plus petits prédécesseurs non multiples de 3, pour n'importe quelle suite composée de $e$ étapes impaires. En utilisant cette méthode, nous pouvons générer des suites d'étapes impaires uniques comme celles présentées ci-dessous :

    11, 17, 13, 5

    401, 301, 113, 85

    201, 151, 227, 341

    51777, 38833, 29125, 5461

    25889, 19417, 14563, 21845

    414251, 621377, 466033, 349525

    6628033, 4971025, 3728269, 1398101

    13256071, 19884107, 29826161, 22369621

    Ce qui rend ces séquences particulières est qu'elles ne peuvent pas avoir de prédécesseurs plus petits non multiples de 3 avant chaque terme.

    • Soit $i_n$ la suite des nombres que nous cherchons à générer pour un certain $e$.
    • Soit $k_n$ le paramètre $k$ que nous calculons à chaque étape.
    • Soit $i'_n$ la suite précédente (c'est-à-dire la suite $i$ pour $e-1$).

    Étape 1 : Pour $e=1$, nous utilisons la formule suivante pour générer $i_n$ :

    $\begin{equation} i_n = \frac{2^{2n+2} - 1}{3}, \quad \text{pour} \quad n \mod 3 \neq 2 \end{equation}$

    Cette formule génère la suite suivante :

    5, 85, 341, 5461, 21845, 349525, 1398101, 22369621, 89478485.

    Étape 2 : Pour $e \geq 2$, nous utilisons deux formules. D'abord, nous calculons $k_n$ :

    $\begin{equation} k_n = 3 - (i'_n - \left\lfloor \frac{i'_n}{3} \right\rfloor \cdot 3), \quad \text{pour} \quad i'_n \mod 3 \neq 0 \end{equation}$

    Ensuite, nous utilisons $k_n$ pour calculer $i_n$ :

    $\begin{equation}i_n = \begin{cases} \frac{i'_n \cdot 2^{k_n+2} - 1}{3}, & \text{si} \quad (i'_n \cdot 2^{k_n} - 1) \mod 3 = 0 \\ \frac{i'_n \cdot 2^{k_n} - 1}{3}, & \text{sinon} \end{cases} \end{equation}$

    Ces formules génèrent les suites suivantes pour chaque $e$ :

    Pour $e=2$ :

    13, 113, 227, 29125, 14563, 466033, 3728269, 29826161, 59652323

    Pour $e=3$ :

    17, 301, 151, 38833, 19417, 621377, 4971025, 19884107, 39768215

    Pour $e=4$ :

    11, 401, 805, 207109, 25889, 414251, 6628033, 13256071, 106048573

    Pour $e=5$ :

    7, 1069, 1073, 276145, 69037, 276167, 8837377, 70699045, 565592389

    En résumé, pour chaque $e$, vous utilisez la suite précédente pour générer $k_n$, puis vous utilisez $k_n$ et la suite précédente pour générer la nouvelle suite $i_n$. Pour $e=1$, vous utilisez une formule différente pour générer la suite initiale.

    Les formules pour Excel sont :

    pour e = 1 : 
    i =(2^(2*n+2)-1)/3 si mod(n,3)<>2
    Il suffit de placer au dessus de chaque cellule les valeur de n (les résultats affichés vont jusqu'à n = 13)
    pour e>1 :
    k = SI(i'<>"";SI(MOD(i';3)<>0;3-(i'-ENT(i'/3)*3);"");"")
    i  =SI(i'<>"";SI(MOD(i';3)<>0;SI(MOD((i'*2^k-1)/3;3)=0;(i'*2^(k+2)-1)/3;(i'*2^k-1)/3);"");"")
    i' est le résultat du résultat précédent. 
  • Je n'ai pas vérifié tes dires mais j'ai deux questions : à quoi tout cela conduit-il ? Qu'est-ce que ça nous apprend ?
  • PMF
    PMF
    Modifié (May 2023)
    @Wilfrid
    Pour répondre à ta question : dans ma logique de clusters, je cherche à formuler tous les impairs de n'importe quel cluster {e, x}.
    Ce qui est dans mon message précédent est maintenant fonctionnel sous excel et sous python. Je peux donc générer mes i_source pour n'importe quel valeur de x et de e.
  • Wilfrid a écrit :
    Ce qui m'intéresse est de savoir pourquoi le nombre de suites standard de longueur donnée est astronomiquement inférieur au nombre de suites compressées de la même longueur.

    J'ai la réponse. Pour commencer je dois préciser que ma méthode de calcul du premier terme des suites de longueur donnée n'a rien à voir avec celle de PMF. Je ne m'intéresse qu'aux suites compressées et lui aux suites standard ; d'autre part, j'attribue un type aux suites, qui est le nombre de termes impairs qu'elles contiennent hormis $n_0$ (premier terme) et 1. PMF comptabilise tous les termes impairs sauf 1, le dernier. Enfin, la longueur d'une suite correspond pour moi à son nombre total de termes ; pour PMF, la longueur n'inclut pas 1 (?).

    Pour transformer une suite compressée typée en suite standard on met tout simplement en œuvre la fonction de Collatz : si $n$ impair faire $3\,n+1$. C'est ce qu'on ajoute après chaque terme impair :

    compressée : 11, 17, 26, 13, 20, 10, 5, 8, 4, 2, 1
    standard : 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1

    Comme le nombre de termes impairs sans $n_0$ et 1 représente le type $t$ de la suite, la longueur $L'$ d'une suite standard est égale à celle d'une suite compressée augmentée de $t+1$ :

    $L'=L+t+1$

    +1 pour tenir compte du terme pair additionnel après $n_0$.

    compressée : 11, 17, 26, 13, 20, 10, 5, 8, 4, 2, 1
    standard : 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1

    $L'=11+3+1=15$

    Supposons que nous désirions trouver toutes les suites standard de longueur 25. Nous posons

    $L+t+1=25$
    $L+t=24$

    $t$ ne peut pas être égal à 0 car il n'existe aucune suite compressée de longueur paire et de type 0 (les seuls termes impairs sont alors $n_0$ et 1).

    • Nous commençons donc avec $t=1$, ce qui donne $L=23$. il existe 3 suites compressées de longueur 23 et de type 1 :
      464213, 466005, 466033.

    • $t=2, L=22$. 8 suites :
      70997, 72789, 72817, 77141, 77365, 77589, 77667, 77669

    • $t=3, L=21$. 10 suites :
      11605, 11829, 12053, 12131, 12133, 12853, 12885, 12893, 12913, 12931

    • $t=4, L=20$. 9 suites :
      1877, 1933, 1969, 1971, 1989, 2009, 2141, 2147, 2149

    • $t=5, L=19$. 4 suites :
      309, 321, 325, 331

    • $t=6, L=18$. 2 suites :
      49, 51

    On ne peut pas aller plus loin puisqu'il n'existe aucune suite compressée de longueur 17 et de type 7.

    Au total nous avons donc 36 suites standard de longueur 25.

    En comparaison, il existe 160 suites compressées de longueur 25. Plus $L$ augmente et plus la différence se creuse. C'est pourquoi j'ai toujours dit que mener une étude du problème de Collatz en se penchant sur les suites standard revient à se priver volontairement de la quasi totalité des données à notre disposition. Une sorte de hara-kiri.

    PMF a écrit :
    nous pouvons générer des suites d'étapes impaires uniques comme celles présentées ci-dessous :
    11, 17, 13, 5
    ...

    Uniques dans quel sens ? Chaque entier positif est unique dans l'arbre des suites de Collatz, donc la séquence 11, 17, 13, 5 l'est également puisque ses termes ne peuvent pas figurer ailleurs. On peut néanmoins s'intéresser aux exposants de 2 qui ont été produits lors de sa création : 1, 2, 3. Existe-t-il une autre séquence générant les mêmes exposants ? Oui, une infinité :

    139, 209, 157, 59
    267, 401, 301, 113
    395, 593, 445, 167
    523, 785, 589, 221
    etc. etc.

    Si tu en veux d'autres tu n'as qu'à demander. La différence entre ces séquences et celles que tu proposes est que le dernier terme de celles-ci figure parmi les prédécesseurs de 1 non-multiples de 3 : 5, 85, 341, 5461, 21845, ... , et que leur premier terme est le plus petit prédécesseur du second terme. Ces séquences que tu qualifies d'uniques je peux t'en fabriquer également à la pelle, puisqu'il en existe une infinité :

    23, 35, 53, 5
    6065, 4549, 853, 5
    739, 1109, 13, 5
    6067, 9101, 3413, 5
    53024227, 79536341, 1864133, 349525
    6628033, 4971025, 3728269, 1398101
    565592395, 848388593, 636291445, 89478485
    etc. etc.

    Bref, il va falloir que tu trouves quelque chose de plus convaincant.

  • @Wilfrid
    C'est toujours du chipeautage sur les termes. Le terme "unique" n'est peut-être pas le plus adéquat. Je veux dire que pour tout type de suites comprenant $e$ étapes impaires et se terminant par un impair $i$ tel que 3i+1 soit une puissance de 2, il existe une """"unique"""" suite composée des plus petits prédécesseurs non multiples de 3.
    Par exemple pour les suites de 5 étapes impaires, les impairs 7, 1069, 1073, 276145, 69037, 276167, 8837377, 70699045, 565592389 ont des suites uniquement composées de plus petits prédécesseurs et se terminent respectivement par : 5, 85, 341, 5461, 21845, 349525, 1398101, 22369621, 89478485

    Pour trouver ces impairs voici le script Python (il suffit de rentrer en e_max et x_max les valeurs que l'on veut :

    def generate_collatz_sequences(x_max, e_max):
        n_max = x_max // 2 - 1
        sequences = []

        for e in range(1, e_max+1):
            sequence = []
            for n in range(1, n_max+1):
                if e == 1:
                    if n % 3 != 2:
                        i = (2**(2*n+2) - 1) // 3
                        sequence.append(i)
                else:
                    for i_previous in sequences[e - 2]:  # iterate through each number in the previous sequence
                        k = 3 - (i_previous - (i_previous // 3) * 3) if i_previous % 3 != 0 else None
                        if k is not None:
                            if ((i_previous * 2**k - 1) // 3) % 3 == 0:
                                i = (i_previous * 2**(k+2) - 1) // 3
                            else:
                                i = (i_previous * 2**k - 1) // 3
                            sequence.append(i)
            sequence = list(dict.fromkeys(sequence))  # remove duplicates while preserving order
            sequences.append(sequence)

        return sequences

    x_max = 12
    e_max = 5
    sequences = generate_collatz_sequences(x_max, e_max)
    for e, seq in enumerate(sequences, start=1):
        print(f"For e={e}, sequence is {seq}")

  • C'est GPT-4 qui t'a fourni cet algorithme ?

    Ce qui est ennuyeux est qu'il renvoie toujours le plus petit prédécesseur. Le sommeil te guette avec ce genre de résultat. Ce qu'il faudrait c'est faire varier un peu ce qu'il renvoie en générant une liste des 6 plus petits prédécesseurs non-multiples de 3, par exemple, et en choisissant l'un d'eux au hasard.

    Et une fois les résultats plus variés obtenus, c'est quoi la suite ?

  • PMF
    PMF
    Modifié (May 2023)
    Essaie ça :
    import math
    
    def calculate_e(x, i):
        return math.ceil((x - math.log2(i)) / math.log(6, 2))
    
    def generate_impairs_and_clusters(x_max):
        x = 4
        current_generation = [2**x]
        impairs = []
        super_i_source = []
    
        for _ in range(x, x_max + 1):
            x += 1
            next_generation = [2*num for num in current_generation]
            new_odds = []
            for num in current_generation:
                if (num - 1) % 3 == 0:
                    possible_odd = (num - 1) // 3
                    if possible_odd % 2 != 0 and possible_odd != 1:
                        new_odds.append(possible_odd)
                        e = calculate_e(x, possible_odd)
                        if e not in [s[0] for s in super_i_source]: # add to super_i_source only if e is not already in the list
                            super_i_source.append((e, x, possible_odd))
            next_generation += new_odds
            impairs.append(new_odds)
            current_generation = next_generation
    
        return impairs, super_i_source
    
    x_max = 34
    impairs, super_i_source = generate_impairs_and_clusters(x_max)
    
    print("Impairs for each generation (from x=4 to x_max):")
    for x, imp in enumerate(impairs, start=5):  # Changed start=4 to start=5
        print(f"x={x}: {imp}")
    
    print("\nSuper i_source and their clusters:")
    for e, x, i in super_i_source:
        print(f"e: {e}, x: {x}, i: {i}")
  • Wilfrid
    Modifié (May 2023)
    Si tu te fais livrer une station électrique à installer dans ton jardin, quelle est la première chose que tu vas chercher après avoir ouvert le colis ?
    Pourquoi ai-je dû poser cette question ?
  • entre la "valeur x_max =" de ton  choix en ligne 30
  • Wilfrid
    Modifié (May 2023)
    Quand on poste du code on explique ce qu'il fait et à quoi il sert. Sinon on demande beaucoup trop à ceux qui le lisent.
    Avec les données fournies par cette fonction tu pourrais tracer l'arbre des suites de Collatz dans la région de 1. Et tu en ferais quoi ? Ça démontrerait quoi ?
  • PMF
    PMF
    Modifié (May 2023)
    @Wilfrid
    Comme tu le vois ce script liste tous les impairs selon la longueur $x$ de leur suite. En fin de liste, le script donne les valeurs minimales de $i $pour chaque valeur de $e$ (le nbr d'étapes impaires de la suite). Donc pour chaque cluster {e, x} :
    {1, 5} : i = 5
    {2, 7} : i = 3
    {3, 12} : i = 17
    {4, 14} : i = 11
    {5, 16} : i = 7
    {6, 19} : i = 9
    {7, 23} : i = 25
    {8, 26} : i = 33
    {9, 29} : i = 43
    {10, 32} : i = 57
    {11, 34} : i = 39
    Si tu prends par exemple i_source = 17 dans le cluster {3, 12}, alors pour k un entier positif :
    en calculant :
    i = i_source*2^(2*k-2)+(2^(2*(k-1))-1)/3
    tu vas trouver : 17, 69, 277, 1109, 4437, 17749, 70997, 283989, 1135957, 4543829, 18175317, 72701269... dans les clusters : {3, 12}, {3, 14}, {3, 16}, {3, 18}, {3, 20}, {3, 22}, {3, 24}, {3, 26}, {3, 28}, {3, 30}, {3, 32}, {3, 34}
    C'est une belle illustration que le i_source d'un cluster {e, x} se décline à l'infini dans les clusters {e, x+2n}.
  • PMF
    PMF
    Modifié (May 2023)
    $\frac{2^{x-n}}{3^n} < i_n < \frac{2^{x-n+1}}{3^n}, \quad \text{pour } n = 1, 2, \ldots, e$
    $i_{n} = \frac{i_{n-1} \cdot 2^{k_n} - 1}{3}, \quad \text{pour } n = 1, 2, \ldots, e$
    où $i_0 = 1$, et chaque $i_n$ est un nombre impair non multiple de 3 et différent de 1.
    $e$ le nombre d'étapes impaires d'une suite de Collatz, $x$ la longueur d'une suite de Collatz
    et donc $i_n$ un impair dans un cluster {e, x}

    Pour obtenir le nombre 17 en utilisant la formule récursive fournie avec e = 3, nous allons procéder de la façon suivante :

    Tout d'abord, rappelons que nous partons de i_0 = 1. Nous devons trouver des valeurs appropriées pour k_1, k_2 et k_3, de sorte que i_3 soit égal à 17.
    Pour n = 1, nous choisissons k_1 = 4. Donc, i_1 = (1*2^4 - 1) / 3 = 5.
    Pour n = 2, nous choisissons k_2 = 3. Donc, i_2 = (5*2^3 - 1) / 3 = 13.
    Pour n = 3, nous choisissons k_3 = 2. Donc, i_3 = (13*2^2 - 1) / 3 = 17.

    En Python :
    def recursive_i(init_val, k_vals, e):
        result = init_val
        for n in range(e):
            result = (result * 2**k_vals[n] - 1) / 3
        return int(result)
    # Test the function
    init_val = 1
    k_vals = [4, 3, 2]  # Your list of k values
    e = 3
    print(recursive_i(init_val, k_vals, e))
  • PMF a écrit :
    En fin de liste, le script donne les valeurs minimales de i pour chaque valeur de e

    Intéressant en effet. Je n'avais pas prêté attention aux dernières lignes du résultat.

    Résultats pour x_max = 80. J'ai mis en gras le résultat attendu :

    e: 16, x: 46, i: 123
    e: 17, x: 49, i: 169
    e: 1, x: 51, i: 375299968947541 <-- 219 (e = 1 au lieu de 18)
    e: 18, x: 52, i: 225
    e: 19, x: 54, i: 159
    e: 20, x: 58, i: 393

    L'erreur avec e = 1 au lieu de 18 est apparemment due à l'utilisation de ceil dans la fonction calculate_e(). En utilisant round, l'erreur disparaît. Liste complète des résultats pour x_max = 80 :

    e: 1, x: 5, i: 5
    e: 2, x: 7, i: 3
    e: 3, x: 12, i: 17
    e: 4, x: 14, i: 11
    e: 5, x: 16, i: 7
    e: 6, x: 19, i: 9
    e: 7, x: 23, i: 25
    e: 8, x: 26, i: 33
    e: 9, x: 29, i: 43
    e: 10, x: 32, i: 57
    e: 11, x: 34, i: 39
    e: 12, x: 38, i: 105
    e: 13, x: 41, i: 139 <-- 135 (mais même longueur et même nombre de termes impairs)
    e: 14, x: 44, i: 185
    e: 15, x: 46, i: 123
    e: 16, x: 49, i: 169
    e: 17, x: 52, i: 225 <-- 219 (idem)
    e: 18, x: 54, i: 159
    e: 19, x: 58, i: 393 <-- 379 (idem)
    e: 20, x: 60, i: 283
    e: 21, x: 63, i: 377
    e: 22, x: 65, i: 251
    e: 23, x: 67, i: 167
    e: 24, x: 69, i: 111
    e: 25, x: 73, i: 297
    e: 26, x: 76, i: 395
    e: 27, x: 78, i: 263
    e: 28, x: 80, i: 175

    On voit que le nombre d' "erreurs" est très réduit.

    Ci-dessous la même fonction dans laquelle n'est conservé que le calcul des "super_i_source". J'ai remplacé le calcul de math.log(6, 2) par la constante log6, parce qu'il est répété plus de 100 000 fois avec x_max = 70. Temps de calcul :

    x_max = 70 --> 19,48 s
    x_max = 75 --> 65,48 s
    x_max = 80 --> 220,71 s

    En remplaçant la recherche de e dans la liste super_i_source par sa recherche dans le dictionnaire super_i_source_dict on réduit la durée du calcul de près de la moitié. En effet, la complexité de la recherche dans une liste est O(n), où n est le nombre d'éléments de cette liste. Dans un dictionnaire, cette complexité est en moyenne O(1), c'est-à-dire qu'elle est constante. Résultat :

    x_max = 70 --> 11,37 s
    x_max = 75 --> 37,06 s
    x_max = 80 --> 120,44 s

    Le temps de calcul des "super_i_source" croît de manière exponentielle avec x_max (on multiplie la durée par 3.25 par tranche de 5). A ce rythme il faudrait 3 h 45 min pour x_max = 100. Je pense que la remise en service de la méthode par force brute finirait rapidement par s'imposer.

    Tout ça pour dire que cette méthode de calcul est une super-trouvaille, mais qu'elle n'est pas exploitable. Peut-être que quelqu'un aura envie d'étudier son fonctionnement en vue de l'améliorer, mais je doute que le temps de calcul puisse être ramené à des proportions raisonnables.

    from math import log2
    from time import perf_counter
    
    def calculate_e(x, i):
        return round((x - math.log2(i)) / log6)
    
    def calculate_super_i_source(x_max):
        x = 4
        current_generation = [2**x]
        super_i_source_dict = {}
    
        for _ in range(x, x_max + 1):
            x += 1
            next_generation = [2*num for num in current_generation]
            new_odds = []
            for num in current_generation:
                temp = num - 1
                if temp % 3 == 0:
                    possible_odd = temp // 3
                    if possible_odd > 1 and possible_odd % 2 == 1:
                        new_odds.append(possible_odd)
                        e = calculate_e(x, possible_odd)
                        if e not in super_i_source_dict:
                            super_i_source_dict[e] = (x, possible_odd)
            next_generation += new_odds
            current_generation = next_generation
    
        return super_i_source_dict
    
    
    x_max = 70
    
    log6 = math.log2(6)
    super_i_source = {}
    t1 = perf_counter()
    
    super_i_source = calculate_super_i_source(x_max)
    
    t2 = perf_counter()
    
    # Afficher la durée du calcul
    print("\nen", "%.2f" % (t2 - t1), "s")
    
    # Afficher les résultats
    for e, (x, i) in super_i_source.items():
        print(f"e: {e}, x: {x}, i: {i}")

    Pour ce qui est de ton dernier message, il faudrait un peu plus de précisions (j'en ai marre de jouer aux devinettes).

  • PMF
    PMF
    Modifié (May 2023)
    @Wilfrid
    Merci pour les calculs et le debugage. Effectivement l'estimation de e est souvent un problème avec ceil.  Mais c'est la formule de @Collag3n
    L'intérêt des i_source est de montrer que si un i_source revient à 1 alors i = i_source ×2^(2k-2)+(2^(2k-2)-1)/3 revient à 1. De ce plus la longueur de la suite de ce i est x' = x+2×(k-1) où x est la longueur de i_source. D'où l'intérêt de connaître des listes de i_source les plus longues possibles. 
  • PMF a écrit :
    L'intérêt des i_source est de montrer que si un i_source revient à 1, alors i = i_source ×2^(2k-2)+(2^(2k-2)-1)/3 revient à 1.

    Pour simplifier : $n*2^{2\,(k - 1)} + (2^{2\,(k - 1)} - 1)/3=\dfrac{1}{3} \left(4^{k-1}\,(3\,n+1)-1\right)$

    Avec $n$ donné, lorsqu'on fait varier $k$ de 1 à $p$ on obtient les $p$ premiers prédécesseurs du successeur de $n$. Exemple avec $n=17$ (ou i_source = 17). En faisant varier $k$ de 1 à 9 on obtient les 9 premiers prédécesseurs du successeur de 17, qui est 13, soit 17, 69, 277, 1109, 4437, 17749, 70997, 283989, 1135957. Inutile de s'étendre sur le fait que $n$ fait partie des prédécesseurs de son successeur.

    Par conséquent, ce que tu dis revient à affirmer que "si l'un des prédécesseurs d'un terme impair atteint 1, alors tous ses prédécesseurs l'atteignent également". Je précise que "l'un des prédécesseurs" peut être le plus petit, le i_source, celui dont justement nous parlons ici.

    Ça s'appelle une lapalissade.

  • [suite]

    Pour le cas où tu ne serais pas convaincu, j'ai dit précédemment que lorsqu'on connaît le plus petit prédécesseur $p_0$ d'un terme impair on peut calculer les autres en faisant simplement $p_{i+1}=4\,p_i+1$. Ou encore, si on connaît l'un des prédécesseurs on peut revenir au plus petit en faisant $p_i=(p_{i+1}-1)/4$. On peut continuer aussi longtemps que le résultat est entier et impair.

    Exemple : lorsque tu poses $n=37$ tu ne sais pas si 37 est le plus petit prédécesseur de son successeur. Tu peux alors calculer $(37-1)/4=9\,,$ puis $(9-1)/4=2$. Le plus petit prédécesseur est donc 9. Mais revenons à ta formule.

    Lorsque $k=1$,

    $n*2^{2\,(k - 1)} + (2^{2\,(k - 1)} - 1)/3=n$

    Lorsque $k=2$,

    $n*2^{2\,(k - 1)} + (2^{2\,(k - 1)} - 1)/3=4\,n+1$

    Lorsque $k=3$,

    $n*2^{2\,(k - 1)} + (2^{2\,(k - 1)} - 1)/3=4\,(4\,n+1)+1=16\,n+5$

    etc.

    C'est la même chose que $p_{i+1}=4\,p_i+1$. Ta formule calcule donc bien les prédécesseurs du successeur de i_source, y compris i_source lui-même, obtenu avec k = 1.

  • Cette formule a un autre intérêt.  Hormis le fait que l'on peut en déduire le x des déclinaisons, on peu remarquer que i_source est multiplié par 1 , 4, 16, 64, 256, 1024... auquel on ajoute 0, 1, 5, 21, 85, 341... suivant les valeurs de k. Comme par hasard les puissances de 2 et les 3i+1 qui leur sont associés.
Connectez-vous ou Inscrivez-vous pour répondre.