使用 Excel 求解器,很容易找到该方程的解(x 和 y 的最佳值):
(x*14.80461) + (y * -4.9233) + (10*0.4803) ≈ 0
但是,我不知道如何在 Python 中执行此操作。现有的 scipy 优化库函数,如 fsolve() 或 lesssq() 似乎只适用于一个变量....(我可能只是不知道如何使用它们)...
有什么建议么?
Thanks!
>>> def f(x):
... return x[0]*14.80461 + x[1]*(-4.9233) + x[2]*(10*0.4803)
>>> def vf(x):
... return [f(x), 0, 0]
>> xx = fsolve(vf, x0=[0,0,1])
>>>
>>> f(xx)
8.8817841970012523e-16
由于解不是唯一的,未知的不同初始值会导致不同的(有效)解。
编辑:为什么这有效。嗯,这是一个肮脏的黑客行为。只是这样fsolve
及其亲属处理systems方程组。我在这里所做的,定义了一个由三个方程组成的系统(f(x)
返回一个三元素列表)对于三个变量(x
具有三个要素)。现在fsolve
使用牛顿型算法收敛到解决方案。
显然,系统定义不足:您可以指定两个变量的任意值,例如,x[1]
and x[2]
并找到x[0]
满足你唯一的非平凡方程。您可以通过指定几个初始猜测来明确地看到这一点x0
并看到不同的输出,所有这些都满足f(x)=0
达到一定的耐受度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)