Simetrik bir yoğun matrisin (2000 * 2000
) tersinin köşegenini hesaplamanın en iyi yolu nedir? Şu anda ilk olarak solve(x)
'u kullanarak tersi hesaplayın ve sonra köşegeni (diag(y)
) ayıklayın. Çalışsa da, kodun daha hızlı çalışabilmesi için daha iyi bir yol olup olmadığını merak ediyorum. chol2inv()
'u denedim, ancak matrisim pozitif-kesin olmadığından çalışmadı.Bir matrisin tersini diyagonal hesaplamak için etkili bir yol
Güncelleme: İlgilenen herkes için, optimize edilmiş bir matematik kütüphanesi Intel MKL kullanarak matris dönüşümü hızlandırabildim. Makinemde 2000 * 2000 matrisini tersine çevirmek 3 saniye sürüyor. Intel MKL, Microsoft R Open ile kullanılabilir. matriksiniz simetrik, diyagonal veya pozitif tanımlı olmak gibi hiçbir güzel özelliklere sahipse
Kısa google aramada, algoritmalar ve bu sorunla ilgili diğer uygulamalar için bazı bağlantılar buldum. Köşegenin her elemanına açıkça ihtiyacınız var mı yoksa bunu başka bir hesaplamada mı kullanmak istiyorsunuz? Daha fazla hesaplamada kullanmak istiyorsanız, bu bilginin yürütülmesi hızlandırmak için çok önemli olacaktır. – Vandenman
Diğer hesaplamalarda köşegeni kullanıyorum. Spesifik olarak, her bir elemanı, başka bir vektörde, ters matrisin köşegeninin her bir elemanı ile bölerek toplar. – Katherine
Tersin köşegen elemanlarının her birinin sıfır olmadığını biliyor musunuz? Matrisin bunu garanti eden bir özelliği var mı? – dmuir