2015-05-04 69 views
0
我有我的代码中的错误

,我希望你能帮助我!: (当我将代码粘贴奇怪的事情发生了(不是全部是这样写的代码),但在这里我们去:我想要linalg.solve(A,Res)。第一个(A)有10行10列,即矩阵([10数组,10个元素]),第二个有10行和1列,即,矩阵([1个数组,10种元素])错误:奇异矩阵

当我执行它引发以下错误的代码: 奇异矩阵

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

如果你需要我粘贴代码(如可怕的,因为它看起来)我能做到这一点。

谢谢

+0

如果代码太大/无法读取贴在这里,我建议你创建一个小的测试案例(我猜你并不需要有10行/列),看看你能得到那个工作。如果没有,请在这里发布这个小例子的代码,否则人们不得不猜测你的问题可能是什么。 – FriendFX

+0

如果系统是确定的,您可以使用numpy.linalg.lstsq获得的解决方案之一之下。 – Ben

回答

2

奇异矩阵是不能倒置,或等价矩阵,具有行列式为零。出于这个原因,你不能使用奇异矩阵求解方程组(它可能没有解或多个解,但在任何情况下都没有独特的解)。所以,最好确保你的矩阵是非奇异的(即具有非零决定),因为numpy.linalg.solverequires non-singular matrices

Here是什么回事2×2矩阵(但泛化是简单的的N×N)一些像样的解释。

+0

好的,但我建立的这些矩阵是桁架计算的结果。所以如果矩阵是奇异的,这意味着桁架不能解决?我很困惑,我的意思是,我知道线性代数,但即使矩阵有许多等式作为变量,它可能无法解决? (我不太记得那个) –

+1

是的,决定因素是造成差异的数量。想一想:解决'[1 1; 1 1] [x y]^T = [1 2]^T'。它没有解决方案(行列式为零)。或者,另一个极端,“[1 1; 1 1] [x y]^T = [1 1]',它有无数个解。因此,除非行列式是非零的(即系数矩阵是非奇异的),否则你的方程系统或者没有解,或者有无数解。我建议你看看我发布的链接,这对于快速刷新非常有用。 – vsoftco