如何在Excel中解决线性方程组?

3
我有一个由22个线性方程(确切地说是22个方程和22个未知数)组成的系统,在Excel电子表格中动态生成。是否有一种方法让Excel解决这个系统并为每个未知变量产生一个值? 另一个SO问题提供了很多关于解决这类方程所使用算法的好信息。特别是Cramer's rule,但我不确定如何在Excel中实现它。任何帮助都将不胜感激!
6个回答

11

这个页面提供了以下简单的方法:

  1. 在nxn的范围内输入系数矩阵。

  2. 在n行的列中输入常量向量。选择一个空的n行列。重要的是您不只选中一个单元格。

  3. 在公式文本框中键入=MMULT(MINVERSE(coefficients_matrix_range),constants_vector_range)并按[CTRL] [SHIFT] [ENTER]。重要的是您不仅仅按[ENTER]。

这应该足够使用,因为您只有一个小系统(22x22)。虽然理想情况下,您不会直接求逆矩阵,在这种情况下也不应该有影响。

一定不要使用克拉默法则。由于其相当差的数值特性,它更具有理论而非实际意义。


谢谢你,Peter。这很好而且简单! - e.James
页面不存在。 - GordonM
彼得的回答中的链接已经失效了,请尝试访问http://www.excel-easy.com/examples/system-of-linear-equations.html。 - user2914821

2

Excel的LINEST函数可以实现这一功能,并且在许多情况下比MMULT(MINVERSE(...)...)返回更好的结果。

您可能还会发现LOGEST、GROWTH和TREND函数很有用。


我非常确定LINEST和其他函数只处理线性数据,即仅有一个未知数(x)。我正在处理一个由22个未知数组成的方程组,因此我认为LINEST无法胜任。 - e.James
1
@e.James Linear 不仅仅意味着一个未知数。LINEST 可以处理多元回归。 - Rodolfo
谢谢。我之前理解有误,今天能够学到新的东西让我很开心 :-) - e.James

2

+1,这真的很酷!直到今天我都没听说过。Peter的解决方案这次对我有效,但如果我处理更大或更动态的数据集,我可以看到MSF很有用。感谢您提供的信息。 - e.James

1

你绝不能考虑使用 Cramer 法则来解决线性系统!它非常低效,即使对于小型系统也无法执行。

Excel 不是解决线性系统的正确工具。如果我是你,我会编写一个简单的 Python 脚本来读取 Excel 文件,使用 numpy 解决方程,并将结果保存在一个 Excel 可以读取的文件中。(如果可能的话,最好完全避免使用 Excel)。


谢谢你提醒我关于 Cramer 法则的事情。我对速度并不太担心,因为这只需要偶尔更新一次。完全避免使用 Excel 不是一个选项,因为所有的源数据已经在 Excel 中了。此外,我发现 Excel 是最强大和有用的程序之一,几乎每台电脑都可以轻松获取! - e.James
这就是为什么我写了“使用numpy”。numpy是一个Python接口,用于C或Fortran(BLAS / LAPACK)编写的标准线性代数库,因此非常快。 - Olivier Verdier

1
如果您在求逆矩阵计算中遇到任何问题,例如溢出/欠流/截断等,您可以随时使用求解器 - 或者获取一份C语言数值计算参考书的副本,并将其翻译成VBA。

1

这可以是线性方程求解器,我们可以通过使用根在求解器的指数部分之间的两个或更多数字的数学方程来使用数学求解器来完成,但要找到更好的线性方程求解器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接