ブラウン運動


棒上のブラウン運動

上の図のように棒上に玉をおきます。 玉をサイコロをふって奇数がでたら上1つ、偶数が出たら下1つへ動かすと 下の図のように動きます。このような動きをブラウン運動といいます。

[プログラムを書いてみましょう!]

前回同様、FORTRANという言語を用います。 どんな言語にもルールがあります。

(1)FORTRANのルール

終りにはendをつける。
行の始めにスペースを6個以上空ける。

他のルールは本をみてください。

(2)サイコロをふる。

「サイコロをふる」の部分は用意しておきました。 このサイコロには1から4の目しかありません。 ここをクリックして ncube.fというプログラムを表示し、保存します。

このプログラムを使うには

integer k, ncube
k=ncube()
end
とします。 そうするとk に1から4までの数字がランダムに入ります。

実際何がkに入っているかみてみます。 見るには write(*,*) を使います。

integer k, ncube
k=ncube()
write(*,*) k
end

一旦brown.fという名前で プログラムを保存します。

f77 brown.f ncube.f
a.out
とうってプログラムを実行してみてください。

1から4までの数字が一つでましたか? これで一回だけサイコロをふって その数字がkに入っていることがわかります。

次に10回ふってみましょう。 ある作業をくりかえすには

do i = 1, 10

enddo

という文を使います。
integer k, ncube
do i = 1, 10
k=ncube()
write(*,*) k
enddo
end
この青字の10を変えるとふる回数がかわります。 プログラムを保存して実行してみてください。 1から4までの数字が10個、画面に表示されましたか?

(3)玉を動かす部分

『○ならば□、○でなければ△』ということを FORTRANでは

if (○)then

else

endif

と書きます。

1か3だったら1つ上に 2か4だったら1つ下に動かしたいので 場所をnとすると下の赤字のように書きましょう。

integer k, ncube, i, n
n=0
write(*,*) 0,n
do i = 1, 10
k=ncube()
if (k.eq.1.or.k.eq.3)then
n=n+1
else
n=n-1
endif
write(*,*) i,n
enddo
end
緑字は始めに0という場所にいることを表しています。 青字のところによってi回目でどこにいるのか結果を書きます。

作ったプログラムを保存して実行してみてください。 結果として書かせた サイコロをふった回数とその時の場所が表示されましたか? サンプルプログラム

(4)データをファイルに保存する

数字だけではではよくわからないので グラフにしてみましょう。 そのためにまず結果をファイルに保存します。 結果をファイルに保存するには

a.out > d.txt
とします。 結果は d.txtに保存されます。
ls
としてみてください。 d.txtというファイルが新しくできています。

(5)データをWindowsにもってくる

ここまではUnix上で操作を行いました。 したがってUnixに結果のファイル d.txtが保存されています。 UnixからWindowsにd.txtを持ってきましょう。 ftpを用います。

(6)データをグラフにする

d.txtには数字が並んで入っています。 これを用いて図を作ってみましょう。 今回はgnuplotを用います。

plot "d.txt" with line

と打ってください。


マス目上のブラウン運動

時間があまった人はマス目上でのブラウン運動のプログラムは どうすればよいか考えてみてください。 サンプルプログラム


1000回


100000回


2002年8月20日