ARTICLE · 1190926
用Excel“规划求解”来解方程
用Excel“规划求解”来解方程



再打开“规划求解”,输入限制条件: 设置目标:$B$5, 目标值为“35” (对应于 “B2+C2=35") 遵守约束:$B$6=94 (对应于“=B2*2+C2*4") 




EXCEL有一个功能叫做“规划求解”, 它的核心逻辑是通过更改变量单元格的取值,在预先设定的约束条件范围内,自动计算并得到目标单元格的最优化结果。它有两个硬性前提:
一是目标单元格必须包含与变量相关的计算公式。
二是必须明确设置对应的约束规则。
正常情况下,可以从菜单栏 “数据”中找到,如下截图所示:

如果没有的话,可以先加载一下,点击菜单“开发工具”,在加载项中选中“规划求解加载项”:


有了“规划求解”,能做些什么?不谈那么复杂的,先来两个方程试试,先来个“鸡兔同笼”问题,其实就是一个二元一次方程:
鸡兔同笼问题最早记载于南北朝时期的《孙子算经》,原题为:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
假设鸡的数量是x, 兔子的数量是y,则方程为:
x+y=35
2*x+4*y=94
如下图所示,将鸡的数量放到单元格B2, 兔子的数量放到单元格C2,里面暂时都填“0”。
头的数量放到单元格B5, 输入公式:“=B2+C2"
脚的数量放到单元格B6, 输入公式:“=B2*2+C2*4"



点击“求解”,再“确定”,结果就出来了。
再来一个二元二次方程:

2*B2^2+3*B3=74
6*B2+5*B3^2=350
其中B2,B3可以看作是变量x,y,剩下的操作基本上都是一样的,只是设置目标,可变单元格,以及设置的约束条件不同。

再来一个更现实的,凑发票,有一堆发票,把其中的几个的金额加起来,等于目标金额,这个手动去凑还是比较麻烦的,如果用规划求解倒是很容易 :

结果凑出来了,把B列中显示“1”所对应的发票,加起来刚好等于14216。















































































