मैं एक वर्णक्रमीय क्लस्टरिंग एल्गोरिदम लागू कर रहा हूं और मुझे यह सुनिश्चित करना है कि एक मैट्रिक्स (लैपलासीन) सकारात्मक अर्ध-निश्चित है।ईजिन - जांचें कि क्या मैट्रिक्स सकारात्मक है (अर्ध-) असीमित
एक जांच अगर मैट्रिक्स सकारात्मक निश्चित (पीडी) पर्याप्त है, क्योंकि "सेमी-" भाग eigenvalues में देखा जा सकता है। मैट्रिक्स बहुत बड़ा है (एनएक्सएन जहां एन कुछ हजारों के क्रम में है) इसलिए ईजेनैनालिसिस महंगा है।
क्या ईजिन में कोई जांच है जो रनटाइम में एक बूल परिणाम देता है?
मैटलैब chol()
विधि के साथ परिणाम दे सकता है यदि कोई मैट्रिक्स पीडी नहीं है तो अपवाद फेंक कर। इस विचार के बाद, Eigen LLL.llt().matrixL()
की शिकायत किए बिना परिणाम देता है, हालांकि मुझे कुछ चेतावनी/त्रुटि की उम्मीद थी। ईजिन में isPositive
विधि भी है, लेकिन bug के कारण यह पुराने ईजिन संस्करण वाले सिस्टम के लिए उपयोग करने योग्य नहीं है।
आप की जाँच नहीं कर सकते अगर यह hermitian पहले है, तो eigenvalues को देखो? विरासत के लिए जांच सरल है। – vsoftco
आप हेर्मेटियन भाग के बारे में सही हैं, लेकिन आदर्श रूप से मैं कई बार एक विशाल मैट्रिक्स के लिए कंप्यूटिंग ईग्नवेल्यूज़ से बचना चाहता हूं, क्योंकि यह मेरा वांछित आउटपुट है इसलिए मैं इसे संभव होने पर बस एक बार ऐसा करना चाहता हूं। –
शायद आप ईजिन से चोलस्की अपघटन का प्रयास कर सकते हैं, और यदि मैट्रिक्स नकारात्मक है, तो यह 'न्यूमेरिकल इश्य्यू' देता है, http://eigen.tuxfamily.org/dox/classEigen_1_1LLT.html – vsoftco