The Pogo Curve
Pogo's accidental discovery might lead the world of mathematics into another height. Or might not.
|
第3研究所で、LibreOffice Drawを使って近似でもいいからポゴ曲線を描いてみようと思いましたが、
ベジエ曲線機能ではうまく描くことができませんでした。
Mathematicaなどの数学ソフトウェアを使えば簡単なのでしょうが、いまから習うのもなあ。
なにか簡単な方法で描画できないかな。 その昔はこの手の問題はたいていBASICで計算したりグラフを描いたりしてしました。 中央研究所なら Noobow9000のWindows95 でBASIC/98を使う手もありますし、2台あるPC-9801を復活させてN88BASIC(86)を使うとか、 さらにはAppleIIのApplesoft BASICもあるな。そりゃ楽しそうだ。 でも2年前に火を入れたときはAppleIIは10分かそこらでクラッシュしちゃってたから、マザーボードの点検とサービスをしてからでないと。 いずれにしろ第3研究所では無理です。 まさかグラフィック機能のないCASIO FX-702Pで計算するというのもストイックすぎるし、 VisualBASICでもいいでしょうけれど、やはり気軽にという雰囲気ではありません。 で、ちょっと探して、おお、よさそうなBASICインタプリタがある。 無料だし、ちょっと試そうとダウンロードしようとしたら、そのプログラムはすでに自分のソフトウェアライブラリに保存されてありました。 なんだ、試そうとしてダウンロードしたのにほったらかしだったんだ。 でそのことも忘れているだなんて。 というわけで、今回初めて Tiny BASIC for Windows 1.2 を使ってみます。 なお"Tiny BASIC"というと特定の処理系を指すものではなく、文字通り小さく実装されたBASIC系処理系全般を指すと思われるので、 以降本ページではTiny BASIC for Windows 1.2 のマニュアルにもある"TBasic"という表記を使います。 配布ファイルを解凍すると実行イメージ一式が出てくるので、いわゆるインストールの必要はなし。 出だしの好感度は最高です。 起動も瞬間的で、黒いイミディエイトウインドウが現れて"OK"と表示されています。 ので反射的に PRINT "Hello World" と入れてエンターキーを押したら、Hello Worldのエコーバックが得られました。 ? 2+3 と入れたら、5と表示されました。 でもどうやらプログラムは別のウインドゥに書くみたいだな。ここに for i=1 to 10 sum=sum+i next print sumと書いて「実行」メニューをクリックしたら、イミディエイトウインドゥに"55"と表示されました。 初めての起動後ここまで3分以内。 おお、指が覚えている。 つぎに、必要にして十分に書かれているヘルプを読みながら、グラフィック表示の方法をトライ。 8ビットパーソナルコンピュータ時代のBASICインタプリタとWindows3.1時代のVisualBASICの雰囲気がいい感じでミックスされた構文・文法・作法は、 現場の利便最優先といった感じで、お手軽プログラミングにもってこいです。 1時間のうちにグラフ表示のための基本操作は習得できました。 さあ、道具は用意できた。 |
In order to pursue the mystery of Pogo Spline, I used TinyBASIC for Windows Version 1.2. This BASIC interpreter runs well also on Windows7, providing functionality powerful enough to handle this type of problems. Its language is a golden mixture of good-old-days 16 bit BASIC (especially the Microsoft - NEC N88BASIC) and the flavor of VisualBASIC for the Windows 3.1. I could immediately start to write the PogoCurve program just after it was installed. |
1巡め、2巡め・・・とピンの周りに収束していくポゴスプラインを見ていて、
あれ、ひょっとしたら一番最初の楕円は、0巡目のポゴ曲線として表せるのかもしれない。 はたして、上述のポゴ曲線の式F.05に n = 1 を代入すると、式はbについての二次の項が消えて簡単な形になります。 なるほど、楕円はポゴ曲線の特別な場合になっているわけだ。 これはと思い、pogocurve.tbtプログラムのポゴ曲線計算ルーチンにn=1を渡してみたら・・・残念、二次方程式の根の公式の計算でゼロ除算となってしまいます。 まあ当然だな。 PogoCurveプログラムの中で楕円描画部分は別扱いのままですが、 楕円描画ルーチンでいままで使っていた楕円の公式のかわりにポゴ曲線のn=1の場合の式 を使った座標計算に置き換えてみると、楕円公式と同じ曲線を描くことができました。 やはり楕円はポゴ曲線の特殊ケースになっているのです。 ・・・もっともこれは当然のことですね。 ポゴ曲線は、「2点からの距離の和が等しい点」という楕円の定義に条件を加えていったものなのですから、 条件を緩和していけばもとの楕円に戻るのです。 いっぽう、nをどんどん大きくしていくと、ポゴ曲線はどんどん短くなっていきますが、 その形は半円に限りなく近づいていくはずです。 |
さて、ポゴ曲線を求めるには前述の二次方程式を解くわけですが、
このとき根は二つ得られます。
そのうちの片方だけが有意なポゴ曲線を与えるのですが、
それではもうひとつの根はいったい何を意味するのだろう?
偽ポゴ曲線? 反ポゴ曲線? 虚ポゴ曲線? それとも超ポゴ曲線?
片側だけが有意であるという別の制約条件がなにかあるのだろうか? 二次方程式の2つの根のうちポゴ曲線の解として正しいのは、根の公式のプラスマイナスでマイナスをとったときだけ。 もうひとつの、プラスで計算した根を使うと、bに大きな値が得られてしまい、b側だけで糸の長さLを超えてしまいます。 ということは、線分aの長さが負になるということです。 いまD=2、L=3として最初のポゴ曲線で角A=0のときを計算すると、正しい値 b = 0.5 のほかに b = 1.25 が得られます。 1巡めのポゴ曲線ではbには3本の糸が通っていますから、 L = a + 3b の式から線分aの長さは -0.75 になります。 計算に使った余弦定理は であり、aは自乗して使われるので、式はaが負でも成立するわけです。 でも、長さが負ってどういうことなんだかやっぱり理解できません。 |
μが1であればポゴスプラインは2本のピンをつなぐ直線に一致しますから、1以上のすべてのμについてポゴスプラインは描画できそうです。 では、μが1未満の場合はどうなるだろう。 もちろんこれは糸が2本のピン間隔より短いということなので、そもそもの作図が成り立ちません。 でも数学的にみるとどうだろう。 たとえば解析接続で複素平面に拡張するとかなんとかでμの定義域を1未満に・・・0を超えて負のμにまで・・・拡張できたりするんだろうか? あるいは、μの定義域を1以上の実数に限らず、実部が1以上の複素数を取るとしたら、ポゴスプラインっていったいどんなものになるのだろうか? |
いままで平面上でポゴスプラインを考えてきましたが、これを3次元空間に拡張したらどうなるだろう。 2つの焦点を結ぶ直線の周りに回転するイメージかな。 でもそれは曲面が交差した複雑なものになりますね。 |
・・・こいつを考えるのは、すくなくとも第二種完全楕円積分が理解できてからにしよう。 |