日比谷高校のススメ

日比谷高校出身者たちが日比谷高校の紹介や、勉強に関する様々なことを語ります。

【数学小話】病的な数学⑥ 空間を埋め尽くす曲線

↓ここからカテゴリー別に記事を見ることができます。↓

前回はそこまででしたが、今回はディリクレの関数のように、本当の意味で病的な話になります。

 

数学における直線の扱いで「太さ、幅をもたない」という特徴がありますよね。この直線を何回も折り曲げたり曲げたりして出来たものが(幅のある)領域を埋め尽くしてしまう、という奇妙な例の紹介です。空間を埋め尽くす曲線はいくつもありますが、最も有名と思われるヒルベルト曲線について見てみます。

 

 

ヒルベルト曲線

歴史的に最初に正方形の全ての点を通る曲線(折れ線も曲線とします)を考えたのはペアノです。1890年、ペアノはペアノ曲線と呼ばれる曲線を考えました。

翌年、1891年にヒルベルトが考案したのがヒルベルト曲線です。こちらの方がより図で見て分かりやすい、ペアノ曲線よりシンプルな曲線でした。

最初にペアノが「こうすると出来てしまう」と発表し、翌年ヒルベルトが「こうするともっと簡単に出来てしまう」と発見した、という流れが見えますね。

さて、そのヒルベルト曲線を実際に作る手順をご紹介します。正方形の中の全てを点を通る折れ線を、次のように帰納的に作ることができます。

①「コ」の形の折れ線を折れ線1とする

②折れ線1を2分の1に縮小したものを4つ用意し、上2つは向きそのまま、下二つはそれぞれ(お互い逆方向に)90°回転させて置く。それぞれの小さい折れ線1をつなげて折れ線2とする(図参照)

③折れ線2に対して②と同じ操作をして折れ線3を得る

④以後、折れ線n-1から折れ線nを次々と作る

f:id:hby:20200527134937j:plain

これを限りなく繰り返していくことで、得られる折れ線はどんどんと複雑な、正方形内をぎっちりとひしめくようになります。この手順を限りなく繰り返していって出来る曲線、つまりn→∞とした極限の折れ線がヒルベルト曲線です。

有限のnで止めた場合の折れ線は当然正方形内の全ての点を通るわけではありません。しかし、n→∞とした極限であれば、フラクタル図形となりますし、全ての点を通ることになります。

これはまさに病的な例です。本来幅のない直線が、正方形という幅のある領域内の全ての点を通るのです。これはかなり直感に反しますよね。どうやっても折れ線には隙間があるように見えるのですが(nが有限の時はどれも隙間が空いている)、極限の折れ線はどうやら隙間がないのです。意味が分かりませんね。

 

また、この曲線を応用することで、立方体の中を埋め尽くす曲線も作ることが出来ます。(画像はWikipedia ヒルベルト曲線より引用)

f:id:hby:20200605034814g:plain
これは3ステップくらいの図でしょう。詳しくは触れませんが、帰納的に繰り返していってどんどん複雑な折れ線になっていくのだろう、ということは想像に難くないと思います。

また、2次元を埋め尽くすことができ、3次元もできたら、さらに一般のn次元の超立方体を埋め尽くす曲線も構成することが出来ます。もちろん高次元を我々が直接図示したり見ることは出来ませんが。

 

 

全ての点を通ることの証明

有限のnにおける折れ線の図は想像できます。nを9999不可思議まで増やすと1×1の正方形内をひしめくような曲線が出来ることは想像出来ます。しかしその正方形を拡大してみれば、やっぱりそこには隙間があるはずです。n→∞とした極限だと全ての点を通る、と言われても全く想像できません。ではこれをどう考えるかというと、この曲線を、
0から1までの実数をxy座標の点に対応させる関係
と思います。

ヒルベルト曲線の最初の折れ線1で見てみます。数直線の0から1までの区間を、正方形内の折れ線に対応させます。数直線上にある点が0の時は折れ線の一番左下から始まり、数直線上を1まで点が動くと、それに応じて正方形内の折れ線上を点が左下から右下まで動きます。

f:id:hby:20200605040648j:plain

例えば数直線上の0.5は折れ線のちょうど中間、(0.5,0.75)という点が対応し、数直線上の1/3は折れ線の1/3の地点、(0.25,0.75)という点が対応します。この画像の左にある数直線上を点が動くと、右にある正方形内の赤い折れ線上を点が動くイメージが掴めましたでしょうか。この対応が折れ線の正体だと思いましょう。

つまり、今見た折れ線1について、
数直線上の値t\ (0\leqq t\leqq1)に対して、座標平面上の点(x_1(t),y_1(t)) が対応する。
というような関数x_1(t),y_1(t)が存在します。例えば、(x_1(0.5),y_1(0.5))=(0.5,0.75)ですね。

これで、折れ線1を2つの関数の組として表すことができました。

では、折れ線2でも同じことをして関数 x_2(t),y_2(t)が得られます。

f:id:hby:20200605042118j:plain

(x_2(0.5),y_2(0.5))=(0.5,\frac{5}{8})(x_2(\frac{1}{3}),y_2(\frac{1}{3}))=(\frac{1}{8},\frac{7}{8})ですね。 これで折れ線2を表す関数の組が出来ました。

以下、同様に、折れ線nに対して、0以上1以下の実数tに対して、関数 x_n(t),y_n(t)が得られます。折れ線nを関数の組 x_n(t),y_n(t)で表すことが出来ました。

次に、この関数の組の列を考えます。各関数はnの値が増えるごとに少しずつ変化していきますが、nが限りなく大きくなると関数はほぼ変化しなくなります。
(x_1(t),y_1(t)),(x_2(t),y_2(t)),(x_3(t),y_3(t)),\dots
すなわち、n→∞とすると、ある関数の組 X(t),Y(t)に収束します。これがヒルベルト曲線の正体です。

実は、このようにして得られた関数の組X(t),Y(t)は、tを0から1まで動かすことで、正方形内の全ての点を通ることが示されます。

これで、ヒルベルト曲線が正方形内の全ての点を通ることが証明出来ました。

 

極限の曲線がどうなっているか書くことは出来ませんが、関数の組という形で、間接的に「見る」ことが出来、関数の話に落とし込んで証明できるという、なかなかテクニカルな話でした。

 

written by k

 

Copyright © 2017 日比谷高校のススメ All rights reserved.