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

double complex z = 3.0 + 4.0 * I; // Representa el número complejo 3 + 4i

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 <stdio.h>
#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