[Python에 의한 과학·기술 계산] 2차원 랜덤 워크(취보 문제), 수치 계산
1단계를 1로 하고 원점(0,0)에서 시작하여 2차원 평면 위를 랜덤 워크한다.
import numpy as np
from random import random
import matplotlib.pyplot as plt
from math import *
"""
2次元ランダムウォーク
"""
N_calc_list = [10]
x, y, r = 0, 0, 0
R_list=[]
N=100000
x_list=[0]
y_list=[0]
for n in range(N):
theta=2.0*pi*random()#角度θ(2pi単位)をランダムにするため,random()を使って[0,1]の一様乱数を発生させる。
x = x+cos(theta) # x方向への移動。cos(θ)。
y = y+sin(theta) # y方向への移動。sin(θ)
x_list.append (x) # xの値をx_listに格納していく
y_list.append(y) # yの値をx_listに格納していく
# for plot
plt.plot( x_list,y_list) # (x,y)のプロット
plt.xlabel('X ') # x軸のラベル
plt.ylabel('Y') # y軸のラベル
plt.xlim([-120,120]) # x軸の範囲
plt.ylim([-120,120]) # y軸の範囲
plt.show()
결과
(0,0)을 스타트 위치로 하고, 100000보 이동의 궤적
원점(0,0)으로부터의 거리 R과 이동 스텝수 N의 관계. x축을 $N^{1/2}$로 플롯합니다. 오렌지선은 $N^{1/2}->∞$로 할 수 있는 이론치.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 2차원 랜덤 워크(취보 문제), 수치 계산), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sci_Haru/items/2f2a423fe920d3ba1bac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)