berechnung des newton-fraktals



  • hallo

    ich implementiere das newton-fraktal in c++ und habe mir dazu diese seite durchgelesen: http://www.johannes-bauer.com/compsci/fraktale/

    jedoch habe ich danach immer noch probleme und fragen:
    1. wenn ich das newton-fraktal zu z.b. z^2-1 machen will, dann sieht das newton-fraktal vor, dass ich dann u0^2-1 rechnen soll (u0 ist hier C). muss ich für die 1 einfach 1 als i annehmen? (also bei jeder konstante dann 1 als i, nicht r als i...)

    2. auf der webseite spricht der autor davon, dass 5 iterationen schon sehr gut sind. kann man das wirklich pauschal mit 5 iterationen machen oder gibt es bereiche wo das nicht mehr ausreicht?

    3. bilder wie z.b. das erste bild vom autor unten, was genau wird da denn für ein bereich angeschaut? (-1|-1)...(1|1)?

    gruss



  • igno schrieb:

    1. wenn ich das newton-fraktal zu z.b. z^2-1 machen will, dann sieht das newton-fraktal vor, dass ich dann u0^2-1 rechnen soll (u0 ist hier C). muss ich für die 1 einfach 1 als i annehmen? (also bei jeder konstante dann 1 als i, nicht r als i...)

    Warum? 1 ist 1 und i ist i.

    2. auf der webseite spricht der autor davon, dass 5 iterationen schon sehr gut sind. kann man das wirklich pauschal mit 5 iterationen machen oder gibt es bereiche wo das nicht mehr ausreicht?

    Probiers doch aus.

    3. bilder wie z.b. das erste bild vom autor unten, was genau wird da denn für ein bereich angeschaut? (-1|-1)...(1|1)?

    Ein bisschen größer, ich denke mal die "Kreuzung" ist bei -1. (edit: die linke natürlich, die Mitte ist (0,0))



  • Zu 3) Bei Selbstaehnlichkeit sollte das egal sein, solange man einen "interessanten" Punkt im Intervall hat. Hier wahrscheinlich (0|0) in der Mitte.



  • Bashar schrieb:

    igno schrieb:

    1. wenn ich das newton-fraktal zu z.b. z^2-1 machen will, dann sieht das newton-fraktal vor, dass ich dann u0^2-1 rechnen soll (u0 ist hier C). muss ich für die 1 einfach 1 als i annehmen? (also bei jeder konstante dann 1 als i, nicht r als i...)

    Warum? 1 ist 1 und i ist i.

    damit ist gemeint, ob ich - wenn ich C-R rechnen will - stattdessen auch C-C(R, 1) nehmen kann.



  • 1 ist (1,0) in C.



  • igno schrieb:

    2. auf der webseite spricht der autor davon, dass 5 iterationen schon sehr gut sind. kann man das wirklich pauschal mit 5 iterationen machen oder gibt es bereiche wo das nicht mehr ausreicht?

    Logo wird das häßlich, wenn man an den Grenzen ein wenig ranzoomt.
    Nicht pauschal 5 machen, sondern bis man deutlich in der Nähe einer Nullstelle ist.



  • okay nun hab ich mal den bereich (-5|-5) bis (5|5) gezeichnet mit 20 iterationen pro bildpunkt. die funktion dazu wäre x^3-1. die farben sind:
    -rot für R > 0 && I > 0
    -gelb für R > 0 && I <= 0
    -blau für R <= 0 && I > 0
    -grün für R <= 0 && I <= 0

    die farben habe ich so gewählt, weil es mir vernünftig vorkam als ich bei http://www.wolframalpha.com/input/?i=x^3-1 geschaut habe unter "Roots in the complex plane".

    die funktion dazu in c++ für jeden bildpunkt und für eine iteration wäre:

    u = u - (::std::pow(u, 3) - ComplexType(-1, 0)) / ((ComplexType(3, 0) * u));
    

    hierbei ist u^3-1 die funktion und 3*u die erste ableitung

    wobei decltype(u) == ComplexType == std::complex<float>
    u.real() und u.imag() werden vor der ersten iteration pro bildpunkt je auf einen wert zwischen -5 und 5 gesetzt (ist schon getestet, das funktioniert einwandfrei).

    das gerenderte bild:
    http://img4host.net/upload/12143414525941c6dbb44.bmp

    es sieht nunmal so gar nicht danach aus irgendwie...



  • Die Ableitung von u31u^3-1 ist 3u23u^2...



  • ohhhh gott
    ich sollte echt lieber mathematik lernen statt zu programmieren

    danke, geht nun alles einwandfrei



  • igno schrieb:

    okay nun hab ich mal den bereich (-5|-5) bis (5|5) gezeichnet mit 20 iterationen pro bildpunkt. die funktion dazu wäre x^3-1. die farben sind:
    -rot für R > 0 && I > 0
    -gelb für R > 0 && I <= 0
    -blau für R <= 0 && I > 0
    -grün für R <= 0 && I <= 0

    die farben habe ich so gewählt, weil es mir vernünftig vorkam als ich bei http://www.wolframalpha.com/input/?i=x^3-1 geschaut habe unter "Roots in the complex plane".

    Das sind aber nur drei.
    Probier doch mal
    rot für -0.6<R<-0.4 und 0.8<I<0.9
    grün für -0.6<R<-0.4 und -0.9<I<-0.8
    blau für 0.9<R<1.1 und -0.1<I<0.1
    und anderenfalls eine weitere Iterationsrunde.


Anmelden zum Antworten