我有一个方程组(总共5个),有5个未知数。我已将这些设置为矩阵以尝试解决,但我不确定这是否正确。基本上,设置为AX = B
,其中A
,X
和B
是矩阵。 A
是5x5,X
是1x5,B
是5x1。
当我使用MATLAB使用公式X
求解X = A\B
时,它会给我一个警告:
Matrix is singular to working precision.
并且对于所有5个X未知数给出0,但如果我说X = B\A
它没有,并且给出了5 X
个未知数的值。
任何人都知道我做错了什么?如果这很重要,这就是我的X
矩阵的样子:
X= [1/C3; 1/P1; 1/P2; 1/P3; 1/P4]
C3
,P1
,P2
,P3
,P4
是我的未知数。
答案 0 :(得分:3)
你的矩阵是单数,这意味着它的行列式是0.这样的方程组没有给你足够的信息来找到一个独特的解。我在你的问题中看到的一件奇怪的事情是 X 是1x5而 B 是5x1。这不是解决问题的正确方法。 X 和 B 都必须为5x1。如果你想知道,这是不是一个Matlab的东西 - 这是一个线性代数的东西。这[5x5]*[1x5]
是非法的。此[5x5]*[5x1]
会产生[5x1]
结果。此[1x5]*[5x5]
会产生[1x5]
结果。首先检查代数,然后检查行列式(Matlab中的det
函数)是否为0。
答案 1 :(得分:0)
所以,接下来要弄清楚为什么A
是单数的。 (请注意,您可能想要解决
A x = b
在使用正方形和单数A
的情况下,但它们仅适用于b
位于A
范围内的情况。)
也许你可以写出你的矩阵A
和向量b
(因为它只有5x5)?或者解释一下如何创建它。这可能会提供一个线索,说明为什么A
不是满级,或者为什么b
不在A
的范围空间中。