hab da ein problem mit der mandelbrot menge. komm da einfach auf keine grünen zweig da ich schon nicht mal die angabe verstehe. schäm. also die vorübung dazu das quadrat von complexen zahlen war ja kein problem. nun bin ich mit meinem latein am ende und hoffe auf hilfe von euch. so hier nun die angabe:
Ergänzen Sie Ihre Funktionen aus Beispiel 5 um eine weitere Funktion betrag(), mit der der Betrag einer komplexen Zahl (definiert durch ) berechnet wird. Verwenden Sie nun diese Funktionen, um die Mandelbrot-Menge zu berechnen. Gehen Sie dabei wie folgt vor:
1. Eingabe des Mittelpunktes (mr, mi) und der Ausschnittsgrösse d
2. Für jeden Punkt (cr,ci) zwischen (mr-d, mi-d) und (mr+d, mi+d):
a. (r,i)=(0,0)
b. Solange betrag(r,i)<2 und noch nicht zuviele Iterationen:
(r,i) = (r,i)2 + (cr,ci)
3. Wenn die maximale Anzahl an Iterationen erreicht wurde, Leerzeichen ausgeben; sonst Zeichen je nach Anzahl der Iterationen aus einem geeigneten String auswählen (Modulo-Operation) und ausgeben.
Beachten Sie dabei folgende Punkte:
• Schreiben Sie für Schritt 2b eine eigene Funktion mit geeignetem Rückgabewert und Parametern. Verwenden Sie für Betragsberechnung und komplexes Quadrat Ihre eigenen Funktionen.
• Experimentieren Sie mit geeigneten Strings zur Ausgabe (im angeführten Beispiel wurde "#%:%" verwendet). Achten Sie bei der Auswahl eines Zeichens auf die Stringlänge (am Besten mittels der Funktion strlen(), Header Datei <string.h>, oder durch eine entsprechende Konstante).
• Die Anzahl der Schritte in reeller und imaginärer Richtung wurde im Beispiel mit 78 und 36 festgelegt, da dies in etwa dem korrekten Seitenverhältnis entspricht (was aber unter anderem von der verwendeten Schriftart abhängt).
• Definieren Sie die Konstante für die maximale Anzahl an Iterationen mittels Präprozessor-Befehl, ebenso die Anzahl der Schritte in reeller und imaginärer Richtung.
Nach der Ausgabe erfolgt eine erneute Eingabe, das Programm kann durch Strg+C beendet werden.
Eingabe:
Mittelpunkt (mr, mi) und Grösse des Ausschnitts.
nun folgende 2 punkte versteh ich net
1. Eingabe des Mittelpunktes (mr, mi) und der Ausschnittsgrösse d
2. Für jeden Punkt (cr,ci) zwischen (mr-d, mi-d) und (mr+d, mi+d):
a. (r,i)=(0,0)
b. Solange betrag(r,i)<2 und noch nicht zuviele Iterationen:
(r,i) = (r,i)2 + (cr,ci)
was ändert des an der ausgabe wenn ich den mittelpunkt ändere und wozu dient die auschschnittsgrösse
Ausgabe
hier noch das bsp zum quadrat complexer zahlen
Ergänzen Sie Ihre Funktionen aus Beispiel 5 um eine weitere Funktion betrag(), mit der der Betrag einer komplexen Zahl (definiert durch ) berechnet wird. Verwenden Sie nun diese Funktionen, um die Mandelbrot-Menge zu berechnen. Gehen Sie dabei wie folgt vor:
1. Eingabe des Mittelpunktes (mr, mi) und der Ausschnittsgrösse d
2. Für jeden Punkt (cr,ci) zwischen (mr-d, mi-d) und (mr+d, mi+d):
a. (r,i)=(0,0)
b. Solange betrag(r,i)<2 und noch nicht zuviele Iterationen:
(r,i) = (r,i)2 + (cr,ci)
3. Wenn die maximale Anzahl an Iterationen erreicht wurde, Leerzeichen ausgeben; sonst Zeichen je nach Anzahl der Iterationen aus einem geeigneten String auswählen (Modulo-Operation) und ausgeben.
Beachten Sie dabei folgende Punkte:
• Schreiben Sie für Schritt 2b eine eigene Funktion mit geeignetem Rückgabewert und Parametern. Verwenden Sie für Betragsberechnung und komplexes Quadrat Ihre eigenen Funktionen.
• Experimentieren Sie mit geeigneten Strings zur Ausgabe (im angeführten Beispiel wurde "#%:%" verwendet). Achten Sie bei der Auswahl eines Zeichens auf die Stringlänge (am Besten mittels der Funktion strlen(), Header Datei <string.h>, oder durch eine entsprechende Konstante).
• Die Anzahl der Schritte in reeller und imaginärer Richtung wurde im Beispiel mit 78 und 36 festgelegt, da dies in etwa dem korrekten Seitenverhältnis entspricht (was aber unter anderem von der verwendeten Schriftart abhängt).
• Definieren Sie die Konstante für die maximale Anzahl an Iterationen mittels Präprozessor-Befehl, ebenso die Anzahl der Schritte in reeller und imaginärer Richtung.
Nach der Ausgabe erfolgt eine erneute Eingabe, das Programm kann durch Strg+C beendet werden.
Eingabe:
Mittelpunkt (mr, mi) und Grösse des Ausschnitts.
nun folgende 2 punkte versteh ich net
1. Eingabe des Mittelpunktes (mr, mi) und der Ausschnittsgrösse d
2. Für jeden Punkt (cr,ci) zwischen (mr-d, mi-d) und (mr+d, mi+d):
a. (r,i)=(0,0)
b. Solange betrag(r,i)<2 und noch nicht zuviele Iterationen:
(r,i) = (r,i)2 + (cr,ci)
was ändert des an der ausgabe wenn ich den mittelpunkt ändere und wozu dient die auschschnittsgrösse
Ausgabe
Code:
Mitte Re: -0.5
Mitte Im: 0
Ausschnitt: 1.5
::::::::::::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
::::::::::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
::::::::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
::::::::::::%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%
::::::::::%%%%%%%%%%%#######################%%%%%%%%######%%%%%%%%%%%%%%%%%%%%
:::::::::%%%%%%%%#####################%%%%%%::%:%%::%%%%%#####%%%%%%%%%%%%%%%%
:::::::%%%%%%%#####################%%%%%%%%:::%%##:##:%%%%%%#####%%%%%%%%%%%%%
::::::%%%%%#####################%%%%%%%%%::::##%##::#%::%%%%%%######%%%%%%%%%%
:::::%%%%####################%%%%%%%%%%:::%%:%:: %%%:%::::%%%%#######%%%%%%%%
::::%%%####################%%%%%%%%::%%%%###%% %:##%%::::%%%#######%%%%%%
:::%%%##################%%%%%%%:::%#::%#:%:%%%:% ##%##%%###%%:%%#######%%%%%
:::%#################%%%%%::::::%%%#::% %# %%%::#%#:%%########%%%
::%###############%%::::::::::%%%#%%##% %%%::%%########%%
::##########%%%%%:#:#%%%%%%%####%:#% ::%#:%%%########%
:%#####%%%%%%%:::%#%%%%:%:#::%%::%: #%%%%%########%
:##%%%%%%%%:::::%##:%% %% : %:#%: %##:%%%%########
:#%%%%%%%:::::%%%%::#% %%% ::%:%%%%########
:%%:%%%%%%%%##%:##%% #:%::%%%%########
:::#%% :%%%%%:%# :#:#%::%%%%########
:%%:%%%%%%%%##%:##%% %:%::%%%%########
:#%%%%%%%:::::%%%%::#% :%% ::%:%%%%########
:##%%%%%%%%:::::%##:%% %% : %:#%: %##:%%%%########
:%#####%%%%%%%:::%#%%%%:%:#::%%::%: #%%%%%########%
::##########%%%%%:#:#%%%%%%%####%:#% ::%#:%%%########%
::%###############%%::::::::::%%%#%%##% %%%::%%########%%
:::%#################%%%%%::::::%%%#::% %# :%%%:#%#:%%########%%%
:::%%%##################%%%%%%%:::%#::%#:%:%%%:% ##%#%%%###%%:%%#######%%%%%
::::%%%####################%%%%%%%%::%%%%###%% %:##%%::::%%%#######%%%%%%
:::::%%%%####################%%%%%%%%%%:::%%:%:: %%%:%::::%%%%#######%%%%%%%%
::::::%%%%%#####################%%%%%%%%%::::##%##::#%::%%%%%%######%%%%%%%%%%
:::::::%%%%%%%#####################%%%%%%%%:::%%##:##:%%%%%%#####%%%%%%%%%%%%%
:::::::::%%%%%%%%#####################%%%%%%::%:%%::%%%%%#####%%%%%%%%%%%%%%%%
::::::::::%%%%%%%%%%%#######################%%%%%%%%######%%%%%%%%%%%%%%%%%%%%
::::::::::::%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%
::::::::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
::::::::::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hier noch das bsp zum quadrat complexer zahlen
Code:
#include <stdio.h>
float a,b; /*Global dimensionierte Variablen*/
void calc (){ /*Funktion zur Berechnung der Quadratischen Gleichung*/
printf("(%.3f + i * %.3f )^ 2 = %.3f + i * %.3f\n",a,b,a*a+(-1*b*b),2*a*b);
}
float proof(){ /*Funktion zum Überprüfen der jeweiligen Eingabe*/
int check=0;
float eingabe;
do
{
check=scanf("%f",&eingabe); /*Einlesen der Eingabe und zuweisung auf check (?Intwert?)*/
fflush(stdin); /* Tastaturbuffer loeschen */
if (check==0) /*Wenn Eingabe Falsch: Gib Fehlermeldung aus*/
printf("\nFalsche Eingabe, bitte wiederholen. \n");
} while (!check); /*Führe solange aus bis korrekte Eingabe erfolgt ist*/
return eingabe; /*Rückgabe der korrekten Eingabe*/
}
void main (){
do{
printf("Realteil: ");
a=proof(); /*Aufruf der Funktion zum einlesen und überprüfen der Variable bzw. Zuweisung des Rückgabewertes auf Realteil*/
printf("Imaginaerteil: ");
b=proof(); /*Aufruf der Funktion zum einlesen und überprüfen der Variable bzw. Zuweisung des Rückgabewertes auf Imaginiaerteil*/
calc(); /*Aufruf der Funktion zum errechnen des Ergebnisses und dessen Ausgabe*/
}while(a!=0.0 || b!=0.0); /*Wenn sowohl Realteil als auch Imaginaerteil 0 ist brich die Schleife ab*/
}