%******************************************************************************
% Projekt     : Zeichnet die Mandelbrotmenge nach dem berechnen der selben
% Autor       : Stefan Wicki
% Dateiname   : Mandelbrot.m
% Beginndatum : 03.10.03
% Enddatum    : 12.10.03
% Version     : 1.0
%******************************************************************************
% Eine Mandelbrotmenge ist als Fraktalmenge bekannt. Punkte (Koordinaten in
% der komplexen Ebene werden solange iteriert, bis sie entweder
% konvergieren oder divergieren. Wie schnell ein Punkt divergiert (d.h. der
% Betrag der komplexen Zahl eine gewisse Grenze überschreitet), bestimmt die
% Farbe des selben. Punkte nahe des Zentrums (0,0j) konvergieren eher,
% als solche, die weit weg sind.
% Der Algorithmus lautet folgendermassen (z ist eine komplexe Zahl):
% z(N+1)=z(N)+z(N)^2
%******************************************************************************
%
% used functions:     - 
%
% input files:        - 
%
% output files:       - 
%
%******************************************************************************
%
% global variables:   - 
%
%******************************************************************************

clc; clear all; close all; close all hidden;

%------------------------------------------------------------------------------
% Initailisierungen:
%------------------------------------------------------------------------------

% Definition des gebietes in der Komplexen Ebene
Real_Min    =   -2;           	%Realteil negativster Punkt
Real_Max    =   0.7;           	%Realteil positivster Punkt
Imag_Min    =   -j;            	%Imaginärteil negativster Punkt
Imag_Max    =   j;             	%Imaginärteil positivster Punkt
											
N_Real      =   300;           	%Anzahl Punkte in x-Richtung (Realteil)
N_Imag      =   300;			%Anzahl Punkte in y-Richtung (Realteil)

GRENZE      =   1e6;            %Grenze für divergieren
iter        =   30;             %Anzahl Iterationen



RE=linspace(Real_Min, Real_Max, N_Real);
IM=linspace(Imag_Min, Imag_Max, N_Imag);


%------------------------------------------------------------------------------
% Mandelbrotmenge berechnen:
%------------------------------------------------------------------------------

x=RE;
y=imag(IM);
Z=zeros(N_Real,N_Imag);

for k=1:N_Real
   for l=1:N_Imag       
       z=0;
       for n=1:iter
           z=z^2;
           z=z+RE(k)+IM(l);
           if abs(z)>GRENZE
               break              
           end           
       end
       Z(k,l)=n;       
    end    
 end
 
figure;
hold off;
contourf(x,y,Z');
axis off;

figure;
%mesh(x,y,Z');    
axis off;



%------------------------------------------------------------------------------
% ENDE
%------------------------------------------------------------------------------