मैटलैब / ऑक्टेव में एक बड़े मैट्रिक्स की स्थिति संख्या की गणना करने के लिए सबसे तेज़ एल्गोरिथम


9

हालत संख्या की परिभाषा से ऐसा लगता है कि इसे गणना करने के लिए एक मैट्रिक्स व्युत्क्रम की आवश्यकता है, मैं सोच रहा हूं कि क्या जेनेरिक स्क्वायर मैट्रिक्स के लिए (या बेहतर है अगर सममित सकारात्मक निश्चित) स्थिति संख्या की गणना करने के लिए कुछ मैट्रिक्स अपघटन का दोहन करना संभव है तेज रास्ता।

जवाबों:


7

स्थिति संख्या की गणना करना (यहां तक ​​कि इसे 2 के कारक के रूप में अनुमानित करना) के लिए कारक की गणना के रूप में एक ही जटिलता प्रतीत होती है, हालांकि इस दिशा में कोई प्रमेय नहीं हैं।

एक विरल चोल्स्की कारक से आर एक सममित सकारात्मक निश्चित मैट्रिक्स, या एक विरल से क्यूआर फैक्टराइजेशन (निहितार्थ के साथ) क्यूसामान्य वर्ग मैट्रिक्स का), कोई स्पर्से के व्युत्क्रमानुपाती की गणना करके फ्रोबेनियस मानदंड में स्थिति संख्या प्राप्त कर सकता है। (आरटीआर)-1, जो पूर्ण प्रतिलोम की गणना करने की तुलना में बहुत तेज है। (इससे संबंधित मेरा पेपर है: अतिदेय रैखिक प्रणालियों के लिए हाइब्रिड मानदंड और सीमाएं, रैखिक बीजगणित Appl। 216 (1995), 257-266। http://www.mat.univie.ac.at/~neum/cancan-74 .pdf )

संपादित करें: यदि =क्यूआर तब किसी भी इकाई के लिए सम्मान के साथ निरर्थक,

सीn()=सीn(आर)=सीn(आरटीआर)
विरल क्यूआर कारकों की गणना के लिए, उदाहरण के लिए,
http://dl.acm.org/citation.cfm?id=174408 देखें
विरल व्युत्क्रम की गणना के लिए, देखें, उदाहरण के लिए, मेरा पेपर: विरल रेखीय मॉडल, जेनेटिक्स सिलेक्शन इवोल्यूशन 30 (1998), 1-24 में सहसंयोजकों के अधिकतम संभावना अनुमानों को प्रतिबंधित किया।
https://www.mat.univie.ac.at/~neum/ms/reml.pdf लागत में गुणन के लिए लागत का लगभग 3 गुना है।

तो आप निम्नलिखित सुझाव दे रहे हैं: एक मैट्रिक्स दिया इसके फॉर्म की क्यूआर की गणना करें =क्यूआर कहाँ पे आर एक ऊपरी त्रिकोणीय मैट्रिक्स है और क्यू एक ऑर्थोगोनल मैट्रिक्स है और फिर स्थिति संख्या इसके द्वारा दी जाती है cond()=||||||-1||(आरटीआर)-1 यहाँ मुद्दा यह है कि कैसे एक क्यू फैक्टराइज़ेशन की गणना करने के लिए एक तेज़ तरीका खोजा जाए। क्या मैं सही हू?
लिनिलो

@linello: काफी नहीं; मेरा संपादन देखें
अर्नोल्ड न्यूमैयर

धन्यवाद! मैं इसकी जाँच करने जा रहा हूँ, btw इस कदम की लागत क्या है?
लिनेलो

@linello: पूर्ण मैट्रिक्स के लिए, हे(n3); विरल मैट्रिक्स के लिए, यह स्पार्सिटी संरचना पर बहुत कुछ निर्भर करता है।
अर्नोल्ड न्यूमैयर

4

हालत संख्या की गणना करने के लिए एक सममित मैट्रिक्स या सामान्य मैट्रिक्स के SVD के eigenvalue / eigenvector अपघटन का उपयोग करना निश्चित रूप से आसान है, लेकिन ये आगे बढ़ने के लिए विशेष रूप से तेज़ तरीके नहीं हैं।

ऐसे पुनरावर्ती एल्गोरिदम हैं, जो कंप्यूटिंग के काम पर जाने के बिना अधिकांश उद्देश्यों के लिए उपयोगी स्थिति संख्या के एक अनुमान की गणना कर सकते हैं -1condestMATLAB में फ़ंक्शन के उदाहरण देखें ।


लेकिन अनुमान कभी-कभी बहुत छोटा होता है। स्थिति संख्या की गणना करना (यहां तक ​​कि इसे 2 के कारक के रूप में अनुमानित करना) के लिए एक कारक की गणना के रूप में एक ही जटिलता है, हालांकि इस दिशा में कोई प्रमेय नहीं हैं।
अर्नोल्ड न्यूमैयर

1

विरल हर्मिटियन मेट्रिसेस के लिए एच, आप अपने eigenvalues ​​की गणना करने के लिए लैंकोज़ एल्गोरिथ्म का उपयोग कर सकते हैं। अगरएच हरमिटियन नहीं है, आप इसके विलक्षण मूल्यों की गणना करके इसके विलक्षण मानों की गणना कर सकते हैं एचटीएच

चूँकि सबसे बड़े और सबसे छोटे प्रतिध्वनि / एकवचन बहुत तेज पाए जा सकते हैं (त्रिदोषनाशक पूर्ण होने से बहुत पहले), लैंक्ज़ोस विधि विशेष रूप से स्थिति संख्या की गणना करने के लिए उपयोगी है।


मैंने हमेशा सोचा है कि लैंक्ज़ोस पुनरावृत्ति के लिए एक पठनीय मैटलैब कोड कहाँ मिलेगा जो स्पष्ट करता है कि सबसे छोटा या सबसे बड़ा आइजेनवेल्यू कैसे प्राप्त करें। क्या आप मुझे एक सुझाव दे सकते हैं?
लाइनो

Lanczos एल्गोरिथ्म के लिए मेरे पास MATLAB कोड नहीं हैं।
चोहुआंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.