1

ドラゴン曲線による平面充填定理の証明

195
0

以前の記事で書いたように、ドラゴン曲線を4つの方向に伸ばすと、それにより平面を覆うことができる。具体的には、平面を座標軸に平行な直線で区切って格子を作るときに、隣接格子点を結ぶ線分をどれもちょうど1回だけ通るように、4つの曲線を伸ばしていくことができる。こんな風に。
ドラゴン充填1 ドラゴン充填1
このことを証明したい。それには、この形式だと具合が悪いので、45°回転させてこの形で証明する。
ドラゴン充填2 ドラゴン充填2
座標軸はこのように取り、原点から4つの方向に伸ばすとする。長さについては軸との交わりが偶数の整数点(±2k±2li)、つまり各セグメントは2の長さとする。複素数が活躍する。方針としては、ドラゴン曲線の構成法を見直すことにより、各セグメントの中点の全体を表す式を立てる。それらの全体と、次のような点:
m+ni2,   m, n
という点の全体が1対1に対応することを示せば証明が終わる。すなわち、このような点は必ずいずれかのドラゴン曲線のいずれかのセグメントの中点であり、その表し方は一通りしかないことを言えばよい。

ドラゴン曲線復習

ドラゴン曲線は方向列[0]からスタートして
[0][0,2][0,2,4,2][0,2,4,2,4,6,4,2]
のように変化していくもの。数字はモジュロ8の足し算でπ/4に掛けて進行方向が出る。メソッドは、
[a0,a1,,an1,an1+2,,a1+2,a0+2]
である。すなわち逆にたどって2を足す。上の図では、それを8分割で言うと1,3,5,7からスタートさせている。実際は0から始まるものだけ計算して角度をずらしているけど。
作品ページ
ソースコード:

      let a = 0;
let b = 0;
let f = 0;

const SEG_SIZE = 40;

let palette = [[255, 255, 255], [120, 120, 255], [120, 255, 120], [255, 120, 120]];

function setup(){
    createCanvas(640, 640);
    background(0);
    strokeWeight(2);
}

function draw(){
    translate(320, 320);
    let e = f & 1;
    let h = 1;
    while(f >= h){
        if(!(f & h) && (f & (h * 2))){ e += 2; }
        h *= 2;
    }
    c = SEG_SIZE * cos(e * PI / 2 - PI / 4);
    s = SEG_SIZE * sin(e * PI / 2 - PI / 4);
    let r = 4;
    while(r--){
        rotate(PI / 2);
        stroke(...palette[r]);
        line(a, b, a + c, b + s);
    }
    a += c;
    b += s;
    f++;
}
    

逆にたどって2を足すということは、2べきで区切った先の点はそこからスタートに戻る経路をたどるそれを、90°回転させながら進むということ。こんな風に:
説明 説明
これらの2べき番目の点が重要である。白であらわされるドラゴン曲線の2べき項数の点(0,1,2,4,8,)は、まず11iで、あとはそれに1+iを掛けて行ってできる点になる。すなわち、
0,  1i,  (1i)(1+i)k   (k=1,2,3,4,)
この点を中心にそれまでの部分を90°回転させて複製する行為を繰り返すわけ。それによりそれまでの曲線に乗っていた点zは、その時点での区切り点をαとして、
(i)(zα)+α=(i)z+(1+i)α
に移る。特にz=0は、
(i)(0α)+α=(1+i)α
になる。だから区切り点は1iから始まって1+iを繰り返し掛けていく感じになる。これが基本。
 この白いドラゴン曲線のセグメントの中点の座標をこれから調べる。最初は(1i)/2でそこからさっきの計算で求めていく。他の3つについては、これらを90°回転させて得られる。すなわちi1,2,3回掛けたものになる。

セグメントの中点を表す式

回転の中心をαとして、メソッド:
z  (i)z+(1+i)α
を繰り返し適用する。
 最初は(1i)/2からスタートする。β=(1i)/2とおく。最初の基準点である1iα=1iとおく。
β,  (i)β+(1+i)α.
次の基準点は(1+i)αでこれにより回転すると次が得られる:
(i)β+(1+i)2α,  (i)2β+(i)(1+i)α+(1+i)2α.
次の基準点は(1+i)2αでこれにより回転すると次が得られる:

  • (i)β+(1+i)3α,
  • (i)2β+(i)(1+i)α+(1+i)3α,
  • (i)2β+(i)(1+i)2α+(1+i)3α,
  • (i)3β+(i)2(1+i)α+(i)(1+i)2α+(1+i)3α.

次は(1+i)3αを基準として回転、これを繰り返す。すると、次のような形式の点が得られることになる。
(i)mβ+(i)m1(1+i)b1α++(1+i)bmα.
ただしm01b1<<bm. m=0の点がβに対応する感じ。
 これらはすべて(i)0=1で終わっている。それにi1,2,3回掛けることで、中点の座標がすべて得られる。すなわち、セグメントの中点の座標はすべて次の形式で表現される。
(i)m+kβ+(i)m+k1(1+i)b1α++(i)k(1+i)bmα.
ただしm0, k=0,1,2,3, 1b1<<bm.

ドラゴン格子の中点の形式

原点から4方向に延びるドラゴン曲線のセグメントの中点の座標の全体は次の式であらわされる。
β=(1i)/2,   α=1i,
(i)m+kβ+(i)m+k1(1+i)b1α++(i)k(1+i)bmα.
ここにm0で(m=0の場合はβi倍の項だけ)、
1b1<<bm
であり、k=0,1,2,3である。kの値により、それに応じたドラゴン曲線の上の点であることが分かる。最高位のbmで何回目の複製で得られる点であるかがわかる。

示すことは、すべての奇数点:
z=(2a+1)+(2b+1)i2    (a,bは整数)
がこの形式で書けて、その書き方が一意であることである。
 このままだと証明しづらいのでちょっといじる。(i)1ずつの降べきなので、i1ずつの昇べきで書き直せる。また、どんなiのべきも(i)0,1,2,3のべきで書き直せる。だから次のような数の全体としてもいい。
ϵ(β+i(1+i)b1α+i2(1+i)b2α++im(1+i)bmα),
ϵ{1, i, 1, i},    m0,    1b1<<bm.
ϵiのべき、というかガウス整数環の単元。この形式で証明する。

表現の一意性の証明

一意性の証明。帰納法による。
ϵ(β+i(1+i)b1α++i(1+i)bmα)=ϵ(β+i(1+i)b1α++i(1+i)bmα)
だとする。まず両辺に1+iを掛ける。すると、
(1+i)β=1,   (1+i)α=2
だから、
ϵ(1+2i(1+i)b1++2i(1+i)bm)=ϵ(1+2i(1+i)b1++2i(1+i)bm)
となる。b1b11以上だからこれは
ϵ(1+(2+2i)ζ)=ϵ(1+(2+2i)ζ)   (ζ, ζZ[i])
と書ける。これよりモジュロ2+2iϵϵ11となるが、2, 1i, 1+iはいずれも2+2iで割り切れないから、ϵϵ1=1ϵ=ϵを得る。すなわち二通りに書けるとき単元部分は等しい。ゆえに、
(1+i)b1++(1+i)bm=(1+i)b1++(1+i)bm
となる。このことからどっちかのmが正ならもう片方のmも正になることが分かる。
 次に、たとえばb1<b1とすると、両辺を(1+i)b1で割って、
1+(1+i)b2b1++(1+i)bmb1=(1+i)b1b1++(1+i)bmb1
となるが、1+iの指数はすべて正だから、実部と虚部のパリティを考えると矛盾である。よってb1=b1で、両辺からこれを除く。
 これを繰り返す。すると、mmだとどっちかが先に0になってしまうから矛盾と分かる。だからm=mで、さらに指数はすべて一致する。これで示された。

表現可能性の証明

次を示す。

奇数点の表現定理

複素数zは次の形とする。
z=(2a+1)+(2b+1)i2,    a,b
このとき、zを次のように書ける。
z=ϵ(β+i(1+i)b1α++im(1+i)bmα).
(ϵ{1, i, 1, i},   β=1i2,   α=1i,   m0,   1b1<<bm)

まずp=2a+1, q=2b+1とおく。これらは奇数。
w=(1+i)z=pq2+p+q2i=s+ti
とおくと、st,s+tは奇数だから、s,tはパリティが異なる。そこで、これとモジュロ2+2iで等しい単元を取る。これは一意的に存在する。まずモジュロ2+2iの代表元は8つで、
0, 1+i, 1i, 2, 1, i, 1, i
が取れる。このうち実部と虚部のパリティが異なるものが同値となるのはもちろん後者4つ、つまり単元。単元同士はモジュロ2+2iで等しいと一致する。よって、
w=ϵ+(2+2i)ζ,   ζZ[i]
と書けて、
z=ϵβ+2ζ=ϵβ+iϵ(1+i)ζα    (β=1i2,  α=1i,  ζ=(i)ϵ1ζ)
と書ける。これより、
z=ϵ(β+i(1+i)ζα)
だから、あとはζというか一般のガウス整数ζが次のように書けることを言えばよい:
ζ=(1+i)c1+i(1+i)c2++im1(1+i)cm.
m1,  0c1<c2<<cm.
なお、ζ=0の場合、つまりzβの単元倍の場合はすでに終わっているので、以下ではそうでないとする。

ガウス整数の展開

任意の0でないガウス整数ζZ[i]は次の形式に書ける:
ζ=(1+i)c1+i(1+i)c2++im1(1+i)cm.
ただしm1,  0c1<c2<<cm.

N=|ζ|2は整数なので、これにもとづいて無限降下法で示す。

  • N=1,すなわちζが単元の場合

次のように示される:
1=1,   i=1+i(1+i),   1=1+i(1+i)2,
i=1+i(1+i)+i2(1+i)2.

  • N6の場合。

|ζ|2=N6であるようなガウス整数を考える。
x2+y2=3,   x2+y2=6
を満たす整数組(x,y)は存在しない。N=1は単元の場合である。N=21+iの単元倍の時で、N=42iの単元倍の時であるが、2i=(1+i)2でありいずれも先程の単元をあらわす式で両辺に1+i(1+i)2を掛ければ表示が得られる。
 最後にN=5,これは8つある。2+iの単元倍と2iの単元倍である。
 注意:ガウス整数ζが目的の表示で書けるならば、
ζ=1+i(1+i)bζ    (b1)
もまた目的の表示で書ける。証明は容易。
2+i=1+(1+i)=1+i(1+i)(i)2i=1+(1i)=1+i(1+i)(1)1+2i=1+i(1+i)(1i)12i=1+i(1+i)(1+i)
とでき、いずれもドットの後ろを表記で書き換えればよい。次に、
2+i=1+(3+i)=1+i(1+i)(2+i)2i=1+i(1+i)(1+2i)1+2i=1+i(1+i)212i=1+i(1+i)2i
とできるから成り立つ。

  • |ζ|2=N>6とし、|ζ|2<Nなるζについては成立しているとき

はじめにζの実部と虚部のパリティが等しい時。この場合ζ1+iで割れる、つまり割ったものもガウス整数。だからζ=(1+i)ζと書けるがこのとき
|ζ|2=|ζ|22<|ζ|2
なのでζに仮定が使える。それに1+iを掛ければ得られる。
 次にパリティが異なるとき。この場合ζ1を考えるとこれはパリティが一致するから1+iで割れる。特にi(1+i)で割れるので
ζ=1+i(1+i)ζ
のように書ける。ここで、
N6>(1+2)2,   |ζ|=N>1+2
だから、
|ζ|=|ζ1|212(|ζ|+1)
において
1<|ζ|1+2
を適用して
|ζ|12(|ζ|+1)<12(1+11+2)|ζ|=|ζ|.
   |ζ|2<|ζ|2.
ここでζは仮定を満たすから表記で書ける。ゆえにζも表記で書ける。証明終わり。

テルドラゴンの方

多分うまくいったのはガウス整数環Z[i]が綺麗な性質を持ってたからだと思う。テルドラゴンの敷き詰めの方ではZ[ω]が活躍しそうな気がするけど証明はまだできてないのでそのうちやってみたい。

投稿日:20201130
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

黒狐
黒狐
34
5065
数学ちょっと好きです!

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中