【发布时间】:2014-10-14 10:00:05
【问题描述】:
我正在尝试在 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 的作用力的负数吗?为了让程序运行得更快,我们将如何考虑这一点?我正在考虑以某种方式获取一个 N x N 数组,填充其中的一半,然后进行转置,但不确定如何执行此操作,或者是否有更好的方法。
非常感谢
【问题讨论】: