Aller au menu - Aller au contenu

Les suites de Syracuse

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2 
Pseudo Commentaire
Page Précédente  1  2 
Hors ligne shareman # Posté le 25/05/2009 à 20:22:02
Faisons semblant
Avatar

Citation : Dark-Side
D'après moi, tu fais tout à l'envers, tu crées un topic sur le forum pour y présenter des algos (et ça en devient relou à lire tellement y'a de commentaires au milieu des algos) et tu crées un tuto pour présenter une implémentation d'un "objet mathématique".
L'inverse aurait été plus adapté, un topic sous la forme d'un atelier ouverts à tout les langages (comme on en a déjà vu) aurait été bien plus intéressant que ce tuto.


Ça a du sens au moins. Je vois très mal un gros tutoriel sur ce site regroupant une collection d'algorithmes avec leur implémentation. Ce genre de projet n'aboutit en général à rien et ce n'est pas plus visible ni forcément plus logique qu'un topic sur le bon forum. Au contraire, un topic est plus logique car c'est adapté aux contributions d'autres membres voulant présenter des algos intéressants qu'ils connaissent. Sur un tuto, ce n'est pas possible ou alors c'est über-lourd.

Ensuite, même remarque dans l'autre sens, je vois très mal un topic présentant les suites de Syracuse, peu importe le forum. Ce n'est pas fait pour, tout simplement. Ce genre de présentation est fait par le biais d'un tutoriel ou d'un article éventuellement.

Tu dis que j'ai créé ce tuto pour présenter une implémentation d'un objet mathématique, mais l'implémentation n'était justement pas vraiment le but premier. Je voulais avant tout présenter les suites de Syracuse en elles. J'ai conçu ce tutoriel pour que les explications mathématiques et historiques soient mises en avant, avant l'implémentation qui est au dernier plan.

Un atelier, môais, pourquoi pas mais encore une fois, je trouve que ça n'a pas vraiment d'intérêt, créer une fonction comme celle que je présente dans un langage voulu, c'est vraiment trivial et profondément ennuyeux à terme. Éventuellement un logiciel plus complet avec visualisation graphique, ça pourrait être intéressant mais je n'ai ni la motivation pour cela maintenant ni même le temps. Rien ne t'en empêche si tu tiens à l'idée.


Locke : Je ne pense pas que l'on puisse parler d'intérêt de cette suite. Ce n'est qu'un objet d'étude intéressant sur lequel les mathématiciens planchent toujours encore. Je serais intéressé de savoir à quoi elle peut bien servir, si tu as des exemples. :)

raphamil : Je vais d'ici peu éditer le tutoriel (mais euh, il est en ligne depuis janvier, j'ai juste modifié le "crys" en "ShareMan" dans la conclusion, ce qui a monté le tuto et provoqué cette effervescence de commentaires) en ajoutant des liens externes, en modifiant ou ajoutant deux-trois points dans la première partie et en modifiant le code (notamment).

Image utilisateur
« Sex, drugs and rock n'roll... enlevez la drogue et vous aurez plus de temps pour les deux autres »
Steven Tyler, Aerosmith
 
Hors ligne minimax # Posté le 25/05/2009 à 22:52:19
Avatar

Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Syracuse {
	
	public int nombre;
	
	public Syracuse(int n){
		this.nombre = n;
	}
	
	public Syracuse(){
		this.nombre = 0;
	}
	
	public void execute(int n){

		if (n == 1){ 
			System.out.print("Passe au rang suivant : ");
		} else if (this.nombre % 2 == 0){
			this.execute(n/2);
		} else {
			this.execute(3*n+1);
		}
	}
	
	public static void main(String[] args) {
		Syracuse s = new Syracuse();
		for (int i = 1; i <= 876546789; i++){
			s.execute(i);
			System.out.println(i);
		}
		
	}
}


Je me suis arrêté a 876546789 et pour l'instant mon programme continu d'avancer
Si je trouve une valeur où c'est infini vous croyez que j'aurais droit à un prix (zut pas de prix Nobel en maths :( )? XD
Vous connaissez un type plus gros que int en java?
Hors ligne Ver2terre # Posté le 30/06/2009 à 00:00:39
Avatar

te fatigue pas minimax, jusqu'a 2^62, tout est égal à 1
Hors ligne Nytrix # Posté le 01/07/2009 à 13:58:34
Nouilles au beurre na go RIP
Avatar

minimax, cherche pas le java est pas fait pour ça (fait pour quoi d'ailleurs ? :D ) .
 
Hors ligne 666by # Posté le 20/09/2009 à 22:43:22
Avatar

Avis : Très bon

je me suis amuser a trouver un petit calcul pour éviter d'avoir a faire des condition (mon ordinateur n'a pas encore fait d'erreur avec le calcul mais si vous trouver une erreur dans le calcul prévenez moi) :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int syracuse(unsigned int n, unsigned int *TempVol, unsigned int *AltMax)
{
    unsigned int x = n&1;
    unsigned int tps = 0;
    unsigned int max = n;

    while(n > 1)
    {
        x = n&1;
        n = (n*3+1)*x + n/2*!x; // on peut remplacer les '!x' par des '(x^1)' ou par des '0 exposant x'
        tps++;
        if(max < n)
            max = n;
    }

    if(TempVol != 0)
        *TempVol = tps;

    if(AltMax != 0)
        *AltMax = max;

    return 0;
}

je trouve que le calcul est plus facile a implémenter en assembleur que les conditions

EDIT:
C'est tout a fait normale que l'on retombe tout le temps sur 1 parce que:
si on tombe sur un nombre impair on le multiplie par 3,il et toujours impair mais certain bits sont passer de 1 à 0 jusqu'au moment ou tous les bits sont a 0 sauf le premier donc c'est une puissance de 2 et la on fait que diviser par 2, par exemple:

3 = 11b
3*3+1 = 10 = 1010b
10/2 = 5 = 101b
5*3+1 = 16 = 10000b
16/2 = 8 = 1000b
8/2 = 4 = 100b
4/2 = 2 = 10b
2/2 = 1 = 1b
1*3+1 = 4 = 100b
...

- Pourquoi on inventerai pas la bêtise artificiel ?
- Elle est déjà trop présente naturellement.
 
Hors ligne tit_toinou # Posté le 23/02/2011 à 16:17:07

Ton raisonnement ne tient pas.
Tu n'as pas prouvé le moment "où tous les bits sont a 0 sauf le premier donc c'est une puissance de 2".
Ton exemple est un cas spécial.
 
Hors ligne 666by # Posté le 08/05/2011 à 16:37:06
Avatar

Avis : Très bon

Si tous les bits sont a 0 sauf le premier c'est normal que sa soit une puissance de 2 non ?

Maintenant si y (l'altitude) est une puissance de 2 alors le programme ne va faire que diviser par 2 or quand je regarde les graphes des suites de Syracuse (avec y la valeur de l'altitude par rapport au nombre d'itération x) on voit qu'il y a un/de grand(s) 'envole(s)' (suppression des 1 dans y) puis (quand y devient une puissance de 2) il y a une grande descente jusqu’à y = 1.

- Pourquoi on inventerai pas la bêtise artificiel ?
- Elle est déjà trop présente naturellement.
 
Hors ligne Leryan # Posté le 10/09/2011 à 00:02:06
§ HAVE FUN AND FUCK DA WAY §
Avatar

Études : IUT Nancy-brabois

666by : ton algorithme devient de moins en moins performant au fur et à mesure que les nombres grandissent, 10 minutes avec tests pour aller jusque 1412987847 (1000 termes dans la suite) contre 23 pour le tiens.
Hors ligne 666by # Posté le 23/09/2011 à 19:06:05
Avatar

Avis : Très bon

C’était juste pour le plaisir d’implémenter les suites sans aucune conditions

D'ailleurs j'ai trouver plus marrant avec le sinus et le cosinus

Pour les suites compressées:
( (3x+1)*sin(x*pi/2)^2 + x*cos(x*pi/2)^2 )/2

Pour les suites non compressées
(3x+1)*sin(x*pi/2)^2 + x/2*cos(x*pi/2)^2

Où 'x^2' signifie 'x puissance 2'

Sa ralentit encore plus l'ordinateur mais au moins la courbe est continue maintenant

- Pourquoi on inventerai pas la bêtise artificiel ?
- Elle est déjà trop présente naturellement.
 
Hors ligne Transistored # Posté le 19/02/2012 à 16:04:43
( ! ) Parse error
Avatar

Ville : Chartrettes
Pays : France métropolitaine

Existe-t-il d'autres suites du même type ? Avec plus de conditions histoire d'avoir un meilleur exo d'implémentation ?
Sinon un grand merci pour ce petit tuto ;)

Seul l'idiot du village ne savait pas que la chose était impossible, alors il l'a faite.
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx