【问题标题】:Error: Singular Matrix错误:奇异矩阵
【发布时间】:2015-05-04 00:38:47
【问题描述】:

我的代码有错误,希望您能帮助我!: (当我粘贴代码时发生了一些奇怪的事情(并非所有代码都像代码一样编写),但我们开始了:

我想 linalg.solve(A,Res) 。第一个(A)有10行10列,即矩阵([10个数组,10个元素]),第二个有10行1列,即矩阵([1个数组,10个元素])。 /p>

当我执行代码时,它会抛出以下错误: 奇异矩阵

我不知道该怎么办。当我不要求 linalg.solve,但要求打印两个矩阵时,两者都很好:10 个方程,10 个变量。所以我不知道发生了什么。请帮忙!!!

如果您需要我粘贴代码(看起来很糟糕),我可以做到。

谢谢

【问题讨论】:

  • 如果代码太大/无法在此处粘贴,我建议您创建一个小测试用例(我想您不需要有 10 行/列),看看是否可以得到去工作。如果没有,请在此处发布那个小示例代码,否则人们不得不猜测您的问题可能是什么。
  • 如果系统未确定,您可以使用 numpy.linalg.lstsq 获取其中一种解决方案。

标签: python python-2.7 matrix equation-solving


【解决方案1】:

奇异矩阵是不能反转的矩阵,或者等效地,行列式为零。因此,您无法使用奇异矩阵求解方程组(它可能没有解或多个解,但在任何情况下都没有唯一解)。所以最好确保你的矩阵是非奇异的(即具有非零行列式),因为numpy.linalg.solverequires non-singular matrices

Here 是关于 2 x 2 矩阵发生了什么的一些不错的解释(但对 N x N 的概括很简单)。

【讨论】:

  • 好的,但是我构建的这些矩阵是桁架计算的结果。那么如果矩阵是奇异的,是否意味着无法求解桁架?我很困惑,我的意思是,我知道线性代数,但即使你的矩阵有和变量一样多的方程,它也可能无法解决? (我不太记得那个)
  • 是的,决定因素是产生差异的数量。想一想:解决[1 1 ; 1 1][x y]^T = [1 2]^T。它没有解(行列式为零)。或者,另一个极端,[1 1; 1 1][x y]^T = [1 1],它有无限多的解决方案。因此,除非行列式非零(即系数矩阵非奇异),否则您的方程组要么没有解,要么有无限个解。我建议你看看我发布的链接,它对于快速复习非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
相关资源
最近更新 更多