Mandelbrotmenge: Unterschied zwischen den Versionen
Zeile 44: | Zeile 44: | ||
<h2>Julia-Mengen von quadratische Polynomen Selin </h2> | <h2>Julia-Mengen von quadratische Polynomen Selin </h2> | ||
<h2>Graphische Darstellung Mansur</h2> | <h2>Graphische Darstellung Mansur</h2> | ||
− | Zur graphischen Darstellung von Julia-Mengen von einem ausgehenden Startwert <math> z \in \mathbb{C} | + | Zur graphischen Darstellung von Julia-Mengen von einem ausgehenden Startwert <math> z \in \mathbb{C}</math> wird eine Farbe eines Punktes danach gewählt, wie viele Iterationen notwendig waren, bis <math>|z_n| \geq m \geq 2</math>, da im Allgemeinen die Interationen für alle <math>z</math> mit <math>|z| \geq 2</math> divergieren. Die Wahl von <math>m= 2</math> grundsätzlich möglich, jedoch werden bei einer größeren Wahl von <math>m</math> (z.B.<math>m=1000</math>) harmonischere Darstellungen erzielt. Ist nach einer vorgegebene Iterationszahl <math>n</math> ein Punkt betragsmäßig kleiner als <math>m</math> so wird angenommen, dass der Punkt konvergiert. Diese Punkte werden in der Regel dunkel gefärbt, demnach werden Punkte die schneller Konvergieren heller gefärbt. Der nachfolgende Code stellt für einen gegebenen Punkt <math>c</math> nach <math>n</math> Iteraionen die gewünschte Julia-Menge dar. |
− | |||
− | </math> | ||
<pre> | <pre> | ||
import numpy as np | import numpy as np | ||
Zeile 87: | Zeile 85: | ||
plt.imsave(my_path + name, J, cmap=cmap, origin="lower") | plt.imsave(my_path + name, J, cmap=cmap, origin="lower") | ||
</pre> | </pre> | ||
− | Hierbei wird als Funktione | + | Hierbei wird als Funktione <math>f</math> ein Polynom zweiten Grades gewählt, also <math>f=z^2+c</math>. Das Paket <pre>numpy<\pre> wird verwendet um die nötigen Berechnungen effizient in vektorisierter Form zu lösen anstatt diese aufwendig mithilfe von Schleifen zu berechnen. |
<h1>Mandelbrot-Menge</h1> | <h1>Mandelbrot-Menge</h1> |
Version vom 27. März 2021, 19:12 Uhr
Informationen zur Mandelbrotmenge folgen.
Julia-Menge
Hintergrund Mansur
Julia-Mengen sind einer der am meist abgebildeten Fraktale, die auf elegante Weise Ästhetik und Mathematik vereint. Sie sind eine Teilmengen der komplexen Zahlenebene. Erstmals 1918 wurden Julia-Mengen vom Mathematiker Gaston Maurice Julia in seinem Werk "M emoire sur l'iteration des functions rationelles" [1] behandelt.
Der Hintergund dieser Arbeit war die Untersuchung über die globale Dynamik des Newton-Verhaltens, die erstmal 1879 von Arthur Cayley von den reellen Zahlen auf die komplexe Ebene ausgedehnt wurde. Caylay studierte den Fall eines kubischen Polynoms [math] f(z) = z^3 + 0 [/math], indem er versuchte mithilfe der Newton–Fourier Methode die Nullstellen von [math] f [/math] zu finden. Da es in der komplexen Zahlenebene hier drei Lösungen gibt, war Cayleys Ziel eine allgemeine Methode zu finden, die bestimmt gegen welche Wurzel die Iteration für einen gegebenen Startwert [math] z [/math] konvergiert.
Da jegliche Anstrengungen Cayleys und anderer Mathematiker keine Resultate zeigten, wurde die Arbeit die darauffolgenden Jahre eingestellt. Erst zu beginn des 20. Jahrhunderts, als von der Französischen Akademie für Naturwissenschaften ein Preis ankekündigt wurde, nahmen zahlreiche Mathematiker die Arbeit erneut auf. Die Mathematiker die erfolgreiche Resultate hervorbrachten waren Pierre Fatou und Gaston Julia, die mit ihrer entwickelten Theorie der Iterationen rationaler Funktionen in der Komplexen Ebene das Problem lösten.
Julia lieferte hierbei eine konkrete Beschreibung von komplexwertigen Mengen, für deren Punkte die Orbits bei Anwendung auf eine rationale Funktion beschränkt bleiben und gewann den ersten Preis. Fatou, der ähnliche Ideen wie Julia in seiner Arbeit vorstellte, erhielt den zweiten Preis.\\ In den nächsten Jahren wuchs das Interesse an diesem Thema sehr stark an und zahlreiche bekannte Mathematiker wie Harald Cramer widmeten ihre Aufmerksamkeit der Julia-Mengen. Aufgrund der fehlenden Möglichkeiten Rechenmaschinen für die aufwendigen Berechnung zu benutzen, gerieten auch die Julia-Mengen mit den Jahre in Vergessenheit.
Erst 1977 konnte der französiche Mathematiker Benoit Mandelbrot mithilfe von Computergrafik die Schönheit der Julia-Meng visualisieren.
Definition Mansur
Grundlegende Eigenschaften Selin
Symmetrie Für die Julia-Menge [math] J(f_c)[/math] von [math]f_{n+1}(z)=z_n^2+c[/math] gilt:
1. [math] J(f_c)[/math] ist punktsymmetrisch zum Ursprung: [math]z \in\ J(f_c) ⇔ -z \in\ J(f_c)[/math]
Beweis. [math] f_{n+1}(-z)=(-z)^2+c=f_{n+1}(z) , (f_{n+1})^k(-z)=(f_{n+1})^{n-1}(f_{n+1}(-z))=(f_{n+1})^{n-1} (f_{n+1}(z))=(f_{n+1})^k(z)[/math]
2. [math] J(f_c)[/math] und [math]J(f_ c¯) [/math] liegen symmetrisch zur imaginären Achse.
Chaotisch
Sei [math] f[/math] ein Polynom vom Grad ≥ 2 mit der Julia-Menge J. Dann ist [math] f[/math] auf der Julia-Menge chaotisch
Bereits kleine Änderungen von z führen zu anderem Verhalten.
Julia-Mengen von quadratische Polynomen Selin
Graphische Darstellung Mansur
Zur graphischen Darstellung von Julia-Mengen von einem ausgehenden Startwert [math] z \in \mathbb{C}[/math] wird eine Farbe eines Punktes danach gewählt, wie viele Iterationen notwendig waren, bis [math]|z_n| \geq m \geq 2[/math], da im Allgemeinen die Interationen für alle [math]z[/math] mit [math]|z| \geq 2[/math] divergieren. Die Wahl von [math]m= 2[/math] grundsätzlich möglich, jedoch werden bei einer größeren Wahl von [math]m[/math] (z.B.[math]m=1000[/math]) harmonischere Darstellungen erzielt. Ist nach einer vorgegebene Iterationszahl [math]n[/math] ein Punkt betragsmäßig kleiner als [math]m[/math] so wird angenommen, dass der Punkt konvergiert. Diese Punkte werden in der Regel dunkel gefärbt, demnach werden Punkte die schneller Konvergieren heller gefärbt. Der nachfolgende Code stellt für einen gegebenen Punkt [math]c[/math] nach [math]n[/math] Iteraionen die gewünschte Julia-Menge dar.
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import os from matplotlib import cm from collections import OrderedDict my_path = os.path.abspath(__file__) start_time = time.time() def Julia(f, zmin, zmax, m, n, tmax=256): x1 = np.linspace(zmin.real, zmax.real, n) y1 = np.linspace(zmin.imag, zmax.imag, m) X, Y = np.meshgrid(x1, y1) Z = X + 1j * Y J = np.ones(Z.shape) * tmax for _ in range(tmax): mask = np.abs(Z) <= 2. Z[mask] = f(Z[mask]) J[~mask] = J[~mask] - 1. return J def f1(z, c=-0.8 + 0.2j): return z**2 + c zmin = -1.3 - 1j * 1.3 zmax = 1.3 + 1j * 1.3 J = Julia(f1, zmin, zmax, m=1024, n=1024) # save array J as a PNG color image name = "testjulia2.png" cmap = cm.get_cmap("nipy_spectral") plt.imsave(my_path + name, J, cmap=cmap, origin="lower")
Hierbei wird als Funktione [math]f[/math] ein Polynom zweiten Grades gewählt, also [math]f=z^2+c[/math]. Das Paket
numpy<\pre> wird verwendet um die nötigen Berechnungen effizient in vektorisierter Form zu lösen anstatt diese aufwendig mithilfe von Schleifen zu berechnen.Mandelbrot-Menge
Definition über die Julia-Mengen Danielle
Die Mandelbrotmenge wurde zur Klassifizierung der Julia-Mengen definiert. Sie umfasst die Teilmenge der komplexen Zahlen, für welche die Julia Menge zusammenhängend ist. Die Mandelbrotmenge lässt sich rekursiv, wie folgt definieren: ::[math] z_{n+1}=z_n^2+c [/math] mit [math]z_0 = 0 [/math] Um nun für bestimmte Werte [math]c\in\mathbb{C}[/math] zu bestimmen, ob sie in der Mandelbrotmenge enthalten sind. Führt man [math]n\in\mathbb{N}[/math] Iterationen durch, wenn gilt: [math]\mid f^n_c(0)\mid \gt 2[/math], so färbt man den entsprechenden Punkt weiß, er liegt also nicht in [math]M[/math]. Ansonsten färbt ammchwarz. Je größer [math]n[/math] gewählt wird, desto genauer wird das Bild, dass man erhält. In der Mathematik sind theoretisch beliebige Genauigkeiten möglich, dies führt zu den faszinierenden graphischen Darstellungen der Mandelbrotmenge, wenn man weiter reinzoomt. Abhängig von der Definition der Juliamenge lässt sich die Mandelbrotmenge, wie folgt definieren: ::[math]M=\{c\in \mathbb{C}\mid J_c \text{ ist zusammenhängend}\}[/math] Weitere Definitionen der Mengen sind: ::[math] M=\{c\in\mathbb{C}\mid f^n_c(0)\not\to\infty\text{, wenn } n\to \infty\}=\{c\in\mathbb{C}\mid (z_n)_{n\in\mathbb{N}} \text{ ist beschränkt}\}[/math] Diese Darstellungen lassen sich mithilfe der oberen Definition beweisen.[1]Grundlegende Eigenschaften Danielle
Grenzverhalten ausgewählter Funktionen
Für verschiedene Punkte [math]c\in\mathbb{C}[/math] lassen sich vier verschiedene Grenzverhalten beobachten: ::*Konvergenz gegen einen Punkt ::*Die Glieder bilden einen Zyklus mit zwei oder mehr Werten ::*chaotisches aber beschränktes Verhalten der Glieder ::*Divergenz gegen unendlich Ein Punkt [math]c\in\mathbb{C}[/math] ist in [math]M[/math] falls er eines der ertsen drei Grenzverhalten aufzeigt.
Parameter (c) | Folgeglieder (z_2, z_3, z_4,...) | Grenzverhalten | Ist c in M? |
---|---|---|---|
1 | 2, 5, 26,... | bestimmte Divergenz gegen [math]\infty[/math] | [math]1\notin M[/math] |
0 | 0, 0, 0,... | Konvergenz gegen 0 | [math]0\in M[/math] |
-1 | 0, -1, 0,... | Zweierzyklus | [math]-1\in M[/math] |
i | -1+i, -i, -1+i,... | Zweierzyklus | [math]i\in M[/math] |
-1,5 | 0,75, [math] -\frac{15}{16}[/math], [math] -\frac{159}{256}[/math],... | Chaos (beschränkt) | [math]-1,5\in M[/math] |
-2 | 2, 2, 2,... | Konvergenz gegen 2 | [math]2\in M[/math] |
0,25 | [math] \frac{5}{16}[/math], [math] \frac{89}{256}[/math], [math] \frac{24305}{65536}[/math],... | KOnvergenz gegen 0,5 | [math]0,25\in M[/math] |
M ist kompakt
Die Mandelbrotmenge ist abgeschlossen, da ihr Komplement offen ist. Außerdem liegt sie innerhalb eines Kreises um den Ursprung mit Radius 2, daraus folgt Beschränktheit.Nach dem Satz von Heine-Borel folgt somit Kompaktheit.[math]M\subset B_2(0)\subset \mathbb{C}[/math]
M ist spiegelsymmetrisch zur reelen Achse
Diese Tatsache lässt sich leicht anhand der Bilder erkennen. Doch auch bei Betrachtung der mathematischen Grundlagen kann dieser Umstand leicht gezeigt werden. Wir wollen also zeigen, dass wenn [math]a+bi=c_1\in M[/math] ist, auch [math]a-bi=\overline c_1 \in M[/math] ist.[math]z_{n+1}[/math] | [math]z_{n}+c_1[/math] | [math]z_{n}+\overline c_1[/math] |
---|---|---|
z_1 | [math]0+a+bi[/math] | [math]0+a-bi[/math] |
z_2 | [math](a+bi)^2+a+bi=(a^2-b^2+a)+i(b+2ab)[/math] | [math](a-bi)^2+a-bi=(a^2-b^2+a)-i(b+2ab)[/math] |
z_n | [math] Re(z_n)+i*Im(z_n)[/math] | [math] Re(z_n)-i*Im(z_n)[/math] |