我正在尝试用Python模拟引力N体问题。我对第i个物体加速度的代码与
def acc(r,m,eps):
a = np.zeros((len(r),3))
for i in range(len(r)):
for j in range(len(r)):
ra2 = ((r[i,:]-r[j,:])**2).sum()
if (i != j):
a[i,:] += -(r[i,:]-r[j,:])*m[j]/(ra2**1.5)
return a # return acceleration
在这里可以找到http://wiki.tomabel.org/index.php?title=Gravitational_N-body_Problem
然而,在这种形式下,我们不是要进行不必要的计算,因为粒子j对粒子i的作用力,会是粒子i对粒子j的力的负值吗?为了使程序运行得更快,我们将如何考虑这一点?我想用一个nxn数组,填充它的一半,然后进行转置,但不确定如何做,或者是否有更好的方法。在
非常感谢
我建议这样做:
通过这种方式,您可以同时更新i和j加速度,这样您就可以始终假定j>;i,这样可以避免重复计算。在
相关问题 更多 >
编程相关推荐