【发布时间】:2019-04-29 11:32:40
【问题描述】:
我正在尝试求解非线性方程组。
为此,我成功地在线使用 sympy 求解了一个由三个方程组成的系统。但它不再适用于 7 个方程,返回“操作超时”消息。 因此,我正在尝试使用标准 fsolve 来解决问题。但是,虽然我只用一组简单的 3 个方程就可以得到很好的结果,但 fsolve 却给了我不好的结果。
这是我写的代码(感谢我在这个论坛上找到的):
def equations(p):
w1, w2, m = p
f0 = w1+w2-1
f1 = w1*m+w2*(1-2*m)-1/3
f2 = w1*m**2+w2*(1-2*m)**2-1/5
return (f0,f1,f2)
w1, w2, m = fsolve(equations, (0,0,0))
print equations((w1,w2,m))
作为回报,它给了我这些(负面...)结果:
(0.0, -1.2378986724570495e-13, 5.1419979385514125e-13)
为了比较,sympy 给了我预期的结果。它给出了大约:
(0.333333, 0.666667, 0,122515)
您知道为什么 fsolve 在我的情况下不起作用吗?
提前谢谢你。
【问题讨论】: