में मैट्रिक्स विकर्ण है या नहीं, मेरे पास एक मैट्रिक्स है और मैं जानना चाहता हूं कि यह विकर्ण है या नहीं। मैं आर प्रोग्रामिंग भाषा में यह कैसे करूँ?यह निर्धारित करना कि आर प्रोग्रामिंग भाषा
उत्तर
यदि आपके पास दिया गया मैट्रिक्स है, तो, एक तरीका यह है कि ईजिन वैक्टरों को मूल मैट्रिक्स के विपरीत ईजिन मूल्यों के विकर्ण का समय लगता है। यह हमें मूल मैट्रिक्स वापस देना चाहिए। आर में ऐसा दिखता है जैसे:
m <- matrix(c(1:16), nrow = 4)
p <- eigen(m)$vectors
d <- diag(eigen(m)$values)
p %*% d %*% solve(p)
m
ताकि उदाहरण में
[पी% % d%% का समाधान (पी)] मीटर के समान होना चाहिए
और हाँ, मैं पूरी तरह चुरा लिया कि से R Wiki।
यह एक अच्छा मुद्दा है। मूल प्रश्न का उत्तर देने के लिए (मैट्रिक्स एम की विकर्णता की जांच करने के लिए): 1) eigenvector matrix p = eigen (m) $ vectors 2 की गणना करें) जांचें कि eigenvector matrix p उलटा है (यानी, हल (पी) करता है परिणामस्वरूप त्रुटि नहीं है)।यदि हां, तो यह विकर्ण है, और एकतापूर्ण कार्रवाई पी है। यदि नहीं, तो यह विकर्ण नहीं है। क्यों? क्योंकि अवांछितता का अर्थ है कि ईगेंसस्पेस के प्रत्यक्ष उत्पाद का आयाम मूल मैट्रिक्स के आयाम के समान है, और यह स्थिति आवश्यक है और विकर्णता के लिए पर्याप्त है। – gappy
नोट करें कि मैट्रिक्स सममित है तो हमें (पी) को हल करने की आवश्यकता नहीं है क्योंकि सममित मैट्रिक्स के ईजेनवेक्टर ऑर्थोगोनल हैं और ऑर्थोगोनल मैट्रिक्स का स्थानांतरण इसके विपरीत है। तो हम पी% *% डी% *% टी (पी) लिख सकते हैं। मामले के लिए बस एक संभावित अनुकूलन जब एम = टी (एम) – user236215
आप पूर्ण एल्गोरिदम लागू कर सकते हैं यह जांचने के लिए कि क्या मैट्रिक्स जॉर्डन रूप या विकर्ण एक को कम करता है (उदाहरण के लिए, this document)। या आप त्वरित और गंदे तरीके ले सकते हैं: एक एन-आयामी वर्ग मैट्रिक्स के लिए, ईजिन (एम) $ मानों का उपयोग करें और जांचें कि वे अलग-अलग मान हैं। यादृच्छिक matrices के लिए, यह हमेशा पर्याप्त है: degeneracy prob.0 है।
पीएस .: नीचे जेडी लांग द्वारा एक साधारण अवलोकन के आधार पर, मुझे याद आया कि विकर्णता के लिए एक आवश्यक और पर्याप्त स्थिति यह है कि eigenvectors मूल स्थान फैलता है। इसे जांचने के लिए, बस देखें कि eigenvector मैट्रिक्स में पूर्ण रैंक है (कोई शून्य eigenvalue)।
diagflag = function(m,tol=1e-10){
x = eigen(m)$vectors
y = min(abs(eigen(x)$values))
return(y>tol)
}
# nondiagonalizable matrix
m1 = matrix(c(1,1,0,1),nrow=2)
# diagonalizable matrix
m2 = matrix(c(-1,1,0,1),nrow=2)
> m1
[,1] [,2]
[1,] 1 0
[2,] 1 1
> diagflag(m1)
[1] FALSE
> m2
[,1] [,2]
[1,] -1 0
[2,] 1 1
> diagflag(m2)
[1] TRUE
फ़्लोटिंग पॉइंट गणित के साथ गणना के दौरान आपको बिल्कुल अलग-अलग साधनों के बारे में चिंता करने की आवश्यकता नहीं है? – hadley
हां, और यही वह जगह है जहां समस्या संरचना का ज्ञान मदद करता है। यदि मैट्रिक्स में कुछ यादृच्छिक संरचनाएं हैं, उदा। गाऊशियन आईआईडी, कोई ईजीनवे के कुछ वितरण गुणों (आमतौर पर, यूनिट सर्कल पर वर्दी) का दावा कर सकता है, और उसके बाद शून्य अनुमानों के लिए सरल परीक्षण लागू करता है जो कि ईगेंवल समान हैं। यह पेपर मूल रूप से यादृच्छिक मैट्रिक्स के बारे में जानता है: http://tinyurl.com/eigenvalues। यदि मैट्रिक्स के बारे में कुछ भी नहीं पता है, तो मैं कुछ और ह्यूरिस्टिक्स का प्रयास करूंगा .. पीएस .: मुझे ggplot2 पसंद है! – gappy
मुझे जो कुछ पता था उसे लेने और इसे एक बेहतर उत्तर में खींचने के लिए धन्यवाद! बहुत बढ़िया। यही कारण है कि मुझे स्टैक ओवरफ्लो पसंद है; अच्छी चीजें एक शुद्ध थ्रेडेड चर्चा के मुकाबले सबसे ज्यादा स्पष्ट रूप से तैरती हैं। (ggplot करता है, वास्तव में, चट्टान!) –
आप में कुछ बुनियादी चर्चा और कोड लिए this page की जांच करना चाह सकते हैं: तो यहाँ कोड है। आपको "विकर्ण" की खोज करने की आवश्यकता होगी, जहां प्रासंगिक भाग शुरू होता है।
- 1. यह निर्धारित करना कि stringByEvaluatingJavaScriptFromString
- 2. यह निर्धारित करना कि छवि
- 3. मानदंड निर्धारित करने के लिए अगर यह एक प्रोग्रामिंग भाषा
- 4. यह निर्धारित करना कि jQuery .ajax()
- 5. यह निर्धारित करना कि लेजर पेज
- 6. यह निर्धारित करना कि कोई फ़ोल्डर .NET
- 7. यह निर्धारित करना कि CFTypeRef क्या है?
- 8. यह निर्धारित करना कि Google मानचित्र
- 9. आर भाषा
- 10. आर: यह निर्धारित करें कि विंडोज या लिनक्स
- 11. यह निर्धारित करना कि उपयोगकर्ता ने कोरलोकेशन अनुमति
- 12. प्रोग्रामिंग भाषा?
- 13. यह नई एक्सम प्रोग्रामिंग भाषा क्या है?
- 14. यह निर्धारित करें कि विंडोज
- 15. यह निर्धारित करें कि UIScrollView
- 16. प्रोग्राम में प्रोग्रामिंग भाषा एम्बेड करना
- 17. असेंबली भाषा प्रोग्रामिंग कौशल प्राप्त करना
- 18. आर प्रोग्रामिंग
- 19. आर सामान्य प्रयोजन प्रोग्रामिंग भाषा के रूप में
- 20. यह निर्धारित करना कि तारों की एक सरणी में रूबी
- 21. यह निर्धारित करना कि कोई पावरहेल कमांड सफल हुआ था
- 22. यह निर्धारित करना कि कोई प्रिंटर बिना प्रिंट-अप
- 23. यह निर्धारित करना कि कोई व्युत्पन्न वर्ग बेस क्लास
- 24. यह निर्धारित करना कि किसी वर्ग का संदर्भ सी #
- 25. यह निर्धारित करना कि कोई उद्देश्य-सी विधि रनटाइम
- 26. यह निर्धारित करना कि एक पठनीय फ़ाइल डिस्क्रिप्टर एक पाइप
- 27. यह निर्धारित करना कि कोई डेटासेट साइन साइन
- 28. यह निर्धारित करना कि कोई असेंबली .NET Framework
- 29. यह निर्धारित करना कि JQuery प्रभाव अभी भी
- 30. यह निर्धारित करना कि पीई सीधे (64 बिट अंक)
कृपया अपने प्रश्न को प्रासंगिक गणित मंच पर पूछें ... –
यह ठीक है, उनकी उम्मीद है। http://blog.stackoverflow.com/2009/07/stack-overflow-flash-mobs/ – LachlanG
@ मिच: यह एक प्रोग्रामिंग प्रश्न है। आर एक प्रोग्रामिंग भाषा है। – jalf