π
<-
Chat plein-écran
[^]

Mandelbrot

TI's micropython + modules

Mandelbrot

Unread postby 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: Select all
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)
Last edited by Maxam on 11 Sep 2020, 11:18, edited 2 times in total.
User avatar
Maxam
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 39.8%
 
Posts: 36
Joined: 27 Aug 2020, 07:58
Gender: Not specified
Calculator(s):

Re: Mandelbrot

Unread postby 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 . 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!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 71.6%
 
Posts: 3051
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
Class: Etudiant ingénieur (dernière année)
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Mandelbrot

Unread postby 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...
User avatar
Arbus33
Niveau 0: MI (Membre Inactif)
Niveau 0: MI (Membre Inactif)
Level up: 0%
 
Posts: 2
Joined: 23 Sep 2020, 23:51
Gender: Not specified
Calculator(s):

Re: Mandelbrot

Unread postby 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: Select all
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()

.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 12.9%
 
Posts: 2248
Joined: 13 Dec 2013, 16:35
Gender: Not specified


Return to Python

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.2 pour les Nspire CX II
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
570 utilisateurs:
>546 invités
>18 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)

-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)