热线电话:13121318867

登录
2018-11-20 阅读量: 1037
矩阵的 Choleskey 分解

对于正定矩阵 A,可对其进行 Choleskey 分解,即:A=P'P,其中 P 为上三角矩阵,在

R 中可以用函数 chol()进行 Choleskey 分解,例如:

> A

[,1] [,2] [,3] [,4]

[1,] 2 1 1 1

[2,] 1 2 1 1

[3,] 1 1 2 1

[4,] 1 1 1 2

> chol(A)

[,1] [,2] [,3] [,4]

[1,] 1.414214 0.7071068 0.7071068 0.7071068

[2,] 0.000000 1.2247449 0.4082483 0.4082483

[3,] 0.000000 0.0000000 1.1547005 0.2886751

[4,] 0.000000 0.0000000 0.0000000 1.1180340

> t(chol(A))%*%chol(A)

[,1] [,2] [,3] [,4]

[1,] 2 1 1 1

[2,] 1 2 1 1

[3,] 1 1 2 1

[4,] 1 1 1 2

> crossprod(chol(A),chol(A))

[,1] [,2] [,3] [,4]

[1,] 2 1 1 1

[2,] 1 2 1 1

[3,] 1 1 2 1

[4,] 1 1 1 2

若矩阵为对称正定矩阵,可以利用 Choleskey 分解求行列式的值,如:

> prod(diag(chol(A))^2)

[1] 5

> det(A)

[1] 5

若矩阵为对称正定矩阵,可以利用Choleskey分解求矩阵的逆,这时用函数

chol2inv(),这种用法更有效。如:

> chol2inv(chol(A))

[,1] [,2] [,3] [,4]

[1,] 0.8 -0.2 -0.2 -0.2

[3,] -0.2 -0.2 0.8 -0.2

[4,] -0.2 -0.2 -0.2 0.8

> solve(A)

[,1] [,2] [,3] [,4]

[1,] 0.8 -0.2 -0.2 -0.2

[2,] -0.2 0.8 -0.2 -0.2

[3,] -0.2 -0.2 0.8 -0.2

[4,] -0.2 -0.2 -0.2 0.8

[2,] -0.2 0.8 -0.2 -0.2

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子