Rechnen mit komplexen Zahlen
Man kann Strukturen benutzen, um beispielsweise komplexe Zahlen
einzuführen. Entsprechend der folgenden Skizze besteht eine komplexe Zahl x = a
+ ib aus einem Realteil a und einem Imaginärteil b
Eine naheliegende Darstellung für den Zahlentyp complex ist:
struct complex{
double re; // Realteil
double im; // Imaginaerteil
}
Wir schreiben zunächst zwei Funktionen, die zu einer komplexen Zahl den
Betrag und den Winkel entsprechend obiger Skizze ermitteln.
double betrag (complex x){
// Berechnet den Betrag der komplexen Zahl x
return ( pow ( (pow(x.re,2) + pow(x.im,2)) , 0.5) );
}
double winkel (complex x){
// Berechnung des Winkel der komplexen Zahl x
double phi;
// Berechnung im ersten Quadranten
if (x.re != 0)
phi = atan( f abs(x.im)/fabs(x.re) );
else
phi = pi / 2;
if ( (x.re >= 0) && (x.im >=0) ) return phi;
//1.Quadrant
if ( (x.re < 0) && (x.im >=0) ) return pi-phi;
//2.Quadrant
if ( (x.re < 0) && (x.im < 0) ) return pi+phi;
//3.Quadrant
if ( (x.re >= 0) && (x.im < 0) ) return 2*pi-phi;
// 4. Quadrant
Die Multiplikation wird für komplexe Zahlen folgendermaßen durchgeführt.
complex cmult (complex x, complex y) {
// Berechnet x*y fuer komplexe Zahlen
complex z;
z.re = x.re * y.re - x.im * y.im;
z. im = x.re * y.im + y.re * x.im;
return z;
}