0

問題: Calculate the mean and standard deviation of a tightly clustered set of 1000 initial conditions as a function of iteration number. The bunch of initial conditions should be Gaussian distributed about x = 0.3 with a standard deviation of 10-3

私が書いたコード:

from numpy import *

def IterateMap(x,r,n):
    for i in xrange(n):
        x = r * x * (1.0 - x)
    return x

output = "data"
nIterations = 1000
r = 4.0
x0 = 0.3
delta = 0.00005

L = []

for i in xrange(nIterations):
    x = x0
    x = IterateMap(x,r,1)
    L[i] = x
    x0 = x0 + delta

A = array(L)

print 'mean: ', mean(A)

したがって、私のコードがすべきことは、x の初期値 (x0) を取得し、IterateMap 関数を呼び出し、x の新しい値を返し、それをリスト (L) に配置してから、x0 を新しい値に変更することです。プロセスは 1000 回続きます。「リスト割り当てインデックスが範囲外です」というエラーが表示されます。また、私は問題を正しくフォローしていると思いますか?

4

2 に答える 2

2

Python のリストは、現在のサイズを超えてインデックスを指定しても自動的に大きくなりません。空のリストを作成したため、その中のインデックスをアドレス指定できません。

.append()リストの最後に新しい値を追加するために使用します。

L.append(x)

または、代わりに生成するすべてのインデックスを保持できるリストを作成する必要があります。これには、None または別のデフォルト値を事前に入力します。

L = [None for _ in xrange(nIterations)]
于 2012-12-04T07:25:47.180 に答える
0

問題はここにあります:

L = [] # the list is empty!

for i in xrange(nIterations):
    ...
    L[i] = x

修正するには、 に置き換えL[i] = xますL.append(x)

于 2012-12-04T07:28:04.760 に答える