Spesso nella modellazione, nell'elaborazione dei dati e nell'ottimizzazione; le porzioni intensive del codice possono spesso ridurre la risoluzione di molte equazioni lineari.
es.
solve for x1 in A x1 = b1
solve for x2 in A x2 = b2
... e così via
A volte la matrice 'A' non cambia tra i calcoli, e la mia domanda è come (e quando) posso approfittarne con qualche pre-computazione? Questo presuppone che tu stia già utilizzando librerie di algebra lineare (es. BLAS, LAPACK) ottimizzate per il tuo sistema, e non riesca a trovare un modo per risolverlo in una singola operazione batch per cui (LAPACK, Matlab, ecc.) Hanno già funzioni specializzate .
Ad esempio, una strategia consiste nel calcolare e archiviare una decomposizione della matrice appropriata (LUP o QR) una volta che sarebbe altrimenti (internamente) chiamata dalla libreria di algebra lineare ogni volta. Tuttavia, posso trovare poche indicazioni su quali utilizzare che funzionano bene con i risolutori intermedi (in particolare quando si lavora con LAPACK), o i meriti relativi delle scomposizioni in termini di velocità o in esecuzione in casi di bordo negativi.
Nota: una strategia " non valida " consiste nel calcolare la matrice inversa inv(A)
a causa di problemi di velocità e accuratezza. ( La documentazione di MatLab per inv () ne discute in dettaglio)