将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 (将#修改为@)