首页 > 解决方案 > 提升计算速度

问题描述

我真的需要加快我的 N-Body 模拟的计算速度,但我真的不知道该怎么做 numpy(jit) 似乎没有那么多工作而且我没有选择我需要加快速度的代码是这个

def calcul():   
    mt[:,6:9]=0.0
    for b in range(0,n):       
        for a in range(b,n):
            F=0.0
            p=mt[b,0:3]-mt[a,0:3]            
            p2=p@p
            if p2 == 0 or math.sqrt(p2)  >= epsilon_2 :
                pass
            else:
                F=(g*mt[b,9:10]*mt[a,9:10]*p)/((p2+epsilon)**1.5)
            mt[a,6:9]+=F
            mt[b,6:9]+=-F
    mt[:,6:9]/mt[:,9:10]
    mt[:,3:6]+=mt[:,6:9]*times
    mt[:,0:3]+=mt[:,3:6]*times
 
for t in range(itteration):
     calcul()        
     print(t+1)
     a=np.append(a,mt[:,0:3],axis=0)

标签: python

解决方案


您在 if 语句中使用平方根。这需要时间来计算。而不是math.sqrt(p2) >= epsilon_2你可以使用p2 >= epsilon_2**2.


推荐阅读