在SciPy 1.0.0中,根据其文档,
在这里,
另一种解释可能是
我是否误解了文档,或者这是SciPy中的一个错误?如果按照预期工作,
scipy.optimize.line_search
有一个可选参数amax
,它确定了“最大步长”。因此,我期望第一个返回值alpha
始终小于给定的amax
,但实际情况并非如此,如下面的示例所示:from scipy.optimize import line_search
def f(x):
return x[0]**2 + x[1]**2
def df(x):
return 2*x
x = np.array([4, 5])
line_search(f, df, x, -df(x), amax=0.001)
# Returns (0.5, 3, 1, 0.0, 41.0, array([ 0., 0.]))
在这里,
alpha
的值为0.5,但amax
的值为0.001,小于0.5。另一种解释可能是
amax
限制了输出值x_new
和x0
之间的距离,但事实并非如此。我是否误解了文档,或者这是SciPy中的一个错误?如果按照预期工作,
amax
的正确解释是什么?有没有其他方法来限制执行线搜索的alpha范围?