π
<-
Chat plein-écran
[^]

Mandelbrot

TI's micropython + modules

Mandelbrot

Message non lude Maxam » 11 Sep 2020, 00:43

Bonjour,
Un petit portage rapide de la fractale de Mandelbrot depuis la Numworks pour tester
Comme je n'ai pas de Numworks je ne peux pas comparer les perfs.

Edit: J'ai légèrement modifié le code pour un affichage incrémental.

Code: Tout sélectionner
from ti_draw import *
from ti_image import *
from time import *

def mandelbrot(N_iteration):
  clear()
  start=clock()
  bc=0
  screen=new_image(318,212,(0,0,0))
  screen.show_image(0,0)
  for x in range(318):
    for y in range(212):
      z = complex(0,0)
      c = complex(3.5*x/318-2.5, -2.5*y/211+1.25)
      i = 0
      while (i < N_iteration) and abs(z) < 2:
        i = i + 1
        z = z*z+c
      rgb = int(255*i/N_iteration)
      screen.set_pixel(x,y,(int(rgb),int(rgb*0.75),int(rgb*0.25)))
    bc=bc+1
    if bc==20:
      screen.show_image(0,0)
      bc=0
  end=clock()
  screen.show_image(0,0)
  print("elapsed time : {} sec".format(round(end-start)))
mandelbrot(20)
Dernière édition par Maxam le 11 Sep 2020, 11:18, édité 2 fois.
Avatar de l’utilisateur
Maxam
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 39.8%
 
Messages: 36
Inscription: 27 Aoû 2020, 07:58
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Mandelbrot

Message non lude Wistaro » 11 Sep 2020, 06:42

Merci du partage :)
Nouveau sur le site, Anonymous ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3153
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: Mandelbrot

Message non lude Arbus33 » 23 Oct 2020, 14:01

Bonjour,
Pour éviter que d'autres galèrent aussi :
il semble que les lignes "rgb = ..." et "screen.set..." soient dans la boucle "while", et donc l'indentation doit être celle-ci (alignement avec "i =..." et "z =...") :

....while (i < N_iteration) and abs(z) < 2:
......i = i + 1
......z = z*z+c
......rgb = int(255*i/N_iteration)
......screen.set_pixel(x,y,(int(rgb),int(rgb*0.75),int(rgb*0.25)))

Sinon on a une belle erreur, Python est sévère là dessus.
Et merci pour ce code, le premier Python "graphique" que je fais tourner sur ma TI CX II-T CAS.
Pour info : avec 20 en paramètre ça me donne 153 secondes.
Est-ce que c'est pareil sur les autres machines ? Il me semble avoir vu des vidéos plus rapides...
Avatar de l’utilisateur
Arbus33
Niveau 0: MI (Membre Inactif)
Niveau 0: MI (Membre Inactif)
Prochain niv.: 0%
 
Messages: 2
Inscription: 23 Sep 2020, 23:51
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Mandelbrot

Message non lude parisse » 23 Oct 2020, 14:20

Il faut environ 1 minute avec l'interpreteur MicroPython de KhiCAS pour l'appel a mandelbrot(20,1,320,222) sur le code ci-dessous. Comme j'exploite la symetrie et que j'ai optimise les boucles, passer de 120s a 150s me parait normal.
Code: Tout sélectionner
from math import *
from kandinsky import *
# Mandelbrot fractal
# Nmax: precision, s: scale
def mandelbrot(Nmax=10,s=2,X=160,Y=111):
  w=2.7/X
  h=-1.87/Y
  Y=Y-1
  for y in range(ceil(Y/2)+1):
    c = complex(-2.1,h*y+0.935)
    for x in range(X):
      z = 0
      for j in range(Nmax):
        z=z**2+c
        if abs(z)>2:
          break
      fill_rect(s*x,s*y,s,s,126*j+2079)
      fill_rect(s*x,s*(Y-y),s,s,126*j+2079)
      c = c+w
    set_pixel()

.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile


Retourner vers Python

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1238 utilisateurs:
>1227 invités
>6 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)