Biblioteca estándar de C<complex.h>
<complex.h>Es un archivo de cabecera de la biblioteca estándar de C, utilizado para soportar operaciones con números complejos.
<complex.h>Introducido en el estándar C99, proporciona un conjunto de tipos, macros y funciones para definir y operar con números complejos.
1, Tipos de números complejos
<complex.h>Define los siguientes tipos de números complejos:
-
float complex: número complejo de precisión simple. -
double complex: número complejo de doble precisión. -
long double complex: número complejo de precisión doble larga.
Estos tipos son en realidad macros definidas en la biblioteca estándar de C, que se expanden respectivamente a_Complex float、_Complex doubley_Complex long double。
2, Constantes de números complejos
<complex.h>Define las siguientes macros para representar la unidad imaginariai:
-
I: representa la unidad imaginariai, es decirsqrt(-1)。
Ejemplo
3, Funciones de operación con números complejos
<complex.h>Proporciona un conjunto de funciones para operar con números complejos, incluyendo operaciones aritméticas, funciones trigonométricas, exponenciales y logarítmicas, entre otras. A continuación se presentan algunas funciones comunes:
Operaciones aritméticas
| Función | Descripción |
|---|---|
creal(z) |
Devuelve la parte realzdel número complejo |
cimag(z) |
Devuelve la parte imaginariazdel número complejo |
cabs(z) |
Devuelve el módulo (valor absoluto)zdel número complejo |
carg(z) |
Devuelve el argumento (fase)zdel número complejo |
conj(z) |
Devuelve el conjugadozdel número complejo |
cproj(z) |
Devuelve la proyecciónzdel número complejo |
Funciones trigonométricas
| Función | Descripción |
|---|---|
csin(z) |
Devuelve el senozdel número complejo |
ccos(z) |
Devuelve el cosenozdel número complejo |
ctan(z) |
Devuelve la tangentezdel número complejo |
Funciones exponenciales y logarítmicas
| Función | Descripción |
|---|---|
cexp(z) |
Devuelve el valor exponencialzdel número complejo |
clog(z) |
Devuelve el logaritmo naturalzdel número complejo |
Función de potencia
| Función | Descripción |
|---|---|
cpow(z1, z2) |
Devuelve el número complejoz1dez2elevado a la potencia |
Función de raíz cuadrada
| Función | Descripción |
|---|---|
csqrt(z) |
Devuelve la raíz cuadradazdel número complejo |
4, Ejemplo
A continuación se muestra un ejemplo de uso de<complex.h>, que demuestra cómo definir y operar con números complejos:
Ejemplo
#include <complex.h>
int main() {
// Definir números complejos
double complex z1 = 3.0 + 4.0 * I;
double complex z2 = 1.0 - 2.0 * I;
// Operaciones aritméticas
double complex sum = z1 + z2;
double complex product = z1 * z2;
// Mostrar el resultado
printf("z1 = %.2f + %.2fi\n", creal(z1), cimag(z1));
printf("z2 = %.2f + %.2fi\n", creal(z2), cimag(z2));
printf("Sum = %.2f + %.2fi\n", creal(sum), cimag(sum));
printf("Product = %.2f + %.2fi\n", creal(product), cimag(product));
// Módulo y argumento
printf("|z1| = %.2f\n", cabs(z1));
printf("Phase of z1 = %.2f radians\n", carg(z1));
// Función exponencial
double complex exp_z1 = cexp(z1);
printf("exp(z1) = %.2f + %.2fi\n", creal(exp_z1), cimag(exp_z1));
return 0;
}
Resultado de salida:
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, Notas importantes
-
<complex.h>Solo está disponible en C99 y versiones posteriores. -
El uso de tipos y funciones de números complejos requiere incluir
<complex.h>el archivo de cabecera. -
El rendimiento de las operaciones con números complejos puede ser inferior al de las operaciones con números reales, especialmente cuando implican una gran cantidad de cálculos.
6, Fundamentos matemáticos de los números complejos
La forma general de un número complejo esa + bi, donde:
-
aes la parte real,bes la parte imaginaria. -
ies la unidad imaginaria, que satisfacei² = -1。
El módulo (valor absoluto) de un número complejo es:
|z| = sqrt(a² + b²)
El argumento (fase) de un número complejo es:
arg(z) = atan2(b, a)
La forma exponencial de un número complejo es:
exp(z) = exp(a) * (cos(b) + i * sin(b))Otras extensiones