Archivo de encabezado <complex.h> en C con ejemplos

La mayoría de los programas C se ocupan de las operaciones y manipulaciones de números complejos mediante el uso del archivo de encabezado complex.h . Este archivo de encabezado se agregó en C99 Standard .

La biblioteca estándar de C++ tiene un encabezado, que implementa números complejos como una clase de plantilla, complex<T> , que es diferente de <complex.h> en C.

Macros asociadas con <complex.h>
Algunas de las macros de <complex.h> se muestran a continuación. Los valores del lado izquierdo describen las macros en complex.h y el lado derecho describe la expansión de esas macros con las palabras clave (_Imaginary, _Complex) agregadas en el estándar C99.

Nombre de la macro se expande a
complejo _Complejo
imaginario _Imaginario
_Complejo_I (const flotante _Complejo) i
_Imaginario_I (const flotante _imaginario) i
yo _Imaginario_I(_Complejo_I si _Imaginario_I está ausente)

El siguiente programa ayuda a crear números complejos.

Ejemplo 1:

// C program to show the working
// of complex.h library
  
#include <complex.h>
#include <stdio.h>
  
int main(void)
{
    double real = 1.3,
           imag = 4.9;
    double complex z
        = CMPLX(real, imag);
    printf(
        "z = %.1f% + .1fi\n",
        creal(z), cimag(z));
}
Producción:

z = 1.3+4.9i

Explicación:

  • La función cmplx() crea objetos de números complejos tomando como parámetros la parte real y la parte imaginaria. Esta función devuelve el objeto de los números complejos.
  • función creal() devuelve la parte real de un número complejo
  • función cimag() devuelve la parte imaginaria de un número complejo
  • Si nuestras partes reales e imaginarias son de tipo float usamos la función cmmplxf() para generar números complejos y para obtener partes reales e imaginarias usamos las funciones crealf() , cimagf() .
  • Si nuestras partes reales e imaginarias son del tipo long double, usamos la función cmplxl() para generar números complejos y para obtener partes reales e imaginarias usamos las funciones creall() , cimagl() .

Ejemplo 2: También podemos crear objetos de números complejos usando la macro I .

// C program to create a complex
// number using macro I
  
#include <complex.h>
#include <stdio.h>
  
int main(void)
{
    double complex
        z
        = 3.2 + 4.1 * I;
  
    // Creates complex number
    // with 3.2 and 4.1 as
    // real and imaginary parts
    printf(
        "z = %.1f% + .1fi\n",
        creal(z), cimag(z));
}
Producción:

z = 3.2+4.1i

Funciones asociadas con <complex.h>
El archivo de encabezado <complex.h> también proporciona algunas funciones integradas para trabajar con el número complejo. Aquí la palabra «arg» significa objeto de número complejo.

Función Descripción
float cabsf(float complex arg)
double cabs(doble complejo arg)
long double cabsl(long double complex arg)
Devuelve el valor absoluto del argumento complejo.
complejo flotante cacosf(complejo flotante arg)
complejo doble cacos(complejo doble arg)
complejo doble largo cacosl(complejo doble largo arg)
Devuelve los valores complejos de arco coseno del argumento complejo.
complejo flotante cacoshf(complejo flotante arg)
complejo doble cacosh(complejo doble arg)
complejo doble largo cacoshl(complejo doble largo arg)
Devuelve los valores del coseno hiperbólico del arco complejo del argumento complejo.
float cargf(complejo flotante arg)
double carg(complejo doble arg)
long double cargl(complejo doble largo arg)
Devuelve el ángulo de fase del argumento complejo (en radianes).
complejo flotante casinf(complejo flotante arg)
complejo doble casin(complejo doble arg)
complejo doble largo casinl(complejo doble largo arg)
Devuelve los valores complejos del arco seno del argumento complejo.
complejo flotante casinhf(complejo flotante arg)
complejo doble casin(complejo doble arg)
complejo doble largo casinl(complejo doble largo arg)
Devuelve los valores del seno hiperbólico del arco complejo del argumento complejo.
complejo flotante catanf(complejo flotante arg)
complejo doble catan(complejo doble arg)
complejo doble largo catanl(complejo doble largo arg)
Devuelve los valores complejos del arco tangente del argumento complejo.
complejo flotante catanhf(complejo flotante arg)
complejo doble catan(complejo doble arg)
complejo doble largo catanl(complejo doble largo arg)
Devuelve los valores tangentes hiperbólicos del arco complejo del argumento complejo.
complejo flotante ccosf(complejo flotante arg)
complejo doble ccos(complejo doble arg)
complejo doble largo ccosl(complejo doble largo arg)
Devuelve los valores de coseno complejo del argumento complejo.
complejo flotante cexpf(complejo flotante arg)
complejo doble cexp(complejo doble arg)
complejo doble largo cexpl(complejo doble largo arg)
Devuelve el valor complejo e arg donde e es la base del logaritmo natural
float crealf(complejo flotante arg)
double creal(complejo doble arg)
long double creall(complejo doble largo arg)
Devuelve la parte real del argumento complejo.
float cimagf(complejo flotante arg)
double cimag(complejo doble arg)
long double cimagl(complejo doble largo arg)
Devuelve la parte imaginaria del argumento complejo.
complejo flotante clogf(complejo flotante arg)
complejo
doble clog(complejo doble arg) complejo doble largo cimagl(complejo doble largo arg)
Devuelve la parte imaginaria del argumento complejo.
complejo flotante conjf(complejo flotante arg)
complejo doble conj(complejo doble arg)
complejo doble largo conjl(complejo doble largo arg)
Devuelve el conjugado del argumento complejo.
complejo flotante cpowf (complejo flotante a, complejo doble largo b) Devuelve el valor complejo de a b
complejo flotante csqrtf(complejo flotante arg)
complejo doble csqrt(complejo doble arg)
complejo doble largo csqrtl(complejo doble largo arg)
Devuelve la raíz cuadrada compleja del argumento.

Ejemplos 3: Programa para encontrar el Conjugado de un número complejo.

#include <complex.h>
#include <stdio.h>
  
int main(void)
{
    double real = 1.3,
           imag = 4.9;
    double complex z
        = CMPLX(real, imag);
    double complex
        conj_f
        = conjf(z);
    printf("z = %.1f% + .1fi\n",
           creal(conj_f),
           cimag(conj_f));
}
Producción:

z = 1.3-4.9i

Ejemplos 4: Programa para hallar el valor absoluto de un número complejo.

#include <complex.h>
#include <stdio.h>
  
int main(void)
{
    double real = 1.3,
           imag = 4.9;
    double complex z
        = CMPLX(real, imag);
    printf("Absolute value = %.1f",
           cabsf(z));
}
Producción:

Absolute value = 5.1

Ejemplos 4: Programa para hallar el ángulo de fase de un número complejo.

#include <complex.h>
#include <stdio.h>
  
int main(void)
{
    double real = 1.3,
           imag = 4.9;
    double complex z
        = CMPLX(real, imag);
    printf(
        "Phase Angle = %.1f radians\n",
        cargf(z));
}
Producción:

Phase Angle = 1.3 radians

Publicación traducida automáticamente

Artículo escrito por avsadityavardhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *