HOME > ブラウン運動

07.ブラウン運動


07.01 ブラウン運動とは何か

では早速「動くもの」作っていきましょう!

とはいえ、いきなり高等な生物というのは無理なので今回は不規則な動きの典型である「ブラウン運動」をシミュレーションするプログラムを作成することにしましょう。

ウィペディア解説によると「ブラウン運動」とは?

ブラウン運動」ウィキペディア引用
ブラウン運動(ブラウンうんどう、英語: Brownian motion)とは、液体のような溶媒中に浮遊する微粒子(例:コロイド)が、不規則(ランダム)に運動する現象である。1827年[注 2]ロバート・ブラウンが、水の浸透圧で破裂した花粉から水中に流出し浮遊した微粒子を、顕微鏡下で観察中に発見し、論文「植物の花粉に含まれている微粒子について」で発表した。

この現象は長い間原因が不明のままであったが、1905年アインシュタインにより、熱運動する媒質の分子の不規則な衝突によって引き起こされているという論文が発表された。この論文により当時不確かだった原子および分子の存在が、実験的に証明出来る可能性が示された。後にこれは実験的に検証され、原子や分子が確かに実在することが確認された。同じころ、グラスゴーの物理学者ウィリアム・サザーランド英語版が1905年にアインシュタインと同じ式に到達し、ポーランドの物理学者マリアン・スモルコフスキー英語版1906年に彼自身によるブラウン運動の理論を発表した。

数学のモデルとしては、フランス人ルイ・バシュリエは、株価変動の確率モデルとして1900年パリ大学に「投機の理論」と題する博士論文を提出した。今に言う、ランダムウォークのモデルで、ブラウン運動がそうである、という重要な論文であるが、当時のフランスの有力数学者たちに理解されず、出版は大幅に遅れた。

ブラウン運動と言う言葉はかなり広い意味で使用されることもあり、類似した現象として、電気回路における熱雑音ランジュバン方程式)や、希薄な気体中に置かれた、微小な鏡の不規則な振動(気体分子による)などもブラウン運動の範疇として説明される。」

実際にブラウン運動をYouTubeで見ていただきましょう。

【Brownian motion 2】


【Brownian Motion - nanoparticles in water】



07.02 ブラウン運動をシミュレーション

1)ランダムウォーク
ウィキペディアをみると、あのアインシュタインが論文を出すほど、どうして動くのかは難解ですけど、動きそのものは、実はコンピュータプログラムでいうと、なんと「入門編」なのです。これから作成するシミュレーションは一般的に日本語でいうと酔っ払いの千鳥足=酔歩(すいほ)に相当する英語=「ランダムウォーク」となります。酩酊状態の千鳥足を思い浮かべてみると分かるのですが、前後左右にふらりふらり、次にどれだけ移動するかは分からない状態をシミュレーションします。

ウィキペディアで「ランダムウォーク」を検索すると、次のように書いてあります。
ランダムウォーク英語: random walk)は、次に現れる位置が確率的に無作為(ランダム)に決定される運動である。日本語の別名は乱歩(らんぽ)、酔歩(すいほ)である。グラフなどで視覚的に測定することで観測可能な現象で、このとき運動の様子は一見して不規則なものになる。
ブラウン運動と共に、統計力学量子力学数理ファイナンス等の具体的モデル化に盛んに応用される。」

世の中の人で千鳥足を数学で解こうとする人も少ないと思いますが、これを数学的にいうと「確率的無作為動作」となるわけです。アインシュタインは花粉を見て「生物でないのになぜ動くか」疑問に思い、それを解決したのですが、そんなことはどうでもよい話で、まずはプログラムにできるように数学的座標系で表すと、次のようになります。(次に移動する距離Rnと回転角θnとします) 


距離rと回転角θとする場合、原点Oから移動すると最初の一歩は



{ x 1 = r 1 × cos θ 1 y 1 = r 1 × sin θ 1
次の一歩は下記となります。


{ x 2 = x 1 + r 2 × cos θ 2 y 2 = y 1 + r 2 × sin θ 2

これをプログラムで書くと次のようになります。


double   r;
int     th;
static int PosX, PosY;
Random^   rr;

rr = gcnew Random();

r = rr->Next(0,10);
th = rr->Next(0, 360);
PosX += (r * cos((double)th));
PosY += (r * sin((double)th));



ここで登場するRandomクラスは乱数を決められた範囲から発生させるもので、例えば「rr->Next(0,360)」とすると、0~360までの数値をランダムに出してきます。 前述の解説にある「確率的」「無作為」という個所を、これで賄っています。




【特記】
このホームページは最近無料で使用できるようになりましたMicrosoft Expression Web 4をワープロ代わりに使用して作成しておりますが、「ブラウン運動編」あたりから数式が徐々に登場してきていました。今回はsin() cos()だけですが、Web上にきれいに数式を表示するには、どうしたらよいか検索していると「MathML」というものを発見し、今回初めて使用してみました。スクリプトなんでMicrosoft Expression Web 4上には表示されてきませんが、ブラウザで見ると連立式になってきれいに見えているのではないでしょうか。





HOME > ブラウン運動 > ブラウン運動をシミュレーション > キャンパスの作成