2011/05/05

カオスでCG(初歩)

先日親戚のところにお邪魔したとき、伯父さんが自分がカオス理論について興味があるということを聞いていたらしく、カオスにまつわる本や雑誌数冊をくださった。

その本は著者ジェームズ=グリック(James Gleick)さんの『CHAOS making a new science』という英書と、その訳本(文庫版)、さらに、1997年の雑誌『BASIC 数学』の3月号だった。

CHAOS MAKING A NEW SCIENCE   by James Gleick  カオス 文庫版  BASIC 数学 1997年3月号 ←それらの本


まだ全部は読んでいないがとても面白そうだ。



さて、上記の3つのうち「BASIC 数学」の1997年3月号を読んでいたら面白い記事があった。

「プログラミングで広がるグラフ関数電卓の世界」というコーナーの、足利裕人さんによる「カオスでCG」という記事である。


そのタイトルどおり、記事にはカオス的振る舞いが生み出すさまざまな図形がのっており、とても興味がわいた。ぜひ自分もこの図形を描いてみたい。

スキャンされたドキュメント-1   スキャンされたドキュメント-2   スキャンされたドキュメント-3   カオスが描く図形4

カオスが描く図形(参考記事)


しかしその記事で紹介されていたのは「グラフ関数電卓」を用いたプログラムであった。
グラフ関数電卓は自分の持っている関数電卓とは違い、グラフが書ける。また電卓上でプログラムが組める。

そんなのもってねえ!ということで記事を参考に適当にC言語で組んでみた。

以下にソースを示す。

/*カオスでCG*/
#include<stdio.h>
#include<stdlib.h>
int main(void){
float x=4, y=0, sub, a, b, xshazo, yshazo ;
int i = 0 ;
FILE *outfp ;
scanf("%f %f", &a, &b) ;
if((outfp=fopen("caos1.txt","w"))==NULL) exit(EXIT_FAILURE);

while(i<50000){
sub = x ;
x = y - a*x + b/(1 + x*x) ;
y = -sub ;
i++ ;
xshazo = x + y ;
yshazo = x - y ;
fprintf(outfp,"%f %f\n",xshazo, yshazo) ;
}
fclose(outfp) ;
return 0 ;
}


このプログラムでやっていることは、

  

  

という漸化式に初期値
  
  

を与え、n=50000まで計算を繰り返し値を求めていくというものだ。

値は、任意定数である a,bに鋭敏に影響を受ける。以下にaの値による図形の現れ方を示す。(b=5で固定) 値のプロットはgnuplotを用いた。

a=1.91    a=1.92
a=1.91            a=1.92

a=1.93    a=-1.92
a=1.93            a=-1.92


どうだろう(´∀`*)ウフフ

なかなか綺麗に描けていると思う。

ここで注目したいのは、定数aを0.01単位で違う値にするだけでずいぶんと違う図形になるということだ。
また、1.92と-1.92を見てわかるように、マイナスを付けたからと言って2次関数のように対称な図形になるわけでもない。

とても不思議である。

カオス的振る舞いについてはのちのち定義するが、要は微小な差がとても大きな差になってしまうということが大きな問題なのである。

「北京で蝶が羽ばたくと、ニューヨークで嵐が起こる」といったバタフライエフェクトは有名だと思うが、気象ではカオスの初期値への鋭敏性が長期予報を困難にさせているのである。

自分はこれからよく学び、カオスについて多くを知って、いずれは新たな発見をしたいと思っている。


今回はここまで。最後まで読んでくれた人はありがとうございます(`・ω・´)





スポンサーサイト
2011/05/01

カオスもろもろ

前記事ではカオスの辞書的意味を紹介した。

今回は、2つほどカオスに関するお話があるので紹介していきたいと思う。

FF 混沌の神 カオスファイナルファンタジーで登場した混沌の神 カオス 氏

漢文 『渾沌』
中国の古典、自分も高校時代にならったいわゆる漢文に『渾沌』というものがあった。

原文→渾沌、七竅に死す

簡単に要約すると、

昔中国に渾沌という帝王がいた。渾沌には目も鼻も口もなかった。
あるとき、渾沌のもてなしを受けた北と南の帝王が、その返礼にと
1日ごとに目・耳・口・鼻の7つの穴のうち1つをつけてやった。
着け終わった7日目に渾沌は死んでしまった。

ということだ。
「渾沌、七竅に死す(荘子・応帝王篇)--漢字家族」
などを参考にした。

渾沌にとっては目鼻がない状態(=混沌とした状態)が自然であり、無理矢理に目鼻をつける(=秩序をつける)行為はその自然な状態を破壊してしまうのである。


あまりキチッとした性格でない自分は、はるか昔につくられたこの漢文に非常に共感を覚えた。
完全に秩序立った日常が続いていくなら、おそらく世界は単調で灰色なものになっていくだろう。
心が死んでしまう。

混沌として、次に何が起こるか分からない、そんな状態があるからこそ世界は面白い。



なんとニコニコ動画に「渾沌」について説明している動画があったので紹介する。






日本の神話における混沌
コチラはけっこう有名だと思う。
古事記や日本書紀といった日本の古い文献に、混沌とした状態から神々が生まれていく様子が記述されている。

上記の2つは少し地名や人名がややこしいので、
(例えば、伊邪那岐(イザナギ)・伊邪那美(イザナミ)・淤能碁呂島(おのごろじま)・宇摩志阿斯訶備比古遅(ウマシアシカビヒコヂ)神  etcetc...)すこし簡略化して紹介します。


古事記 1. 天地の初め
天上世界と地上世界が初めて分かれた時、天上世界には三柱の神が現れた。

このころ、国土は若く、浮いた脂、またはくらげのように漂っていた。

そのような場所で葦(あし)の芽のように一柱の神が現れ、その後どんどんと自然発生的に神々が現れた。

2. オノコロ島

神々たちはイザナギとイザナミという二柱の神に、「この漂っている国土を整えて作り固めよ」と言って、矛(ほこ)を与えて委任した。

そこで、二柱の神は天と地の間に浮かぶ橋に立って、矛を差し下ろして掻き回した。

そして引き上げると、その矛の先から滴り落ちた塩が積もり重なって島となった。これがオノコロ島である。

3.イザナギとイザナミの結婚

二柱の神は、お互いの体の中で凸な部分と凹な部分があって、これを合わせれば不足が満たせるのではないかと考えた。

ついにそれを成し遂げ、結果として今の日本を形作る多くの島々を産み落としていったのである。


日本書紀 天地開闢(かいびゃく)
昔、天と地はまだ分かれておらず、陰と陽も分かれていなかった。

混沌としている状態は鶏の卵のようで、ほのかに芽生えのきざしを含んでいた。

混沌としたものの中で澄んだ物はたなびいて天となり、重くにごったものは固まって地となったが、

澄んだものが合わさってむらがるのは易く、重くにごった物が固まるのは難しかった。

そこで天が先にできあがり、地は後に定まった。

国土が浮かび漂ただよう様子は、たとえば泳ぐ魚が水上に浮かんでいるようであった。

その時、天地の中に一つの物が生まれた。形は葦の芽のようで、すぐに神となった。その後続けてニ柱の神が現れた。

続けて神々が次々と現れた。



と、なにやら堅苦しくなってしまったが、要は

古事記
イザナギとイザナミがどろどろとした地上をかき混ぜたら島ができ、
ふたりがチョメチョメしているうちに日本列島が完成しちゃった。

日本書紀
デロデロとした状態のものが、水と油のように分離して天地ができた。

というハナシだ。


今でさえ、宇宙の始まりは謎につつまれている。

ビッグバンとかインフレーション宇宙とかいろいろ説はあるけれども、
「じゃあ宇宙誕生の前は?」と問われると誰も正しいと確信できる答を言えないわけである。

昔の日本人はそんな宇宙のはじまりについて、まず混沌としたものがあったんよ。と言っている。
案外これが正解なのかもしれんよね。


今のところお話しかないが、そろそろ自分の勉強も兼ねて専門的なカオス理論(の初歩)に関する記事を書いていこうと思う。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。