Seit der Verabschiedung des C99 Standards gibt es die Möglichkeit, direkt mit komplexen Zahlen in C zu arbeiten. Zur Verfügung stehen einem die verschiedenen Darstellungsformen und mathematische Operationen.

Schreibweise

In diesem Abschnitt werden die verschiedenen Möglichkeiten gezeigt, mit denen komplexe Zahlen ein- und ausgegeben werden können.

Kartesische-Form

Im folgendem Beispiel wird eine komplexe Zahl definiert und ausgegeben.

 1 #include <stdio.h>
 2 #include <complex.h>
 3 
 4 int main()
 5 {
 6    double complex z = 3 + 4*I;
 7    printf("%f + %f*i\n", creal(z), cimag(z));
 8 
 9    return 1;
10 }
3.000000 + 4.000000 * i

Um im Quelltext Real- von Imaginärteil zu unterscheiden, wird das Makro I mit dem Imaginärteil multipliziert. Dieses verhält sich wie bei der mathematischen Schreibweise, bei der ebenfalls ein j oder i mit dem Imaginärteil multipliziert wird. Bei der Ausgabe in Zeile 7 werden zunächst der Real- und Imaginärteil der komplexen Zahl bestimmt, um diese dann als normale double-Werte auszugeben.

Polarform



Online-Compiler ideone

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <complex.h>
 4 
 5 #ifndef M_PI_2
 6 #define M_PI_2 (3.1415927/2)
 7 #endif
 8 
 9 int main()
10 {
11    double complex z = 5 * cexp(M_PI_2 *I);
12    printf("%f * e^(%f * i) = %f + %f * i\n", cabs(z), carg(z), creal(z), cimag(z));
13 
14    return 0;
15 }
5.000000 * e^(1.570796 * i) = 0.000000 + 5.000000 * i

In diesem Beispiel wurde die komplexe Zahl in der Polarform angegeben. Dafür wurde die Funktion cexp() benutzt, welche die natürliche Exponentialfunktion für komplexe Zahlen darstellt. Das Makro M_PI_2 ist eine mathematische Konstante und entspricht , welches in unserem Beispiel einem Winkel φ=90° entspricht. Bei der Ausgabe wird mit der Funktion cabs() der Betrag und mit carg() die Phase unserer komplexen Zahl z bestimmt.

This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.