矩阵求逆

时间:2013-03-11 10:21:38

标签: r

我想反转一个方形对称正定矩阵。我知道R中有两个函数solve()chol2inv(),但结果却不同。我需要知道为什么会这样?

谢谢。

2 个答案:

答案 0 :(得分:5)

对于solve,您需要提供原始矩阵,但对于chol2inv,您使用预计算的cholesky分解:

set.seed(1)
a<-crossprod(matrix(rnorm(9),3,3))
a_chol<-chol(a)
solve(a)
            [,1]        [,2]       [,3]
[1,]  1.34638151 -0.02957435  0.8010735
[2,] -0.02957435  0.32780020 -0.1786295
[3,]  0.80107345 -0.17862950  1.4533671
chol2inv(a_chol)
            [,1]        [,2]       [,3]
[1,]  1.34638151 -0.02957435  0.8010735
[2,] -0.02957435  0.32780020 -0.1786295
[3,]  0.80107345 -0.17862950  1.4533671

答案 1 :(得分:5)

以下是计算矩阵求逆的几种方法,包括solve()chol2inv()

> A <- matrix(c(2, -1, 0, -1, 2, -1, 0, -1, 2), 3)

> solve(A)
     [,1] [,2] [,3]
[1,] 0.75  0.5 0.25
[2,] 0.50  1.0 0.50
[3,] 0.25  0.5 0.75

> chol2inv(chol(A))
     [,1] [,2] [,3]
[1,] 0.75  0.5 0.25
[2,] 0.50  1.0 0.50
[3,] 0.25  0.5 0.75

> library(MASS)
> ginv(A)
     [,1] [,2] [,3]
[1,] 0.75  0.5 0.25
[2,] 0.50  1.0 0.50
[3,] 0.25  0.5 0.75