आर

2010-11-20 4 views
74

में मैट्रिक्स के विपरीत मैं सोच रहा था कि मैट्रिक्स के विपरीत की गणना करने के लिए आपका अनुशंसित तरीका क्या है?आर

मुझे मिले तरीकों को संतोषजनक नहीं लगता है। उदाहरण के लिए,

> c=rbind(c(1, -1/4), c(-1/4, 1)) 
> c 
     [,1] [,2] 
[1,] 1.00 -0.25 
[2,] -0.25 1.00 
> inv(c) 
Error: could not find function "inv" 
> solve(c)  
      [,1]  [,2] 
[1,] 1.0666667 0.2666667 
[2,] 0.2666667 1.0666667 
> solve(c)*c 
      [,1]  [,2] 
[1,] 1.06666667 -0.06666667 
[2,] -0.06666667 1.06666667 
> qr.solve(c)*c 
      [,1]  [,2] 
[1,] 1.06666667 -0.06666667 
[2,] -0.06666667 1.06666667 

धन्यवाद!

+1

एक सामान्य सलाह: (मैट्रिक) की तरह वस्तुओं दे रही है एक नाम है कि पहले से ही इस्तेमाल किया (यहां 'c') से बचें। – Qaswed

उत्तर

118

solve(c) सही उलटा देता है। आपके कोड के साथ समस्या यह है कि आप मैट्रिक्स गुणा के लिए गलत ऑपरेटर का उपयोग कर रहे हैं। आपको solve(c) %*% c का उपयोग आर

आर पर गुणांक गुणा करने के लिए solve(c) %*% c का उपयोग करना चाहिए जब आप solve(c) * c का आह्वान करते हैं तो तत्व गुणा द्वारा तत्व निष्पादित करता है।

19

आप मास पैकेज में समारोह ginv() (मूर-Penrose सामान्यीकृत व्युत्क्रम) का उपयोग कर सकते

+0

@xeon यह सुनिश्चित नहीं है कि आप इसे कैसे याद कर सकते हैं - पी देखें। – doug

+0

से ऊपर मेरे उत्तर में दिए गए पैकेज के मैनुअल के 60 60 आपके उत्तर के लिए धन्यवाद। FisherEM पैकेज से फ़ंक्शन fem() चलाते समय मुझे यह त्रुटि मिली। मैवरिक्स मैक ओएस एक्स चल रहा है –

4

ध्यान दें कि यदि आप गति के बारे में परवाह है और विशिष्टता के बारे में चिंता करने की जरूरत नहीं है, solve() , ginv() को प्राथमिकता दी जानी चाहिए क्योंकि यह बहुत तेजी से है के रूप में आप देख सकते हैं:

require(MASS) 
mat <- matrix(rnorm(1e6),nrow=1e3,ncol=1e3) 

t0 <- proc.time() 
inv0 <- ginv(mat) 
proc.time() - t0 

t1 <- proc.time() 
inv1 <- solve(mat) 
proc.time() - t1 
0

मैट्रिक्स संकेतन में यह एक बड़ा अंतर ऑपरेटर "०१२३२२७५९२४१ बनाता है"और ऑपरेटर" %*% "। पहला तत्व द्वारा गुणा तत्व करता है, दूसरा मैट्रिक्स गुणा के लिए सही सूत्र है। क्या Hou किया जाना चाहिए है:

c = rbind(c(1, -1/4), c(-1/4, 1)) 

solve(c) %*% c 
+5

आपका उत्तर स्वीकृत उत्तर से अलग कैसे है ??? –