home

Julia Fractal as fast as possible in Python

Trying to get Julia fractal to run fast in python [WIP].

Première implémentation

Soit la suite $$ \left(z^2_i +c\right)_i,n\in \mathbb{N}. $$ l'ensemble de Julia qualifie les points définissant la frontière dans l'espace des \(z_0\) entre la zone où elle est bornée et celle où elle diverge. Cette frontière est fonction de la variable complexe \(c\).

Afin de visualiser l'ensemble fractal, nous allons effectuer une cartographie du domaine des \(z_0\) et tester la convergence de la suite en tout ces points. C'est à dire rechercher les ensembles $$ Q_c^{k} = \left\{z_0 : |z_k| \le R(c) \right\} $$ pour chaque niveau de convergence \(k\), chacun sera associé à un niveau de gris dans l'image finale. Pour calculer le niveau de convergence \(k\) d'un \(z_0\), nous pouvons écrire une fonction du style:

def suite(z0, c=0.0, kmax=25):
  zk = z0
  Rc = max(2, abs(c))
  k = 0
  while abs(zk) <= Rc and k < kmax:
    zk = zk**2 + c
    k += 1

  return k

où \(k_{\text{max}}\) est un garde-fou pour éviter de rester coincé dans le cas où la suite n'est pas bornée.

Une fois cette suite définie, il nous reste à cartographier tous les \(z_0\) potentiellement intéressants

  import numpy as np
  resolution = 256
  realpart = np.linspace(-2, 2, resolution)
  imagpart = np.linspace(-2, 2, resolution)
  z0 = np.vstack(np.meshgrid(realpart, imagpart))

Partie réelle de z0.

L'axe des abscisses représente donc les parties réelles de \(z_0\) croissantes et l'axe des ordonnées, les parties imaginaires.

Nous pouvons enfin en finir en calculant le \(k\) de chaque pixel de cette carte des \(z_0\).

Fractal pour c=0.0

Ce résultat n'est pas exactement ce à quoi on s'attend quand on parle de fractal, la clé est de modififier la valeur de \(c\).

Fractal pour c=0.5+0.25i, kmax=25

Il faudra aussi modifier la résolution et les valeurs de \(k_{max}\) pour bien visualiser le contraste et les détails.

Fractal pour c=0.375+0.2i, kmax=255

Fractal pour z0=0.0, kmax=255

Temps de calcul

Coming soon

home