बहुत व्यापक रूप से, eigenvalue या एकवचन मान decompositions की गणना करने के लिए दो दृष्टिकोण हैं। एक दृष्टिकोण मैट्रिक्स को विकर्ण करना है और यह अनिवार्य रूप से पूरे eigenvalue / singular value decomposition (पूरे eigenvalue स्पेक्ट्रम) को एक ही समय में प्राप्त करता है, यहाँ कुछ अवलोकन देखें: singal value decomposition (SVD) की गणना करने के लिए कुशल एल्गोरिदम क्या हैं? विकल्प एक पुनरावृत्त एल्गोरिथ्म का उपयोग करना है जो एक समय में एक (या कई) eigenvectors पैदावार करता है। वांछित संख्या में प्रतिजन की गणना किए जाने के बाद Iterations को रोका जा सकता है।
मुझे नहीं लगता कि एसवीडी के लिए विशेष रूप से पुनरावृत्त एल्गोरिदम हैं। इसका कारण यह है एक एक की SVD गणना कर सकता है मैट्रिक्स बी एक वर्ग सममित के eigendecomposition करके ( n + मीटर ) × ( n + मीटर ) मैट्रिक्स एक = ( 0 बी बी ⊤ 0 ) । इसलिए बजाय क्या एल्गोरिदम गणना छोटा कर दिया SVD, आप पूछ किया जाना चाहिए क्या पुनरावृत्ति एल्गोरिदम गणना eigendecomposition पूछने का: छोटा कर दिया SVD के लिए एल्गोरिथ्म ≈ eigendecomposition के लिए पुनरावृत्ति एल्गोरिथ्म ।n×mB(n+m)×(n+m)
A=(0B⊤B0).
algorithm for truncated SVD≈iterative algorithm for eigendecomposition.
सबसे सरल पुनरावृत्ति एल्गोरिथ्म को शक्ति पुनरावृत्ति कहा जाता है और वास्तव में बहुत सरल है:
- यादृच्छिक आरंभ करेंएक्स ।
- एक्स ← एक एक्स ।
- एक्स ← एक्स / ∥ एक्स ∥ ।
- गोटो चरण # 2 जब तक परिवर्तित नहीं किया गया।
सभी अधिक जटिल एल्गोरिदम अंततः शक्ति पुनरावृत्ति विचार पर आधारित हैं, लेकिन काफी परिष्कृत हैं। क्रिलोव उपप्रजातियों द्वारा आवश्यक गणित दिया जाता है । एल्गोरिदम अर्नोल्डी पुनरावृत्ति हैं (वर्ग nonsymmetric matrices के लिए), लैंक्ज़ोस पुनरावृत्ति (वर्ग सममित matrices के लिए), और इसके रूप में भिन्नरूप जैसे " विधि और व्हाट्सएप।
आप इसका वर्णन निम्न पाठ्यपुस्तकों में कर सकते हैं:
- गोलूब और वैन ऋण, मैट्रिक्स संगणना
- ट्रेफेथेन और बाऊ, न्यूमेरिकल रैखिक बीजगणित
- डेमिमल, एप्लाइड न्यूमेरिकल रैखिक बीजगणित
- साद, बड़ी Eigenvalue समस्याओं के लिए संख्यात्मक तरीके
सभी उचित प्रोग्रामिंग लैंग्वेज और स्टेटिस्टिक पैकेज (मैटलैब, आर, पाइथन सुपी, यू नेम इट) उसी फोरट्रान लाइब्रेरीज़ का इस्तेमाल करते हैं जो ईजन / एकवचन-मूल्य विघटन करती है। ये LAPACK हैं और ARPACK हैं । ARPACK का अर्थ ARnoldi Package है, और यह सभी अर्नोल्डी / लैंक्ज़ोस पुनरावृत्तियों के बारे में है। उदाहरण के लिए मतलाब में SVD के लिए दो कार्य हैं: svd
LAPACK के माध्यम से पूर्ण अपघटन करता है, और svds
ARPACK के माध्यम से दिए गए एकवचन वैक्टर की संख्या की गणना करता है और यह वास्तव eigs
में "स्क्वायर-इलेक्टेड" मैट्रिक्स पर कॉल के लिए केवल एक आवरण है ।
अपडेट करें
BAABA
इन विधियों के लिए एक फोरट्रान पुस्तकालय भी है, इसे कहा जाता है PROPACK :
सॉफ्टवेयर पैकेज PROPACK में बड़े और विरल या संरचित मैट्रिसेस के एकवचन मान के अपघटन की गणना के लिए फ़ंक्शंस का एक सेट होता है। एसवीडी दिनचर्या लैंकोस बिडियोऑनलाइज़ेशन एल्गोरिथ्म पर आंशिक पुनर्वितरण (बीपीआरओ) के साथ आधारित हैं।
हालाँकि, PROPACK ARPACK की तुलना में बहुत कम मानक है और मूल रूप से मानक प्रोग्रामिंग भाषाओं में समर्थित नहीं है। यह रासमस लार्सन द्वारा लिखा गया है, जिनके पास 90-पृष्ठ लंबा 1998 का पेपर लैंक्ज़ोस बिडियोऑनलाइज़ेशन है, जो आंशिक रूप से पुनर्मूल्यांकन के साथ एक अच्छा अवलोकन है। इस कम्प्यूटेशनल विज्ञान एसई धागा के माध्यम से @MichaelGrant के लिए धन्यवाद ।
सबसे हाल के पत्रों में, सबसे लोकप्रिय लग रहा है Baglama & Reichel, 2005, बगलामा और रीचेल संवर्धित रूप से लैंक्ज़ोस बिडियोऑगनाइजेशन विधियों को फिर से शुरू किया गया है, जो संभवतः कला की स्थिति के आसपास है। इस लिंक को टिप्पणियों में देने के लिए @Dougal का धन्यवाद।
अपडेट २
ओवरव्यू पेपर में विस्तार से वर्णित एक पूरी तरह से एक अलग दृष्टिकोण है जिसे आपने खुद उद्धृत किया है: हलको एट अल। 2009, यादृच्छिकता के साथ संरचना की खोज: अनुमानित मैट्रिक्स डिकम्पोजिशन के निर्माण के लिए संभाव्य एल्गोरिदम । मैं इसके बारे में टिप्पणी करने के लिए पर्याप्त नहीं जानता।