こんにちは。今日は、蛍の話です。
蛍は、他とコミュニケーションしているわけではないのに、完璧にシンクロして光るらしい。すごい。その様子はこんな感じ。
少し再生していると、同時に蛍が光りだすタイミングが見られると思う。
これはどうしておこるの?というところに着目して記事を書こう。
今回、シミュレーションの作成や記事の執筆でほぼ全部の知見を「sync なぜ自然はシンクロしたがるのか」の序盤から得ている。
読んでいる途中だが、数式を使わずに同期現象の神秘を教えてくれる名著だと思うのでぜひおすすめしたい。
蛍を説明するモデル
蛍は、周期的に発火する。蛍の発火をししおどしに例えて説明しよう。ししおどしには、一定量の水が常に補充されていき、時間を追うごとに水を蓄えていく。そして、水の量が限界まで増えると、カコンと音を立てて水を全部流す。
これと同じことが、蛍の中で起きている。蛍も、時間を追うごとに水に代わる何かが溜まっていき、限界まで経つと発火する。これによって蛍は周期的に発火している。
蛍が同時に光るには
蛍は自然に同時に光りだす。これは、他の蛍が光るとそれに合わせようとすこし発火を早めるということだ。ししおどしの例だと、他のししおどしがカコンと倒れると、出た水が他のししおどしに入るということになる。
こうすれば、どんどんとホタルが光る間隔が狭まり、同時に光る。
この説明は一見正しそうに見えるが、条件がある。ししおどしの例に戻ると、ししおどしの水量が増えれば増えるほど中の水がたまりにくくすることがその条件である。
こうすれば、元々水量が多かったししおどしほど水が増えた時の恩恵が高まる。だから、カコン!とどれかが倒れれば、他のししおどしも倒れやすくなる。
この状態で何個かのししおどしに水を貯めていけば、何回かカコンと倒れるうちにそれぞれの倒れる間隔はどんどんと短くなっていく。そして、最終的に一斉にカコンと倒れて同期するという次第である。
これと同じ原理で、蛍が同時に光る。
誰も指揮しているわけではないのに成立するジャムセッションなどもこういう感じでリズムが揃うのではないだろうか?
シミュレーションしてみた
いきなり数学の話。最初に紹介した本によると、以下の条件であれば同期するらしい。(文章から勝手な解釈。あってるとは限らない)
蛍の同期条件
<蛍の特性>
・蛍の電圧vは閾値1を持ち、時間とともに増加するが1を越えると発火し0へと戻る。
・電圧vの一周期は、f(t)で表す。f(T)=1とすると、f(t)は[0,T]で定義されていれば良い。
・f(t)は定義域で、f'>0かつf"<0を満たす。
<蛍の相互作用>
・ある蛍が閾値まで達すると、他の蛍は電圧が一定値V(<1)だけ上昇する。ただし、電圧が1を越える場合は1で押さえつけられ、次の瞬間発火する。
※最近は藤本予想という別なモデルも誕生してるらしい
シミュレーションの注意点
今回これらの条件からシミュレーションを行った。そこで、気をつけなきゃいけないことがあったので書いてみる。
・コンピューターはなめらかに連続な計算をできないので、f(t)のtは離散化する。
・万が一同時に蛍が閾値を超えた場合、片方を順番待ちにして次のステップで発火させる。
やってみたい人に向けて書くと、c++で自分は書いていて、queue,algorithm,vectorをインクルードして使った。(自分が下手くそなのか160行くらいの長めのプログラムになってしまった)
シミュレーションの結果
5匹のホタルでやった場合
とりあえず電圧のピーク(発火時間)は時間が経つごとに揃ってきた。
続いて、角度標準偏差とかいうものを持ち出して、周期性のある電圧のずれの標準偏差を求めてみた。なんか全体として小さくなってきているので、これはもう統計学的にも蛍が同期したと言ってもいいのではないか?(何もやってないのに有意とか言っちゃう)
1000匹の蛍でやった場合
原因不明のnanと-infに悩まされてまだ実装できていない
多分同じ結果になるんだろう。。すごい人誰か教えて。。
蛍が同期することの大雑把な証明
ある蛍iとkが発火間隔を狭めていくことを証明すればいいんだけど。空想でしかないのであってる保証はない。(本ではスナップショットのような方法で分析して境界条件を求める方法が軽く説明されていたのだけど難しそうだったので..)
<手順>
- iが発火した後、しばらくしてkが発火するとする。蛍iとkは順番に発火し、逆転することはなことを示す。
- iとkが順番に発火するたびに、iとkの発火時間が近づいていくことを示す。(iとkが時間ごとに遠ざかっているように見える場合も、kと次の周期のiが近づいている)
- i,kの取り方によらず近づいていくので、蛍iとkは時間が経てばいづれ同期するしかないということを示す。
次回予告
あるのかわからないけど(多分ないけど)、二次元座標系に配置した蛍がある一定範囲内に発火の影響を与えるとした時の同期化の挙動。
0コメント