Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Hilfe bei Mandelbrotmenge


Kacke am Stock - Do 11.12.08 16:39
Titel: Hilfe bei Mandelbrotmenge
Ich muss in Informatik die Mandelbrotmenge programmieren, jedoch habe ich nicht die geringste Ahnung, wie ich das anstellen soll. Kann mir jemand helfen, bzw. es erklären? Vielen Dank.


Narses - Do 11.12.08 16:49

Moin und :welcome: im Forum!

Schonmal in die Suche geschaut? Suche in: Delphi-Forum MANDELBROT Ist ja vielleicht schon was dabei. ;)

Ansonsten: wo genau hakt es denn? Du wirst sicher nicht von uns erwarten, dir deine Hausaufgaben zu machen, oder? :?

cu
Narses


Kacke am Stock - Do 11.12.08 16:54

Danke für die nette Begrüßung. Ja ich habe bereits in der Suche nachgeguckt, jedoch haben die meisten Menschen hier Probleme an Stellen, an welche ich noch nicht einmal erreiche. Selbstverständlich verlange ich nicht, dass ihr mir komplett erzählt wie der Quelltext lautet, aber ich schwelge in der Hoffnung darauf, dass man mir eventuell bei den Anfängen behilflich sein kann, da ich bereits die komplexen Zahlen nicht verstehe.


Narses - Do 11.12.08 16:59

Moin!

user profile iconKacke am Stock hat folgendes geschrieben Zum zitierten Posting springen:
in der Hoffnung darauf, dass man mir eventuell bei den Anfängen behilflich sein kann,
Das sollte sich machen lassen. ;)

user profile iconKacke am Stock hat folgendes geschrieben Zum zitierten Posting springen:
da ich bereits die komplexen Zahlen nicht verstehe.
Macht nix, ich versteh die auch nicht, mir reicht es schon, dass ich damit rechnen kann. :lol: :zwinker:

Die Mandelbrotmenge ist hier erklärt [http://de.wikipedia.org/wiki/Mandelbrot-Menge]. Weiter unten im Text ein Programmierbeispiel. Hast du dir das mal angesehen? :nixweiss:

cu
Narses


Kacke am Stock - Do 11.12.08 17:08

Hmmm...na gut...ich verstehe nicht ganz welche Zahl ich für x (Realzahl), y (Imaginärteil) und c eintragen muss.


Narses - Do 11.12.08 17:14

Moin!

user profile iconKacke am Stock hat folgendes geschrieben Zum zitierten Posting springen:
ich verstehe nicht ganz welche Zahl ich für x (Realzahl), y (Imaginärteil) und c eintragen muss.
Da gibt es auch nicht viel zu verstehen, das gibst du vor und entspricht der Stelle, die du von der Mandelbrotmenge zeigen willst (X und Y) bzw. um welche Mandelbrotmenge es geht (C). Übrigens: "C" steht für Konstant, ist also immer der gleiche Wert. :idea:

Fang erstmal mit folgenden Daten an:

Quelltext
1:
2:
3:
4:
X: -2..+2
Y: -2..+2
Cr: -0.78
Ci: -0.1
Wenn du damit ein Bild produziert hast, dann kann man an´s Zoomen denken. ;)

cu
Narses


Kacke am Stock - Do 11.12.08 17:21

na gut...dankeschön...ich werde erstmal ein bisschen probieren und mich dann eventuell nochmals melden.


Kha - Do 11.12.08 17:54

user profile iconKacke am Stock hat folgendes geschrieben Zum zitierten Posting springen:
da ich bereits die komplexen Zahlen nicht verstehe.
Im Notfall stellst du sie dir einfach als Vektoren mit einer merkwürdigen Multiplikation vor, fürs Mandelbrot reicht das ;) .
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Da gibt es auch nicht viel zu verstehen, das gibst du vor und entspricht der Stelle, die du von der Mandelbrotmenge zeigen willst (X und Y) bzw. um welche Mandelbrotmenge es geht (C).
Nope, das wäre die Julia-Menge. Es gibt nur eine Mandelbrotmenge (jedenfalls nach der ursprünglichen Formel). c ist der Bildpunkt, der berechnet werden soll, und x und y sind Real- bzw. Imaginärteil des Folgenglieds z.

@xyz(sorry, aber manche Nicknamen werde ich nicht abschreiben):
Mal ein Zahlenbeispiel für das Pixel bei P(0|1), also c = 0 + 1 i

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
z(n+1) = zn² + c

z0 = 0 (= 0 + 0 i)
z1 = z0² + c = 0 + 1 i
z2 = z1² + c = (0 + 1 i)² + (0 + 1 i) = 1 i² + 1 i = -1 + 1 i
z3 = z2² + c = (-1 + 1 i)² + (0 + 1 i) = (1 - 2 i + 1 i²) + (0 + 1 i) = 0 - 1 i
z4 = -1 + 1 i
...


Jetzt nochmal das gleiche, aber z immer in x und y aufgesplittet:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
c = 0 + 1 i
=> cx = 0; cy = 1

zn = xn + yn i
z(n+1) = zn² + c
=> z(n+1) = (xn + yn i)² + cx + cy i
   = (xn² + 2 xn yn i + (yn i)²) + cx + cy i
   = xn² - yn² + cx + i (2 xn yn + cy)
=> x(n+1) = xn² - yn² + cx
   y(n+1) = 2 xn yn + cy

x0 = 0; y0 = 0

x1 = x0² - y0² + cx = 0
y1 = 2 xn yn + cy = 1

x2 = 0² - 1² + 0 = -1
y2 = 2 * 0 * 1 + 1 = 1

x3 = (-1)² - 1² + 0 = 0
y3 = 2 * (-1) * 1 + 1 = -1

x4 = 0² - (-1)² + 0 = -1
y4 = 2 * 0 * (-1) + 1 = 1
Scheint zu passen, puh :D .


Narses - Do 11.12.08 18:33

Moin!

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Da gibt es auch nicht viel zu verstehen, das gibst du vor und entspricht der Stelle, die du von der Mandelbrotmenge zeigen willst (X und Y) bzw. um welche Mandelbrotmenge es geht (C).
Nope, das wäre die Julia-Menge. Es gibt nur eine Mandelbrotmenge (jedenfalls nach der ursprünglichen Formel). c ist der Bildpunkt, der berechnet werden soll, und x und y sind Real- bzw. Imaginärteil des Folgenglieds z.
Jup :) hab´s mit der/n Julia-Menge(n) verwechselt (und nicht genau genug den Code auf der Wiki-Seite gelesen, hätte mir auffallen müssen... :roll:).

cu
Narses