MATLAB

2010-07-20 8 views
8

में Eigenvalues ​​MATLAB में, जब मैं एक सममित मैट्रिक्स के लिए [V,D] = eig(a) आदेश चलाता हूं, तो सबसे बड़ा eigenvalue (और इसके संबंधित वेक्टर) अंतिम कॉलम में स्थित होता है। हालांकि, जब मैं इसे गैर-सममित मैट्रिक्स के साथ चलाता हूं, तो सबसे बड़ा eigenvalue पहले कॉलम में होता है।MATLAB

मैं ईजेनवेक्टर केंद्रीयता की गणना करने की कोशिश कर रहा हूं जिसके लिए मुझे सबसे बड़ा ईजिनवेल से जुड़े ईजिनवेक्टर की गणना करने की आवश्यकता है। तो तथ्य यह है कि सबसे बड़ा eigenvalue दो अलग-अलग स्थानों में दिखाई देता है जिससे यह समाधान ढूंढना मेरे लिए मुश्किल हो जाता है।

+4

क्या यह स्पष्ट रूप से eigenvalues ​​की सरणी के माध्यम से खोजना और सबसे बड़ा पकड़ना मुश्किल है? –

उत्तर

5

तुम बस D में सबसे बड़ा eigenvalue, जो आसानी से जहां यह तब होता है अधिकतम eigenvalue और सूचकांक पाने के लिए मुख्य विकर्ण और समारोह MAX निकालने के लिए समारोह DIAG उपयोग किया जा सकता के सूचकांक खोजने के लिए:

[V,D] = eig(a); 
[maxValue,index] = max(diag(D)); %# The maximum eigenvalue and its index 
maxVector = V(:,index);   %# The associated eigenvector in V 

नोट:woodchips points out रूप में, आप गैर सममित मैट्रिक्स के लिए जटिल eigenvalues ​​हो सकता है। एक जटिल इनपुट X पर परिचालन करते समय, MAX फ़ंक्शन जटिल संख्या max(abs(X)) की परिमाण का उपयोग करता है। बराबर परिमाण तत्वों के मामले में, चरण कोण max(angle(X)) का उपयोग किया जाता है।

+0

वह एक है। –

15

क्या मैं आमतौर पर करते हैं:

[V D] = eig(a); 
[D order] = sort(diag(D),'descend'); %# sort eigenvalues in descending order 
V = V(:,order); 
+3

यह एक सामान्य समाधान है जो पीसीए की गणना करते समय उपयोगी होता है। – psalvaggio

+0

'eigs' में यह कैसे करें? – kyle

4

ध्यान दें कि गैर सममित मैट्रिक्स जटिल eigenvalues ​​हो जाते हैं।

eig(rand(7)) 
ans = 
     3.2957    
    -0.22966 + 0.58374i 
    -0.22966 - 0.58374i 
    -0.38576    
     0.49064    
     0.17144 + 0.27968i 
     0.17144 - 0.27968i 

भी ध्यान रखें कि ईआईजी स्पष्ट रूप से हल कर eigenvalues ​​वापस नहीं करता है (हालांकि अंतर्निहित एल्गोरिथ्म उन्हें एक लगभग क्रमबद्ध क्रम में निर्माण करने के लिए जाता है, eigenvalue की भयावहता के आधार पर), लेकिन फिर भी अगर आप एक तरह से करते हैं, आपको समझने की जरूरत है कि कैसे जटिल वैक्टर पर काम करता है।

sort(rand(5,1) + i*rand(5,1)) 
ans = 
     0.42343 + 0.51539i 
    0.0098208 + 0.76145i 
     0.20348 + 0.88695i 
     0.43595 + 0.83893i 
     0.8225 + 0.91264i 

जटिल इनपुट पर लागू होने पर सॉर्ट करें, जटिल संख्या की परिमाण पर काम करता है।

+2

+1 जटिल संख्याओं के बारे में सोचा नहीं था। मुझे लगता है कि मैं आमतौर पर केवल असली eigenvalues ​​के बारे में परवाह है – Amro

1

यदि आप केवल सबसे बड़े eigenvalue से जुड़े eigenvector की देखभाल करते हैं, तो eigs का उपयोग करना बेहतर नहीं है?

[V, D] = eigs(a, 1, 'lm'); %// get first eigenvector with largest eigenvalue magnitude.