desidero risolvere il sistema di equazioni lineari:Risolvendo normale sistema di equazioni in C++
Ax = b
A è una matrice n x m
(non quadrata), b ed x sono entrambi n x 1
vettori. Dove A e b sono noti, n è dell'ordine di 50-100 e m è di circa 2 (in altre parole, A potrebbe essere massimo [100x2]).
So che la soluzione di x
: $x = \inv(A^T A) A^T b$
ho trovato alcuni modi per risolverlo: uBLAS (Boost), LAPACK, Eigen ed ecc ma non so quanto velocemente sono il tempo di calcolo della CPU di 'x' usando quei pacchetti. Inoltre, non so se questo numericamente un veloce perché risolvere 'x'
Ciò che è importante per me è che il tempo di calcolo della CPU sarebbe il più breve possibile e una buona documentazione poiché sono novellino.
Dopo aver risolto l'equazione normale Ax = b
vorrei migliorare la mia approssimazione utilizzando regressivo e forse successivo applicando Filtro Kalman.
La mia domanda è quale libreria C++ è la robusta e più veloce per le esigenze che ho descritto sopra?
Come si fa a più di un m n x matrice da un n dimensionale vettore colonna? Presumibilmente x è in realtà m dimensionale. –
Inoltre, hai qualche requisito che stabilisce una quantità minima di conformità di buzzword? –
@Eagle Non penso che la libreria Boost di uBLAS implementa questo, ma per favore correggimi se sbaglio. Sembra piuttosto che uBLAS fornisca vettori, matrici e operazioni di base (moltiplicazione, aggiunta) ma nulla come LU, QR, SVD o inversione di matrici, per non parlare dell'implementazione di OLS. Tuttavia è probabilmente una buona libreria per implementare tali algoritmi. Ancora una volta, per favore dimmi se ho torto o se trovi un'implementazione Boost uBLAS OLOS ... – Arthur