Hatena::ブログ(Diary)

小人さんの妄想 このページをアンテナに追加 RSSフィード Twitter

2011-07-23

球面上の最も離れた点

球面上で最も離れた点の配置は、どんな形をしているでしょうか?

例えば地球のような球面の上で、お互いに反発し合う磁石のような点を幾つか置いたとすると、磁石はどの位置で落ち着くでしょうか?

(反発する磁力は地面の中は通らず、球の表面を通じて働くものとします。)


磁石が2個なら話は簡単で、北極南極のように、ちょうど反対の位置にくるでしょう。

磁石が3個だったら、赤道の上で正三角形を成すような形に置かれることでしょう。

磁石が4個だったなら、正4面体の頂点を成すような形に置かれることでしょう。

磁石が5個だったら?

 ・・・簡単にはわからないでしょう。

磁石が6個だったなら、正8面体の頂点を成すような形に置かれることでしょう。

磁石が7個だったら?

 ・・・これは、かなりの難問ではないでしょうか?


そこで、プログラムを作って試してみることにしました。

* 球面上の最も離れた点 Java applet >> http://brownian.motion.ne.jp/memo/Hello3D_Sphere6/

プログラム・ソース >> http://brownian.motion.ne.jp/memo/Hello3D_Sphere6/Hello3D_Sphere6.java

・N=4

f:id:rikunora:20110724030927p:image

磁石は予想通り、正4面体の形になります。


・N=4、局所解

しかしながら、何度もプログラムを実行すると、まれにこんな形になることがあります。

f:id:rikunora:20110724031019p:image

磁石が1平面上に、正方形に並んでいます。

本当は正4面体が最も離れた形なのでしょうけれど、たまたまぴったり正方形に並んだ場合、

そこでつりあいがとれて、動きが止まってしまうのです。

この状態から、ほんの少しでもずれが生じれば正4面体に移行すると思うのですが、

とにかくこのプログラムでは「途中でひっかかって止まる」ことが起こり得るわけです。


・N=5

f:id:rikunora:20110724031055p:image

磁石が5個の場合は、こんな形になりました。

1個が北極、もう1個が南極、残りの3個が赤道上で正三角形


・N=5、局所解

f:id:rikunora:20110724031128p:image

磁石が5個の場合でも、1平面上に、5角形に並ぶことがありました。

たまにしか出ませんけど。


・N=6

f:id:rikunora:20110724031156p:image

正8面体になります。予想通り。


・N=7

f:id:rikunora:20110724031214p:image

さて、これが問題の、磁石が7個の場合です。

1個が北極、1個が南極、残りの5つは赤道付近にあるのですが、完全に赤道上には並びません。

赤道付近の5個のうち、3個が北半球寄りに、残る2個が南半球寄りに位置します。

5つの点に順番に番号を付けるなら、1番,3番,4番が北半球寄り、2番,5番が南半球寄りです。

アプレットマウスでぐりぐり回してみれば、なんとなくわかると思います。


・N=8

f:id:rikunora:20110724031235p:image

正6面体、つまり立方体になります。


・N=9

f:id:rikunora:20110724031255p:image

ええと、見てのとおりなんですけど・・・何と説明すればいいのだろうか。


・N=12

f:id:rikunora:20110724031319p:image

正20面体です。ちゃんとなってますね。


・N=12 -- 局所解

f:id:rikunora:20110724031340p:image

しかしながら、12個の磁石はいつでも必ず正20面体になるとは限りませんでした。

しばし「途中で引っかかって」、中途半端な形に落ち着くことが起こります。

途中でひっかかる率は「磁石の反発力の強さ」によって変わってきます。

反発力をギリギリまで強くすると、途中で引っかからずに正20面体になることが多くなります。

逆に反発力を弱くすると、途中で引っかかって中途半端な形になることが多くなります。


磁石の数が増えてゆくと、どうやらこの「途中で引っかかる」現象が本格的に立ち現われてくるようです。

磁石がお互いに反発しあって動くと、唯一の答に向かって滑らかに移行するのではなくて、

途中に幾つかの「引っかかり」があるのではないか。

答は唯一ではなくて、中途半端な局所解が幾つかあるのではないだろうか・・・そんな風に私は予想しています。

(誰か、知っている人いる?)


・N=20

f:id:rikunora:20110724031405p:image

磁石が20個の場合、予想される答は正12面体です。

しかしながら、このプログラムの結果は正12面体にはなりませんでした。

正20面体であれば、面の形が5角形になるはずです。

上の結果はそれとは違います。それなりの形にはなっていると思うのですが・・・

これも1つの局所解なのだろうか、それともプログラムが悪いのか・・・

よくわかりません。もっとよく調べないと。

f:id:rikunora:20110724031422p:image

これもN=20の、別の結果です。

さっきのものとは、また少し違っているように見えます。


・N=100

f:id:rikunora:20110724031442p:image

プログラム自体は、磁石が100個であっても動作します。

N=20の場合に正多面体にはならなかったので、それ以上の数では、

もはや最良の答になっているという保証はありません。

磁石がそれなりに散らばっている、といった感じです。


おまけ:

今回のプログラムを作っている途中でできたおまけです。

見た目にはこっちの方がきれいですね。

* 球面上を流れる点 Java applet >> http://brownian.motion.ne.jp/memo/Hello3D_Sphere4/

プログラム・ソース >> http://brownian.motion.ne.jp/memo/Hello3D_Sphere4/Hello3D_Sphere4.java

f:id:rikunora:20110724031512p:image

ququququ 2011/07/25 09:58 はじめまして
いつも楽しく拝見させていただいています
ところで、今回の問題について調べたところ必ずしも正多面体が解となるわけではないという説を見つけたので参考までにurlを張っておきます
http://okwave.jp/qa/q6761072.html

hirotahirota 2011/07/28 11:56 「最小距離を最大化する」という問題なら意味があるけど、球面内に閉じ込められた電場エネルギーを最小化する問題は成り立たないんじゃないかな?
無限空間なら合計電荷が0でなくても良いけど有限空間では電気力線の湧き出しと吸い込みは同数でないと電場が存在できないでしょう。(磁石のようなと書いてるけど、双極子じゃないんですよね?)

NexeNexe 2011/07/30 23:34 はじめまして。
私は化学をやっておりますが、N=8までの形が錯体化学でお馴染みの形に落ち着いていて感嘆しました。
一つの正電荷イオンに複数の負電荷イオンが一定距離まで近付こうとすると、負電荷イオン同士は反発するのでちょうどこのような形になるのです。

なおN=5、N=7のときの形は三方両錐形、五方両錐形と言う名前が付いているようです。

蛇足でしたらすみません。

rikunorarikunora 2011/08/02 22:03 ququさん、
ひょっとすると正多面体にはならないかも、という可能性を考えていませんでした。
リンク先をよく見ると「配置したとき最も近い2点の距離が最大になるように配置する」となっていたので、
上で「互いの全ての点が反発し合う」としたものと、少し考え方が違っていました。
でも、これはこれでおもしろい問題ですね。

hirotaさん、
ここでやったことは具体的には、
・全ての点の間の距離を求めて、
・点の間に、距離に反比例する力が働いているものとして(2次元の球面上なので)少しずつ点の位置をずらしていって、
・最後に落ち着く場所を探す、
といったことです。
本当は全方向からの寄与を積算しないといけないのですが、そこのところをはしょっています。
はしょったところがあるので、たとえば物理的な電場を正確にシミュレートしたものにはなっていないと思います。

Nexeさん、
なるほどー、これが錯体の形になっているとは。
いま、三方両錐形、五方両錐形というキーワードを検索して、私も感嘆しました。
奥深し。

kashikashi 2011/08/11 19:14 1×1×2の直方体でN=2だと面白いことになるっぽい。
2点間の距離は直方体の表面上の最短経路の長さで定義するとして、もっとも遠い2点の組み合わせはどこか?

片方の点を直方体の頂点の1つに固定して、もう一方の点をどこに持って行くと一番遠いか?でも面白い。
直感と少し違う場所になるんです。

rikunorarikunora 2011/08/12 23:54 むむ、直方体ですか。
プログラム的には滑らかな球面のように単純にはいかないですね。
・・・まず紙の上で考えてみます。
適当なポリゴンモデル入れたら最遠点を探してくれるプログラムが出来たらおもしろそう。
でも作るのは大変そう。

rikunorarikunora 2011/08/15 00:17 直方体の最遠点、これは指摘されなければ絶対気付かない!
それでも私は辺上の点しか考えず、見事に間違えました。ここに答があったけれど、これでいいのかな?
http://d.hatena.ne.jp/tak119/20100218/

kashikashi 2011/08/20 18:20 そうそう、これです。反対側の頂点より遠い場所があるなんて、そんな馬鹿なと思いました。
最初に気づいた人はすごい。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rikunora/20110723/p1