2012-02-29 19 views
6

Estoy buscando una biblioteca C para resolver la ecuación de matriz lineal y, si es posible, no lineal de la forma Ax = b. Para mí es importante que los paquetes no sean demasiado grandes y gratuitos. La velocidad no importa tanto como la simplicidad y la característica dispersa del almacenamiento matricial. Además, debería ser capaz de paralelizar los cálculos. Como soy bastante nuevo en el campo blas/lapack/... del álgebra lineal numérica, sería genial que contuviera una buena documentación, posiblemente con ejemplos. ¿Hay algún paquete que puedas recomendar? Estoy un poco abrumado por los resultados de Google y tampoco sé los nombres de las rutinas que debería buscar.Resolvador de ecuaciones lineales y no lineales de matriz dispersa

Acabo de encontrar SuperLu que parece tener una documentación muy buena, incluso con fragmentos de código. Está escrito en C y requiere CBLAS.

+4

¿Cómo es Ax = b a * ecuación matricial no lineal *? – talonmies

+0

No es lineal si A es una función de x. Se expresa mejor como A (x) * dx = db y x (i + 1) = x (i) + dx para capturar la carga incremental no lineal. Resuelve para dx y actualiza. – duffymo

+0

SuperLU y Umfpack son solucionadores directos para problemas lineales. Si, como dices, tienes un problema no lineal, necesitarás algo más. – talonmies

Respuesta

1

Recomendaría mirar CUDA si tiene una tarjeta gráfica NVIDIA. Tiene lindas bibliotecas de álgebra lineal que usan sintaxis similar a C para BLAS y matricies dispersas.

+0

Hola, gracias por la sugerencia. Sin embargo, no tengo gráficos nvidia y dado que en algún momento voy a ejecutar el programa en un clúster (sin GPU), esta no es una opción. – janoliver

0

Es posible que desee intentar PETSc. Hay una pequeña curva de aprendizaje, pero esta es una biblioteca de alto rendimiento y altamente capacitada. Mire la sección de Documentación y especialmente los ejemplos (enlace grande en la parte superior de cada página de documento).

0

Encontré this pequeño programa aquí, que consiste solamente de un archivo de origen y un encabezado, que no solo puede resolver iterativamente ecuaciones lineales de matriz dispersa sino que también viene con un preacondicionador que hace que todo sea muy eficiente. Hay dos ejemplos y las estructuras dispersas están bien documentadas. Depende de ninguna biblioteca externa y es muy fácil de integrar en el código existente. No maneja memoria distribuida, paralelización, etc.

Cuestiones relacionadas