如何解决将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 举报,一经查实,本站将立刻删除。