【问题标题】:Trying to calculate the inverse of a square matrix [duplicate]试图计算方阵的逆[重复]
【发布时间】:2016-09-29 17:12:28
【问题描述】:

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

试图计算方阵的逆,但报错:

a

我也尝试了solve(a, diag(4)) 但得到了同样的错误。

【问题讨论】:

  • 在发布问题之前谷歌搜索此类错误消息是个好主意。这样做会直接导致您重复问题,就像上面提到的那样。
  • R 版本 0.99.893?那必须超过15岁。我们现在使用的是 3.3.0 版本。你应该考虑更新。 (R studio 和 R 是不同的软件)。
  • @ZheyuanLi 人们将这两个软件混为一谈,因为其中一个比另一个早了至少 10 年,这非常令人沮丧。 (而且,从技术上讲,最新版本是 0.99.902 :))

标签: r matrix inverse


【解决方案1】:

糟糕,这个矩阵是奇异的:

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 &lt;- matrix(1:(n*n), n, n) 这样的矩阵对于任何n &gt; 2 都是单数的。无论n 有多大,您都可以证明这些矩阵的秩只有 2。

【讨论】:

    【解决方案2】:

    并非所有矩阵都有逆矩阵。检查您的矩阵是否为奇异矩阵,即检查其行列式是否为 0。奇异矩阵没有逆矩阵。

    【讨论】:

      猜你喜欢
      • 2014-02-17
      • 2017-07-06
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      相关资源
      最近更新 更多