不思議で綺麗なカオスの世界。ProcessingでカオスCGを作ってみる

サトゥー

こんにちは、理系東大生ブロガーのサトゥーです。

 

皆様はゴールデンウィークいかがお過ごしでしょうか。

最近、やることが多くて死んでいます。

ちょっとブログを書きたくなったので。休憩がてらブログ書いてます。

深夜(明け方)の更新です。

 

 

この本を読みました。

 

 

アートの世界と数学の世界のつながりを、

前半は「無限を有限で表現する」ことをテーマに、

後半は微分方程式や最小作用、対称性について、自然界での例とその数学的な背景を解説した本です。

 

非常にわかりやすく、数学自体もそこまで高度なものを扱っていないので、

大学生なら電車とかで立ち読みでも十分理解できるようなもの。

 

雪の結晶とか、水滴とかの面白い話が載っていました。

 

で、その本の中に、カオスCGの描画というのがあって。

自分でやってみると面白かったのでシェアしたいと思います。

 

 

カオスとは何か

 

「アートを生み出す七つの数学」の中では、カオスを次のように説明していました。

カオス

初期条件を変えただけで、未来が大きく変わる現象。

 

僕たちが高校や大学で習う力学という分野を例にとって考えてみます。

 

古典力学の分野で最も重要と言える数式に、ニュートンの運動方程式、ma=Fなんていうものがあります。

これは微分方程式の一つで、この方程式をもとに、僕たちは未来を予測することが(ある程度の精度で)可能です。

加速度a\frac{dv}{dt}=\frac{d^2x}{dt^2}と表記することができます。

つまり、加速度というのは速度を時間微分したものであり、すなわち位置を2回時間微分したものであるのです。ma=Fという式から加速度aを求めることができれば、そこからv,xを求めることができます。

一般の時間tにおける位置xを求めるということは、その現象を完全に理解することだと言っても過言ではなく(だってどの時間にどこにいるかが完全にわかってるんだもん)、未来を予測することに繋がります。

 

以上の議論をまとめると、

ここまでまとめ

ma=Fという式から、物体に働く力Fと質量mさえ分かれば、基本的に未来を予測することが可能である!

ということになります。なんだか夢のある話ですね。

 


 

ところが、

カオスの世界では、未来を予測することが非常に困難であり、事実上不可能であるとさえいわれているのです。

計算機の設計上の限界などの問題で、超小さい誤差を計算することが難しく、そのために小さなズレが大きなズレになってしまうカオスの世界では予測が困難になるわけです。

 

バタフライ効果

身近な例に、カオスをよく理解できるものがあります。

天気です。

 

明日の天気は当たるのに、来週の天気、1ヶ月後、1年後の天気はあまり当たらないのはどうしてでしょう?

というか1年後の天気予報なんてそもそも見たことないのですが。

 

なぜ、長期予報はあまり当たらないのか

 

気象学者のローレンツは、

簡単な微分方程式から作られる天気予報の気象モデルの数値計算結果が、カオス的な振る舞いをすることを発見しました。

 

彼の講演のタイトルに、有名な言葉「ブラジルの1匹の蝶の羽ばたきがテキサスで竜巻を引き起こす」というものがあります。

これはバタフライ効果と呼ばれており、カオスの現象をわかりやすく例えた言葉として広く使われています。

 

この言葉が言い表しているように、遠くにいるほんのわずかな変化が、天気の変化の原因となりうるために、

僕たちは長期的な天気を予報することが事実上不可能になってしまうわけです。

 

サトゥー

どうでもいいけど、「バタフライ効果」でggったら怪しそうなページがたくさん出てきたよ

カオスCGを作ってみよう

 

カオスは、アートの世界でも注目されてきた概念です。

ここからは、実際にカオスCGをコンピュータで再現してみます。

 

同じプログラムでも、

初期条件が違うだけで、結果として得られるCGの形が大きく異なってくることに着目してみてください。

 

今回は、先ほど紹介したローレンツさんのモデルを少し簡略化したものをプログラムして実行します。

Processingを使用

 

Processingを使用します。

Processingはイメージやアニメーション、インタラクションを生み出すソフトウェアを書くために作られた言語です。

 

こちらからダウンロードできます

 

こんなやつなら簡単に作れます

コードはこちらの本を参考にしました

 

 

では、実際にProcessingに以下のコードを貼り付けて実行してみます。

コードはこちらのサイトを参考にしました

 

実行のようす(gif)

 

実行すると、このような図形が表示されると思います。

 

 

次に、a,b の値を変えて実行してみましょう。

(a,b)=(1.0,0.75)

(a,b)=(1.2,0.7)

(a,b)=(0.57,1.55)

(a,b)=(1.5,0.35)

 

a,bを変えるだけで、全然様子が違う図形が現れたことを確認できたと思います。

 

 

これらの曲線からは、僕たちが物理で見るような放物線のグラフや、直線のグラフとは全く違う印象を受けます。

まさに混沌としている感じです。

 

しかし、完全にランダムな図が生成されるわけではないようにも見えます。

カオスは、完全な混沌と秩序が入り混じった状態であることが理解できます。

 

 

 

いかがでしたでしょうか。

複雑で難しそうなカオスの世界を、CGで表現することによって直感的に理解できる。

アートの可能性を感じた瞬間でした。

 

サトゥー

こういうの楽しいよね

 

それでは、今日もポチッと頼んだ。


東大生ブログランキング

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)