试图计算方阵的倒数

时间:2016-05-31 15:34:15

标签: r matrix inverse

Windows 10上的R 0.99.893 solve() - solve.default(a)中的错误

尝试计算方阵的倒数,但得到错误:

  

a< - 矩阵(1:16,4,4)   解决(a)中   solve.default(a)出错:     Lapack例程dgesv:系统完全是单数:U [3,3] = 0

我也试过解决(a,diag(4))但得到了同样的错误。

2 个答案:

答案 0 :(得分:2)

并非所有矩阵都有反转。检查你的矩阵是否是单数,即检查其行列式是否为0.奇异矩阵没有逆矩阵。

答案 1 :(得分:2)

哎呀,这个矩阵是单数的:

a <- matrix(1:16, 4, 4)

1  5   9  13
2  6  10  14
3  7  11  15
4  8  12  16

为什么呢?见:

a[, 3, drop = FALSE] + a[, 2, drop = FALSE] - a[, 1, drop = FALSE]

     [,1]
[1,]   13
[2,]   14
[3,]   15
[4,]   16

完全a[, 4, drop = FALSE]

方阵是可逆的,只有当它具有完整的列列时,即它的所有列都是线性无关的。但是这个矩阵的列是线性相关的,即你可以把一列写成其他列的线性组合。

事实上,a <- matrix(1:(n*n), n, n)这样的矩阵对于任何n > 2都是单数的。您可以证明这些矩阵的排名只有2,无论n有多大。