【发布时间】:2019-01-15 10:51:20
【问题描述】:
我有一个这种类型的系统:
a = alpha(x,k)
b = beta(x,k,alpha)
gamma(x,k,a,b) = 0
x、a 和 b 作为未知数。 像下面的示例那样设置/解决它是否正确?
k=1.5
def gamma(x,k):
def alpha(x,k):
return (x-k)**3
def beta(x, f1):
return x + f1(x,k)
return x**2 - alpha(x,k) - beta(x, alpha)*x
x, info, flag, msg = fsolve(gamma, 0., args=(k), full_output=True)
print x
print info
xp = np.linspace(-5, 5)
yp = [gamma(xx, k) for xx in xp]
plt.plot(xp, yp, '.-b')
plt.grid()
打印出来的:
[1.49999677]
{'qtf': array([-8.8817842e-16]), 'nfev': 44, 'r': array([2.57880614e-10]), 'fjac': array([[-1.]]), 'fvec': array([0.])}
如果是这样,我怎样才能让 fsolve 返回 both 根,如图所示?
graph of solutions from gamma
提前致谢!
【问题讨论】:
-
您可以使用不同的初始值启动多个 fsolve 实例并收集输出
-
注意:可以直接写
yp = gamma(xp, k),因为gamma与 Numpy nd-arrays 一起使用
标签: python scipy nonlinear-optimization