added images
parent
a576452d11
commit
85de993d2b
|
@ -0,0 +1,24 @@
|
||||||
|
using Lindenmayer, Luxor, Colors
|
||||||
|
|
||||||
|
|
||||||
|
sierpinski_triangle = LSystem(Dict(
|
||||||
|
"F" => "*F+F--F+F"),
|
||||||
|
"F")
|
||||||
|
|
||||||
|
f(t::Turtle) = begin
|
||||||
|
t.pencolor = (0.0,0.0,0.0)
|
||||||
|
setline(4)
|
||||||
|
end
|
||||||
|
|
||||||
|
drawLSystem(sierpinski_triangle,
|
||||||
|
forward = 10,
|
||||||
|
turn = 60,
|
||||||
|
iterations = 4,
|
||||||
|
startingx = -400,
|
||||||
|
startingy = -110,
|
||||||
|
width = 1000,
|
||||||
|
height = 300,
|
||||||
|
backgroundcolor = "white",
|
||||||
|
filename = "./images/koch_curve.png",
|
||||||
|
showpreview = true,
|
||||||
|
asteriskfunction = f)
|
|
@ -0,0 +1,25 @@
|
||||||
|
using Lindenmayer, Luxor, Colors
|
||||||
|
|
||||||
|
|
||||||
|
sierpinski_triangle = LSystem(Dict(
|
||||||
|
"F" => "*F+F--F+F"),
|
||||||
|
"F--F--F")
|
||||||
|
|
||||||
|
f(t::Turtle) = begin
|
||||||
|
t.pencolor = (0.0,0.0,0.0)
|
||||||
|
setline(4)
|
||||||
|
end
|
||||||
|
|
||||||
|
drawLSystem(sierpinski_triangle,
|
||||||
|
forward = 10,
|
||||||
|
turn = 60,
|
||||||
|
iterations = 4,
|
||||||
|
startingx = -400,
|
||||||
|
startingy = 230,
|
||||||
|
width = 1000,
|
||||||
|
height = 1000,
|
||||||
|
backgroundcolor = "white",
|
||||||
|
filename = "./images/koch_snowflake.png",
|
||||||
|
showpreview = true,
|
||||||
|
asteriskfunction = f)
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
After Width: | Height: | Size: 56 KiB |
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
Binary file not shown.
|
@ -38,7 +38,7 @@
|
||||||
% Kurze Zusammenfassung des Dokuments
|
% Kurze Zusammenfassung des Dokuments
|
||||||
\begin{abstract}
|
\begin{abstract}
|
||||||
In dieser Arbeit wird die Programmiersprache Julia bzgl. der Eignung für Visualisierungen innerhalb der fraktalen Geometrie untersucht. Betrachtet werden die Kriterien Performanz, Nachhaltigkeit, Parallelisierbarkeit, Verfügbarkeit von Softwarepaketen und Entwicklungsumgebungen.
|
In dieser Arbeit wird die Programmiersprache Julia bzgl. der Eignung für Visualisierungen innerhalb der fraktalen Geometrie untersucht. Betrachtet werden die Kriterien Performanz, Nachhaltigkeit, Parallelisierbarkeit, Verfügbarkeit von Softwarepaketen und Entwicklungsumgebungen.
|
||||||
Das Ergebnis zeigt, dass Julia einen Kompromiss als Skriptsprache mit der Performanz bildet. Der Einsatz von Julia in einem ausgeweiteten Rahmen, lässt sich mithilfe der gegebenen Parallelisierung beschleunigen und nachhaltig gestalten. Das Julia-Ecosystem bietet aktuell die ausreichenden Mittel um Fraktale Kurven, Fraktale mittels Rastergrafiken darzustellen oder diese in 3-dimensionaler Form betrachten zu können. Die Erstellung eigener Visualisierungen gestaltet sich durch eine eingeschränkte Wahl von Entwicklungsumgebungen und einer hohen Kompilierzeit meist als langwieriger Prozess.
|
Das Ergebnis zeigt, dass Julia einen Kompromiss als Skriptsprache mit der Performanz bildet. Der Einsatz von Julia in einem ausgeweiteten Rahmen, lässt sich mithilfe der gegebenen Parallelisierung beschleunigen und nachhaltig gestalten. Das Julia-Ecosystem bietet aktuell die ausreichenden Mittel um Fraktale Kurven mittels Rastergrafiken darzustellen oder diese in 3-dimensionaler Form betrachten zu können. Die Erstellung eigener Visualisierungen gestaltet sich durch eine eingeschränkte Wahl von Entwicklungsumgebungen und einer hohen Kompilierzeit meist als langwieriger Prozess.
|
||||||
\end{abstract}
|
\end{abstract}
|
||||||
|
|
||||||
% Inhaltsverzeichnis erzeugen
|
% Inhaltsverzeichnis erzeugen
|
||||||
|
@ -49,17 +49,36 @@ Das Ergebnis zeigt, dass Julia einen Kompromiss als Skriptsprache mit der Perfor
|
||||||
% -------------------------------------------------------
|
% -------------------------------------------------------
|
||||||
\section{Einleitung}
|
\section{Einleitung}
|
||||||
|
|
||||||
Schon im Jahr 1890 beschäftigte sich der Mathematiker Peano mit einer Kurve, die anschließend nach Ihm benannt wurde, die durch jeden Punkt einer 2-dimensionalen Oberfläche durchläuft \autocite{alfonsecaRepresentationFractalCurves1996}. Gefolgt 1904 mit Helge von Koch, der sich mit der nach ihm benannten Kochschen Schneeflocke auseinandersetzte. Die Entdeckungen aus der damaligen Zeit wurden von Mathematiker aus dem 19. Jahrhundert als \enquote{Monster} bezeichnet, da diese seltsame Eigenschaften aufweisen \autocite{smithFractalGeometryHistory2011}
|
Helge von Koch erfand 1904, die nach ihm benannte, \emph{Kochsche kurve}, bei der Suche nach einer nicht differenzierbare Kurve. Die Entdeckungen aus der damaligen Zeit wurden von Mathematiker aus dem 19. Jahrhundert als \enquote{Monster} bezeichnet, da diese seltsame Eigenschaften aufweisen \autocite{smithFractalGeometryHistory2011}.
|
||||||
|
Diese besonderen Objekte weist man im zeitlichen Verlauf der fraktalen Geometrie, einem Teilgebiet der Mathematik zu. Eine feste eindeutige Definition für ein Fraktal konnte sich nicht etablieren \autocite{walterFraktaleGeometrischenElemente2018}. Eine Eigenschaft, die besonders häufig bei der Arbeit mit Fraktalen auftritt ist der Begriff der \emph{Selbstähnlichkeit}.
|
||||||
|
Lässt sich ein Objekt aus kleineren Kopien seiner selbst zusammenbauen, so wird dies als selbstähnlich bezeichnet \autocite{walterFraktaleGeometrischenElemente2018}.\\
|
||||||
|
Ein einführendes Beispiel zur Selbstähnlichkeit ist die \emph{Kochsche Kurve} \autoref{fig:koch_curve}. Diese lässt sich aus 4 Kopien mit Verkleinerungsfaktor $\frac{1}{3}$ zusammenbasteln \autocite{walterFraktaleGeometrischenElemente2018}. Man lege dafür 2 Kopien an den linken und rechten Rand. Die übrig bleibenden 2 Kopien werden nach oben spitz aufeinander zulaufend zwischen die beiden äußeren Kopien gelegt.
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\label{fig:koch_curve}
|
||||||
|
\includegraphics[width=\columnwidth]{images/koch_curve.png}
|
||||||
|
\caption{Kochsche Kurve}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
Weitere Grundlagenarbeit der fraktalen Geometrie beruht auf Werken des Mathematikers Gaston Julia und seinem Konkurrenten Pierre Fatou anfangs des 20. Jahrhunderts. Julia und Fatou erforschten das Verhalten der Iterationen von Funktionen der Form $f_c(z) = z^2 + c$ mit $z, c \in \mathbb{C}$ \autocite{walterFraktaleGeometrischenElemente2018}.
|
Weitere Grundlagenarbeit der fraktalen Geometrie beruht auf Werken des Mathematikers Gaston Julia und seinem Konkurrenten Pierre Fatou anfangs des 20. Jahrhunderts. Julia und Fatou erforschten das Verhalten der Iterationen von Funktionen der Form $f_c(z) = z^2 + c$ mit $z, c \in \mathbb{C}$ \autocite{walterFraktaleGeometrischenElemente2018}.
|
||||||
Diese Errungenschaften griff der Mathematiker Benoît Mandelbrot um die 1970er Jahre in seinem Buch \textit{The Fractal Geometry of Nature} wieder auf und verlieh dem Bereich der fraktalen Geometrie an wachsender Popularität. In seinem Werk bedient sich Mandelbrot an einer Vielzahl von Visualisierungen für die betrachteten Fraktale. \autocite{smithFractalGeometryHistory2011}
|
Diese Errungenschaften griff der Mathematiker Benoît Mandelbrot um die 1970er Jahre in seinem Buch \textit{The Fractal Geometry of Nature} wieder auf und verlieh dem Bereich der fraktalen Geometrie an wachsender Popularität. In seinem Werk bedient sich Mandelbrot an einer Vielzahl von Visualisierungen für die betrachteten Fraktale. \autocite{smithFractalGeometryHistory2011}
|
||||||
Zu Ehren Ihrer Forschungsarbeiten wurden Objekte aus der fraktalen Geometrie nach Ihnen benannt.
|
Zu Ehren Ihrer Forschungsarbeiten wurden Objekte aus der fraktalen Geometrie nach Ihnen benannt.
|
||||||
Die Mandelbrot-Menge $\mathbb{M}$ ist die Menge der komplexen Zahlen $c \in \mathbb{C}$, deren Konvergenz-Verhalten für die Iteration $f_c(z_i) = z_{i+1} = z^2 _i + c$ unter Wahl von $z_0 = 0$ beschränkt ist. Da sich die komplexen Zahlen als Punkte einer auffassen lassen, lässt sich die Mandelbrot-Menge in Form einer Rastergrafik visualisieren. Mithilfe der Darstellung lassen sich neue Vermutungen über die Eigenschaften der Mandelbrot-Menge aufstellen, welche ohne Visualisierung schwer zu erkennen sind.
|
Die Mandelbrot-Menge $\mathbb{M}$ ist die Menge der komplexen Zahlen $c \in \mathbb{C}$, deren Konvergenz-Verhalten für die Iteration $f_c(z_i) = z_{i+1} = z^2 _i + c$ unter Wahl von $z_0 = 0$ beschränkt ist. Da sich die komplexen Zahlen als Punkte einer auffassen lassen, lässt sich die Mandelbrot-Menge in Form einer Rastergrafik visualisieren.
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\label{fig:mandelbrotset}
|
||||||
|
\includegraphics[width=0.6\columnwidth]{images/mandelbrot.png}
|
||||||
|
\caption{Mandelbrot-Menge}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Färben wir die Elemente der komplexen Zahlenebene die innerhalb der Mandelbrot-Menge $\mathbb{M}$ liegen schwarz und die außerhalb weiß erhalten wir \autoref{fig:mandelbrotset}. Mithilfe der Darstellung lassen sich neue Vermutungen über die Eigenschaften der Mandelbrot-Menge aufstellen, welche ohne Visualisierung schwer zu erkennen sind.
|
||||||
Die Begründer Gaston und Julia besaßen zur damaligen Zeit noch keine Computer, mit denen Sie ihre Forschungsobjekte darstellen konnten. \autocite{walterFraktaleGeometrischenElemente2018}
|
Die Begründer Gaston und Julia besaßen zur damaligen Zeit noch keine Computer, mit denen Sie ihre Forschungsobjekte darstellen konnten. \autocite{walterFraktaleGeometrischenElemente2018}
|
||||||
Mit dem Lauf der Zeit wächst die Rechenleistung der verfügbaren Computer stetig an und erschließt neue Möglichkeiten innerhalb der Forschung. Nach \textit{Moore's Law} \autocite{mollickEstablishingMooreLaw2006} verdoppelt sich die Anzahl der Komponenten die auf einen Chip passt jedes Jahr. Innerhalb der 70er Jahre wurde die Mandelbrotmenge mithilfe von ASCII-Art visualisiert \autocite{weitzKonkreteMathematikNicht2021}. Aktuell steht uns die Rechenleistung zur Verfügung Einblicke in die Welt der Fraktale mittels hochauflösender Rastergrafik zu gelangen.
|
Mit dem Lauf der Zeit wächst die Rechenleistung der verfügbaren Computer stetig an und erschließt neue Möglichkeiten innerhalb der Forschung. Nach \textit{Moore's Law} \autocite{mollickEstablishingMooreLaw2006} verdoppelt sich die Anzahl der Komponenten die auf einen Chip passt jedes Jahr. Innerhalb der 70er Jahre wurde die Mandelbrotmenge mithilfe von ASCII-Art visualisiert \autocite{weitzKonkreteMathematikNicht2021}. Aktuell steht uns die Rechenleistung zur Verfügung Einblicke in die Welt der Fraktale mittels hochauflösender Rastergrafik zu gelangen.
|
||||||
Die resultierenden Bilder wecken aufgrund der Ästhetik auch das Interesse vieler Nicht-Mathematiker sich mit dem Themengebiet zu befassen
|
Die resultierenden Bilder wecken aufgrund der Ästhetik auch das Interesse vieler Nicht-Mathematiker sich mit dem Themengebiet zu befassen
|
||||||
\autocite{smithFractalGeometryHistory2011}.
|
\autocite{smithFractalGeometryHistory2011}.
|
||||||
In der Informatik, die einen Spagat zwischen Formalwissenschaft und Ingenieurswissenschaft bildet, stellt sich die Herausforderung die Vielzahl an Objekten aus dem Zoo der fraktalen Geometrie auf effiziente und anschauliche Weise zu visualisieren.
|
In der Informatik, die einen Spagat zwischen Formalwissenschaft und Ingenieurswissenschaft bildet, stellt sich die Herausforderung die Vielzahl an Objekten aus dem Zoo der fraktalen Geometrie auf effiziente und anschauliche Weise zu visualisieren. Um sich die Rechenleistung der Computer zunutze zu machen dient eine Programmiersprache als Schnittstelle zwischen Computer und Mensch. Wir betrachten genauer ob sich die Programmiersprache \emph{Julia} zur Erstellung von Visualisierungen im Rahmen der fraktalen Geometrie eignet.
|
||||||
|
|
||||||
|
|
||||||
\section{Hintergrund}
|
\section{Hintergrund}
|
||||||
|
|
||||||
|
@ -98,7 +117,7 @@ In folgendem Abschnitt werden Performanz-Tests in den Programmiersprachen Julia
|
||||||
Die Elemente der Mandelbrot-Menge $\mathbb{M}$ können nicht genau bestimmt werden. Es ist dennoch möglich Näherungsbilder der Mandelbrot-Menge $\mathbb{M}$ zu skizzieren \autocite{weitzKonkreteMathematikNicht2021}. Wir überprüfen die Performanz von Julia indem wir die beanspruchte Zeit für die Erstellung eine solchen Näherungsbildes betrachten. Komplexe Zahlen sind im Kontext dieses Tests festgelegt als Datenstruktur bestehende aus zwei 64-Bit Fließkommazahlen nach Spezifikation IEEE-754.
|
Die Elemente der Mandelbrot-Menge $\mathbb{M}$ können nicht genau bestimmt werden. Es ist dennoch möglich Näherungsbilder der Mandelbrot-Menge $\mathbb{M}$ zu skizzieren \autocite{weitzKonkreteMathematikNicht2021}. Wir überprüfen die Performanz von Julia indem wir die beanspruchte Zeit für die Erstellung eine solchen Näherungsbildes betrachten. Komplexe Zahlen sind im Kontext dieses Tests festgelegt als Datenstruktur bestehende aus zwei 64-Bit Fließkommazahlen nach Spezifikation IEEE-754.
|
||||||
Die Mandelbrot-Menge ist nach Definition Teilmenge der komplexen Zahlen. Es lässt sich zeigen, dass alle Elemente der Mandelbrotmenge vollständig in der Kreisscheibe um 0 mit dem Radius 2 liegen \autocite{walterFraktaleGeometrischenElemente2018}. Diese Eigenschaft machen wir uns in unserem Näherungsbild zu nutze.
|
Die Mandelbrot-Menge ist nach Definition Teilmenge der komplexen Zahlen. Es lässt sich zeigen, dass alle Elemente der Mandelbrotmenge vollständig in der Kreisscheibe um 0 mit dem Radius 2 liegen \autocite{walterFraktaleGeometrischenElemente2018}. Diese Eigenschaft machen wir uns in unserem Näherungsbild zu nutze.
|
||||||
Demnach verwenden wir für die Visualisierung der Mandelbrot-Menge als Rastergrafik einen quadratischen Bildausschnitt mit Umkreismittelpunkt bei $0 + 0i$ und Seitenlänge 4. Um eine $n \times n$ Rastergrafik zu erhalten zerlegen wir unseren Ausschnitt in $n \times n$ Quadrate mit Seitenlänge $\frac{4}{n}$. Aus jedem Rasterquadrat wählen wir eine komplexe Zahl $z_{ij}$ als Repräsentanten für dieses Quadrat aus. Wir bestimmen für jedes $z_{ij}$ ob es nach einer festgelegten Anzahl an Iterationen ins Unendliche divergiert.\\
|
Demnach verwenden wir für die Visualisierung der Mandelbrot-Menge als Rastergrafik einen quadratischen Bildausschnitt mit Umkreismittelpunkt bei $0 + 0i$ und Seitenlänge 4. Um eine $n \times n$ Rastergrafik zu erhalten zerlegen wir unseren Ausschnitt in $n \times n$ Quadrate mit Seitenlänge $\frac{4}{n}$. Aus jedem Rasterquadrat wählen wir eine komplexe Zahl $z_{ij}$ als Repräsentanten für dieses Quadrat aus. Wir bestimmen für jedes $z_{ij}$ ob es nach einer festgelegten Anzahl an Iterationen ins Unendliche divergiert.\\
|
||||||
Wir nehmen an, dass alle $z_{ij}$ Teil der Mandelbrot-Menge sind, wenn unsere maximale Iteration erreicht wurde und somit die Kreisscheibe nicht verlassen wurde. Diese Methodik fasst sich in Form des \textit{Escape Time Algorithm} \autoref{alg:escape_time_algorithm} zusammen. \autocite{caiStudyMandelbrotSets2013}.
|
Wir nehmen an, dass alle $z_{ij}$ Teil der Mandelbrot-Menge sind, wenn unsere maximale Iteration erreicht wurde und somit die Kreisscheibe nicht verlassen wurde. Diese Methodik fasst sich in Form des \textit{Escape Time Algorithm} \autoref{alg:escape_time_algorithm} zusammen. \autocite{caiStudyMandelbrotSets2013}.
|
||||||
|
|
||||||
\begin{algorithm}
|
\begin{algorithm}
|
||||||
\caption{Escape Time Algorithmus}\label{alg:escape_time_algorithm}
|
\caption{Escape Time Algorithmus}\label{alg:escape_time_algorithm}
|
||||||
|
@ -157,7 +176,7 @@ In folgendem Abschnitt betrachten wir ob die durch das Julia Ecosystem bereitges
|
||||||
|
|
||||||
\subsubsection*{Julias Ecosystem}
|
\subsubsection*{Julias Ecosystem}
|
||||||
|
|
||||||
Neben den Standardbibliotheken, die mit der Installation einer Programmiersprache mitgeliefert werden, steht Nutzern die Möglichkeit offen eigene Softwarepakete zu entwickeln. Diese Pakete kapseln viele Funktionalitäten im Fokus eines Spezifischen Anwendungsbereichs bspw. Statistik. Um die Pakete der Öffentlichkeit zur Verfügung zu stellen, können diese in Paketverzeichnisse im Internet hochgeladen werden. Diese Möglichkeiten erweitern das traditionelle Verständnis von Softwarentwicklung im Sinner einer kollaborativen Zusammenarbeit von Entwicklern unabhängig ihres Standorts. \autocite{decanTopologyPackageDependency2016}.\autoref{table:packages} zeigt eine Auswahl von Verzeichnissen für Sprachen aus dem Bereich des wissenschaftlichen Berechnens basierend auf \autocite{PyPi2024} \autocite{MATLABFileexchange2024} \autocite{CRANContributedPackages2024} \autocite{JuliaRegistries2024} \autocite{carbonellePYPLPopularityProgramming2023}.
|
Neben den Standardbibliotheken, die mit der Installation einer Programmiersprache mitgeliefert werden, steht Nutzern die Möglichkeit offen eigene Softwarepakete zu entwickeln. Diese Pakete kapseln viele Funktionalitäten im Fokus eines Spezifischen Anwendungsbereichs bspw. Statistik. Um die Pakete der Öffentlichkeit zur Verfügung zu stellen, können diese in Paketverzeichnisse im Internet hochgeladen werden. Diese Möglichkeiten erweitern das traditionelle Verständnis von Softwareentwicklung im Sinn einer kollaborativen Zusammenarbeit von Entwicklern unabhängig ihres Standorts. \autocite{decanTopologyPackageDependency2016}.\autoref{table:packages} zeigt eine Auswahl von Verzeichnissen für Sprachen aus dem Bereich des wissenschaftlichen Berechnens basierend auf \autocite{PyPi2024} \autocite{MATLABFileexchange2024} \autocite{CRANContributedPackages2024} \autocite{JuliaRegistries2024} \autocite{carbonellePYPLPopularityProgramming2023}.
|
||||||
|
|
||||||
\begin{table}[h!]
|
\begin{table}[h!]
|
||||||
\centering
|
\centering
|
||||||
|
@ -194,11 +213,26 @@ Alleine mit einer kleinen Auswahl an Aktionen können komplexe Fraktale erschaff
|
||||||
|
|
||||||
Mithilfe der Regeln der Turtle-Grafiken lassen sich Lindenmayer Systeme, kurz L-System, darstellen. Ein L-System liefert eine Liste an Ersetzungsregeln die alle gleichzeitig auf eine Zeichenkette angewendet werden. \autocite{mcandrewLindenmayerSystemsFractals}. Diese Ersetzungsregeln können beispielsweise auf Zeichenketten bzw. die Aktionen unserer Schildkröte, bestehend aus F, +, - angewendet werden.
|
Mithilfe der Regeln der Turtle-Grafiken lassen sich Lindenmayer Systeme, kurz L-System, darstellen. Ein L-System liefert eine Liste an Ersetzungsregeln die alle gleichzeitig auf eine Zeichenkette angewendet werden. \autocite{mcandrewLindenmayerSystemsFractals}. Diese Ersetzungsregeln können beispielsweise auf Zeichenketten bzw. die Aktionen unserer Schildkröte, bestehend aus F, +, - angewendet werden.
|
||||||
Der übrigbleibende Aufwand besteht nur noch darin das L-System in die Aktionen einer Turtle-Grafik zu übersetzen. Das Softwarepaket \texttt{Lindenmayer.jl} abstrahiert uns diesen Arbeitsaufwand weg.
|
Der übrigbleibende Aufwand besteht nur noch darin das L-System in die Aktionen einer Turtle-Grafik zu übersetzen. Das Softwarepaket \texttt{Lindenmayer.jl} abstrahiert uns diesen Arbeitsaufwand weg.
|
||||||
|
Verwenden wir 3 Kopien der \emph{kochschen Kurve} und legen diese zu einem Dreieck zusammen, so erhalten wir die \emph{kochsche Schneeflocke}. Beide Visualisierungen wurden mithilfe von \texttt{Lindenmayer.jl} erstellt.
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\label{fig:koch_snowflake}
|
||||||
|
\includegraphics[width=0.5\columnwidth]{images/koch_snowflake.png}
|
||||||
|
\caption{Kochsche Schneeflocke}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsubsection*{Fraktale in $\mathbb{C}$}
|
\subsubsection*{Fraktale in $\mathbb{C}$}
|
||||||
|
|
||||||
Die Mandelbrot-Menge, sowie die Julia-Menge liegen innerhalb der komplexen Zahlen. Mithilfe der Stratege die Mandelbrot-Menge in Form eines Rasters unter Nutzung des \textit{Escape Time Algorithmus} \autoref{alg:escape_time_algorithm} erhalten wir ein Raster bzw. eine Matrix mit den Fluchtzeiten der jeweiligen Eingabewerte.
|
Die Mandelbrot-Menge, sowie die Julia-Menge liegen innerhalb der komplexen Zahlen. Mithilfe der Stratege die Mandelbrot-Menge in Form eines Rasters unter Nutzung des \textit{Escape Time Algorithmus} \autoref{alg:escape_time_algorithm} erhalten wir ein Raster bzw. eine Matrix mit den Fluchtzeiten der jeweiligen Eingabewerte.
|
||||||
Für vielseitige Visualisierungen ist eine einheitliche Schnittstelle für Farbmodelle und Rastergrafiken vonnöten. Diese geforderte Funktionalität wird durch das Julia-Paket \texttt{JuliaImages.jl} realisiert. Das Paket \texttt{Makie.jl} liefert eine Darstellungsmöglichkeit für 2-dimensionale Rastergrafiken in Form interaktiver Anwendungen mithilfe Benutzereingaben wie bspw. Textboxen, Knöpfe, Slider \autocite{danischMakieJlFlexible2021}.
|
Für vielseitige Visualisierungen ist eine einheitliche Schnittstelle für Farbmodelle und Rastergrafiken vonnöten. Diese geforderte Funktionalität wird durch das Julia-Paket \texttt{JuliaImages.jl} realisiert. Das Paket \texttt{Makie.jl} liefert eine Darstellungsmöglichkeit für 2-dimensionale Rastergrafiken in Form interaktiver Anwendungen mithilfe Benutzereingaben wie bspw. Textboxen, Knöpfe, Slider \autocite{danischMakieJlFlexible2021}.
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\label{fig:juliaset}
|
||||||
|
\includegraphics[width=0.6\columnwidth]{images/juliaset.png}
|
||||||
|
\caption{kolorierte Julia-Menge}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsubsection*{3-dimensionale Fraktale}
|
\subsubsection*{3-dimensionale Fraktale}
|
||||||
|
|
||||||
|
@ -240,13 +274,11 @@ Wir klassifizieren eine Auswahl an Entwicklungsumgebungen für Julia. Für jede
|
||||||
\end{footnotesize}
|
\end{footnotesize}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
Aus \autoref{table:ides} ist zu erkennen, dass die Unterstützung von Julia in Form von Notebooks weiterhin gewährleistet ist. Eine eigenständige Entwicklungsumgebung an der aktiv gearbeitet wird ist in unserer Auswahl nicht zu finden. Aus der Kategorie der \textit{Erweiterungen} wird alleinig Julia für Visual Studio Code unterstützt. Zu bemerken ist das die Programmiersprache Julia, sowie auch alle der genannten Entwicklungsumgebungen \acs{IDE} aus \autoref{table:ides} einer proprietären Lizenz unterworfen ist \autocite{bezansonJuliaLanguageDocumentation}. Dies sorgt für eine hohe Zugänglichkeit.
|
Aus \autoref{table:ides} ist zu erkennen, dass die Unterstützung von Julia in Form von Notebooks weiterhin gewährleistet ist. Eine eigenständige Entwicklungsumgebung an der aktiv gearbeitet wird ist in unserer Auswahl nicht zu finden. Aus der Kategorie der \textit{Erweiterungen} wird alleinig Julia für Visual Studio Code unterstützt. Zu bemerken ist das die Programmiersprache Julia, sowie auch alle der genannten Entwicklungsumgebungen \acs{IDE} aus \autoref{table:ides} keiner proprietären Lizenz unterworfen ist \autocite{bezansonJuliaLanguageDocumentation}. Dies sorgt für eine hohe Zugänglichkeit.
|
||||||
|
|
||||||
\section{Ergebnis}
|
\section{Ergebnis}
|
||||||
|
|
||||||
Im Gesamtbild liegen die Stärken der Programmiersprache Julia in der überdurchschnittlichen Geschwindigkeit als Skriptsprache. Die Kombination mit einer guten Energieeffizienz trägt dazu bei, dass Julia als grüne Programmiersprache angesehen werden kann. Für sehr große numerische Berechnungen über mehrere Computer eignet sich Julia aufgrund der gegebenen Unterstützung durch Bibliotheken. Im Allgemeinen erkennen wir dass Julia eine wesentlich geringere Anzahl an Softwarepaketen aufgrund der kleineren Community aufweist. Für Funktionalitäten die noch in keinem vorherig veröffentlichten Julia-Paket untergebracht wurde muss selbst Hand angelegt werden oder auf eine andere Sprache umgestiegen werden. Das Starten eines größeren Entwicklungsprojektes wird aufgrund der Verfügbarkeit in Visual Studio Code stattfinden müssen, da restlichen Entwicklungsumgebung an denen aktuell entwickelt wird Notebooks sind. Notebooks eignen sich sehr gut für die spontane Darstellung und für ein \enquote{Proof of Concept} von Ideen. Die allgemeine Entwicklung wird durch recht hohe Kompilierzeiten beeinflusst. Der Entwicklungsstart verzögert sich mit zunehmender Größe an Abhängigkeiten, da diese im Vorhinein erst kompiliert werden müssen. Die Suchen von Fehlern im Debug-Prozess kann situationsbedingt einen hohen zeitlichen Anspruch in Kauf nehmen. Die Auswahl an Softwarepaketen decken die betrachteten Anwendungsfälle der fraktalen Geometrie (Fraktale Kurven, Mandelbrot-Menge, Julia-Menge und 3-dimensionale Fraktale) ab. Julia als Skriptsprache liefert Schnittstellen die viele technische Details abstrahieren und Programmierer sich während des Arbeitsprozesses auf die wesentliche Entwicklung fokussieren können. Julia wird seines Versprechen ein Werkzeug für numerisches Berechnen zur Erstellung von Visualisierungen im Bereich der fraktalen Geometrie gerecht.
|
Im Gesamtbild liegen die Stärken der Programmiersprache Julia in der überdurchschnittlichen Geschwindigkeit als Skriptsprache. Die Kombination mit einer guten Energieeffizienz trägt dazu bei, dass Julia als grüne Programmiersprache angesehen werden kann. Für sehr große numerische Berechnungen über mehrere Computer eignet sich Julia aufgrund der gegebenen Unterstützung durch Bibliotheken. Im Allgemeinen erkennen wir dass Julia eine wesentlich geringere Anzahl an Softwarepaketen aufgrund der kleineren Community aufweist. Für Funktionalitäten die noch in keinem vorherig veröffentlichten Julia-Paket untergebracht wurde muss selbst Hand angelegt werden oder auf eine andere Sprache umgestiegen werden. Das Starten eines größeren Entwicklungsprojektes wird aufgrund der Verfügbarkeit in Visual Studio Code stattfinden müssen, da restlichen Entwicklungsumgebung an denen aktuell entwickelt wird Notebooks sind. Notebooks eignen sich sehr gut für die spontane Darstellung und für ein \enquote{Proof of Concept} von Ideen. Die allgemeine Entwicklung wird durch recht hohe Kompilierzeiten beeinflusst. Der Entwicklungsstart verzögert sich mit zunehmender Größe an Abhängigkeiten, da diese im Vorhinein erst kompiliert werden müssen. Die Suchen von Fehlern im Debug-Prozess kann situationsbedingt einen hohen zeitlichen Anspruch in Kauf nehmen. Die Auswahl an Softwarepaketen decken die betrachteten Anwendungsfälle der fraktalen Geometrie (Fraktale Kurven, Mandelbrot-Menge, Julia-Menge und 3-dimensionale Fraktale) ab. Julia als Skriptsprache liefert Schnittstellen die viele technische Details abstrahieren und Programmierer sich während des Arbeitsprozesses auf die wesentliche Entwicklung fokussieren können. Julia wird seines Versprechen ein Werkzeug für numerisches Berechnen zur Erstellung von Visualisierungen im Bereich der fraktalen Geometrie gerecht.\\
|
||||||
|
|
||||||
\section{Einschränkungen}
|
|
||||||
|
|
||||||
Aufgrund der eingeschränkten Zeit, die zur Erstellung dieses Artikels verfügbar ist konnte nur ein Performanz Test für die 3 Programmiersprachen Julia, Python und Java durchgeführt werden. Die Aufnahme weiterer Programmiersprachen wie die restlichen im Artikel aufgezählten Sprachen R, MATLAB und C liefert ein ausführlicheres Bild bezüglich der Vergleichbarkeit der Programmiersprachen untereinander. Die Messungen der Performanz-Test wurden auf einem fest gewählten Computer durchgeführt. Eine Durchführung auf einem weiteren Computer liefert eine zweite Menge an Messwerten die Aussagen über die Vergleichbarkeit der Messergebnisse bezüglich der verwendeten Hardware liefert.
|
Aufgrund der eingeschränkten Zeit, die zur Erstellung dieses Artikels verfügbar ist konnte nur ein Performanz Test für die 3 Programmiersprachen Julia, Python und Java durchgeführt werden. Die Aufnahme weiterer Programmiersprachen wie die restlichen im Artikel aufgezählten Sprachen R, MATLAB und C liefert ein ausführlicheres Bild bezüglich der Vergleichbarkeit der Programmiersprachen untereinander. Die Messungen der Performanz-Test wurden auf einem fest gewählten Computer durchgeführt. Eine Durchführung auf einem weiteren Computer liefert eine zweite Menge an Messwerten die Aussagen über die Vergleichbarkeit der Messergebnisse bezüglich der verwendeten Hardware liefert.
|
||||||
Für die Performanz der jeweiligen Sprachen erhalten wir ein zeitliches Abbild, da neuere Versionen die Performanz optimalerweise anheben oder verschlechtern können.
|
Für die Performanz der jeweiligen Sprachen erhalten wir ein zeitliches Abbild, da neuere Versionen die Performanz optimalerweise anheben oder verschlechtern können.
|
||||||
|
@ -279,10 +311,12 @@ Die Einschränkungen bezüglich einer getroffenen Auswahl ist auf die ausgewähl
|
||||||
\AtNextBibliography{\small}
|
\AtNextBibliography{\small}
|
||||||
\printbibliography
|
\printbibliography
|
||||||
|
|
||||||
\section{Appendix}
|
\section*{Appendix}
|
||||||
|
\addcontentsline{toc}{section}{Appendix}
|
||||||
|
|
||||||
\subsection*{Code-Schnipsel}
|
\subsection*{Code-Schnipsel}
|
||||||
|
|
||||||
|
|
||||||
Die Code-Schnipsel, sowie die erhaltenen Testdaten der Performanz-Tests lassen sich unter \href{https://gitty.informatik.hs-mannheim.de/2211275/wia}{Gitea} der Hochschule Mannheim finden.
|
Die Code-Schnipsel, sowie die erhaltenen Testdaten der Performanz-Tests lassen sich unter \href{https://gitty.informatik.hs-mannheim.de/2211275/wia}{Gitea} der Hochschule Mannheim finden.
|
||||||
|
|
||||||
\subsection*{Paketverzeichnisse}
|
\subsection*{Paketverzeichnisse}
|
||||||
|
@ -305,11 +339,5 @@ Die Code-Schnipsel, sowie die erhaltenen Testdaten der Performanz-Tests lassen s
|
||||||
\item \textbf{IJulia (Jupyter):} \url{https://github.com/JuliaLang/IJulia.jl}
|
\item \textbf{IJulia (Jupyter):} \url{https://github.com/JuliaLang/IJulia.jl}
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
Loading…
Reference in New Issue