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