Matplotlib odeint或solve_ivp中的初始条件

Matplotlib odeint或solve_ivp中的初始条件,matplotlib,odeint,Matplotlib,Odeint,我不熟悉matplotlib/python。我想用odeint或solve_ivp在某个区间内求解一些简单的常微分方程,例如,段[0,10],其中“初始条件”是t_0=5,而不是t_0=0。在我看来,odeint和solve_ivp都取初始条件y_0作为值,即y_0是指定时间数组t开头的函数值 我如何解决一个ODE,在我的集成区间中间有一个条件? 假设你有一首颂歌:地球引力场中的一个物体 “”“x=与海平面的距离,单位为米 R=地球的半径,单位为米 g=密封水平的重力常数,单位为米/秒^2 v=

我不熟悉matplotlib/python。我想用odeint或solve_ivp在某个区间内求解一些简单的常微分方程,例如,段[0,10],其中“初始条件”是t_0=5,而不是t_0=0。在我看来,odeint和solve_ivp都取初始条件y_0作为值,即y_0是指定时间数组t开头的函数值

我如何解决一个ODE,在我的集成区间中间有一个条件? 假设你有一首颂歌:地球引力场中的一个物体

“”“x=与海平面的距离,单位为米
R=地球的半径,单位为米
g=密封水平的重力常数,单位为米/秒^2
v=以米/秒为单位的速度
'''
v*dv/dx=-g*R^2/(R+x)^2

从30米高的建筑物以20米/秒的速度投掷一个球。因此,非零边界条件为: v(30)=20

要绘制此解决方案,请移动x坐标中的值,使其从建筑高度30米处开始。不是0米,代表地面。
将numpy导入为np
从scipy.integrate导入odeint
将matplotlib.pyplot作为plt导入
def型号(v,x):
#常数
g=9.80665#海平面上的重力
R=6.371e6#地球半径
伽马=-g*(R/(R+x))**2
dvdx=1/v*伽马
返回dvdx
#边界条件
v_30=20#x=30m时的速度为20m/s
#时点
x=np.linspace(30,55)#从30开始,而不是从0开始
#解赋
v_x=odeint(型号,v_30,x)
#绘图结果
plt.绘图(x,v_x)
假设你有一首颂歌:地球引力场中的一个天体
“”“x=与海平面的距离,单位为米
R=地球的半径,单位为米
g=密封水平的重力常数,单位为米/秒^2
v=以米/秒为单位的速度
'''
v*dv/dx=-g*R^2/(R+x)^2

从30米高的建筑物以20米/秒的速度投掷一个球。因此,非零边界条件为: v(30)=20

要绘制此解决方案,请移动x坐标中的值,使其从建筑高度30米处开始。不是0米,代表地面。
将numpy导入为np
从scipy.integrate导入odeint
将matplotlib.pyplot作为plt导入
def型号(v,x):
#常数
g=9.80665#海平面上的重力
R=6.371e6#地球半径
伽马=-g*(R/(R+x))**2
dvdx=1/v*伽马
返回dvdx
#边界条件
v_30=20#x=30m时的速度为20m/s
#时点
x=np.linspace(30,55)#从30开始,而不是从0开始
#解赋
v_x=odeint(型号,v_30,x)
#绘图结果
plt.绘图(x,v_x)