Trabajar Con La Libreria libgsl0 En C/C++

Hola, por fin puedo cumplir mi promesa de poneros utilizaciones matemáticas en mi blogg. Y esta vez aplicadas a Linux.
Gracias a un anónimo he encontrado la libreía matemática libgsl0, la cual nos permite trabajar con complejos, aproximación con Chebyshev, diferenciación, polinomios,histogramas… cuando programamos en C/C++.
Para instalar dicha librería basta que abráis synaptic y en buscar pongáis libgsl0, os aparecerán unas librerías, las instaláis y ya está.


Si queréis información sobre todo lo que podéis hacer con ella la podéis encontrar en Pincha Aquí

Voy a poner el código de un sencillo programa en C++ para utilizar los números complejos.
Antes que nada hay que saber que esta librería tiene los complejos declarados como una estructura de la forma siguiente

typedef struct

{
double dat[2];

}gsl_complex;

Así pues, cuando queramos declarar una variable compleja la declararemos así:

gsl_complex nombre_de_la_variable_compleja;

La parte double dat[2] lo que me dice es que me crea un array (o vector) de dos elementos de tipo double en los cuales:

dat[0] es la parte real de los complejos
dat[1] es la parte imaginaria de los complejos

Tened en cuenta que es recomendable que en nuestro programa evitemos declarar variables con el nombre dat ya que la uilizaremos
en nuestro código para hacer la salida por terminal.

El código es:

#include<iostream>
//librería para utilizar cin cout
#include<math.h>
//librería para utilizar matemáticas

#include <gsl/gsl_math.h>
//librería para utilizar nuestra libgsl0
#include <gsl/gsl_complex.h>
//librería para utilizar los distintos tipos de complejos con gsl
#include<gsl/gsl_complex_math.h>
//librería para utilizar funciones y operaciones entre complejos

using namespace std; //Convenio para no tener problemas con el compilador g++

int main(int argc, char **argv)
{

gsl_complex z;
//Declaro la variable compleja z con la forma de la struct que he puesto arriba
gsl_complex aux;
//Idem que lo que he hecho con z pero con aux

cout<<“\nDime la parte real de un complejo”<<endl;
cin>>z.dat[0];
//Guardo la parte real en dat[0] de z
cout<<“\nDime la parte imaginaria del complejo “<<endl;
cin>>z.dat[1];
//Guardo la parte imaginaria de z en dat[1]
cout<<“\nEl complejo es (“<<z.dat[0]<<“”<<z.dat[1]<<“)”<<endl;
cout<<“\nSu argumento es “<<gsl_complex_arg(z)<<endl;
cout<<“\nSu modulo es “<<gsl_complex_abs(z)<<endl;
cout<<“\nEl cuadrado de su módulo es “<<gsl_complex_abs2(z)<<endl;
aux = gsl_complex_conjugate(z);
//Utilizo una variable auxiliar para calcular el conjugado de z para así poder
//visualizarlo por
terminal de la forma (parte real, parte imaginaria)
cout<<“\nSu conjugado es(“<<aux.dat[0]<<“”<<aux.dat[1]<<“)”<<endl;
//Visualizo por terminal el conjugado, para ello accedo a dat[0] y dat[1]
aux = gsl_complex_inverse(z);
cout<<“\nSu inverso es (“<<aux.dat[0]<<” , “<<aux.dat[1]<<“)”<<endl;
//Hago lo mismo que antes pero para el inverso de z
return 0;

}
Una posible salida del programa puede ser esta:

Dime la parte real de un complejo
-1

Dime la parte imaginaria del complejo
-5

El complejo es (-1 , -5)

Su argumento es -1.76819

Su modulo es 5.09902

El cuadrado de su módulo es 26

Su conjugado es (-1 , 5)

Para compilarlo y ejecutarlo haremos lo siguiente, suponiendo que a nuestro programa le hemos llamado complejos.cpp, en terminal introduciremos lo siguiente (Para C cambiar g++ por gcc):

g++ complejos.cpp -o complejos -lgsl -lgslcblas -lm
./complejos

Y ya está. Hay muchas más funciones para utilizar complejos y otras utilidades matemáticas con libgsl0 que podéis ver en el enlace que os he puesto antes, en el cual podéis descargaros el manual, es muy completo.

Saludos

2 comentarios en “Trabajar Con La Libreria libgsl0 En C/C++

  1. como manejar funciones y procedimientos en c++
    soy nuevo en progra. necesito una explicaciòn clara y si no es tanta molestadera un ejemplo ok gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s