ブラウン運動による拡散を、単純なランダムウォークとして考察してみる。
1 パチンコ玉と釘のプログラム
パチンコ玉と釘のゲームで確率・統計を考察する記事をいくつか書いてきた。・パチンコ玉と釘の確率・統計(まとめ記事)。:https://tanakah17191928.blogspot.com/2024/11/blog-post_21.html
今回はパチンコ玉と釘のプログラムを流用して、ブラウン運動による拡散を考察してみたい。
ブラウン運動に関する厳密な理論を扱いのは難しいので、単純なランダムウォークとしてシミュレーションしてみる。
2 【2D】ランダムウォークによる拡散のプログラム
とりあえずプログラムだけメモ。後日、また暇なときに実行してみて、結果を考察してみたい。
Option Explicit
Sub game()
Dim i As Long, j As Long
Dim p_x As Double, p_y As Double
Dim c As Integer, t As Integer, k As Integer
t = 50
k = 0
For i = 1 To 100
p_x = 0
p_y = 0
For j = 1 To t
c = 0
Randomize
c = Int(1000 * Rnd + 1)
If c <= (125 + k) Then
p_x = p_x + 1
ElseIf (125 + k) < c And c <= 250 Then
p_x = p_x - 1
ElseIf 250 < c And c <= (375 + k) Then
p_y = p_y + 1
ElseIf (375 + k) < c And c <= 500 Then
p_y = p_y - 1
ElseIf 500 < c And c <= (625 + k * 2) Then
p_x = p_x + 1/Sqr(2)
p_y = p_y + 1/Sqr(2)
ElseIf (625 + k * 2) < c And c <= 750 Then
p_x = p_x - 1/Sqr(2)
p_y = p_y - 1/Sqr(2)
ElseIf 750 < c And c <= 875 Then
p_x = p_x + 1/Sqr(2)
p_y = p_y - 1/Sqr(2)
Else
p_x = p_x - 1/Sqr(2)
p_y = p_y + 1/Sqr(2)
End If
Next j
Cells(i, 1) = p_x
Cells(i, 2) = p_y
Next i
End Sub
(1)$t = 50$の場合
(2)$t = 100$の場合
(3)$t = 500$の場合
(4)$t = 1000$の場合
3 左下から右上への流れがある場合($k = 60$)
(1)$t = 50$の場合
(2)$t = 100$の場合
(3)$t = 500$の場合
(4)$t = 1000$の場合
4 プログラムの修正
【2D】ランダムウォークによる拡散のプログラムの最終的な修正版。Option Explicit
Sub game()
Dim i As Long, j As Long
Dim p_x As Double, p_y As Double
Dim c As Integer, t As Integer
Dim pi As Double
pi = Atn(1) * 4
t = 50
For i = 1 To 100
p_x = 0
p_y = 0
For j = 1 To t
c = 0
Randomize
c = Int(360 * Rnd + 1)
p_x = p_x + Cos(c * pi / 180)
p_y = p_y + Sin(c * pi / 180)
Next j
Cells(i, 1) = p_x
Cells(i, 2) = p_y
Next i
End Sub
(1)$t = 50$の場合
(2)$t = 100$の場合
(3)$t = 500$の場合
(4)$t = 1000$の場合
・パチンコ玉と釘の確率・統計(まとめ記事)に戻る。




.jpg)
.jpg)
.jpg)
.jpg)



