我试图用Python找到函数f的根y。在
这是我的代码:def f(y):
w,p1,p2,p3,p4,p5,p6 = y[:7]
t1 = w - 0.99006633*(p1**0.5) - (-1.010067)*((1-p1))
t2 = w - 22.7235687*(p2**0.5) - (-1.010067)*((1-p2))
t3 = w - 9.71323491*(p3**0.5) - (-1.010067)*((1-p3))
t4 = w - 2.43852877*(p4**0.5) - (-1.010067)*((1-p4))
t5 = w - 3.93640207*(p5**0.5) - (-1.010067)*((1-p5))
t6 = w - 9.22688144*(p6**0.5) - (-1.010067)*((1-p6))
t7 = p1 + p2 + p3 + p4 + p5 + p6 - 1
return [t1,t2,t3,t4,t5,t6,t7]
x0 = np.array([-0.01,0.4,0.1,0.2,0.1,0.1,0.1])
sol = scipy.optimize.root(f, x0)
print sol
Python找不到根。但是有一个,我在Matlab中用函数fsolve找到的。在
它是:
[0.3901,0.6166,0.0038,0.0202,0.2295,0.1076,0.0223]
我真的很想用Python。有人能解释一下为什么吗scipy.optimize.root在Python中不收敛,而在Matlab中则收敛?在
仅供参考,scipy.optimize.solve也不收敛。在