1 / 17

Fraktale

Fraktale. Julia-Mengen die Mandelbrotmenge komplexe Abbildungen. realisiert als JAVA-Applet. Erinnerung: Komplexe Zahlen. z z 2 Beispiel 1: z=2+i. z z 2. Problem: Jede komplexe Zahl verhält sich unter der Abbildung z z 2 anders. Welche Zahlen liegen in einem bestimmten Radius ?

ron
Download Presentation

Fraktale

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fraktale • Julia-Mengen • die Mandelbrotmenge • komplexe Abbildungen realisiert als JAVA-Applet

  2. Erinnerung: Komplexe Zahlen z z2 Beispiel 1: z=2+i

  3. z z2

  4. Problem: • Jede komplexe Zahl verhält sich unter der Abbildungz z2 anders. • Welche Zahlen liegen in einem bestimmten Radius ? • Welche Zahlen „fliegen“ bei einer bestimmten Anzahl von Hintereinanderausführungen der Abbildung aus jedem Radius heraus ? • Hintereinanderausführung einer Abbildung wird als „Iteration“ der Abbildung bezeichnet.

  5. Idee des Mathematikers Julia um 1900: • Unterteilung der komplexen Zahlenebene in zwei Bereiche: • Punkte, die nach einer bestimmten Anzahl n von Iterationen innerhalb eines bestimmten Radius liegen (Gefangenenpunktmenge) • Punkte, die außerhalb dieses Radius liegen(Fluchtpunktmenge)

  6. Die Julia-Gefangenenpunktmenge für die Konstante C=-0.5 + 0.5i 18Iterationen 6 1 2 nach 0

  7. Ansätze der Realisierung • a) Realisierung als Applikation • schlechte Portabilität ins Internet • JAVA-Viewer nötig zum Berechnen der Fraktale • b) Realisierung als Applet • von jeder Maschine aus ausführbar (im Browser) • das Programm kann beliebig weitergegeben werden • c) Gleichzeitige Realisierung von a) und b) • Konflikte zwischen Applet und Frames müssen abgefangen werden  höherer Programmieraufwand

  8. Realisierung als Applet • Interaktivität des Programms i.A. auf zwei Arten möglich: • a) AWT • komfortable Steuerung wie in Anwendungen • Programm erfordert jedoch hohe Rechenleistung, und da nicht multithreaded programmiert wurde, können während des Zeichenvorgangs keine Events bearbeitet werden !! • b) Parameterübergabe aus HTML-Code • Individuelle Einstellung möglich, jedoch nur eingeschränkte Interaktivität • Dennoch zur Zeit einzige sinnvolle Lösung

  9. Parameter • Konstante C, benötigt C.Re und C.Im • Iterationstiefe, ggf. Iterationsbeginn und Schrittweite • Skalierungs- und Translationsfaktoren zum Verschieben der Zeichnung • Farbenschalter: Farbverlauf oder alternierendeFarben, ggf. Grundfarben String [][] info = { {PARAM_CRe,"double","Konstante, Realteil"}, {PARAM_CIm, "double" , "Konstante Imaginärteil"}, {PARAM_ItDepth, "int" , "Iterationstiefe"}, {PARAM_ItBegin, "int","Anfangsiterationszahl"}, {PARAM_ItStep,"int","Iterationsschrittweite"}, {PARAM_xshift,"double","Verschiebung in Re-Richtung"}, {PARAM_yshift,"double","Verschiebung in Im-Richtung"}, {PARAM_xscale,"double","Zoomfaktor x-Aspekt"}, {PARAM_yscale,"double","Zoomfaktor y-Aspekt"}, {PARAM_Colors,"boolean","jeder zweite Schritt Schwarz"} };

  10. Klasse CNumber class CNumber // COMPLEX NUMBERS { public double Re; public double Im; CNumber () { this(0.0,0.0); } CNumber (double r, double i) { Re=r; Im=i; } public double Betrag() { return Math.sqrt(Re*Re+Im*Im); } public String toString(){ return (Re+"+"+Im+"i"); } }

  11. Paint public void paint(Graphics g) { double farbwechsel=0; for (int i=iteration; i<totalDepth;i+=itStep) { if (Cycle==true) { farbwechsel+=(255.0d*(1.0d/(totalDepth))); farbe =new Color((int)(farbwechsel),0,0); } else { if (i%2==0) { farbe=Color.black; } else { farbe=Color.red; } } g.setColor(farbe); showStatus("Iteration Nr."+i+ "; Colormode:"+Cycle); Julia (i,g); } }

  12. Colormode : Schattiert oder zweifarbig ? schattierte Darstellung: mit jedem Iterationsschritt wird der R-Anteil der Zeichenfarbe um 1 / totalDepth erhöht Cycle-Darstellung: jeder zweite Iterations-schritt wird schwarz gemalt

  13. Der Pixelspiel-Algorithmus public void Julia(int IterationDepth,Graphics g ) { if (C.Betrag()>2.0) Grenzbetrag=C.Betrag(); int iteration=0; for (int y=0;y<600;y++) { for (int x=0; x<600;x++) { CNumber z=new CNumber(); z.Re=(xscale*x)+xshift; z.Im=(yscale*y)+yshift; // z=QuadMap(Null); //Mandelbrot while ((z.Betrag()<Grenzbetrag)&&(iteration<IterationDepth)) { z=QuadMap(z); iteration++; } iteration=0; if (z.Betrag()<Grenzbetrag) g.fillRect(x,y,1,1); } } }

  14. Erweiterung: die Mandelbrotmenge • Betrachtung der Parameter, bzw. der verschiedenen Abbildungen, die eine Julia-Menge erzeugen. • M ={C | Julia-Menge ist stetig für C} • Startwert der Iteration wird als C gewählt und in die Abbildung mit übernommen • Die Mandelbrotmenge ist eine „Landkarte“ für stetige (zusammenhängende) Julia-Mengen

More Related