步控制介绍

即使是局部模型以实际的Hessian为基础的 牛顿法,除非已经接近根或者极小值,否则模型的步骤可能不会使您更接近解. 下面的问题,就是一个简单的例子.

这里下载一个包含一些功用函数的程序包.
In[1]:=
Click for copyable input
这里给出一个不使用步控制进行根搜索的简单例子,其中迭代在两个点之间交替进行而不收敛. 注: 在某些平台上,您可能会看到收敛. 这是因为在机器数算术上的轻微变动,就可能足以打破这种振荡.    
In[2]:=
Click for copyable input
Out[2]=
下面给出启用步控制的相同例子. 由于第一个计算点没有降低函数的大小,线搜索对步骤进行了限制,因此迭代最终收敛到解.
In[3]:=
Click for copyable input
Out[3]=

一个良好的步控制算法可以避免出现重复的情况或从接近根或极小值附近的区域远离的情况. 然而,与此同时,当基于模型函数的步骤适当时,步长控制算法不应对它们进行限制,否则,算法的收敛速度将受影响. 两个常用的步长控制算法是 线搜索信赖域 方法. 在一个线搜索方法中,模型函数给出一个步骤方向,然后沿着这个方向搜索以找到一个可以达到收敛的适当的点. 在信赖域方法中,每一步要更新一个距离,而在这个距离内模型函数是被信任的. 如果模型步骤位于该距离之内,则可以被使用;否则,模型函数在信赖域边界上的极小值将被使用. 一般来说,信赖域方法更稳健,但是它们需要更多的数值线性代数运算.

这两个步控制方法在原先是在考虑极小化问题时发展出来的. 然而,当与优值函数一起使用时,它们也能够很好地运用于非线性函数的求根运算. 在 Mathematica 中,使用的是2-范数优值函数 .

New to Mathematica? Find your learning path »
Have a question? Ask support »