如何在Python中调用函数的特定返回?

2024-06-26 13:31:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个数值积分代码。我有一个函数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

谢谢


Tags: inforsizereturndefnpzerosglobal