问题:
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次。我得到错误“列表分配索引超出范围”。另外,你认为我正确地解决了这个问题吗?
答案 0 :(得分:2)
当您将索引置于其当前大小之外时,Python列表不会自动增长。您创建了一个空列表,因此无法在其中找到任何索引。
使用.append()
将新值添加到列表末尾:
L.append(x)
或者,你必须创建一个列表来保存你想要生成的所有索引,方法是用None或其他默认值预填充它:
L = [None for _ in xrange(nIterations)]
答案 1 :(得分:0)
问题在于:
L = [] # the list is empty!
for i in xrange(nIterations):
...
L[i] = x
要解决此问题,请将L[i] = x
替换为L.append(x)
。