da vict85 » 19/07/2011, 00:56
Per risolvere un sistema se il sistema è MOLTO grosso (non meno di \( \displaystyle {1000}\times{1000} \)) direi che usare lapack, PLASMA o, se hai una scheda grafica nvidia abbastanza recente, MAGMA (tutte e tre sono state sviluppate dalle stesse persone per architetture differenti) sia l'ideale. Se la matrice è più piccola puoi anche usare ublas (è detro boost numeric) che ha il vantaggio che spesso la libreria boost ce l'hai già nel sistema per altre ragioni. Se hai voglia di spendere soldi esiste anche la libreria intel (quella amd forse non è a pagamento) ma te lo sconsiglio perché le altre non le devi pagare. Lapack è in generale una buona scelta. Esistono comunque alternative se cerchi in giro.
Per matrici sparse ci sono più alternative. Se cerchi "sparse linear solver" con google ne trovi un po'. In generale se la matrice è sparsa conviene usare un'algoritmo che ne tiene conto.
Io attualmente sto implementando il pivoting nella decomposizione LU di ViennaCL ma attualmente penso che la libreria non sia ancora sufficientemente stabile per progetti seri, almeno la parte sulle matrici dense.