我想写一个数值积分代码。我有一个函数GetAcc
,它返回两个加速度值,即x和y分量。如何调用不同部分的第一个和第二个返回值
这是我的职责
def GetAcc(xPositions, yPositions):
global xAcc
global yAcc
xAcc = np.zeros(xPositions.size, xPositions.size)
yAcc = np.zeros(yPositions.size, yPositions.size)
for i in range(0, xPositions.size-1):
for j in range(i+1, xPositions.size):
r_x = xPositions[j] - xPositions[i]
r_y = yPositions[j] - yPositions[i]
rmag = np.sqrt(r_x*r_x + r_y*r_y)
force_scalar = GetLJForce(rmag, 0.84, 2.56)
force_x = force_scalar * r_x / rmag
force_y = force_scalar * r_y / rmag
xAcc[i,j] = force_x / m
xAcc[j,i] = - force_x / m
yAcc[i,j] = force_y / m
yAcc[j,i] = - force_y / m
return np.sum(xAcc, axis=0), np.sum(yAcc, axis=0)
由于找不到解决方案,我尝试了以下方法:
def GetxAcc(xPositions):
a, b = GetAcc(xPositions, yPositions)
return a
def GetyAcc(xPositions):
a, b = GetAcc(xPositions, yPositions)
return b
我需要调用x-component,这里是np.sum(xAcc, axis=0)
def RunMDx(dt, number_of_steps, x):
global xPositions
xPositions = np.zeros((number_of_steps, 3))
v_x = 0
a_x = GetxAcc(x)
for i in range(number_of_steps):
x = UpdatexPos(x, v_x, a_x, dt)
a1_x = GetxAcc(x)
v_x = UpdatexVel(v_x, a_x, a1_x, dt)
a_x = np.array(a1_x)
xPositions[i, :] = x
return xPositions
谢谢
你可以这样做:
相关问题 更多 >
编程相关推荐