我很困惑阅读
scipy.integrate.solve_ivp
文档。
我对带有阻力和马格努斯效应的弹道问题感兴趣,但我首先关注更简单的问题,仅考虑重力。对应的偏微分方程为
转换为一阶偏微分方程,我们可以写成
我有球 的初始和最终 3D 位置以及时间 ,但我不明白如何向解算器提供此信息。它期望
y0
,在我的符号中,是 ,但我不知道 处的速度。 (注意:我知道我可以从二次解中推断出它,但我不想这样做,因为一旦我整合其他力,解就会变得非常复杂)。
问题应该如何转化,在位置上添加另一个初始条件?
注意:我还查看了solve_bvp的文档,但根据我的理解,它不符合我试图解决的问题......
函数
scipy.integrate.solve_bvp
确实是合适的,p0
和 p1
:(x(t), y(t), z(t)) 在 t=T0, T1 处。对于后代,这是solve_bvp
所需的两个函数:
def bc(X0, X1, args=None):
x0, y0, z0, vx0, vy0, vz0 = X0
x1, y1, z1, vx1, vy1, vz1 = X1
return np.array([
x0 - p0.x,
y0 - p0.y,
z0 - p0.z,
x1 - p1.x,
y1 - p1.y,
z1 - p1.z,
])
def pde(t, X, args=None):
x, y, z, vx, vy, vz = X
dXdt = np.vstack([
vx,
vy,
vz,
np.ones_like(t)*0,
np.ones_like(t)*0,
np.ones_like(t)*g,
])
return dXdt