Loading [MathJax]/jax/output/CommonHTML/jax.js
スポンサーリンク

「中間値の定理を証明しよう!」〜連続な関数の性質〜【解析学の基礎シリーズ】関数の極限編 その14

解析学

本記事の内容

本記事は中間値の定理の証明を与える記事です。

本記事を読むに当たり関数の連続性と区間縮小法を知っている必要があるため、その際は以下の記事を参照してください。

では、まずは中間値の定理のイメージを復習しましょう。

中間値の定理のイメージの復習

中間値の定理はどういうイメージだったかというと、

関数が閉区間で連続であり、かつ定義域の端点での関数の値が異符号であれば、その関数は必ずx軸と少なくとも1回は交わる。

ということでした。
詳しくは【解析学の基礎シリーズ】関数の極限編 その13を参照してください。

実は、中間値の定理の主張はもう少し広いです。
「どういうことか?」というと、「x軸と少なくとも1回は交わる。」という部分の主張がもう少し広いです。
要は、x軸、すなわちy=0と交わるということを「y=Dと少なくとも1回は交わる。」という主張に直すことができます。
つまりは上下(y軸方向)に平行移動したということです。

図とともに説明します。
とどのつまり、こういうことです。

関数が[a,b]で連続であり、かつ定義域の端点a,bでの関数の値f(a),f(b)f(a)<D<f(b)であれば、その関数は必ずy=Dと少なくとも1回は交わる。

まさに、前回述べた中間値の定理を上下に平行移動した主張になっています。
前回述べたイメージはD=0の場合だった、というわけです。

今回は、y=Dの場合を証明していきます。

では、中間値の定理とは何か、ということを明示します。

中間値の定理の明示

中間値の定理 関数f:[a,b]R[a,b]で連続であり、f(a)<f(b)とする。 このとき、f(a)<D<f(b)を満たす任意のDRに対してf(d)=Dを満たすd(a,b)が存在する。 すなわち、 DR:f(a)<D<f(b)(d(a,b) s.t. f(d)=D) が成り立つ。

次にどういう発想で証明するかを説明します。

証明をするための発想

筆者は最初にこの定理を知ったとき、「当たり前じゃね?」と思いました。
「そりゃあ連続なら交わるでしょうよ」と思いました。
また同時に「どうすんだよ」とも思いました。
しかし、図を描いてみて「この主張は直感的には成り立つよね。ということは、この主張はf(x)=Dという方程式の解xを求めろってことじゃないか?」
と思ったわけです。

示すことはf(d)=Dとなるようなd(a,b)の存在です。
つまり、どのようにdを見つけるのか、というアルゴリズムを提示することで証明が完了します。

ここで、「c[a,b]を任意に取ってきて、f(c)<Dだったらば、f(c)Dに近づくようにc+ϵ(ちょっとずらしてDに近づける、という意味)の値を考えて、f(c)>Dだったらばf(c)Dに近づくようにcϵ(ちょっとずらしてDに近づける、という意味)の値を考える。という操作を繰り返していけばdが求まるんじゃないか?」と思ったわけです。
(コンピュータで方程式を解くときはこのようにして解くんじゃないかな、なんて思ったりしてます。)

ここで、この発想に至ったらば、「もしかしてもしかすると、だな。まさか区間縮小区法が使えるんじゃないか?」と思えるわけです。
「だって、区間縮小法はどんどん区間を狭めてって収束先を見つける手法なんだからf(d)=Dに収束するdを見つけることと似てるじゃんね。」というわけです。

ネタバラシすると、中間値の定理の証明方法はいくつかあります。
筆者と同じ発想で区間縮小法で証明する方法もあれば、ワイエルシュトラスの上限公理を使った証明方法もあります。
本記事では区間縮小法を使った証明を紹介します。

いざ、証明

証明に際して、区間縮小法が使えそうだ、と思っているわけですから、「どうやって縮小する区間(どんどん小さくなる区間)を作るんだ?」ということが肝になってきます。
むしろこの区間を作ってしまえばおしまいです。
区間縮小法は何だったかと言うと、

区間縮小法(区間縮小の原理) {In}nNを縮小するようなRの有界な閉区間の列とする。 すなわち、任意のnNに対して、InRの閉区間で I1I2InIn+1 を満たすとする。このとき、次が成り立つ。
  • 任意のInに含まれる実数が存在する。すなわち nNIn,
  • 特に、In=[an,bn]として、limn(bnan)=0であれば(すなわち、区間がどんどん小さくなっていけば)、共通部分は一点αのみからなる集合である。すなわち、
  • nNIn={α} である。このとき、 limnan=limnbn=α である。

でした。

以前区間縮小法を使った証明にはデデキントの定理やらボルツァーノ-ワイエルシュトラスの定理がありました。
これらはアルキメデスの原理を追加することで同値な定理ですが、主張としては別です。
しかし、どのように区間縮小法を使うのか、ということについては同じです。
与えられた区間の中のある点を目指して長さを半分ずつにしていくことで、どんどん小さくなる区間(縮小する区間)の列と数列を作りました。

今回もこの発想でできるのではないか?ということでやってみます。
(あくまで予想です。)
「マネしてやってみよう!」というわけです。

では行きましょう。

(証明の流れ)

  • (ステップ1):デデキントの定理の証明やボルツァーノ-ワイエルシュトラスの定理を証明するときと同じような縮小する区間を作る。
  • (ステップ2):区間縮小法から縮小する区間はある一点だけの集合になる。
  • (ステップ3):その一点が求めたいdであることを示す。

中間値の定理の証明

(ステップ1):デデキントの定理の証明やボルツァーノ-ワイエルシュトラスの定理を証明するときと同じような縮小する区間を作る。

関数f:[a,b]R[a,b]で連続であるとします。
どんどん小さくなる区間の列を作りたいということを念頭に置きます。
このとき、f(a)<D<f(b)を満たす任意のDRに対して、数列{an}nN{bn}nNを以下のように決めます。
※文章だとわかりにくいかもしれないので、その際はまず以下の文章の後にある図を見てから、下記の文章を読んでみてください。

n=1のときa1=ab1=bとします。
どんどん小さくなる区間を作りたいので、まずは区間の端っこを使った一番大きい区間を作るためです。
このとき、b1a1=baです。
a1=ab1=bであり、尚かつf(a)<D<f(b)ですから、
f(a1)<D<f(b1)
が成り立ちます。

n=2のときa2b2を次のように決めます。

  1. f(a1+b12)<Dのとき
    {a2=a1+b12b2=b1
    とします。
    このとき、f(a1+b12)=f(a2)<Dが成り立ちます。
  2. f(a1+b12)>Dのとき
    {a2=a1b2=a1+b12
    とします。
    このとき、f(a1+b12)=f(b2)>Dが成り立ちます。

このようにすることで、[a,b]よりも小さく小さい区間を作ることができ、さらにはf(d)=Dを満たすdに近づきます。
1.の場合、2.の場合のいずれであっても
b2a2=12(b1a1)=12(ba)
が成り立ちます。
さらに、
f(a2)<D<f(b2)
が成り立ちます。
もし仮にf(a1+b12)=Dであったのなら、
d=a1+b12
ということが分かるので、証明はおしまいです。

①、②と同じ手続きで数列{an}nN{bn}nNを決めます。(本質的には数列を決めるというより、その数列の値を端点とする区間を決めることになります。)

n=nのとき

  1. f(an1+bn12)<Dのとき
    {an=an1+bn12bn=bn1
    とします。
    このとき、f(an1+bn12)=f(an)<Dが成り立ちます。
  2. f(an1+bn12)<Dのとき
    {an=an1bn=an1+bn12
    とします。
    このとき、f(an1+bn12)=f(bn)>Dが成り立ちます。
  3. f(an1+bn12)=Dのとき
    d=an1+bn12とすることで証明が終わります。

このときも、先と同じで1.、2.、3.の場合のうち3.の場合は既に証明が終わっていることになるので、1.、2.のいずれの場合出会ったとしても、
bnan=12(bn1an1)=12n1(ba)
が成り立ちます。
さらに、
f(an)<D<f(bn)
が成り立ちます。

さて、これで数列{an}nN{bn}nNの値を端点とする縮小する区間が作れてような気がします。
しかし、まだ「ような気がする」だけであって、本当に縮小するのかどうかを考えなければなりません。
つまり、{an}nNが単調増加数列で{bn}nNが単調減少数列であることを確かめなければなりません。
「いやいや。縮小するように作ったんだからそりゃそうでしょ。」と思うかもしれませんが、確認してみましょう。

まずは{an}nNが単調増加数列かどうかです。

  • f(an1+bn12)<Dのとき
    an=an1+bn12です。
    このとき、
    anan1=(bn1an1)2=12n1(ba)
    です。
    任意のnNに対して、12n1>0で、かつba>0ですので、12n1(ba)>0です。
  • f(an1+bn12)>Dのとき
    an=an1です。

従って、任意のnNanan1ですので、{an}nNは単調増加数列です。

次に{bn}nNが単調減少数列かどうかです。

  • f(an1+bn12)<Dのとき
    bn=bn1です。
  • f(an1+bn12)>Dのとき
    bn=an1+bn12です。
    このとき、
    bnbn1=(an1bn1)2=12n1(ba)
    です。
    任意のnNに対して、12n1>0で、かつba>0ですので、12n1(ba)<0です。

従って、任意のnNbnbn1ですので、{bn}nNは単調減少数列です。

これでようやく、「数列{an}nN{bn}nNの値を端点とする縮小する区間が作れた。」と断言できます。
さらに、bnan=12n1(ba)ですので、
limn(bnan)=limn12n1(ba)=0

(ステップ2):区間縮小法から縮小する区間はある一点だけの集合になる。

さて、これで区間縮小法の仮定を満たしたことになります。
つまり、
limnan=limnbn=α
というαRが存在します。
もともとは縮小する区間を作ってどんどん範囲を狭めることによってdを見つけたいな、という話でしたので、もしこのαdの正体であれば嬉しいわけです。
というか証明が終わります。
要は、f(α)=Dを証明したいわけです。

(ステップ3)α=dを示す。

「どうしよっかな」となるわけですが、limnan=limnbn=αなのですから、f(limnan)=Dを示せば良いことになります。
そこで、まだ使っていない事実f(an)<D<f(bn)に着目します。
すると、
limnf(an)<limnD<limnf(bn)limnf(an)<D<limnf(bn)
ですので、仮にlimnf(an)=f(limnan)だったらば、
limnf(an)<D<limnf(bn)f(limnan)<D<f(limnbn)f(α)<D<f(α)f(α)=D
となります。
これは個人の視点に依りますが、筆者は
「連続な関数だったら、定義域内のどの点でも必ず関数の値が1つだけ定まっていて、しかもその値が飛び値でもないわけだから、定義域内の数列の極限とその極限での関数の値が一致しそうだな。でも飛び値があるような不連続な関数だったら必ずしも一致しないな。」
と思うので、本当に正しいかどうか証明してみます。

補題 IRとする。関数f:IRIで連続であり、数列{xn_nNI内の数列とする。 さらに、aRに対して、limnxn=aとする。 このとき、 limnf(xn)=f(a) が成り立つ。 これは limnf(xn)=f(limnxn) とも書ける。 すなわち、 (ϵ>0)(NN) s.t. (nN:n>N|f(xn)f(a)|<ϵ) が成り立つ。

補題の証明

示したいことは
(ϵ>0)(NN) s.t. (nN:n>N|f(xn)f(a)|<ϵ)
です。
毎度のことでδを見つけてきましょう。

まず、fIで連続なので、aIでも連続です。
従って、
(ϵ>0)(δ1>0) s.t. (xI:0<|xa|<δ1|f(x)f(a)|<ϵ)
が成り立ちます。
また、数列{xn}nNaに収束するので、
(ϵ2>0)(NN) s.t. (nN:nN|xna|<ϵ2)
が成り立ちます。
このϵ2は任意の正の実数ですので、ϵ2=δ1でも成り立ちます。
すなわち、
(NN) s.t. (nN:nN|xna|<δ1)
が成り立っています。
このときxnIで、尚つ|xna|<δ1)が成り立っているので、|f(xn)f(a)|<ϵが成り立ちます。
すなわち、
(ϵ>0)(NN) s.t. (nN:n>N|f(xn)f(a)|<ϵ)
です。

補題の証明終わり

さて、戻りましょう。
今、補題からlimnf(an)=f(limnan)が分かりました。
従って
limnf(an)<D<limnf(bn)f(limnan)<D<f(limnbn)f(α)<D<f(α)f(α)=D
が成り立ちました。

以上のことからf(α)=Dが分かったので、dの正体はαだったことが分かります。
従って、中間値の定理が成り立ちます。

中間値の定理の証明終わり

今回は中間値の定理の証明を説明しました。
中間値の定理というのは

関数が[a,b]で連続であり、かつ定義域の端点a,bでの関数の値f(a),f(b)f(a)<D<f(b)であれば、その関数は必ずy=Dと少なくとも1回は交わる。

ということで、証明には複数の手法がありますが、今回は区間縮小法で証明しました。

次回は関数の連続性から得られるもう一つの有名な定理、平均値の定理のイメージについて解説します。

乞うご期待!質問、コメントなどお待ちしております!

この記事の内容をより詳しく知りたい方は以下のリンクの本を参照してください!
ちなみに「解析概論」は日本の歴史的名著らしいので、辞書的にもぜひ1冊持っておくと良いと思います!

コメントをする

タイトルとURLをコピーしました