轨迹模型未给出正确的结果

时间:2018-07-05 19:14:24

标签: python python-3.x matplotlib physics ode

我在求解非线性常微分方程组时遇到麻烦。他们似乎没有给我正确的结果。

这是我需要求解的方程式:

asdadsasd

这是我想要得到的结果:

asdadsasd

这是我的输出:

output

“”“

def model(t, z):
    #Variables
    r, zeta, phi, V, Gamma, psi = z

    print(t)

    #Simplify
    rho = planet.density(r)
    gr = planet.g(r)
    w = planet.angular_rotation_rate

    #Postition
    drdt = V*np.sin(Gamma)
    dzetadt = (V*np.cos(Gamma)*np.cos(psi))/(r*np.cos(phi))
    dphidt = (V*np.cos(Gamma)*np.sin(psi))/r

    #Forces
    dVdt = -1*(rho*V**2)/(2*beta) - gr*np.sin(Gamma) + r*w**2*np.cos(phi)*(np.sin(Gamma)*np.cos(phi) - np.cos(Gamma)*np.sin(phi)*np.sin(psi))
    dGammadt = (-1*gr*np.cos(Gamma) + V**2*np.cos(Gamma)/(r) + 2*w*V*np.cos(phi)*np.cos(psi) + r*w**2*np.cos(phi)*(np.cos(Gamma)*np.cos(phi) + np.sin(Gamma)*np.sin(phi)*np.sin(psi)))/(V)
    dpsidt = (-1*(V**2*np.cos(Gamma)*np.cos(psi)*np.tan(phi))/r + 2*w*V*(np.tan(Gamma)*np.cos(phi)*np.sin(psi) - np.sin(phi)) - (r*w**2*np.sin(phi)*np.cos(phi)*np.cos(psi))/(np.cos(Gamma)))/V

    #Pack into dzdt
    dzdt = [drdt, dzetadt, dphidt, dVdt, dGammadt, dpsidt]
    return dzdt

def hit_ground(t, y): 
    return y[0]
hit_ground.terminal = True
hit_ground.direction = -1

#Solv    print("Solving trajectory for beta = {}.".format(beta))
sol = solve_ivp(model, t_span = [start, end], y0 = z0, events = hit_ground, max_step = dt)

“”“

据我所知,术语V**2*np.cos(Gamma)/r会带来一些麻烦,因为当我将其乘以0时,结果看起来更像是正确的结果。

我的代码还有其他部分(例如初始条件和后期处理),但我前不久在这里发布了它,结果证明这不是提出问题的正确方法。请告诉我您是否还有其他需要。

谢谢。

0 个答案:

没有答案