Einzelnen Beitrag anzeigen

Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Imaginären/Realen Anteil berechnen

  Alt 27. Apr 2007, 01:27
Re und Im bezeichnen den Realwert und den Imaginärwert (der Teil mit dem i) einer Komplexenzahl.

die Formel für die Mandelbrotmenge ist ja:
z = z² + c

wobei z und c Komplexezahlen sind.

z = a + b*i (die Definition einer Komplexenzahl)

z² = (a + b*i)² = a² + 2*a*b*i + (b*i)²

nach Definition ist i² = -1

somit:

z² = a² + 2abi - b²

Re(z²) = a² - b²
Im(z²) = 2*a*b*i

Nun addierst du zum z jeweils noch die entsprechenden c Teile und fertig.

Also der Teil mit dem i (Imaginäre Einheit) ist immer der Imaginärteil, der Realteil ist der Teil mit den Reellenzahlen.

Und um dann die Mandelbrotmenge zu berechnen, nimmst du dir Startwerte für die einzelnen Variablen und machst immer wieder z = z² +c, wobei das z², der Wert von dem z ist was du davor berechnen hast.Der Punkt gehört zur Bandelbrotmenge wenn der Betrag (Modul) der Zahl kleiner als 2 ist.
Man definiert das zwar recht häufig rekursiv jedoch lässt man das Programm in der Regel iterativ ablaufen, da es zum einen nicht so verwirrend ist für andere die den Code lesen (egal wie toll doch Rekursion ist) und ich glaube das Rekursion hier auch nicht angebracht ist, da man jenachdem wie genau man es haben will das ganze an die 1000 mal macht und dann gibt es nen Stackoverflow.
Ich hab mir das immer so Programmiert:

Delphi-Quellcode:
//Startwertesetzen(xalt, yalt, xc, yc, n)

while (xalt*xalt + yalt*yalt < 4) and (n < 400) do
begin
  inc(n);
  x := xalt*xalt - yalt*yalt + xc;
  y := 2 * xalt * yalt + yc;
  xalt := x;
  yalt := y;
end;
if n = 400 then
// Punkt gehört dazu
else
// Punkt gehört nicht dazu
Jan
  Mit Zitat antworten Zitat