Bibliothèque standard C<complex.h>

<complex.h>est un fichier d'en-tête de la bibliothèque standard C utilisé pour prendre en charge les opérations sur les nombres complexes.

<complex.h>Introduit dans la norme C99, il fournit un ensemble de types, de macros et de fonctions pour définir et manipuler les nombres complexes.

1, Types complexes

<complex.h>Les types de nombres complexes suivants sont définis :

  • float complexNombre complexe à simple précision.

  • double complexNombre complexe à double précision.

  • long double complex: nombre complexe long double.

Ces types sont en réalité des macros définies dans la bibliothèque standard C, qui se développent respectivement en :_Complex float、_Complex doubleet_Complex long double。


2, Constantes complexes

<complex.h>Les macros suivantes sont définies pour représenter l'unité imaginaire :i:

  • IReprésente l'unité imaginairei, i.e.sqrt(-1)。

Exemple

double complex z = 3.0 + 4.0 * I; // Représente le nombre complexe 3 + 4i

3, Fonctions d'opération sur les nombres complexes

<complex.h>Elle fournit un ensemble de fonctions permettant d'opérer sur les nombres complexes, notamment des opérations arithmétiques, des fonctions trigonométriques, des fonctions exponentielles et des fonctions logarithmiques, etc. Voici quelques fonctions couramment utilisées :

Opérations arithmétiques

Fonction Description
creal(z) Renvoie le nombre complexezla partie réelle
cimag(z) Renvoie le nombre complexezla partie imaginaire
cabs(z) Renvoie le nombre complexezLe module (valeur absolue) de
carg(z) Renvoie le nombre complexezL'argument (phase) de
conj(z) Renvoie le nombre complexezle conjugué complexe
cproj(z) Renvoie le nombre complexezla projection

Fonctions trigonométriques

Fonction Description
csin(z) Renvoie le nombre complexezvaleur du sinus de
ccos(z) Renvoie le nombre complexezvaleur du cosinus de
ctan(z) Renvoie le nombre complexezvaleur de la tangente de

Fonctions exponentielles et logarithmiques

Fonction Description
cexp(z) Renvoie le nombre complexezvaleur exponentielle de
clog(z) Renvoie le nombre complexezlogarithme népérien de ⟦0⟧

fonction puissance

Fonction Description
cpow(z1, z2) Renvoie le nombre complexez1dez2puissance

fonction racine carrée

Fonction Description
csqrt(z) Renvoie le nombre complexezracine carrée de ⟦0⟧

4, Exemple

Ce qui suit est une utilisation<complex.h>Un exemple de ..., montrant comment définir et manipuler des nombres complexes :

Exemple

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

int main() {
    // Définir les nombres complexes
    double complex z1 = 3.0 + 4.0 * I;
    double complex z2 = 1.0 - 2.0 * I;

    // Opérations arithmétiques
    double complex sum = z1 + z2;
    double complex product = z1 * z2;

    // Afficher les résultats
    printf("z1 = %.2f + %.2fi\n", creal(z1), cimag(z1));
    printf("z2 = %.2f + %.2fi\n", creal(z2), cimag(z2));
    printf("Somme = %.2f + %.2fi\n", creal(sum), cimag(sum));
    printf("Produit = %.2f + %.2fi\n", creal(product), cimag(product));

    // Module et argument
    printf("|z1| = %.2f\n", cabs(z1));
    printf("Phase de z1 = %.2f radians\n", carg(z1));

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

    return 0;
}

Résultat de sortie:

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, Notes

  • <complex.h>Il n'est disponible qu'à partir de C99 et des versions ultérieures.

  • L'utilisation des types et fonctions de nombres complexes nécessite d'inclure<complex.h>Fichier d'en-tête.

  • Les performances des opérations sur les nombres complexes peuvent être inférieures à celles des opérations sur les nombres réels, en particulier lorsqu'elles impliquent une grande quantité de calcul.


6, Contexte mathématique des opérations sur les nombres complexes

La forme générale d'un nombre complexe esta + bi, où :

  • aest la partie réelle,best la partie imaginaire.

  • iest l'unité imaginaire, vérifianti² = -1。

Le module (valeur absolue) d'un nombre complexe est :

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

L'argument (phase) d'un nombre complexe est :

arg(z) = atan2(b, a)

La forme exponentielle d'un nombre complexe est :

exp(z) = exp(a) * (cos(b) + i * sin(b))
autres extensions