Librerías Lapack++ En Launchpad

por | 7 abril, 2010

Hola, siguiendo con mi particular cruzada de debianizar programas y librerías matemáticas he empaquetado por primera vez para Ubuntu y/o Debian las librerías matemáticas Lapack++, las cuales son una adaptación de las librerías Lapack, basadas en FORTRAN, al lenguaje C++

Para instalarlas tan sencillo como añadir mi repositorio e instalar los dos paquetes de que se compone:

sudo su –

add-apt-repository ppa:lopeztobal/maths

apt-get update

apt-get install liblapackpp-dev liblapackpp-doc

El segundo paquete es para poder acceder al tutorial de las librerías en html con vuestro navegador favorito, lo tenéis en el enlace siguiente:

Para poder practicar en su uso y ver si funciona os pongo el código de un pequeño ejemplo:

  1. //      matrices22.cpp
  2. //
  3. //      Copyright 2010 Cristobal Lopez <lopeztobal@gmail.com>
  4. //
  5. //      This program is free software; you can redistribute it and/or modify
  6. //      it under the terms of the GNU General Public License as published by
  7. //      the Free Software Foundation; either version 2 of the License, or
  8. //      (at your option) any later version.
  9. //
  10. //      This program is distributed in the hope that it will be useful,
  11. //      but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. //      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. //      GNU General Public License for more details.
  14. //
  15. //      You should have received a copy of the GNU General Public License
  16. //      along with this program; if not, write to the Free Software
  17. //      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  18. //      MA 02110-1301, USA.
  19.  
  20. #include <iostream>
  21. #include <stdio.h>
  22. #include <lapackpp/laslv.h>
  23.  
  24. using namespace std;
  25.  
  26. int main(int argc, char **argv)
  27. {
  28. double a[]={ 1.0, 1/2.0, 1/3.0, 1/4.0,
  29.                   1/2.0, 1/3.0, 1/4.0, 1/5.0,
  30.                   1/3.0, 1/4.0, 1/5.0, 1/6.0,
  31.                   1/4.0, 1/5.0, 1/6.0, 1/7.0 };
  32. LaVectorDouble v(4);
  33. LaVectorDouble c(4);
  34.  
  35. LaGenMatDouble A(a,4,4);
  36. LaEigSolve(A,c,v,A);
  37.  
  38. cout<<"A = "<<endl<<A<<"\t";
  39. cout<<"\nLos valores y vectores propios son:"<<endl;
  40. cout<<c<<" + "<<v<<"i"<<endl;
  41. return(0);
  42. }

Para compilarlo y ejecutarlo por terminal:


g++ matrices22.cpp -o matrices22 -llapackpp
./matrices22

Y si lo queréis hacer con un IDE como Geany es sencillo, id a:


Construir->Seleccionar inclusiones y argumentos

Y en las dos primeras líneas añadid al final -llapackpp

Estas librerías son muy potentes y sirven para trabajar directamente con algoritmos matemáticos de Aproximación Numérica, muy útiles también para matrices dispersas.

Saludos