scipy.optimize.fmin_ncg¶
- scipy.optimize.fmin_ncg(f, x0, fprime, fhess_p=None, fhess=None, args=(), avextol=1e-05, epsilon=1.4901161193847656e-08, maxiter=None, full_output=0, disp=1, retall=0, callback=None)[源代码]¶
使用牛顿-CG方法的函数的无约束最小化。
- 参数
- f :可调用
f(x, *args)
可调用 要最小化的目标函数。
- x0ndarray
初步猜测是这样的。
- fPrime :可调用
f'(x, *args)
可调用 f的梯度。
- fhess_p :可调用
fhess_p(x, p, *args)
,可选可调用 计算f乘以任意向量p的海森的函数。
- FHESS :可调用
fhess(x, *args)
,可选可调用 函数来计算f的Hessian矩阵。
- args元组,可选
传递给f、fPrime、fhess_p和fhess的额外参数(向所有这些函数提供同一组额外参数)。
- epsilon浮动或ndarray,可选
如果FHESS是近似值,请使用此值作为步长。
- callback可调用,可选
用户提供的可选函数,在每次迭代后调用。调用为callback(Xk),其中xk是当前参数向量。
- avextol浮动,可选
当最小化器中的平均相对误差低于此值时,假定收敛。
- maxiter整型,可选
要执行的最大迭代次数。
- full_output布尔值,可选
如果为True,则返回可选输出。
- disp布尔值,可选
如果为True,则打印收敛消息。
- retall布尔值,可选
如果为True,则在每次迭代时返回结果列表。
- f :可调用
- 退货
- xoptndarray
最小化f的参数,即,
f(xopt) == fopt
。- fopt浮动
xopt处函数的值,即,
fopt = f(xopt)
。- fcalls集成
进行的函数调用数。
- gcalls集成
进行的渐变调用数。
- hcalls集成
发出的黑森语呼叫数。
- warnflag集成
由算法生成的警告。1:超过最大迭代次数。2:线路搜索失败(精度损失)。3:遇到NaN结果。
- allvecs列表
如果Retall为True,则每次迭代的结果为True(见下文)。
参见
minimize
与多变量函数的最小化算法的接口。看“牛顿-CG” method 尤其是。
注意事项
只有一个 fhess_p 或 fhess 需要给予。如果 fhess 被提供,则 fhess_p 将被忽略。如果两者都不是 fhess 也不是 fhess_p ,则将使用上的有限差分来近似Hessian乘积。 fprime 。 fhess_p 必须计算任意向量的赫辛乘积。如果未给出,则有限差分在 fprime 都是用来计算的。
牛顿-CG法又称截断牛顿法。此函数与scipy.Optimize.fmin_tnc不同,因为
- scipy.Optimize.fmin_ncg是使用NumPy纯Python编写的
和scipy,而scipy.Optimize.fmin_tnc调用C函数。
- scipy.Optimize.fmin_ncg仅用于无约束最小化
而scipy.Optimize.fmin_tnc用于无约束最小化或框约束最小化。(框约束分别给出每个变量的下限和上限。)
参考文献
Wright&Nocedal,“数值优化”,1999年,第140页。