微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将scipysolve_ivp用于具有初始条件的方程式,更新变量问题

如何解决将scipysolve_ivp用于具有初始条件的方程式,更新变量问题

我下面的代码试图绘制出围绕月球的太空探测器的轨迹。但是,我不知道如何更新所使用的位置和速度变量来产生加速度。有人可以帮我解决更新变量的正确方法。现在我的加速度是恒定的,并且使用相同的初始值,我该怎么做以提供更新后的值呢?

我不知道用于resolve_ivp的正确语法...感谢您提供任何帮助

谢谢

def task1(N,tmax):
    """
    Compute orbital trajectory.
    
    Parameters
    ----------
    N : int
        Number of points in trajectory arrays
    tmax : float
        End time of integration in units of seconds.
        
    Returns
    -------
    x : array
        x positions of the trajectory
    y : array
        y positions of the trajectory
    """
    def orbital_motion(t,f):  
        vals = np.zeros_like(f)                                           ##PROBLEM IS HERE
        vals[0] = f[2]                                                    #HOW CAN I UPDATE CORRECTLY
        vals[1] = f[3]                                                    #?
        vals[2] = -(gg*mass*vals[0])/(((vals[0]**2)+(vals[1]**2))**(3/2))
        vals[3] = -(gg*mass*vals[1])/(((vals[0]**2)+(vals[1]**2))**(3/2)) ##TO HERE
        return vals
    #d2x_dt2 = -(gg*mass*rs[0])/(((rs[0]**2)+(rs[1]**2))**(3/2))
    #d2y_dt2 = -(gg*mass*rs[1])/(((rs[0]**2)+(rs[1]**2))**(3/2))
    #sol_range = (0,tmax)
    trange = (0,tmax)
    ts = np.linspace(0,tmax,N)
    fi = np.array([rs[0],rs[1],vs[0],vs[1]])
    
    sol = integrate.solve_ivp(orbital_motion,trange,fi,t_eval=ts,method = 'RK45',dense_output=True)
    plt.plot(sol.y[0],sol.y[1])
    print(sol.y[0],sol.y[1])
    print(sol)
    return sol.y[0],sol.y[1]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。