このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

あの福井市の小学生、その驚くべき発見とは (3)

前のエントリーの続きです。)

●面積公式になじむ

まずは、

  • 面積 = 内部点の個数 + 周囲の長さ/2 - 1

がどうやら成立しそうだという“感じ”をつかんでおきましょう。(“感じ”だけ。)

内部点が十分にあるようなタイル領域、つまり、細くなくて大きなタイル領域の場合、内部点を勘定して面積の近似値にするのは悪い考えではありません。次の例だと、(僕の勘定が間違ってなければ)内部点が60個、面積は81(タイルが81枚)です。領域をもっと拡大すれば近似の精度は上がります。

円の面積(下の図は1/4だけ描いてあります)の場合、タイル領域で近似し、その内部点を勘定する方法で割といい近似値が得られます*1

しかし、細い領域の場合は、そもそも内部点がなかったりするので、内部点の個数で面積を近似するわけにはいきません。次の細長い長方形で見てみると、面積の値は長い辺の長さと同じです。眺めていると、面積 = 周囲の長さ/2 - 1 だとわかります。


  1. 面積 ≒ 内部点の個数 (太った領域のとき)
  2. 面積 = 周囲の長さ/2 - 1 (細長い領域のとき)

から、一般の場合が、

  • 面積 = 内部点の個数 + 周囲の長さ/2 - 1

となっても、そう不思議ではないでしょう。

数学的帰納法による証明

とりあえず、数学的帰納法で面積公式を確認しておきます。もっとも、数学的帰納法が最善の証明法だとは思えないので、後で別な方法でやり直しますけどね。

単純なタイル領域は、タイルを1個ずつ順に付け足していって作れることは(直感的には)いいですよね。その構成過程に沿って考えます。

まず、タイルが1個の場合:面積 = 1、周囲の長さ = 4 なので、「面積 = 周囲の長さ/2 - 1」(1 = 4/2 - 1)は成立しています。

次に、既に出来ているタイル領域に、新たにタイルを1個付け加えることを考えます。このとき、既存領域と新しいタイルの組み合わせ方が3種類あります。


  1. 既存領域の1辺と新しいタイルの1辺がくっつく。
  2. 既存領域の2辺と新しいタイルの2辺がくっつく。
  3. 既存領域の3辺と新しいタイルの3辺がくっつく。

既存領域にタイル1個分の穴があいていて、そこの新しいタイルをはめ込むと4辺がくっつくことになりますが、これはナシです。「ほんとにナシにしていいか?」という問題はありますが、最終的に穴なしの領域が欲しいとき、途中でも穴なしのまま領域が作れることは、まー認めていいでしょう。

上のそれぞれの場合に、新領域の面積、内部点の個数、周囲の長さを調べてみます。旧領域の面積、内部点の個数、周囲の長さを、A, I, L として、新領域における量 A', I', L' はどうなるかを表にまとめます。

面積 内部点の個数 周囲の長さ
旧領域 A I L
新領域 場合1 A' = A + 1 I' = I L' = L + 2
新領域 場合2 A' = A + 1 I' = I + 1 L' = L
新領域 場合3 A' = A + 1 I' = I + 2 L' = L - 2

A = I + L/2 - 1 が前もって成立しているなら、どの場合でも、A' = I' + L'/2 - 1 もやっぱり成立します。例えば場合1なら、I' + L'/2 - 1 = I + (L + 2)/2 - 1 = (I + L/2 - 1) + 1 = A + 1 = A' と計算できます。

これはつまり、タイル1個から出発して、タイルをどんどん付け加えていっても、「面積 = 内部点の個数 + 周囲の長さ/2 - 1」の関係はずっと成立したまま保存されることを意味します。

●面積をキチンと測る

数学的帰納法だと、どうもピンと来ない人もいるでしょう(僕はピンと来ない*2)。面積の公式なんですから、面積をキチンと測る方法でやってみます。

1個の内部点には4つのタイルが集まっているので、各タイルから1/4ずつカケラを集めると、面積1の正方形ができます。このような正方形が、内部点の個数と同じだけありますね。こうしてカケラを寄せ集めても、領域の周辺部分は手つかずに残ってしまいます(下図)。

測り残した部分を勘定に入れるために、周囲の辺(長さ1)に「1/2×1の長方形」を対応させます。下の図の緑が辺で、黄緑が面積1/2×1の長方形です。

これらの長方形の面積の総和は、

  • (1/2×1)×辺の数 = 1/2×周囲の長さ = 周囲の長さ/2

です。

ところが、こうして周囲の部分を考慮に入れてもなお、カドの部分で二重に勘定したり、まだ測り残しが生じたりします。

うまくいってないところは:

  1. でっぱったカドのところで、面積1/4を二回勘定している。
  2. ひっこんだカドのところで、面積1/4を勘定していない。

いま、でっぱったカドの個数をp個、ひっこんだカドの個数をn個としましょう。1個のでっぱったカドごとに面積を1/4だけ余分に勘定しているので、全体では「- 1/4×p」と補正が必要です。同様に、ひっこんだカドごとの測り残しを全部含めるには「+ 1/4×n」と補正します。結局、

  • 面積 = 内部点の個数 + 周囲の長さ/2 - 1/4×p + 1/4×n

補正した部分を少し整理して、

  • 面積 = 内部点の個数 + 周囲の長さ/2 - 1/4×(p - n)

です。

僕らは正しい公式を既に知っているので、(p - n) が4なら良さそうだ、と見当がつきます。つまり、

  • でっぱったカドの個数 - ひっこんだカドの個数 = 4

なら、目的の公式に一致します。

というわけで、「でっぱったカドの個数 - ひっこんだカドの個数」に注目すればいいことがわかりました。もうこの先もわかりましたか? 考えてみてください。

※ 続きは明日以降。



ひとりごと: なんだか思ったより長くなってしまったなー。でも、オイラー数を出して、ガウス-ボンネっぽいところまで行かないと面白くないもんね。

[追記]
「続きは明日以降」と書きながら、後が続かないままに放置になってしまいました。「でっぱったカドの個数 - ひっこんだカドの個数 = 4」の説明だけならすぐに済みますから、この追記で示しておきます。

タイルを並べた図形に限らず、平面内の多角形に関してその外角の和は360度です。この事実は凸多角形に限らずひっこんだ部分を持つ多角形でも成立します。ただし、時計回りと反時計回りの外角に、符号(プラスマイナス)を付けて考えます。どっちをプラスにするかは自由ですが、例えば、反時計回りをプラスと決めておきます

問題の多角形は地面に描かれているとします。多角形の辺上の一点を決めて、そこから辺の上を歩いていくと考えましょう。グルっと一周してもとの点に戻ってくるまでに、体の向きが360度回転してますよね、それが外角の和です。(多角形のようなカクンカクンの図形じゃなくて、なめらかに曲がる境界線を持った図形でも、境界線に沿って一周すれば体が360度回転します。)

タイルを並べた図形に関して言うと、でっぱったカドにおける外角は90度です。ひっこんだカドにおける外角はマイナス90度(逆向きの回転方向)です。すべてのカドにおける外角を足し合わせたら360度なので、次の等式が成立します。

  • でっぱったカドの個数×90度 + ひっこんだカドの個数×(-90度) = 360度

両辺を90度で割り算して、

  • でっぱったカドの個数 - ひっこんだカドの個数 = 4

が得られます。

オイラー数を出して、ガウス-ボンネっぽいところまで行く」は、この短い追記ではできません。ゴメンナサイ。

なお、一連の記事のもとになった論文は以下です。

[/追記]

*1:別にタイルを引き合いに出さなくても、円の内部の格子点を勘定すると言っても同じことですが。

*2:「確かにそうなるのは分かったけど、なんで?」という気分になって、どうも釈然としません。