C-Standardbibliothek<complex.h>

<complex.h>ist eine Header-Datei in der C-Standardbibliothek, die zur Unterstützung von Operationen mit komplexen Zahlen verwendet wird.

<complex.h>Im C99-Standard eingeführt, bietet es eine Reihe von Typen, Makros und Funktionen zum Definieren und Bearbeiten komplexer Zahlen.

1, Komplexe Typen

<complex.h>Die folgenden komplexen Zahlentypen sind definiert:

  • float complexKomplexe Zahl mit einfacher Genauigkeit.

  • double complexKomplexe Zahl mit doppelter Genauigkeit.

  • long double complex: komplexe Zahl mit long double.

Diese Typen sind eigentlich Makros, die in der C-Standardbibliothek definiert sind und jeweils zu Folgendem expandieren:_Complex float、_Complex doubleund_Complex long double。


2, Komplexe Konstanten

<complex.h>Die folgenden Makros sind definiert, um die imaginäre Einheit darzustellen:i:

  • IStellt die imaginäre Einheit dari, i.e.sqrt(-1)。

Beispiel

double complex z = 3.0 + 4.0 * I; // Repräsentiert die komplexe Zahl 3 + 4i

3, Funktionen für komplexe Zahlenoperationen

<complex.h>Es bietet eine Reihe von Funktionen für Operationen mit komplexen Zahlen, darunter arithmetische Operationen, trigonometrische Funktionen, Exponentialfunktionen und logarithmische Funktionen usw. Im Folgenden sind einige häufig verwendete Funktionen aufgeführt:

Arithmetische Operationen

Funktion Beschreibung
creal(z) Gibt die komplexe Zahl zurückzder Realteil
cimag(z) Gibt die komplexe Zahl zurückzder Imaginärteil
cabs(z) Gibt die komplexe Zahl zurückzDer Betrag (Absolutwert) von
carg(z) Gibt die komplexe Zahl zurückzDas Argument (die Phase) von
conj(z) Gibt die komplexe Zahl zurückzdie komplexe Konjugierte
cproj(z) Gibt die komplexe Zahl zurückzdie Projektion

Trigonometrische Funktionen

Funktion Beschreibung
csin(z) Gibt die komplexe Zahl zurückzSinuswert von
ccos(z) Gibt die komplexe Zahl zurückzKosinuswert von
ctan(z) Gibt die komplexe Zahl zurückzTangenswert von

Exponential- und Logarithmusfunktionen

Funktion Beschreibung
cexp(z) Gibt die komplexe Zahl zurückzExponentialwert von
clog(z) Gibt die komplexe Zahl zurückzNatürlicher Logarithmus von ⟦0⟧

Potenzfunktion

Funktion Beschreibung
cpow(z1, z2) Gibt die komplexe Zahl zurückz1vonz2Potenz

Quadratwurzelfunktion

Funktion Beschreibung
csqrt(z) Gibt die komplexe Zahl zurückzQuadratwurzel von ⟦0⟧

4, Beispiel

Das Folgende ist eine Verwendung<complex.h>Ein Beispiel für ..., das zeigt, wie komplexe Zahlen definiert und manipuliert werden:

Beispiel

#include <stdio.h>
#include <complex.h>

int main() {
    // Komplexe Zahlen definieren
    double complex z1 = 3.0 + 4.0 * I;
    double complex z2 = 1.0 - 2.0 * I;

    // Arithmetische Operationen
    double complex sum = z1 + z2;
    double complex product = z1 * z2;

    // Gib die Ergebnisse aus
    printf("z1 = %.2f + %.2fi\n", creal(z1), cimag(z1));
    printf("z2 = %.2f + %.2fi\n", creal(z2), cimag(z2));
    printf("Summe = %.2f + %.2fi\n", creal(sum), cimag(sum));
    printf("Produkt = %.2f + %.2fi\n", creal(product), cimag(product));

    // Betrag und Argument
    printf("|z1| = %.2f\n", cabs(z1));
    printf("Phase von z1 = %.2f radians\n", carg(z1));

    // Exponentialfunktion
    double complex exp_z1 = cexp(z1);
    printf("exp(z1) = %.2f + %.2fi\n", creal(exp_z1), cimag(exp_z1));

    return 0;
}

Ergebnis ausgeben:

z1 = 3.00 + 4.00i
z2 = 1.00 + -2.00i
Sum = 4.00 + 2.00i
Product = 11.00 + -2.00i
|z1| = 5.00
Phase of z1 = 0.93 radians
exp(z1) = -13.13 + -15.20i

5, Hinweise

  • <complex.h>Es ist nur in C99 und späteren Versionen verfügbar.

  • Die Verwendung von komplexen Zahlentypen und -funktionen erfordert das Einbinden von<complex.h>Header-Datei.

  • Die Performance von Operationen mit komplexen Zahlen kann niedriger sein als die von Operationen mit reellen Zahlen, besonders wenn eine große Menge an Berechnungen durchgeführt wird.


6, Mathematischer Hintergrund von Operationen mit komplexen Zahlen

Die allgemeine Form einer komplexen Zahl ista + bi, wobei:

  • aist der Realteil,bist der Imaginärteil.

  • iist die imaginäre Einheit, für die gilti² = -1。

Der Betrag (Absolutwert) einer komplexen Zahl ist:

|z| = sqrt(a² + b²)

Das Argument (die Phase) einer komplexen Zahl ist:

arg(z) = atan2(b, a)

Die Exponentialform einer komplexen Zahl ist:

exp(z) = exp(a) * (cos(b) + i * sin(b))
Weitere Erweiterungen