Menghitung determinan sambil menyelesaikan

11

Saya memecahkan untuk matriks A definitif positif jarang besar menggunakan metode konjugat gradien (CG). Dimungkinkan untuk menghitung penentu A menggunakan informasi yang dihasilkan selama penyelesaian?Ax=bAA

Manuel Schmidt
sumber
Mengapa Anda ingin menghitung determinan? Hasil seperti itu pasti akan menjadi underflow atau overflow untuk matriks yang besar pula. Saya akan lebih amal jika Anda diminta untuk menghitung nomor kondisi, tetapi jangan buang waktu Anda pada faktor penentu!
Anda mungkin sudah tahu itu, tetapi nilai-nilai Ritz selama proses gradien konjugasi konvergen ke nilai eigen dari matriks, dan Anda bisa mendapatkan estimasi sederhana untuk penentu dari ini.
shuhalo

Jawaban:

10

Menghitung determinan matriks jarang biasanya semahal pemecahan langsung, dan saya ragu bahwa CG akan sangat membantu dalam menghitungnya. Dimungkinkan untuk menjalankan CG untuk iterasi (di mana A adalah n × n ) untuk menghasilkan informasi untuk seluruh spektrum A , dan untuk kemudian menghitung determinan sebagai produk dari nilai eigen, tetapi ini akan menjadi lambat dan secara numerik tidak stabil.nAn×nA

Ini akan menjadi ide yang lebih baik untuk menghitung faktorisasi Cholesky yang jarang-langsung dari matriks Anda, katakanlah , di mana L adalah segitiga yang lebih rendah. Kemudian det ( A ) = det ( L ) det ( L H ) = | det ( L ) | 2 , di mana det ( L ) hanyalah produk dari entri diagonal dari matriks segitiga-bawah L karena nilai eigen dari matriks segitiga terletak di sepanjang diagonal-nya.A=LLHL

det(A)=det(L)det(LH)=|det(L)|2,
det(L)L

Dalam kasus matriks non-singular umum, dekomposisi LU yang diputar harus digunakan, katakanlah , di mana P adalah matriks permutasi, sehingga det ( A ) = det ( P - 1 ) det ( L ) det ( U ) . Karena P adalah matriks permutasi, det ( P ) = ± 1 , dan, dengan konstruksi, LPA=LUP

det(A)=det(P1)det(L)det(U).
Pdet(P)=±1Lbiasanya akan memiliki diagonal dari semua yang, yang menyiratkan bahwa . Dengan demikian Anda dapat menghitung det ( A ) sebagai ± det ( U ) dan sekali lagi mengenali bahwa determinan matriks segitiga adalah produk dari entri diagonalnya. Dengan demikian, biaya komputasi penentu pada dasarnya hanya biaya faktorisasi.det(L)=1det(A)±det(U)
Jack Poulson
sumber
A106x106
@ManuelSchmidt Matriks jarang dengan ukuran sebesar itu yang dihasilkan dari diskritisasi tipe elemen hingga biasanya dapat dengan mudah difaktorkan dengan (misalnya) metode multifrontal. Saya setuju bahwa faktorisasi Cholesky harus digunakan jika matriks Anda adalah HPD (dan generalisasi argumen saya di atas sudah jelas).
Jack Poulson
Terima kasih atas jawaban & balasan cepat Anda. Sayangnya matriks tidak memiliki struktur spezial (yang akan memungkinkan faktorisasi yang mudah).
Manuel Schmidt
2
Saya ingin tahu mengapa Anda perlu menghitung penentu matriks. Apakah nilai eigen tertinggi dan terendah tidak memadai?
Jack Poulson
Ini adalah bagian dari fungsi distribusi probabilitas yang kompleks dan tidak hanya konstanta normalisasi. Saya tahu distribusi dapat diperhitungkan (dan itulah yang kami lakukan saat ini) namun kami memiliki banyak data untuk dimodelkan dan masing-masing faktor menjadi sangat besar.
Manuel Schmidt
6

ABdimAdimBdimB=

BABABdetAdetBAB

detA=j=1dimAλi(A)j=1dimAλi(B)j=dimA+1dimBλi(B)
BAdimB=detAdetB
Wolfgang Bangerth
sumber
Ternyata ada beberapa algoritma kami yang benar-benar indah dan praktis yang melibatkan perhitungan faktor penentu yang cukup besar. Lihat www-m3.ma.tum.de/foswiki/pub/M3/Allgemeines/…
Matt Knepley
2

Tanpa memasukkan (lagi) ke dalam mengapa dan bagaimana faktor-faktor penentu itu jahat, mari kita asumsikan bahwa operator Anda tidak mudah dipengaruhi faktor atau tidak tersedia sebagai matriks sama sekali dan bahwa Anda benar - benar perlu memperkirakan faktor penentu tersebut.

AA

Anda mungkin dapat merekayasa balik bagaimana estimasi penentu ini muncul dalam penerapan standar CG dengan mengikuti Bagian 6.7.3 buku ini.

Dominique
sumber
2

det(A)=i=1nαk1,
αk=rkTrkpkTApkrk0k=1,,nRrkPpk
pk=rk+i=1k1γiri.
det(P)=(1)ndet(R)rkpkA
k=1nαk=k=1nrkTrkpkTApk=det(RTR)det(PTAP)=det(RTR)det(A)det(PTP)=(det(A))1.
Yermek
sumber