10

Click here to load reader

Simulation_assignment9

  • Upload
    t2c

  • View
    195

  • Download
    1

Embed Size (px)

DESCRIPTION

This report describes about the random walk problem by Karl Pearson. Pearson introduced 2D in 1905 so I tried in 3D field.

Citation preview

Page 1: Simulation_assignment9

提出日:2014年 7月 26日

課題 9

T2C_(Twitter: @T2C_)

Page 2: Simulation_assignment9

1

■課題内容

3次元のピアソン問題[ 1 ]を解くプログラムを作り、歩数と到達距離の関係を調べる。

歩数を変え到達距離 Rの確率分布、平均値、標準偏差から考察する。

■ピアソン問題

○計算内容・概要

ある点(原点 O)から出発して決められた歩数(n回)分ランダムに動いた時の到達点が

半径 rと r + dRの間(図の円と円の間の部分)である確率はどれほどであるか、という問題。

元の問題では 1回 1ヤードとしているが簡単のため単位は省略した。

図 1 半径 rと r+dRの範囲

これは 2次元上であるが、今回の課題では 3次元上でのシミュレーションを行う。

(図は描画が難しいので割愛)

3次元上で動かす為に、X方向、Y方向、Z方向の 3成分を持つ単位ベクトル(一歩分)を生成する。

まず一様乱数ξ1,2,3を発生させ、3つの変数(u,v,wとする)にそれぞれ

u = 2 *ξ1 - 1 , v = 2 *ξ2 -1 , w = ξ3

を代入し、u,v,wそれぞれ 2乗したものの和が 1を下回った場合に

cosθ1 = 2 * u * w / d , cosθ2 = 2 * v * w / d , cosθ3 = (w2 -u2-v2) / d

とする事で、単位ベクトルの 3成分が生成される。

これを用いて、距離を歩数を最大値としてビン数で割った分に分割し、確率密度を調べる。

dR

半径 r

Page 3: Simulation_assignment9

2

以上を踏まえて VBA(Excel2010上)でプログラミングを行った。

――――― 以下 ソースコード ―――――

Const Nbin As Integer = 30, _

Nbin1 As Integer = Nbin + 1, _

X0 As Double = 0#, _

Y0 As Double = 0#, _

Z0 As Double = 0#

Function Randomwalk3D()

'place

Dim R(0 To Nbin1) As Double, X As Double, Y As Double, Z As Double

Dim Nstep As Integer, Nsample As Long, i As Long, j As Long

Dim xi1 As Double, xi2 As Double, xi3 As Double, P As Double 'p = f(R)

'result of calculation(xi1,xi2,xi3) , to judge, dR = Nstep/Nbin, distance

Dim u As Double, v As Double, w As Double, _

d As Double, dist As Double, dR As Double

'element of vector & IR = Int(Z/dR)

Dim costh1 As Double, costh2 As Double, costh3 As Double, IR As Integer

Randomize

With Sheet1

Nstep = .Cells(2, 3)

Nsample = .Cells(3, 3)

dR = Nstep / Nbin

.Cells(4, 3) = dR

Page 4: Simulation_assignment9

3

For i = 1 To Nsample

X = X0

Y = Y0

Z = Z0

For j = 1 To Nstep

Do

xi1 = Rnd()

xi2 = Rnd()

xi3 = Rnd()

u = 2 * xi1 - 1

v = 2 * xi2 - 1

w = xi3

d = u ^ 2 + v ^ 2 + w ^ 2

Loop Until d <= 1

costh1 = 2 * u * w / d

costh2 = 2 * v * w / d

costh3 = (w ^ 2 - u ^ 2 - v ^ 2) / d

X = X + costh1

Y = Y + costh2

Z = Z + costh3

Next j

dist = Sqr(X ^ 2 + Y ^ 2 + Z ^ 2)

IR = Int(dist / dR)

If IR > Nbin Then

R(Nbin1) = R(Nbin1) + 1

Else

R(IR) = R(IR) + 1

End If

Next i

Page 5: Simulation_assignment9

4

For IR = 0 To Nbin1

P = R(IR) / Nsample

.Cells(IR + 9, 2) = IR * dR

.Cells(IR + 9, 3) = R(IR)

.Cells(IR + 9, 4) = P

.Cells(IR + 9, 5) = P * dR

Next IR

End With

End Function

――――― ソースコード 終わり ―――――

○実行結果

ここで、Rの確率分布はソースコード上で算出しているが、

平均値、誤差、分散、標準誤差は Excel上の関数(以下に列挙)を用いて算出した。

・平均 =AVERAGE( 範囲 )

・誤差 =STDEV.P( 範囲 ) / SQRT( COUNT( 同範囲 ) )

・分散 =VAR.P( 範囲 )

・標準偏差 =STDEV.P(範囲)

また実行結果は以下の様になった。

表 1 歩数 3、標本数 10万、Nbin50での結果(平均など)

歩数 3 Rの平均値 1.55標本 100000 R平均値の誤差 0.003397dR 0.1 Rの分散 0.000369Nbin 50 Rの標準偏差 0.019215

Page 6: Simulation_assignment9

5

表 2 歩数 3、標本数 10万、Nbin50での結果(度数、確率分布) 図 2 表 2のグラフ化

ここで、歩数を超えた距離 R(表 2で言えば 3.1)は Overflowであるとする。

■考察

今回は 3次元上でのピアソン問題を試行するプログラムを作成した。

実験結果の項で記した結果を鑑みるに、概ね正規分布の様な形を取っている様に思える。

しかし 1試行だけでは特徴が見えて来ないので幾つかのパターンを試みる。

距離R 度数 f( R ) f(R ) * dR

0 7 0.00007 0.0000070.1 77 0.00077 0.0000770.2 186 0.00186 0.0001860.3 392 0.00392 0.0003920.4 632 0.00632 0.0006320.5 1032 0.01032 0.0010320.6 1501 0.01501 0.0015010.7 1879 0.01879 0.0018790.8 2635 0.02635 0.0026350.9 3431 0.03431 0.003431

1 3886 0.03886 0.0038861.1 4100 0.041 0.00411.2 4318 0.04318 0.0043181.3 4740 0.0474 0.004741.4 4651 0.04651 0.0046511.5 4825 0.04825 0.0048251.6 5105 0.05105 0.0051051.7 5142 0.05142 0.0051421.8 4935 0.04935 0.0049351.9 5160 0.0516 0.00516

2 5222 0.05222 0.0052222.1 5103 0.05103 0.0051032.2 5066 0.05066 0.0050662.3 4831 0.04831 0.0048312.4 4623 0.04623 0.0046232.5 4514 0.04514 0.0045142.6 4001 0.04001 0.0040012.7 3444 0.03444 0.0034442.8 2889 0.02889 0.0028892.9 1673 0.01673 0.001673

3 0 0 03.1 0 0 0

Page 7: Simulation_assignment9

6

図 3 歩数 5での結果 図 4 歩数 10での結果

歩数 5になると少しずつなだらかに、10になると中央に少しずつ集まっている事がわかる。

しかし図 3での平均値は 5.166666667であり、明らかに平均とはズレている事がわかる。

図 5 歩数 30での結果 図 6 歩数 100での結果

歩数 5以降はなだらかでなく勾配が急になっていくので歩数 3~5の辺りは少し特異な例である事が

推測出来る。また、歩数が増える毎に明らかに最小値 0、最大値 100に近い所の度数は減っており、

また度数の高い中心部は完全に平均値から外れ、概ね最大値(歩数)の 3分の 1程度の値の所に

収束しているのが見て取れる。つまり到達距離は歩数 / 3に近い所を中心に正規分布すると見れる。

これは原点からスタートした時、戻る方向も加味した時に成分(次元)が 3つなので、相殺して収束す

るのがおよそ次元分の1の所だからでは無いだろうか。

しかしそれであれば1次元の時1に収束する事になり、多少なり直感とズレがあるので何処かしら修整

する余地はあるだろう。2次元の時は2分の1、つまり歩数 / 2に収束する事が直感的に想像出来るので

良いかもしれない。また授業で教わった問題の様に壁があるとまた違った分布になることが推察出来る。

Page 8: Simulation_assignment9

7

次に、歩数が少なかったり多かったりすると変なバイアスがかかる可能性があるので、

歩数は 30で固定し標本数の違いについて考察する。

図 7 歩数 30、標本数 10000での結果 図 8 歩数 30、標本数 1000での結果

分布を見てわかるように、歩数 30においては標本数を 10000(図 7)、1000(図 8)にしても

大きな差は見られない事がわかる。標本数 100(図 9)でようやく明らかな差が出るが、標本数 100は直

感的に考えても明らかに少ないので実際に試行する回数としての考慮からは外すべきだろう。

また標本数を 1000000(図 8)にしても分布に大きな差は見られない(比較は後述)。

結論として、この問題の歩数 30の結果から見る限りでは、標本数は 1000で十分であり、

時間が大幅に短縮出来る可能性が見込める。

図 9 歩数 30、標本数 100での結果 図 10 歩数 30、標本数 1000000での結果

Page 9: Simulation_assignment9

8

実際に標本数 1000と 1000000の結果を比較すると、

表 3 標本数 1000の結果1 表4 標本数 1000000の結果1

と、誤差、分散、標準偏差に大きな違いが見られない事がわかる。実際の値を見ても、

表 5 標本数 1000の結果 2 表 6 標本数 1000000の結果 2

と大きなズレはない事がわかる。

歩数 30 Rの平均値 15.5

標本 1000000 R平均値の誤差 0.007684dR 1 Rの分散 0.00189Nbin 50 Rの標準偏差 0.043468

距離R 度数 f( R ) f(R ) * dR

0 98 0.000098 0.0000981 915 0.000915 0.0009152 2983 0.002983 0.0029833 7635 0.007635 0.0076354 16162 0.016162 0.0161625 29575 0.029575 0.0295756 48908 0.048908 0.0489087 72326 0.072326 0.0723268 95762 0.095762 0.0957629 116272 0.116272 0.116272

10 127157 0.127157 0.12715711 127029 0.127029 0.12702912 113466 0.113466 0.11346613 90608 0.090608 0.09060814 65588 0.065588 0.06558815 42092 0.042092 0.04209216 23761 0.023761 0.02376117 11811 0.011811 0.01181118 5145 0.005145 0.00514519 1944 0.001944 0.00194420 573 0.000573 0.00057321 143 0.000143 0.00014322 43 0.000043 0.00004323 4 0.000004 0.00000424 0 0 025 0 0 026 0 0 027 0 0 028 0 0 029 0 0 030 0 0 031 0 0 0

歩数 30 Rの平均値 15.5標本 1000 R平均値の誤差 0.007637dR 1 Rの分散 0.001867

Nbin 50 Rの標準偏差 0.043203

距離R 度数 f( R ) f(R ) * dR0 0 0 01 1 0.001 0.0012 2 0.002 0.0023 11 0.011 0.0114 25 0.025 0.0255 28 0.028 0.0286 46 0.046 0.0467 74 0.074 0.0748 103 0.103 0.1039 115 0.115 0.115

10 124 0.124 0.12411 124 0.124 0.12412 118 0.118 0.11813 84 0.084 0.08414 64 0.064 0.06415 37 0.037 0.03716 27 0.027 0.02717 7 0.007 0.00718 6 0.006 0.00619 2 0.002 0.00220 1 0.001 0.00121 1 0.001 0.00122 0 0 023 0 0 024 0 0 025 0 0 026 0 0 027 0 0 028 0 0 029 0 0 030 0 0 0

31 0 0 0

Page 10: Simulation_assignment9

9

■課題・今後の展望

○別の次元との比較

1次元や 2次元、それから可能であれば 4次元以上を比較出来ると良い。

これを n次元に拡張出来れば何かに応用が利くのではないだろうか。

○様々な歩数と標本数での比較

今回はどちらか一つを固定して考察を行ったが、両方をフレキシブルに変更し様々な検討を

行う事にも面白味がありそうであるし、実際の研究などでは必須事項であろうと思う。

○数式での比較

恐らく分布と歩数の関係については数学的な式を立てる事が可能である事はわかるのだが、

そういった場合どの様に考えて行けば良いのかわからず、手詰まりであった。

例えば参考文献で示した論文[ 1 ]では、

の様な数式を示しているが(二次元上?の分布の範囲?)こういった数式の立て方が

わからなかったので、今後の課題としたい。

○応用方法の検討

今回においても何か別の分野に応用が出来るのではと考えたが、なかなか浮かばなかったため

知識不足感が顕著で否めない所であった。

■結び

今回は一~二世紀前とは言え学者達が悩んだ問題に実際に自ら挑戦する様な課題であった。

しかし自らが考えうる範囲の考察は幅が非常に狭く、実際の論文などを読むと如何に高レベルに

検討が行われているかについて大変驚いた次第である。しかし格が違うとは言え考え方によっては

過去の研究者たちと肩を並べて作業をしているような感覚に陥り大変昂揚したので、実際に自分が研究

を行う時などもこういった昂揚感を忘れず取り組みたい。として、本レポートの結びとする。

■参考文献

[ 1 ] Chris H. Rycroft (and Martin Z. Bazant) 2005 .

“Lecture 1: Introduction to Random Walks and Diffusion”

http://ocw.mit.edu/courses/mathematics/18-366-random-walks-and-diffusion-fall-2006/lecture-notes/l

ec01.pdf