Newton-Fraktal

beastofchaos

Bekanntes Mitglied
Das hier habe ich ebenfalls in einem Mathe/Informatik-Forum unter matheforum.net -> Newton-Fraktal geschrieben.


Hallo Leute, ich wende mich mit einer heiklen Sache an euch:
Ich arbeite an einem hübschen Grafikprogramm, das unter anderem das Newton-Fraktal erstellen können soll.

Dazu gehört natürlich erst einmal die Interpretation einer Eingabe (String) als Funktion. Das an sich soll nicht zu komplex erarbeitet sein, sondern Polynome mit folgenden Regeln erkennen:

- Es ist ein nicht zwingend natürlicher Faktor vor jedem x möglich ( mit und ohne *) - Also z.B. "-3.5", "7", "101.379", "-3" o.ä.
- Nach dem x kommt direkt das Hochzeichen und eine natürliche Zahl als Potenz
-> Sie soll aber maximal 6 sein, damit ich maximal 6 Nullstellen und damit 6 unterschiedliche Farben brauche.
- Keine Klammern (Es können nur - + * interpretiert werden)
- Potenzen können zweimal auftauchen (werden dann einfach addiert)

Das habe ich schon soweit und das Ableiten ist dann auch keine große Hürde mehr.

Darauf folgt dann, nachdem ich die Funktion und deren Ableitung habe, die Erstellung des Fraktals.
Hier stoße ich auf meine erste Frage:

Wie genau funktioniert das? Das Newtonverfahren ist mir bekannt und ich kann auch schon per while-Schleife von einem beliebigen x-Wert zu einer Nullstelle der Funktion finden.
Doch welche Werte muss ich hier, abhängig von den Pixelkoordinaten als Startwert einsetzen?
Im Moment nehme ich einfach die Breite mal die Höhe des Bildes, fange dann beim Pixel[0;0] im Minus-Bereich an und inkrementiere jedesmal, wenn ich zum nächsten Pixel gehe.
(In der Mitte des Bildes ist mein Startwert logischerweise dann 0)
Abhängig von der Nullstelle und der benötigten Schritte, um zur Nullstelle zu gelangen erstelle ich eine Farbe.
-> Jede Nullstelle gibt eine andere Farbe
-> Umso mehr Schritte nötig, um dunkler wird die Farbe

Wenn ich mir dann (nach 10 Sekunden Berechnung für das Fraktal von " x^3- x ") das Bild ausgeben lasse, entsteht ein Farbverlauf von oben nach unten. Oben ist es hell, gegen Mitte wird es dunkler und ab der Mitte nach unten hin wechselt es die Farbe und wird wieder heller.

Den Quellcode poste ich jetzt lieber nicht, um noch mehr zu verwirren. Wenn das aber jemand will, mach ich das :)



Wenn das ganze ein bisschen verwirrend klingt, bitte nicht einfach den Thread wegklicken, denn diese Funktion ist mir sehr wichtig. Also fragt bei mir nochmal nach im Falle von Unverständlichem :p

Gruß, Thomas


PS: Ich habe iwo gelesen, dass die Startwerte teilweise im Bereich der komplexen Zahlen liegen (?)
 

beastofchaos

Bekanntes Mitglied
Wer auch an sowas interessiert ist: Im Anhang findet ihr die jar, mit allen Klassen ;)

Gruß, Thomas
 

Anhänge

  • NewtonFraktal.jar
    22,6 KB · Aufrufe: 15
G

Gelöschtes Mitglied 20545

Gast
Hi, hier fliegt ne Exception, wie im Anhang zu sehen ist...
 

Anhänge

  • javaException.PNG
    javaException.PNG
    13,7 KB · Aufrufe: 42

beastofchaos

Bekanntes Mitglied
Ich weiß, habs iwie nicht auf die Reihe bekommen, Eclipse beim erstellen der jar-Datei klar zu machen, in welcher Klasse die main-Methode steckt.
Aber ihr könnt die jar zumindest öffnen und die Klassen einsehen oder selbst das per Eclipse/ NetBeans starten :)

Oder magst du mir kurz sagen, was ich falsch gemacht habe bzw. wo ich das angebe.

Gruß, Thomas
 
G

Gelöschtes Mitglied 20545

Gast
Gibt man das nicht in dem "export"-Dialog im letzten Schritt an?
 

Anhänge

  • mainClassKnopp.PNG
    mainClassKnopp.PNG
    25,2 KB · Aufrufe: 31
G

Gelöschtes Mitglied 20545

Gast
Ach ja, die lieben Mathematiker ^^

Was kann ich denn bei Funktion so alles eingeben?

edit:

Bei "6.0" als Eingabe bei "Funktion" gibt's 'ne Fehlermeldung, siehe Anhang.
 

Anhänge

  • exception.PNG
    exception.PNG
    24,7 KB · Aufrufe: 23
Zuletzt bearbeitet von einem Moderator:

beastofchaos

Bekanntes Mitglied
Oh ja...

Das Problem ist anscheinend in dem Fall, dass ich Integer.parseInt("6.0") da stehen habe. Problem schon behoben!

Du kannst zu einer beliebigen Funktion (z.B. "f(x) = x^3 - 1") ein Fraktal erstellen.
Ich habe maximal nur x^7 erlaubt, weil ich nur 7 verschiedene eindeutige Farben eingebaut habe.
(FFFFFF, FF0000, FFFF00, FF00FF, usw.).

Funktion wie "f(x) = x^7 - x^6 + x^5 + x - x^2" sehen da meiner Meinung nach am eindruckvollsten aus ;)

Mit diesem Fraktal wird eigentlich das Newton-Verfahren zur Berechnung von Nullstellen im komplexen Zahlenbereich veranschaulicht, wenn du es ganz genau haben willst :)

Gruß, Thomas
 
Zuletzt bearbeitet:

beastofchaos

Bekanntes Mitglied
Noch eine Frage. Für die Berechnung braucht das Programm natürlich schonmal ein bisschen und ich will dazu 1 Sache einbauen.

Ich will nämlich in einer Panel, das in Borderlayout.SOUTH ist, einen Ladebalken haben, der mir sagt, wann die Berechnung des Newton-Fraktal abgeschlossen ist. Gibt es dafür eine empfehlenswerte Klasse?

Gruß, Thomas
 
Zuletzt bearbeitet:

beastofchaos

Bekanntes Mitglied
Okay Dankeschön!

Hier habt ihr jetzt das (hoffentlich) fehlerfreie Ergebnis eines Newton-Fraktal-Generator :)

Gruß, Thomas
 

Anhänge

  • NewtonFraktal.jar
    30,7 KB · Aufrufe: 15
Zuletzt bearbeitet:
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben