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
Gruß, Thomas
PS: Ich habe iwo gelesen, dass die Startwerte teilweise im Bereich der komplexen Zahlen liegen (?)
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
Gruß, Thomas
PS: Ich habe iwo gelesen, dass die Startwerte teilweise im Bereich der komplexen Zahlen liegen (?)