nsi:tds:maths:fractales:julia_set
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine 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 goupillwiki | nsi:tds:maths:fractales:julia_set [2023/04/03 10:06] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Ensembles de Julia ====== | ====== Ensembles de 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' | + | 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' |
| - | + | Vous avez peut-être remarqué l'étrange masque que porte Gaston Julia sur l'illustration. Il est une " | |
| - | 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 | + | |
| - | + | ||
| - | Les fractales sont un champ d'étude aux multiples applications. On peut citer la théorie du Chaos et la génération procédurale : Par exemple, dans les jeux vidéos, les fractales permettent de générer automatiquement des environnement riches, denses, comme des forêts de feuillus. | + | |
| ===== Définition de l' | ===== Définition de l' | ||
| Ligne 33: | Ligne 30: | ||
| Les valeurs de $z_n$ n'ont pas d' | Les valeurs de $z_n$ n'ont pas d' | ||
| - | Prenons un exemple : si $c = (1 ; 1)$ alors la suite $z_n$ prend les valeurs : | + | Cela dépend du choix de $z_0$ et de $c$. |
| - | $z_0 = (0 ; 0)$ ; $z_1 = (1 ; 1)$ ; $z_2 = (1 ; 3)$ ; $z_3 = (-7 ; 7)$ ; $z_4 = (1 ; 99)$ ; ... | + | <WRAP tip> |
| + | </ | ||
| - | On voit que le point $z_n$ s' | + | Prenons un exemple : si $c = (1 ; 1)$ et $z_0 = (0,-2)$. Alors la suite $z_n$ prend les valeurs : |
| - | Autre exemple, si $c = (-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' |
| - | + | ||
| - | On voit que dans ce cas, $z_n$ oscille entre deux valeurs et donc ne s' | + | |
| <WRAP tip> | <WRAP tip> | ||
| - | L' | + | L' |
| - | 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. |
| </ | </ | ||
| - | Donc $c = (1 ; 1)$ n'est pas dans l' | + | Donc $z_0 = (0 ; -2)$ n'est pas dans l' |
| ==== 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' | Il est très difficile, pour un $c$ quelconque, de prévoir si la suite divergera ou non. Pour dessiner l' | ||
| + | * On fixe la valeur de $c$ pour laquelle on veut l' | ||
| * On sait d' | * On sait d' | ||
| * 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' | + | * si on trouve un $|z_n| \geq 2$, alors c'est terminé, cette valeur de $z_0$ n'est pas dans l' |
| - | * sinon, on considère que $c$ est est dans l' | + | * sinon, on considère que $z_0$ est est dans l' |
| ===== 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 c est dans l' | + | z0x, z0y: coordonnées du z0 testé |
| + | renvoie True si z0 est dans l' | ||
| ''' | ''' | ||
| </ | </ | ||
| 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) |
| </ | </ | ||
| 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' | 0 pour un point dans l' | ||
| Ligne 173: | Ligne 172: | ||
| Il y a beaucoup de possibilités, | Il y a beaucoup de possibilités, | ||
| + | |||
| + | ===== Les complexes dans Python ===== | ||
| + | |||
| + | Python prend nativement en charge les complexes : pour $z = 4 + 5i$, il suffira d' | ||
| + | |||
| + | Attention, si c'est $z = 4 + i$, il faut écrire '' | ||
| + | |||
| + | On pourra ensuite faire tous les calculs désirés. En particulier, | ||
| + | |||
| + | <code python> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | (-4+13j) | ||
| + | >>> | ||
| + | 3.6055512754639896 | ||
| + | </ | ||
| ===== Solutions dans d' | ===== Solutions dans d' | ||
| - | * [[nsi: | + | * [[nsi: |
| - | * [[nsi: | + | * [[nsi: |
nsi/tds/maths/fractales/julia_set.1680507308.txt.gz · Dernière modification : de goupillwiki
