ブレント法

実数値関数の簡単な実数解を求めるときは,関数が負から正に,またはその逆方向に軸を横断するという,この問題の特殊な幾何学性を利用することができる.ブレント法[Br02]は,根が常に囲い込まれるように,関数が正である点と負である点とを常に保持している安全な割線法である.指定された任意のステップで,補間された(割線)ステップといずれ収束することが保証されている2分法のどちらでも選べる.

実関数の根を囲い込む実数の初期条件が2つFindRootに与えられると,ブレント法が使われる.このように,一次元で操作していて根を囲い込む初期条件が決定できるのであれば,そうするのも悪くはない.ブレント法はFindRootで使うことのできるもっとも強力なアルゴリズムだからである.

しかし,たとえ非線形方程式と極小化を解く理論のすべてが滑らかな関数に基づいているとしても,ブレント法は十分に強力なので,不連続関数のゼロ交差もうまく見積れる.

いくつかのユーティリティ関数を含むパッケージをロードする.
In[1]:=
Click for copyable input
次は不連続関数の根の探索で使われたステップと関数評価を示している.
In[2]:=
Click for copyable input
Out[2]=

根が極めて近くで囲い込まれると,メソッドはあきらめて警告メッセージを出すが,関数の値(0)を見付けることはできない.この強力さは極めて急な連続関数でも見られる.

次は根付近で急速に変化する関数の根の探索に使われるステップと関数評価を示している.
In[3]:=
Click for copyable input
Out[3]=