2011-11-09 144 views
1

的我是新来的矩阵世界,对不起,这个基本的问题,我无法弄清楚:逆矩阵和乘法

我有四个矩阵(一个未知)。

矩阵X

x <- c(44.412, 0.238, -0.027, 93.128, 0.238, 0.427, -0.193, 0.673, 0.027, 
    -0.193, 0.094, -0.428, 93.128, 0.673, -0.428, 224.099) 

X <- matrix(x, ncol = 4) 

矩阵B:需要被解决,1×4(x列的nrows)中,用B1,B2,B3,B4的值

矩阵G

g <- c(33.575, 0.080, -0.006, 68.123, 0.080, 0.238, -0.033, 0.468, -0.006, 
-0.033, 0.084, -0.764, 68.123, 0.468, -0.764, 205.144) 

G <- matrix(g, ncol = 4) 

基质A

a <- c(1, 1, 1, 1) # one this case but can be any value 
A <- matrix(a, ncol = 1) 

SOLU重复:

B = inv(X) G A # inv(X) is inverse of the X matrix multiplied by G and A 

我不知道如何正确解决这个问题,特别是矩阵的逆。感谢你的帮助。

+1

你可以检查'?solve' –

+2

矩阵的逆矩阵是'solve'。矩阵乘法是'%*%'。 –

+0

感谢尼克和本来解决这个问题......我知道这个问题太基本了,但这就是我对矩阵的知识水平...... – jon

回答

4

我猜Nick和Ben都是老师,比我做其他人的功课还要有更大的顾忌,但是通往完整解决方案的道路真的非常明显,它并没有很多感不TAE下一步骤:

B = solve(X) %*% G %*% A 
> B 
      [,1] 
[1,] -2.622000509 
[2,] 7.566857261 
[3,] 17.691911600 
[4,] 2.318762273 

反演的QR方法可以通过作为第二个参数供给的单位矩阵被调用:

> qr.solve(G, diag(1,4)) 
       [,1]    [,2]   [,3]    [,4] 
[1,] 0.098084556856 -0.0087200426695 -0.3027373205 -0.0336789016478 
[2,] -0.008720042669 4.4473233701790 1.7395207242 -0.0007717410073 
[3,] -0.302737320546 1.7395207241703 13.9161591761 0.1483895429511 
[4,] -0.033678901648 -0.0007717410073 0.1483895430 0.0166129089935 
+2

+1一个人应该警告OP,采取矩阵的逆矩阵一般计算上不是一个好主意。如果您正在拟合某个模型,则使用基于分解的算法而不是颠倒矩阵将是首选。 –

+0

谢谢,迪文为解决方案...我真的很抱歉问这样一个基本的问题.. @加文,你可以详细说明你的建议作为答案...? – jon

3

甲计算上更稳定的解决方案是使用qr而不是solve

method1 <- solve(X) %*% G %*% A 
method2 <- qr.coef(qr(X), G) %*% A 
stopifnot(isTRUE(all.equal(method1, method2))) 

请参阅?qr中的示例。

+0

'图书馆(财富)'; '幸运(“回归系数”)' –