Scipy.sparse.linalg.eigsh kullanmaktan çok büyük ve seyrek bir bitişiklik matrisinin tüm özdeğerlerini ve özvektörlerini hesaplamanın daha hızlı bir yolu olup olmadığını anlamaya çalışıyorum. matrisin simetri özellikleri. Bir bitişiklik matrisi de ikiliktir, bu da beni daha hızlı bir yol olduğunu düşündürüyor.
Rastgele 1000x1000 seyrek bitişiklik matrisi oluşturdum ve x230 ubuntu 13.04 dizüstü bilgisayarımdaki çeşitli yöntemler arasında karşılaştırma yaptım:
- scipy.sparse.linalg.eigs: 0.65 saniye
- scipy.sparse.linalg.eigsh: 0.44 saniye
- scipy.linalg.eig: 6.09 saniye
- scipy.linalg. sekiz: 1,60 saniye
Seyrek eigs ve eigsh ile, istenen özdeğerlerin ve özvektörlerin sayısını k, matrisin sırası olarak ayarladım.
Sorun daha büyük matrislerle başlar - 9000x9000 matriste, scipy.sparse.linalg.eigsh 45 dakika sürdü!