忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

時間が繰り返す宇宙での指数関数的現象

SFや一部の宇宙論にはときどき時間が逆流してもとに戻る宇宙が登場します。時間の流れが進んだり戻ったりを何度も繰り返すのです。ここでは、そのような世界で指数関数的な現象がどうなるのかを考察します。指数関数は爆発的に増加したり減少したりしますが、歴史が繰り返すのなら明らかにいつまでも増加したり減少したりすることは出来ず、どこかにターニングポイントが存在するはずです。


指数関数の具体例

音の減衰

シンバルを鳴らすと最初にバーン!と大きく鳴り、次第に音は小さくなっていきます。これをグラフに描くと次のようになります。

生き物の繁殖

このグラフの上下をひっくり返すと、爆発的に増加するグラフになります。この場合はねずみ算ともよばれています。

指数関数

これら2つの現象を数式にしたものを指数関数と呼びます。2つの違いは時間の進み方だけで、実質的に同じものです。指数関数は爆発的に増加したり減少したりします。増加するか減少するかは途中で変わったりしません。やみつつある音が途中で勝手に大きくなり始めたりはしないのです。ネズミの場合は…まあ、確かに猫が現れたら増加は減少に転じるでしょう。しかし数式の指数関数は増加の途中で減少したりはしないのです。

時間が繰り返す宇宙での指数関数的現象

では、SFや一部の宇宙論に登場するような、時間が繰り返す宇宙では指数関数的現象はどうなるでしょう?時間が繰り返すというのは、人が猿になり、ねずみになり、海に帰り、またねずみになり猿になり人になる…を繰り返すという意味です。時間が繰り返すのですから、静かになりつつあるシンバルが勝手に大きな音にならなければいけません。さっきありえないといった現象が現実にならなければいけないのです。まあそれほどありえないわけでもなく、結局すべての指数関数的現象が、猫に食われるネズミの数のようになるというだけですが…。

ではどうすれば、指数関数を時間が繰り返すパターンに変更できるのでしょうか?私がちょっと考えた限りでは、波に分解するのが良さそうです。指数関数は次の図ように、無数の波に分解できます(もちろん有限個の波しか描かれていませんが、本当は無限なのです)。

そして、ある特定の時間にもとの状態に戻る波を残して残りをすべて抹消します!下の図でいうと、横線と交差する場所で山になっていない波は全て消します。

こうすることで、指数関数から周期的なパターンを取り出すことが出来ました。これはSF小説『クロックワーク・ロケット』で主人公のヤルダが指数関数的に強くなる光をなくして繰り返す波だけにした方法にインスパイアされたものです。波をいくつか消したせいで元よりちょっと低くなっていますが、そこは何倍かして合わせれば良さそうです(ちょっと汚いやり方ですが)。

以上のやり方をプログラムにしたのが次のデモンストレーションです。

繰り返し指数関数デモ

くりかえしの周期:
減衰率:

これは指数関数を無理やり繰り返すパターンにした曲線を表示します。指数関数を波に分解し、繰り返しのじゃまになる波を全て消して再構成したのです。これを静かになりつつあるシンバルだと考えると、シンバルが勝手に音を大きくする奇怪な現象ということになります。しかもそれを永遠に繰り返すのです!

拍手[1回]

PR