我正在尝试使用 Excel 求解一个由四个未知数组成的四个线性方程组。我的四个初始方程是

2,236 + x = (4/10) * (5,676 + x + y + z + w)

1,764 + y = (3/10) * (5,676 + x + y + z + w)

1,120 + z = (2/10) * (5,676 + x + y + z + w)

556 + w =​​ (1/10) * (5,676 + x + y + z + w)

我首先将方程式重写如下:

-(6/10)* x + (4/10)* y + (4/10)* z + (4/10)* w = -34.40

(3/10)* x – (7/10)* y + (3/10)* z + (3/10)* w = 61.20

(2/10)* x + (2/10)* y – (8/10)* z + (2/10)* w = -15.20

(1/10)* x + (1/10)* y + (1/10)* z – (9/10)* w = -11.60

然后我取出单元格 F2 至 J5 并按如下方式填充它们:

-6/10 4/10 4/10 4/10 -34.40
3/10 -7/10 3/10 3/10 61.20
2/10 2/10 -8/10 2/10 -15.20
1/10 1/10 1/10 -9/10 -11.60

然后我在 J2 中引入以下公式

=MMULT(MINVERSE(F2:I5),J2:J5)

在单元格 J2 至 J5 中返回以下值:

-1,792
-1,536
-880
-440

使用 WolframAlpha 或 Mathematica 可以轻松验证这些值无法解决的初始方程组。因此,我的问题是:

  • 为什么 Excel 给出了错误的方程组答案?
  • 如何让 Excel 为我的方程组提供正确的解?

10

  • 1
    从数学上讲,的行列式F2:I5为 0,因此MINVERSE(F2:I5)不存在;但由于 Excel 中的浮点运算无法1/10无错误地表达数字,因此在您的计算中存在逆。相关:


    – 


  • 1
    “我希望在 Excel 中获得的结果是……” – 可能的结果有连续性,每个结果都一样好。要获得单个结果,您需要任意附加约束。在计算您所说的结果时,(静默)约束可能是 y=0。


    – 


  • 1
    有无数个解,例如 3.493333、-6.08、1.5466666、1.1733333。您或许可以尝试使用伪逆来获得特定解。我使用 Python 中的 Moore Penrose 伪逆得到了这个解。


    – 

  • 1
    “我知道我的一个未知数将始终为 0”——这可能是您的约束,但不一定如此;我的意思是它不是问题本身所固有的。对于这个特定的系统,您可以对任何单个未知数施加任意值,并据此计算其余三个未知数——您将得到一个解决方案。


    – 


  • 1
    另外,我认为第二个系统不正确。你如何得出 556 – (1/10) 5.676 等于 -11.60 ?如果你将第一个系统中的所有方程式相加,这看起来是不可能的。


    – 



最佳答案
1

如果方程组是不确定的,其行列式等于0。在 Excel 中,由于四舍五入,它可能是一个接近于零的数字。然后尝试解决这样的系统将得到一个随机结果。在这种情况下,将其中一个未知数视为参数并省略其中一个方程(它是其他方程的线性组合)。如果您知道在您的案例中,y = 0您可以将其视为y参数并找到其他 3 个未知数的解。

一般解可以考虑任何值
y和适当调整的其他变量的值。

(在我的情况下,小数分隔符是逗号。)