Sto usando ublas :: Compressed Matrix per lavorare con UMFPACK, un solver lineare sparse. Dato che sto facendo una simulazione, così ogni volta che il sistema lineare viene costruito in modo leggermente diverso che potrebbe comportare l'allargamento/restringimento della matrice dei coefficienti e alcune moltiplicazioni sparse della matrice. La scala del sistema lineare è di circa 25k.Esiste un modo efficace per modificare dinamicamente compress_matrix in boost?
Anche lì è una patch vincolante per spinta di lavorare con UMFPACK, ho ancora bisogno di cambiare la matrice di tanto in tanto, a volte anche per capire il numero di valori diversi da zero sarebbe in termini di tempo (idealmente, ho per dare il numero di valori diversi da zero quando inizializzo una matrice). Inoltre, utilizzo ublas :: range per aggiungere colonne/righe dinamicamente.
Quindi la mia domanda è: esiste un modo efficace per farlo? In questo momento è troppo lento per me. Trasporre una matrice con dimensioni pari a 15k costa quasi 6 secondi e l'aggiunta di circa 12.000 righe è veloce (perché suppongo sia una matrice principale), ma l'aggiunta dello stesso numero di colonne alla matrice può costare fino a 20 secondi (suppongo per lo stesso ragionamento come sopra, quindi anche io ho usato una matrice a colonna maggiore il tempo totale richiesto sarebbe lo stesso).
Si sta facendo disperatamente qui. Qualsiasi suggerimento è benvenuto.
Cheers.
Da quando ho avuto quasi 30 viste ma nessuna risposta, penso che forse la mia domanda non è molto chiaro. Quindi ecco alcuni dettagli. – He01
Dato che sto facendo la simulazione, per ogni passo temporale, ho assemblato un sistema lineare e lo risolvo che è fondamentalmente solo AX = B. Tuttavia, la matrice dei coefficienti A è solitamente composta da tre matrici. Una matrice di peso, due matrici dei coefficienti per i vincoli rigidi e i vincoli rigidi che non possono essere precalcolati. (Vedi commento successivo) – He01
Poiché risolvendo il sistema lineare è il risultato di minimizzare una funzione quadratica in senso minimi quadrati, devo fare una moltiplicazione matrice-matrice a produrre un T matrice e una moltiplicazione matrice-vettore per rendere B per integrare il vincolo morbido matrice il sistema lineare. Poi devo aggiungere il matrice dei vincoli difficile da fondo e il diritto di T al fine di rendere A. Alla fine, dopo A e B fatte, posso li input in UMFPack. (Vedi commento successivo) – He01