Pensez à lire la Charte avant de poster !

$\newcommand{\K}{\mathbf K}$


Les-Mathematiques.net - Cours de mathématiques supérieures
 Les-Mathematiques.net - Cours de mathématiques universitaires - Forum - Cours à télécharger

A lire
Deug/Prépa
Licence
Agrégation
A télécharger
Télécharger
227 personne(s) sur le site en ce moment
E. Cartan
A lire
Articles
Math/Infos
Récréation
A télécharger
Télécharger
Théorème de Cantor-Bernstein
Théo. Sylow
Théo. Ascoli
Théo. Baire
Loi forte grd nbre
Nains magiques
 
 
 
 
 
ourson
Flocon de von Koch en Python
il y a neuf années
J'ai programmé la construction du flocon de von Koch en Python mais en faisant appel à la récursivité. J'essaie vainement de m'en "débarrasser" mais pour le moment, je suis dans le caca ! Quelqu'un aurait-il une idée. Merci m'sieurs dames et dmoiselles...

voici mon programme :

def koch(l,n):
                    # # Fractacle de Koch
    if n<=0:
        forward(l)
    else:
        koch(l/3,n-1)
        left(60)
        koch(l/3,n-1)
        right(120)
        koch(l/3,n-1)
        left(60)
        koch(l/3,n-1)

def flocon(l,n):
                    # # Flocon de Koch
    koch(l,n)
    right(120)
    koch(l,n)
    right(120)
    koch(l,n)

# programme principal
from turtle import *
etape=int(raw_input("Entrez l\'ordre de l\'etape du flocon de Von Koch "))
taille1=float(raw_input("Entrez la taille du cote du triangle initial "))
flocon(taille1,etape)


# on utilise une methode recursive pour programmer les fonctions
Re: Flocon de von Koch en Python
il y a neuf années
avatar
Bonjour,

qu'est ce qui te gene dans le fait d'utiliser la recursivité ? Le flocon de von Koch est par definition une construction recursive, c'est donc la facon la plus naturelle de la coder...
Re: Flocon de von Koch en Python
il y a neuf années
avatar
C’est peut-être plus facile de le tracer point par point avec les fonctions itérées.

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Flocon de von Koch en Python
il y a neuf années
avatar
La récursivité n'est pas en cause dans la vitesse d'exécution, mais sans doute le langage choisi.

Comparer avec ce code tex
[www-math.univ-poitiers.fr]

issu de la page d'Anthony Phan:
[www-math.univ-poitiers.fr]
Re: Flocon de von Koch en Python
il y a neuf années
C'est turtle qui est en cause, pas python ( qu'est ce qui faut pas lire parfois... ).
Si tu rajoutes speed(0), cela ira déjà plus vite, mais je ne suis pas sûr que turtle soit l'outil le plus adapté pour tracer les flocons de Von Koch.
Re: Flocon de von Koch en Python
il y a neuf années
avatar
Pour t’en débarrasser, utilise les fonctions itérées (le tout dernier exemple). C’est pour Scilab, mais je pense que c’est aisément traduisible pour Python.

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Flocon de von Koch en Python
il y a neuf années
avatar
Génial le flocon en plain TeX !

[attachment 14756 Capturedcran2010-02-1414.28.37.png]
Re: Flocon de von Koch en Python
il y a neuf années
avatar
@ np : tu obtiens une exécution beaucoup plus rapide si tu remplaces ta dernière boucle par qqchose du genre

k=1
while k<=100 do
  X=zeros(2,100);
  X(:,1)=x0;
  for i=2:100
    X(:,i)=hasard(X(:,i-1));
  end
  plot2d(X(1,: ),X(2,: ),style=0,axesflag=0);
  x0=X(:,100);
  k=k+1
end



Edité 1 fois. La derni&egrave;re correction date de il y a neuf ann&eacute;es et a &eacute;t&eacute; effectu&eacute;e par remarque.
Re: Flocon de von Koch en Python
il y a neuf années
avatar
@Arnaud: Je ne vois pas bien pourquoi une tortue serait lente par nature...
Justement, pour ce genre de dessins, les calculs demandés par le fonctionnement de la tortue devraient être faits de toute façon.

Sur cette page là, on trouve justement un exemple en python de Von Koch dérécursifié en Python, avec une tortue. Malheureusement, je n'ai pas réussi à le faire tourner pour comparer avec le programme d'Ourson.

[en.wikipedia.org]
Re: Flocon de von Koch en Python
il y a neuf années
Voilà un exemple non récursif, c'est du TeXgraph:

[
a:=5*exp(-2*i*pi/3), b:=5, c:=bar(a), L:=[a,b,c,a],
for k from 1 to 6 do
    L:= [v:=Nil,
         for z in L do u:=v, v:=z,
           if u<>Nil then
            s1:=hom(v,u,1/3),
            s2:=shift( rot(s1,u,-pi/3), (v-u)/3),
            s3:=hom(u,v,1/3), u,s1,s2,s3
           fi
         od, v],
od,
Ligne(L,0)
]

[attachment 14757 VonKoch.png]



Re: Flocon de von Koch en Python
il y a neuf années
avatar
remarque, tu remplaces juste le calcul d’un point par le calcul de cent points puis leur tracé simultané ?

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Flocon de von Koch en Python
il y a neuf années
avatar
Oui. Ca dépend peut-être de la machine, mais sur mon Mac, une multitude d'appels à plot2d pour afficher une petite matrice est beaucoup plus lente qu'un seul appel pour afficher une grande matrice (scilab 5.2.0). Après tu peux jouer sur le nombre de points affichés, j'ai pris 100 au pif.
Re: Flocon de von Koch en Python
il y a neuf années
avatar
Je confirme, ça va encore plus vite par paquets de 1000 points, tout en gardant une certaine progressivité de l'affichage. Le plus rapide est sans doute de calculer, je ne sais pas, 100 000 points d'abord, puis de les afficher. Mais là on ne verra pas l'attracteur se dessiner progressivement.
Re: Flocon de von Koch en Python
il y a neuf années
avatar
J'ajoute le tiers de flocon version nicolas.patrois via un SFI (50000 points) :

[attachment 14761 Capturedcran2010-02-1422.48.11.png]
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquer ici pour vous connecter

Liste des forums - Statistiques du forum

Total
Discussions: 137 391, Messages: 1 330 113, Utilisateurs: 24 422.
Notre dernier utilisateur inscrit mido10.


Ce forum
Discussions: 2 296, Messages: 16 878.

 

 
©Emmanuel Vieillard Baron 01-01-2001
Adresse Mail:

Inscription
Désinscription

Actuellement 16057 abonnés
Qu'est-ce que c'est ?
Taper le mot à rechercher

Mode d'emploi
En vrac

Faites connaître Les-Mathematiques.net à un ami
Curiosités
Participer
Latex et autres....
Collaborateurs
Forum

Nous contacter

Le vote Linux

WWW IMS
Cut the knot
Mac Tutor History...
Number, constant,...
Plouffe's inverter
The Prime page