当前位置: 首页 > 知识库问答 >
问题:

使用solve和其他方法进行矩阵求逆R(错误“a”必须是复杂矩阵)

李言
2023-03-14

我不是高级R用户。我主要用它来进行矩阵代数计算。我有一个大矩阵(9400×9400;675.1MB),我想反转。我尝试了“解决”函数和“胆量2inv”,我得到了“错误在......‘a’一定是一个复杂的矩阵”。我也尝试了从MASS包的ginv函数,我得到了错误消息在svd(X)错误:无限或丢失值在'x'。我确信我的矩阵没有空(全零)列或行。我检查了使用:从数据框中删除具有零值的列,我得到了相同的矩阵。也没有NA值,我使用确定列中NA值的数量进行了测试。我的矩阵是数字和方阵(is.numeric和is.matrix回答TRUE,暗淡9400x9400)。当使用来自matrixcalc包的is.singular.matrix时,错误消息再次是错误determinant.matrix(x,对数=TRUE,...):'a'必须是一个复杂的矩阵。因此,我不知道为什么R不能计算反演。拜托,你知道我该怎么解决我的问题吗?非常感谢

共有1个答案

蒙化
2023-03-14

问题在于无穷大。R将0/0转换为无限,但我没有考虑它,因为错误消息有点太模糊了。

is.infinite矩阵

 类似资料:
  • 矩阵A的倒数用A -1表示,使得以下关系成立 - AA<sup>−1</sup> = A<sup>−1</sup>A = 1 矩阵的逆矩阵并不总是存在。 如果矩阵的行列式为零,则逆不存在且矩阵是单数的。 使用inv函数计算MATLAB中矩阵的逆。 矩阵A的逆是由inv(A)给出的。 例子 (Example) 创建一个脚本文件并键入以下代码 - a = [ 1 2 3; 2 3 4; 1 2 5]

  • 我有一个矩阵,有很多行和列 使用 我想确定原始矩阵中每一行的第一次出现:这里有向量 我想出的最好的方法是使用既不高效也不优雅的循环的复杂和迂回的方法。我也知道data.frames的可能解决方案;那些涉及将行连接到字符串中的解决方案也是相当资源密集型的。 有没有使用基本R的优雅解决方案?

  • 问题内容: 我的BinvA矩阵的(1,1)条目得到一个非常奇怪的值,我 只是想将B矩阵求逆,并进行(B ^ -1)A乘法。 我知道,当我手动进行计算时,我的(1,1)应该为0,但我得到1.11022302e-16。我该如何解决?我知道浮点数不能完全准确地表示出来,但是为什么这会给我这么不准确的响应,而不是四舍五入,有什么办法可以使我更准确呢? 她是我的代码: 我的印刷声明: 问题答案: 计算逆时,

  • 现在,我想我明白了这个概念。但是当我把它们都放入代码中时,它就不起作用了…… 首先,我试图将矩阵转换为上三角矩阵,但由于某种原因,在第2列之后,它停止工作。。 我输入的数组是: [1.00][5.00][4.00][4.00][1.00] [5.00] [7.00] [7.00] [4.00] [8.00] [7.00] [4.00] [8.00] [4.00] [7.00] [10.00][12

  • 我目前正在做一个音频信号处理项目,需要在Java中的一个复杂矩阵上使用SVD。我当前的线性代数库是Apache Commons。但它只提供实矩阵的SVD,JAMA、JBLAS、EJML、ojAlgo都不支持复杂的SVD。 我一直在用一些技巧从一个等效的实矩阵中找到SVD。然而,当我重建矩阵时,这种技术对于虚部有很大的不准确性。

  • 我的数据是这样的,X和Y是缺陷的中心。我想在矩阵中指定缺陷。 我创建了一个只有0的矩阵200*200。我想通过以下方式将1放入矩阵中: 每个坐标X Y都是1。例如,我们可以看到ID 1,它将允许1到坐标(2,3)的单元格。ID 2将允许1进入我的手机(7,12)。 我已经用代码完成了这项工作 现在我想做一些棘手的事情。我defect_ID,我想使用我的X_range和Y_range值将值1分配给这