2012-02-29 22 views
6

Sto cercando una libreria C per risolvere l'equazione di matrice lineare e, se possibile, non lineare del modulo Ax = b. Per me è importante che i pacchetti non siano troppo grandi e gratuiti. La velocità non conta tanto quanto la semplicità e la sparsa funzionalità della memoria della matrice. Inoltre, dovrebbe essere in grado di parallelizzare i calcoli. Dato che sono abbastanza nuovo nel campo blas/lapack/... dell'algebra lineare numerica, sarebbe bello se contenesse una buona documentazione, possibilmente con esempi. Ci sono dei pacchetti che puoi consigliare? Sono un po 'sopraffatto dai risultati di Google e inoltre non conosco i nomi delle routine che dovrei cercare.Risolutore di equazioni lineari e non lineari a matrice sparsa

Ho appena trovato SuperLu che sembra avere una documentazione molto buona, anche con frammenti di codice. È scritto in C e richiede CBLAS.

+4

Come è l'equazione della matrice Ax = b a * non lineare *? – talonmies

+0

Non è lineare se A è una funzione di x. È meglio espresso come A (x) * dx = db, e x (i + 1) = x (i) + dx per acquisire il carico incrementale non lineare. Risolvi per dx e aggiorna. – duffymo

+0

SuperLU e Umfpack sono risolutori diretti per problemi lineari. Se, come dici tu, hai un problema non lineare, avrai bisogno di qualcos'altro. – talonmies

risposta

1

Suggerirei di guardare CUDA se si dispone di una scheda grafica NVIDIA. Ha delle belle librerie algebriche lineari che usano la sintassi C-like per BLAS e matrici sparse.

+0

Ciao, grazie per il suggerimento. Tuttavia, non ho una grafica nvidia e poiché a un certo punto eseguirò il programma su un cluster (non GPU), questa non è un'opzione. – janoliver

0

Si consiglia di provare PETSc. C'è un po 'di una curva di apprendimento, ma questa è una libreria di alto livello, altamente capace. Guarda la sezione Documentazione e in particolare gli esempi (il link principale nella parte superiore di ogni pagina del documento).

0

Ho trovato il programma this qui, costituito solo da un file sorgente e da un'intestazione, che non solo può risolvere iterativamente equazioni lineari sparse ma è dotato anche di un precondizionatore che rende tutto molto efficiente. Ci sono due esempi e le strutture sparse sono ben documentate. Dipende da nessuna libreria esterna ed è molto facile da integrare nel codice esistente. Non gestisce la memoria distribuita, la parallelizzazione e così via.

Problemi correlati