布伦特方法

当寻找实值函数的一个实数单根的时候,我们有可能利用问题的特殊几何结构,及函数由负向正,或由正向负穿过轴线. 布伦特方法 [Br02] 实际上是一个有保障的割线法,即它总是能保持一个点,在该点函数是正的,以及另一个点,在该点函数是负的,以便使得根总是被包围. 在任何特定的步骤,都要在插值(正割)步骤和二分法之间做一个选择,而选择的方式是要确保最终的收敛.

如果给 FindRoot 的两个实初始条件包围一个实函数的根,那么将使用布伦特方法. 因此,如果问题是一维的,并且您可以决定包围一个根的初始条件,这往往是一个不错的想法,因为布伦特方法是可用于 FindRoot 的最稳健的算法.

虽然基本上所有求解非线性方程组和局部极小值的理论都是基于光滑函数的,布伦特方法以其足够稳健,使您甚至可以对不连续函数的零点得到一个良好的估计.

这里加载一个包含一些功用函数的程序包.
In[1]:=
Click for copyable input
这里显示在试图寻找一个不连续函数的根的过程中,所执行的步骤和函数求值.
In[2]:=
Click for copyable input
Out[2]=

当根被紧密地包围,但是该方法又不能够找到一个为零的函数值的时候,它会给出了一个提示信息. 这种稳健性在非常陡峭的连续函数上也得到了很好的保持.

这里显示在寻找一个在根附近迅速变化的函数的根的过程中,所用的步骤和函数求值.
In[3]:=
Click for copyable input
Out[3]=