Sto risolvendo per un'enorme matrice sparsa positiva definita A usando il metodo del gradiente coniugato (CG). È possibile calcolare il determinante di A utilizzando le informazioni prodotte durante la risoluzione?
Sto risolvendo per un'enorme matrice sparsa positiva definita A usando il metodo del gradiente coniugato (CG). È possibile calcolare il determinante di A utilizzando le informazioni prodotte durante la risoluzione?
Risposte:
Il calcolo del determinante di una matrice sparsa è in genere costoso come una soluzione diretta e sono scettico sul fatto che CG sarebbe di grande aiuto nel calcolo. Sarebbe possibile eseguire CG per iterazioni (dove A è n × n ) al fine di generare informazioni per l'intero spettro di A , e quindi calcolare il determinante come prodotto degli autovalori, ma questo sarebbe sia lento che numericamente instabile.
Sarebbe una buona idea calcolare la fattorizzazione Cholesky sparsa-diretta della tua matrice, diciamo , dove L è triangolare inferiore. Quindi det ( A ) = det ( L ) det ( L H ) = | det ( L ) | 2 , dove det ( L ) è semplicemente il prodotto delle voci diagonali della matrice triangolare inferiore L poiché gli autovalori di una matrice triangolare giacciono lungo la sua diagonale.
Nel caso di una matrice generale non singolare, si dovrebbe usare una decomposizione LU ruotata, diciamo , dove P è una matrice di permutazione, in modo che det ( A ) = det ( P - 1 ) ⋅ det ( L ) ⋅ det ( U ) . Poiché P è una matrice di permutazione, det ( P ) = ± 1 e, per costruzione, L
Senza entrare (di nuovo) nel perché e nel modo in cui i determinanti sono cattivi, supponiamo che il tuo operatore non sia facilmente fattorizzabile o semplicemente non disponibile come matrice e che tu abbia davvero bisogno di stimare il suo determinante.
Probabilmente puoi decodificare il modo in cui questa stima del determinante si realizza nell'implementazione standard di CG seguendo da vicino la Sezione 6.7.3 del libro.