数ならぬ

理学系のこと、特に数学について書きます。雑学的な知識もまとめていく所存。

昔、夏と冬の間の秋という季節の存在が中間値の定理によって保証されていた。

 秋という季節はなくなり、日本は四季が一つつゆと消え、寒暖の差は瀑布のごとくになった。秋麗(あきうらら) は雀の涙ほど僅少となって、昔日に羨望を抱かざるを得ない。

 それと同時に食欲の秋、スポーツの秋などという秋の文化は次第に人々からなくなってしまうのではないかと憂慮する。

 嘆いていてもしかたがない。なぜならこれから数学の話をするのだから。

 数学において、解がどれくらいの値かを予測することは重要である。数値計算が数学の証明上必要になる場面なぞいくらでもあるだろう。しかし、ここで残念なお知らせがある。

 それは、一般の関数では二次方程式のように解の公式があるとは限らないということだ。そこで、実数の近似解を求めるための手続きを人類は編み出してきた。

 このように、与えられた方程式から真の答え、すなわち解に十分に近い答えを求める手続き、もっと(つまび) らかに言えば、その手続きを繰り返していくことで、解にいくらでも近づける手続き、のことを求根アルゴリズムという。

求根アルゴリズムには様々なものがあるが、今回はおそらく最も単純である二分法と呼ばれる方法を紹介し、その原理を証明する。

 f(x)=0という方程式を解くことを考える。f(x)=x^3-x-1としても、f(x)=x-\cos xとしても良い。また、閉区間[x_0,y_0]ではfは連続かつ単調増加であり、f(x_0)\leq0,f(y_0)\ge0が成り立つとする。

 このとき、実数列x_n,y_nを次のように定める。

解数列の構成

f\bigg(\dfrac{x_n+y_n}{2}\bigg)\leq 0であればx_{n+1}=\dfrac{x_n+y_n}{2}と定め、そうでなければx_{n+1}=x_nと定める。

f\bigg(\dfrac{x_n+y_n}{2}\bigg)\ge 0であればy_{n+1}=\dfrac{x_n+y_n}{2}と定め、そうでなければy_{n+1}=y_nと定める。

 定義が分かりにくいので、定められた実数列を可視化する。

点が解に近づく

 定義で定めた実数列において、次のような定理が成り立つ。

二分法の原理

y_{n+1}-x_{n+1}\leq\dfrac{y_n-x_n}{2}が成立し、\displaystyle \lim_{n\to\infty}x_n=\lim_{n\to\infty} y_n=cとなってf(c)=0

 解の精度の保証をつけてくれるのが一番上で述べられている不等式である。これによれば、解が含まれる区間は繰り返すごとに\dfrac{1}{2}の長さとなる。

 早速証明をつけよう。必要な道具は単純なアルゴリズムから推定できるように、非常に簡単なものである。

Proof

 まず初めに、証明を楽に進めるための補題を示す。

区間は空ではない
y_n\ge x_nが成立する

Proof

 数学的帰納法により証明する。定義よりn=0のときは良い。x_n\leq y_nを仮定して、x_{n+1}\leq y_{n+1}を示す。f\bigg(\dfrac{x_n+y_n}{2}\bigg)の符号によって場合わけする。

 f\bigg(\dfrac{x_n+y_n}{2}\bigg)>0を仮定する。この時、x_{n+1}=x_ny_{n+1}=\dfrac{x_n+y_n}{2}が定義により成立するので、y_{n+1}-x_{n+1}=\dfrac{y_n-x_n}{2}\ge0が導かれる。

 f\bigg(\dfrac{x_n+y_n}{2}\bigg)<0を仮定する。この時、x_{n+1}=\dfrac{x_n+y_n}{2}y_{n+1}=y_nが成り立つので、y_{n+1}-x_{n+1}=\dfrac{y_n-x_n}{2}\ge0が成り立つ。

 f\bigg(\dfrac{x_n+y_n}{2}\bigg)=0を仮定する。このとき、x_{n+1}=\dfrac{x_n+y_n}{2}y_{n+1}=\dfrac{x_n+y_n}{2}が定義より導かれて、y_{n+1}-x_{n+1}=0が成り立つため不等式はこのときも成り立っている。 ◽︎

 これと似たような場合わけをすることで、定理の最初に掲げられた不等式が示せる。

精度の評価

y_{n+1}-x_{n+1}\leq\dfrac{y_n-x_n}{2}が成立する

Proof

 定義に則って示そう。y_{n+1}-x_{n+1}を場合わけして漸化式で変形する。f\bigg(\dfrac{x_n+y_n}{2}\bigg)>0とする。このとき、

y_{n+1}-x_{n+1}=\dfrac{x_n+y_n}{2}-x_n=\dfrac{y_n-x_n}{2}

が成立する。

f\bigg(\dfrac{x_n+y_n}{2}\bigg)<0とする。このとき、

y_{n+1}-x_{n+1}=y_n-\dfrac{x_n+y_n}{2}=\dfrac{y_n-x_n}{2}

が成立する。

 最後にf\bigg(\dfrac{x_n+y_n}{2}\bigg)=0とする。

 このとき、y_{n+1}-x_{n+1}=0が成り立つ。先ほど示した補題によってy_n-x_n\ge 0であるのでy_{n+1}-x_{n+1}\leq\dfrac{y_n-x_n}{2}が成り立っている◽︎

 x_n\leq x_{n+1}\leq y_0x_0\leq y_{n+1}\leq y_nを示す。これを示すことで単調収束定理によって

 \displaystyle\lim_{n\to\infty}x_n=x^{\star}\displaystyle\lim_{n\to\infty}y_n=y^{\star}が示せる。

 一番初めはx_n\leq x_{n+1}y_{n+1}\leq y_nを示すのが筋が良いだろう。

 f\bigg(\dfrac{x_n+y_n}{2}\bigg)\leq 0であればx_{n+1}=\dfrac{x_n+y_n}{2}と定義され、x_n\leq x_{n+1}x_n\leq y_nという不等式によって正しい。

 f\bigg(\dfrac{x_n+y_n}{2}\bigg)\leq 0でなければ、x_{n+1}=x_nが成り立ち不等式は自動的に満たされる。

 y_nについても同様の議論が成り立つ。f\bigg(\dfrac{x_n+y_n}{2}\bigg)\ge 0であればy_{n+1}=\dfrac{x_n+y_n}{2}と定義され、y_{n+1}\leq y_nx_n\leq y_nという不等式によって正しい。

 f\bigg(\dfrac{x_n+y_n}{2}\bigg)\ge 0でなければ、y_{n+1}=y_nが成り立つ。

 さて、この単調性の証明によりx_0\leq x_ny_n\leq y_0という不等式が成り立つことも同時に示される。これとx_n\leq y_nを合わせると、x_n\leq x_{n+1}\leq y_0x_0\leq y_{n+1}\leq y_nが示された。

 そして最初に示した不等式y_{n+1}-x_{n+1}\leq\dfrac{y_n-x_n}{2}を帰納的に用いることで、y_n-x_n\leq\dfrac{y_0-x_0}{2^n}が示せる。これによって\displaystyle\lim_{n\to\infty}(y_n-x_n)=0が成り立つ。よってx^{\star}=y^{\star}、つまり二つの数列の極限値が等しくなることが導かれた。

 ここでc=x^{\star}と置き直す。x_n,y_nの定義によってf(x_n)\leq 0\leq f(y_n)である。fの連続性によって\displaystyle \lim_{n\to\infty}f(x_n)=\displaystyle \lim_{n\to\infty}f(y_n)=f(c)が成り立つことが分かる。極限をとっても順序は保たれるので、f(c)\leq0\leq f(c)が成り立って、これによりf(c)=0が結論される◽︎

 ちょっと厳密性を要求すると途端に証明が長くなってしまったが、これにて証明は完了した。またこの二分法から次のような系が従う。

中間値の定理
f[a,b]上単調で連続な関数として、f(a)\leq0\leq f(b)を仮定すると、f(c)=0となるa\leq c\leq bが存在する

 さらに証明から分かることとして、次のような定理が成り立つ。

要求精度までの繰返し回数
f(x_n),f(y_n)\neq 0が成り立つとき、y_n-x_n<\epsilonをみたすn\dfrac{y_0-x_0}{\epsilon}<2^nを満たしている

 例えば二点0,1をとったとして、区間が0.01の範囲までに減少するのにかかる繰り返しの回数は\dfrac{1-0}{0.01}<2^nをみたす最小の自然数nである。それはn=7であるので7回二分法の手続きを行うことで解の不確かさが0.01まで確実に減らせるということである。

 最後に、二分法の利点と弱点について触れておく。二分法の利点は収束条件が緩く、またプログラムとして実装が非常に簡単なことにある。

 弱点としては、ほかの求根アルゴリズムよりも遙かに収束が遅いこと、それに加えて、重解を持っているような関数に対しては無力であることなどがあげられる。

 二分法は収束が一次収束、すなわち前回の解と近似解の差に比例して解と近似解の差が縮まっていく、であり、二次収束が保証されている求根アルゴリズムの方が圧倒的に早く近似値を得ることができるため、実用上は使う場面が限られる。

 また、重解は二分法の天敵である。重解において、f(y_0)\ge0,0\ge f(x_0)となるx_0,y_0が見つかったとき、それは解を求めることがすでにできていることを意味するからである。