Outils pour utilisateurs

Outils du site


nsi:tds:maths:fractales:julia_set

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:tds:maths:fractales:julia_set [2023/04/03 09:35] – ↷ Page déplacée de nsi:tds:julia_set à nsi:tds:maths:fractales:julia_set goupillwikinsi:tds:maths:fractales:julia_set [2023/04/03 10:06] (Version actuelle) goupillwiki
Ligne 1: Ligne 1:
 ====== Ensembles de Julia ====== ====== Ensembles de Julia ======
  
-{{ :nsi:tds:maths:fractales:julia_set.png?nolink&200|Ensemble de Julia}}+{{ :nsi:tds:maths:fractales:julia_set.jpg?nolink&200|Ensemble de Julia}}
  
 {{ :nsi:tds:maths:fractales:julia.jpg?nolink&140|Gaston Julia}} {{ :nsi:tds:maths:fractales:julia.jpg?nolink&140|Gaston Julia}}
  
-Gaston Julia (1893 - 1978) est un mathématicien français, spécialiste des fonctions d'une variable complexe. Ses résultats de 1917-1918 sur l'itération des fractions rationnelles ont été remis en lumière dans les années 1970 par [[nsi:tds:maths:fractales:mandelbrot_set|Benoît Mandelbrot]]. Les ensembles de Julia et de Mandelbrot sont étroitement associés.+Gaston Julia (1893 - 1978) est un mathématicien français, spécialiste des fonctions d'une variable complexe. Ses résultats de 1917-1918 sur l'itération des fractions rationnelles ont été remis en lumière dans les années 1970 par [[nsi:tds:maths:fractales:mandelbrot_set|Benoît Mandelbrot]]. Les ensembles de Julia et de Mandelbrot sont étroitement associés et font partie des ensembles fractales.
  
- +Vous avez peut-être remarqué l'étrange masque que porte Gaston Julia sur l'illustrationIl est une "Gueule cassée" de la Première Guerre Mondiale. Grièvement blessé au visage en 1915à 22 ansil devra porter ce masque toute sa vie.
-Benoît Mandelbrot (1924 2010) est un mathématicien franco-polonais inventeur des fractales. L'ensemble qu'il a découvert, à la suite de son professeur Gaston Julia, est devenu un [[https://fr.wikipedia.org/wiki/M%C3%A8me|mème]]. +
- +
-Les fractales sont un champ d'étude aux multiples applicationsOn peut citer la théorie du Chaos et la génération procédurale : Par exempledans les jeux vidéosles fractales permettent de générer automatiquement des environnement riches, denses, comme des forêts de feuillus.+
  
 ===== Définition de l'ensemble ===== ===== Définition de l'ensemble =====
Ligne 33: Ligne 30:
 Les valeurs de $z_n$ n'ont pas d'importance par elles-mêmes. On veut juste savoir si la suite $z_n$ diverge ou non. Autrement dit, on veut savoir si $(x_n ; y_n)$ finit par s'éloigner infiniment de l'origine. Les valeurs de $z_n$ n'ont pas d'importance par elles-mêmes. On veut juste savoir si la suite $z_n$ diverge ou non. Autrement dit, on veut savoir si $(x_n ; y_n)$ finit par s'éloigner infiniment de l'origine.
  
-Prenons un exemple : si $c = (1 ; 1)alors la suite $z_nprend les valeurs :+Cela dépend du choix de $z_0et de $c$.
  
-$z_0 = (; 0)$z_1 = (1 ; 1)$z_2 = (1 ; 3)$z_3 = (-7 ; 7); $z_4 = (1 ; 99)$ ; ...+<WRAP tip>Mandelbrot et Julia sont en quelque sorte complémentaires : Pour [[nsi:tds:maths:fractales:mandelbrot_set|l'ensemble de Mandelbrot]], on fixe $z_0 = 0$ et on cherche les $cpour lesquels la suite ne diverge pas. Pour Julia c'est l'inverse : on fixe $ca une valeur et on cherche les $z_0pour lesquels la suite ne diverge pas. 
 +</WRAP>
  
-On voit que le point $z_ns'éloigne de l'origine. On dira que cela diverge.+Prenons un exemple : si $c = (1 ; 1)$ et $z_0 = (0,-2)$. Alors la suite $z_n$ prend les valeurs :
  
-Autre exemple, si $= (-1 ; 0)$. Alors :+$z_0 = (0 ; -2)$ ; $z_1 = (-3 ; 1)$ $z_2 = (9 ; -5)$ ; $z_3 = (57 ; -89)$ ; ...
  
-$z_0 = (0 ; 0)$ ; $z_1 = (-1 ; 0)$ ; $z_2 = (0 ; 0)$ ; $z_3 = (-1 ; 0)$ ; $z_4 = (0 ; 0)$ ; ... +On voit que le point $z_n$ s'éloigne de l'origine. On dira que cela diverge.
- +
-On voit que dans ce cas, $z_n$ oscille entre deux valeurs et donc ne s'éloigne pas indéfiniment de l'origine. Dans ce cas, cela ne diverge pas.+
  
 <WRAP tip> <WRAP tip>
-L'ensemble de Mandelbrot est l'ensemble des valeurs de $c$ pour lesquelles la suite $z_n$ ne diverge pas.+L'ensemble de Julia est l'ensemble des $z_0$ pour lesquels la suite $z_n$ ne diverge pas.
  
-Ces points sont ceux en noir sur la figure en haut.+Cet ensemble dépend du choix de $c$. Il y a donc plusieurs ensembles de Julia.
 </WRAP> </WRAP>
  
-Donc $= (1)$ n'est pas dans l'ensemble de Mandelbrot. $c = (-1 ; 0)$ lui est dans l'ensemble.+Donc $z_0 = (-2)$ n'est pas dans l'ensemble de Julia pour $c = (1 ; 1)$.
  
 ==== Calcul pratique ==== ==== Calcul pratique ====
Ligne 57: Ligne 53:
 Il est très difficile, pour un $c$ quelconque, de prévoir si la suite divergera ou non. Pour dessiner l'ensemble on se contente d'un critère simplifié. Il est très difficile, pour un $c$ quelconque, de prévoir si la suite divergera ou non. Pour dessiner l'ensemble on se contente d'un critère simplifié.
  
 +  * On fixe la valeur de $c$ pour laquelle on veut l'ensemble de Julia. Par exemple $c = (0,3\,;\,0,5)$.
   * On sait d'abord que si $|z_n| = \sqrt{x_n^2 + y_n^2} \geq 2$ alors la suite diverge.   * On sait d'abord que si $|z_n| = \sqrt{x_n^2 + y_n^2} \geq 2$ alors la suite diverge.
   * On se fixe un nombre $N$, par exemple $N = 50$ ou $N = 500$.   * On se fixe un nombre $N$, par exemple $N = 50$ ou $N = 500$.
-  * On choisit la valeur de $c$ à tester,+  * On choisit la valeur de $z_0$ à tester,
   * on calcule les termes $z_n$ avec $0 \geq n \geq N$,   * on calcule les termes $z_n$ avec $0 \geq n \geq N$,
-  * si on trouve un $|z_n| \geq 2$, alors c'est terminé, cette valeur de $c$ n'est pas dans l'ensemble. On pourra la représenté en blanc. +  * si on trouve un $|z_n| \geq 2$, alors c'est terminé, cette valeur de $z_0$ n'est pas dans l'ensemble. On pourra la représenté en blanc. 
-  * sinon, on considère que $c$ est est dans l'ensemble et on pourra le représenter en noir.+  * sinon, on considère que $z_0$ est est dans l'ensemble et on pourra le représenter en noir.
  
 ===== Implémentation ===== ===== Implémentation =====
Ligne 73: Ligne 70:
 ITERATIONS = 50 ITERATIONS = 50
  
-def is_mandelbrot(cx:float, cy:float) -> bool:+def is_julia(cx:float, cy:float, z0x:float, z0y:float) -> bool:
     '''     '''
-    cx, cy: coordonnées du point c testé +    cx, cy: coordonnées du c choisi 
-    renvoie True si est dans l'ensemble de Mandelbrot+    z0x, z0y: coordonnées du z0 testé 
 +    renvoie True si z0 est dans l'ensemble de Julia associé à c
     '''     '''
 </code> </code>
Ligne 138: Ligne 136:
  
 <code python> <code python>
-draw('mandelbrot.png', 0, 0, 800, 600, 0.01)+draw('julia.png', 0, 0, 800, 600, 0.01)
 </code> </code>
  
Ligne 148: Ligne 146:
  
 <code python> <code python>
-def mandelbrot_score(cx:float, cy:float) -> float:+def julia_score(cx:float, cy:float, z0x:float, z0y:float) -> float:
     '''     '''
-    cx, cy: coordonnées du point c testé+    cx, cy: coordonnées du c choisi 
 +    z0x, z0y: coordonnées du z0 testé
     renvoie un score entre 0 et 1     renvoie un score entre 0 et 1
       0 pour un point dans l'ensemble       0 pour un point dans l'ensemble
Ligne 173: Ligne 172:
  
 Il y a beaucoup de possibilités, on peut les trouver [[https://matplotlib.org/stable/tutorials/colors/colormaps.html|ici]]. Par exemple, vous pouvez essayer ''%%mpimg.imsave(filename, img, cmap="plasma")%%'' Il y a beaucoup de possibilités, on peut les trouver [[https://matplotlib.org/stable/tutorials/colors/colormaps.html|ici]]. Par exemple, vous pouvez essayer ''%%mpimg.imsave(filename, img, cmap="plasma")%%''
 +
 +===== Les complexes dans Python =====
 +
 +Python prend nativement en charge les complexes : pour $z = 4 + 5i$, il suffira d'écrire ''z = 4 + 5j''.
 +
 +Attention, si c'est $z = 4 + i$, il faut écrire ''z = 4 + 1j'' pour permettre à Python de reconnaître qu'on parle d'un complexe.
 +
 +On pourra ensuite faire tous les calculs désirés. En particulier, pour $|z|$ il suffit d'écrire ''abs(z)''.
 +
 +<code python>
 +>>> z = 2 + 3j
 +>>> c = 1 + 1j
 +>>> z**2 + c
 +(-4+13j)
 +>>> abs(z)
 +3.6055512754639896
 +</code>
  
 ===== Solutions dans d'autres langages ===== ===== Solutions dans d'autres langages =====
  
-  * [[nsi:langages:processing:solutions:mandelbrot|Processing]] +  * [[nsi:langages:processing:solutions:julia|Processing]] 
-  * [[nsi:langages:js:solutions:mandelbrot|Ensemble de Mandelbrot]]+  * [[nsi:langages:js:solutions:julia|Ensemble de Mandelbrot]]
nsi/tds/maths/fractales/julia_set.1680507308.txt.gz · Dernière modification : de goupillwiki