Saya perlu menghitung invers matriks dan telah menggunakan solve
fungsi. Meskipun bekerja dengan baik pada matriks kecil, solve
cenderung sangat lambat pada matriks besar. Saya bertanya-tanya apakah ada fungsi lain atau kombinasi fungsi (melalui SVD, QR, LU, atau fungsi dekomposisi lainnya) yang dapat memberi saya hasil lebih cepat.
r
matrix-decomposition
matrix-inverse
jitendra
sumber
sumber
solve
metode pasti berhasil, tetapi saya ingin algoritme lebih cepat. Jadi, saya hanya ingin tahu apakah ada fungsi (dalam konteks waktu) yang lebih efisien untuk menghitung invers untuk matriks ukuran besar.solve
? Tentu saja, tanpa struktur khusus, Anda tidak dapat melarikan diri dari batas kompleksitas teoretis pada inversi matriks umum.Jawaban:
Sudahkah Anda mencoba apa yang disarankan kardinal dan menjelajahi beberapa metode alternatif untuk menghitung invers? Mari kita perhatikan contoh spesifik:
Jadi, ini adalah contoh dari matriks korelasi yang kami inginkan kebalikannya. Di laptop saya (Core-i5 2.50Ghz), membutuhkan waktu 8-9 detik, membutuhkan waktu lebih dari 4 detik, dan2000 × 2000
solve
chol2inv(chol())
qr.solve()
membutuhkan waktu 17-18 detik (beberapa kali menjalankan kode disarankan untuk mendapatkan hasil yang stabil).Jadi kebalikannya melalui dekomposisi Choleski sekitar dua kali lebih cepat
solve
. Tentu saja mungkin ada cara yang lebih cepat untuk melakukan itu. Saya baru saja menjelajahi beberapa yang paling jelas di sini. Dan seperti yang telah disebutkan dalam komentar, jika matriks memiliki struktur khusus, maka ini mungkin dapat dimanfaatkan untuk kecepatan lebih.sumber
solve
:-)