मैं यह पता लगाने की कोशिश कर रहा हूं कि scipy.sparse.linalg.eigsh का उपयोग करने की तुलना में बहुत बड़े और विरल आसन्न मैट्रिक्स के सभी eigenvalues और eigenvectors की गणना करने के लिए एक तेज़ तरीका है जहां तक मुझे पता है, यह विधियां केवल स्पार्सिटी और का उपयोग करती हैं मैट्रिक्स की समरूपता विशेषताएँ। एक आसन्न मैट्रिक्स भी द्विआधारी है, जो मुझे लगता है कि ऐसा करने का एक तेज़ तरीका है।
मैंने एक यादृच्छिक 1000x1000 विरल आसन्न मैट्रिक्स बनाया, और मेरे x230 ubuntu 13.0434 पर कई तरीकों के बीच तुलना की:
- scipy.sparse.linalg.eigs: 0.65 सेकंड
- scipy.sparse.linalg.eigsh: 0.44 सेकंड
- scipy.linalg.eig: 6.09 सेकंड
- scipy.linalg.eigh: 1.60 सेकंड
विरल अंजीर और ईगश के साथ, मैंने मैट्रिक्स की रैंक होने के लिए, वांछित ईजेनवेल्यूज और ईजेनवेक्टर्स की संख्या k निर्धारित की है।
समस्या बड़े मेट्रिक्स के साथ शुरू होती है - 9000x9000 मैट्रिक्स पर, यह scipy.sparse.linalg.eigsh 45 मिनट ले लिया!