我在做一个模拟布朗运动的代码。你知道吗
from random import random
import matplotlib.pyplot as plt
import numpy as np
N=100
p=0.5
l=1
x1=[]
x2=[]
x1.append(0)
x2.append(0)
for i in range(1, N):
step = -l if random() < p else l
X1 = x1[i-l] + step
x1.append(X1)
for i in range(1, N):
step = -l if random() < p else l
X2 = x2[i-l] + step
x2.append(X2)
x1mean=np.array(x1)
x2mean=np.array(x2)
mean=[]
for j in range (0,N):
mean.append((x1mean[j]+x2mean[j])/2.0)
plt.plot(mean)
plt.plot(x1)
plt.plot(x2)
plt.show()
这个代码为2个不同的粒子生成位移,但是为了正确计算平均位移,我需要大量的粒子,比如100个。如您所见,我正在寻找一种方法来压缩代码,因为我不能重复相同的代码100次。你知道吗
有没有办法创建一个循环,使所有这些代码都以一个变量(即粒子数)为函数?你知道吗
谢谢。你知道吗
这个?你知道吗
我不能为您提供一个工作的python代码,因为直到现在我还没有编写一行python代码。但我可以给你一个解决问题的办法。你知道吗
假设:
第1步:
创建一个生成数组/列表并返回它的方法。所以你可以重复使用它,避免复制你的代码。你知道吗
第2步:
创建一个列表列表,我们称之为
particleMotions
。它自己的列表有你的移动列表。通过从第一步开始调用方法,在for循环中填充粒子数列表,并通过返回的列表/数组附加列表paticleMotions
。你知道吗可能是Python: list of lists的答案,它将帮助您创建这个。
第3步:
创建并填充
particleMotions
之后,在double for循环中使用此列表,计算平均值并将其存储在平均值列表中。你知道吗现在可以使用next for循环来绘制结果。你知道吗
所以不要因为语法错误而责怪我。我不是植物学家。我只想给你一个解决问题的方法。你知道吗
相关问题 更多 >
编程相关推荐