2012-06-07 11 views
5

में फिडलर वेक्टर कंप्यूटिंग करना मुझे पाइथन में लैपलासीन (एल) के क्षेत्ररक्षक वेक्टर कैसे मिलते हैं? eigenvalues, eigenvectors = linalg.eig (एल)पायथन

मुझे लगता है कि अजगर एक आदेश में eigenvalues ​​वापस नहीं करता है:

मैं का उपयोग कर अभिलक्षणिक मान तथा अभिलक्षणिक सदिश मिल सकती है।

क्या मैं दूसरा सबसे बड़ा ईजिनवेल्लू लेता हूं और फिर इसे संबंधित ईजिनवेक्टर (इंडेक्स में मिलान) से मेल खाता हूं?

eigenvalues ​​को ऑर्डर करते समय, मैं नकारात्मक मानों से कैसे निपटूं? पूर्ण परिमाण से आदेश है?

आपकी मदद

+0

त्वरित समाधान, 'evals, evec = np.linalg.eigh (एल) ind = np.argsort (evals) evals = evals [ind] evec = evec [:, ind] ' –

+0

fiedler = evec [:, 1 ] कनेक्टिविटी = evals [1] – Icarus

उत्तर

3

खैर के लिए धन्यवाद, मैं शामिल गणित के बारे में पता नहीं है, लेकिन मैं अपने सर्वश्रेष्ठ प्रयास करेंगे।

यदि आप documentation, linalg.eig चेक करते हैं तो वास्तव में eigenvectors को उसी क्रम में अपने संबंधित ईगेंवल्यूज़ के रूप में वापस कर देता है।

मैं क्या कर सकता है कुछ की तरह:

w, v = linalg.eig(L) 
seen = {} 
unique_eigenvalues = [] 
for (x, y) in zip(w, v): 
    if x in seen: 
     continue 
    seen[x] = 1 
    unique_eigenvalues.append((x, y)) 
fiedler = sorted(unique_eigenvalues)[1][1] 

पहला तत्व द्वारा डिफ़ॉल्ट अजगर प्रकार tuples द्वारा, तो दूसरा और इतने पर, और संख्या अभी जिस तरह तुम उम्मीद थी आदेश दिया जाता है (-2 < - 1 आदि)। यह मानता है कि आपके eigenvalues ​​पाठ्यक्रम के जटिल नहीं हैं।

इसके अलावा, मैंने माना है कि डुप्लिकेट ईजिनवेल्स हो सकते हैं और फिडलर वेक्टर दूसरे सबसे छोटे अद्वितीय ईजेनवल्यू से जुड़े ईजिनवेक्टर हैं।

+0

त्वरित समाधान, 'evals, evec = np.linalg.eigh (एल)' ' इंडस्ट्रीज़ = np.argsort (evals)' ' evals = evals [इंडस्ट्रीज़]' ' evec = evec [:, ind] ' –

+0

@ हिराकसर मैं नुकीले से परिचित नहीं हूं, 'evec [:, ind] क्या कर रहा है? मुझे लगता है कि यह किसी भी मामले में सही नहीं हो सकता है, फिडलर वेक्टर दूसरे सबसे छोटे * अद्वितीय * eigenvalue से जुड़े eigenvalue है। जब तक आप किसी भी तरह डुप्लिकेट पर छोड़ नहीं रहे हैं, यह काम नहीं करेगा। – Julian

+0

मैंने सिर्फ ईजिन मूल्यों के संबंध में वैक्टर को क्रमबद्ध किया है, इसलिए मुझे यहां फिडलर वेक्टर नहीं मिला है। लेकिन जब आप वैक्टरों को तदनुसार सॉर्ट करते हैं तो यह आसान होता है। –