我有一个由 Excel 电子表格动态生成的 22 个线性方程组(正好是 22 个方程和 22 个未知数)。有没有办法让 Excel 求解系统并为每个未知变量生成一个值?
另一个 SO question有很多关于用于求解此类方程的算法的有用信息。Cramer 的规则尤其看起来很有希望,但我不确定如何在 Excel 中实现它。
任何帮助表示赞赏!
我有一个由 Excel 电子表格动态生成的 22 个线性方程组(正好是 22 个方程和 22 个未知数)。有没有办法让 Excel 求解系统并为每个未知变量生成一个值?
另一个 SO question有很多关于用于求解此类方程的算法的有用信息。Cramer 的规则尤其看起来很有希望,但我不确定如何在 Excel 中实现它。
任何帮助表示赞赏!
该页面提供了以下简单方法:
在 nxn 范围内输入系数矩阵。
在 n-tall 列中输入常数向量。选择一个空白的 n 高列。不要只选择一个单元格,这一点很重要。
在公式文本框中键入 =MMULT(MINVERSE(coefficients_matrix_range), constants_vector_range),然后按 [CTRL][SHIFT][ENTER]。重要的是不要简单地按 [ENTER]。
这应该可以正常工作,因为您只有一个小型系统 (22x22)。虽然理想情况下,您不会直接反转矩阵,但在这种情况下应该没关系。
你绝对不想要克莱默的规则。由于其相当差的数值特性,它更多的是理论上的而不是实际的兴趣。
Excel LINEST 函数应该这样做 - 在许多情况下,它会返回比 MMULT(MINVERSE(...)...) 更好的结果。
您可能还会发现 LOGEST、GROWTH 和 TREND 函数很有用。
微软的 Solver Foundation怎么样?我似乎记得在快速版本附带的文档中有一些关于一组较小联立方程的例子。
你永远不应该考虑克莱默规则来解决线性系统!它是如此低效,即使是小型系统也无法执行。
Excel 不是解决线性系统的正确工具。如果我是你,我会编写一个简单的 python 脚本来读取 excel 文件,求解方程(使用 numpy)并将结果保存在 excel 可以读取的文件中。(更好的是,如果可以的话,完全避免使用 Excel)。
如果您在逆矩阵计算中遇到任何问题,例如过流/欠流/截断等,您始终可以使用求解器 - 否则获取 C 中的数字配方副本并转换为 VBA。
这可以是线性方程求解器,我们可以使用数学求解器来做数学求解器,方法是使用位于求解器的两个以上指数部分之间的数学方程,但找到线性方程求解器的更好方法。