我有一个由 22 个线性方程组成的系统(正好 22 个方程和 22 个未知数),这些方程是在 Excel 电子表格中动态生成的。有没有办法让 Excel 求解系统并为每个未知变量生成一个值?
另一个SO问题有很多关于用于求解此类方程的算法的有用信息。 克莱默规则看起来特别有希望,但我不确定如何在 Excel 中实现它。
如有任何帮助,我们将不胜感激!
这个页面给出了以下简单的方法:
输入 nxn 形式的系数矩阵 范围。
输入向量 n 高列中的常量。选择一个 空白 n 高柱。这很重要 你不只有一个细胞 已选中。
类型, =MMULT(MINVERSE(系数_矩阵_范围), 公式中的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。
这可以是线性方程求解器我们可以通过使用数学求解器来完成数学求解器,根的数学方程位于求解器的两个以上指数部分之间,但找到线性方程求解器的更好方法。
您可以使用 LINEST 轻松解决它:
系统:
U * ux + V * vx + W * wx = Ax
U * uy + V * vy + W * wy = Ay
U * uz + V * vz + W * wz = Az
其中 U、V 和 W 未知
输入:
X:
ux vx wx
uy vy wy
uz vz wz
是:
Ax
Ay
Az
公式:
=linest(Y,X,0)
输出:
W
V
U
0
根据需要反转并切片输出
反向:
=SORT(data,sequence(count(data),1,0,-1),1)
切片:
=FILTER(data, sequence(count(data),1,1,1) >= start)