使用 scipy.optimize.minimize() 在区间内找到根 - 如何正确设置边界?

我试图在一个时间间隔内使用最小化()找到一个函数的根。[在这个例子中,这意味着我想在区间 $z\in[eps,a]$ 中找到满足 $1000*scipy.sin(z)-z=0$ 的 $z$ 值]


如果我从文档中正确理解,那意味着我必须使用 bounds 选项。但是,我得到ValueError: length of x0 != length of bounds error。


这是我的代码:


import scipy 

import scipy.optimize

def f(z):

    return 1000*scipy.sin(z)-z

scipy.optimize.minimize(f, 2*eps, bounds=(eps,a))

这是完整的错误消息。

http://img3.mukewang.com/6164f209000141ec10840433.jpg

慕神8447489
浏览 745回答 1
1回答

杨魅力

像这样:import scipy import scipy.optimizedef f(z):    return 1000*scipy.sin(z)-zscipy.optimize.minimize(f, 2*eps, bounds=[(eps,a)])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python