Algorithme
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Algorithme



  1. #1
    ladyk

    Algorithme


    ------

    Coucou,
    Dans le cadre d'un tpe sur la structure fractale, il faut créer un algorithme sur l'aire du flocon de koch.. le problème c'est que j'arrive pas, j'ai essayé de programmer un truc avec algobox mais ca ne semble pas vraiment marcher.. est-ce que vous auriez pas une idée ou une solution ? Merciii d'avance !!

    -----

  2. #2
    PhunkyBob

    Re : Algorithme

    Bonjour,

    Les fractales sont des figures obtenue en appliquant une transformation à l'infini. C'est ce qu'on appelle la récursivité.

    Lorsqu'on souhaite développer une fonction récursive, il faut se représenter ce qu'on a en entrée (un segment [AB]), et ce qu'on souhaite obtenir après de notre étape de transformation (4 segments [AX], [XZ], [ZY] et [YB]).



    De plus, étant donné qu'on ne veux pas que notre algo tourne à l'infini, on définie une condition d'arrêt.

    On peut ici décider de s’arrêter quand le segment [AB] est inférieur à une certaine longueur.


    Voici le squelette de la fonction récursive :


    Code:
    // Cette constante défini la taille mini à partir de laquelle on arrête l'algo.
    var const global dimensionMiniSegment
    
    
    /**
     * Cette procédure permet de dessiner un segment [AB] de manière récursive.
     * Si le segment a une taille inférieur à la constante "dimensionMiniSegment", c'est un simple segment [AB] qui est dessiné.
     * Sinon on dessine les segments [AX], [XZ], [ZY] et [YB].
     *
     * @param pointA_x et pointA_y : coordonnées du point A.
     * @param pointB_x et pointB_y : coordonnées du point B.
     */
    procédure dessiner_segment(pointA_x, pointA_y, pointB_x, pointB_x)
    
    	// On calcule la distance entre les points A et B.
    	var distance_entre_A_et_B = calcul_distance(pointA_x, pointA_y, pointB_x, pointB_x)
    
    	// Comme notre fonction est récursive, il faut trouver une condition d'arrêt.
    	// Nous décidons de nous baser sur la longueur du segment à dessiner, mais on pourrait se baser sur la profondeur de recursivité.
    	si distance_entre_A_et_B < dimensionMiniSegment alors
    		// Nous sommes dans notre condition d'arrêt. Nous nous contentons donc de ne dessiner que le segment [AB].
    		
    		monAffichage(pointA_x, pointA_y, pointB_x, pointB_x)
    	
    	sinon
    	
    		// Nous devons calculer les coordonnées des points X, Y et Z.
    		// Ces coordonnées seront stockées dans les variables suivantes :
    		var pointX_x, pointX_y, pointY_x, pointY_y, pointZ_x, pointZ_y
    		
    		... // A vous de faire vos calculs pour placer vos points comme bon vous semble.
    		
    		// Nous appelons la fonction de dessin de segment sur nos 4 segments :
    		dessiner_segment(pointA_x, pointA_y, pointX_x, pointX_x)
    		dessiner_segment(pointX_x, pointX_y, pointZ_x, pointZ_x)
    		dessiner_segment(pointZ_x, pointZ_y, pointY_x, pointY_x)
    		dessiner_segment(pointY_x, pointY_y, pointB_x, pointB_x)
    	
    	fin si
    
    fin procédure
    
    
    
    /**
     * Cette procédure permet de dessiner un segment [AB].
     * On peut utiliser ce qu'on veut pour représenter le segment (dessin, affichage de coordonnées, ...).
     *
     * @param pointA_x et pointA_y : coordonnées du point A.
     * @param pointB_x et pointB_y : coordonnées du point B.
     */
    procédure monAffichage(pointA_x, pointA_y, pointB_x, pointB_x)
    
    	// A vous de décider comment vous souhaitez représenter le segment.
    	...
    fin procédure

  3. #3
    ladyk

    Re : Algorithme

    merci bcp .. ms ca semble compliqué .. en fait le truc c'est que l'algorithme je dois le programmer avec un logiciel ( algobox jsais pas si tu connais ) et donc voila je sais pas trop comment faire pour mettre celui la .. si tu connaitrais pas quelque chose de moins compliqué ?? :$
    en fait le premier que j'avais fait mais qui n'a pas vraiment marché c'est:

    Variables : k
    a
    c
    Début algorithme: a prend la valeur 1
    c prend la valeur 3
    Pour k allant de 1 à 100 ( par ex)
    a prend la valeur a+c*a/9
    c prend la valeur c*4
    Fin pour

  4. #4
    sebsheep

    Re : Algorithme

    Salut,

    Ton algo n'est pas très lisible .. peux tu expliquer ce que tu essaies de faire ? A quoi correspond chaque variable, que calcules-tu à chaque calcul ?


    D'un autre côté, si tu as un TPE c'est que tu es en 1ere/Tale, et tu as donc les outils pour calculer cette aire de façon exacte (même si le calcul est un peu long, tu dois pouvoir y arriver).

    @PhunkyBob, le problème n'était pas dans tracer la fractale mais calcuer son aire ... et donner une solution toute faite de 40 lignes ne me semble pas être une très bonne aide.

  5. A voir en vidéo sur Futura
  6. #5
    ladyk

    Re : Algorithme

    en fait l'algorithme que je dois trouver c'est celui pour trouver cette courbe: http://geoffreyhistoire.pagesperso-o.../biologie.html ( vers le début )

  7. #6
    PhunkyBob

    Re : Algorithme

    Citation Envoyé par sebsheep Voir le message
    Salut,
    @PhunkyBob, le problème n'était pas dans tracer la fractale mais calcuer son aire ... et donner une solution toute faite de 40 lignes ne me semble pas être une très bonne aide.
    Au temps pour moi.
    Il me semblait n'avoir donné que le principe de fonction récursive (paramètres et conditions d'arrêt) et que le reste n'était que du commentaire afin d'aiguiller la personne.


    Même si c'est pour calculer l'aire (au lieu de tracer), le principe reste exactement le même.



    @ladyk : je suis désolé, mais je ne connais pas "Algobox".
    Je pense que mon exemple est assez commenté pour que vous puissiez comprendre le principe d'un algo récursif.

    Là où je vous disais d'insérer vos calculs de positions de points, il vous suffit d'insérer vos calculs d'aire.

    Je ne peux pas mettre quelque chose de moins compliqué, car si vous enlevez les commentaires, mon code utilise uniquement un "si / alors / sinon" et un appelle une fonction (en l'occurrence, elle même).

  8. #7
    ladyk

    Re : Algorithme

    ouii mais l'algorithme que je dois trouver c'est celui de la courbe dont je t'ai donné le lien.. Est-ce que ce que tu m'as donné correspond a ca ?

  9. #8
    PhunkyBob

    Re : Algorithme

    Ce que je vous ai donné, c'est un squelette d'algorithme récursif.
    Avec ce squelette, il est tout à fait possible de calculer l'aire d'un flocon de Koch.

    Il me semble l'avoir assez commenté, mais si vous avez des questions, je me ferai un plaisir de vous y répondre.

    Avez-vous compris le principe de la récursivité ?
    Je pense que l'objectif de votre TPE est de comprendre la récursivité. Le fait de développer algo de flocon n'est qu'un moyen.

Discussions similaires

  1. Algorithme.
    Par invited87b1145 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 21/03/2011, 11h12
  2. algorithme
    Par invite6bb9bf0c dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 12/08/2010, 11h22
  3. Algorithme
    Par invite2db80aee dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 21/10/2009, 14h43
  4. algorithme
    Par inviteac13aab3 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 25/06/2006, 16h29
  5. Algorithme
    Par invite3c81b085 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 26/02/2006, 18h10