2

方向 0 < θ < 2π および T=1000 ステップで、2 次元のランダム ウォークをシミュレートしようとしています。

a=np.zeros((1000,1000))

def randwalk(x,y):
    theta=2*math.pi*rd.rand() 
    x+=math.cos(theta);          
    y+=math.sin(theta);          
    return (x,y)

すべての中間座標を a に格納するにはどうすればよいですか? 私は最初に次のような形を試していました:

for i in range(1000):
    for j in range(1000):
        a[i,j] = randwalk(x,y)

しかし、これはまったく機能していないようです。

4

3 に答える 3

0

型エラーがあります。randwalk は 2 タプルを返し、float が期待される配列要素を設定しようとしています。

まず第一に、1000 x 1000 の配列は必要ありません。これにより 100 万のデータ ポイントが得られ、必要なのは 2000 だけです。必要なのは次のようなものだと思います。

xs = np.zeros((1000))
ys = np.zeros((1000))
x = 0
y = 0
for i in range(1000):
    xs[i], ys[i] = randwalk()

また、randwalk の定義を変更して、パラメーターをとらず、x と y をグローバル変数にする必要があります。

def randwalk():
    global x, y

あなたが持っているように、パラメーターの値を変更していますが、それらは呼び出しごとに蓄積されていません。

于 2014-10-14T17:29:07.903 に答える