使用`scipy.integrate`求解二阶偏微分方程,初始位置和最终位置都已知

问题描述 投票:0回答:1

我很困惑阅读

scipy.integrate.solve_ivp
文档

我对带有阻力和马格努斯效应的弹道问题感兴趣,但我首先关注更简单的问题,仅考虑重力。对应的偏微分方程为

转换为一阶偏微分方程,我们可以写成

我有球 formula 的初始和最终 3D 位置以及时间 formula,但我不明白如何向解算器提供此信息。它期望

y0
,在我的符号中,是 formula,但我不知道 formula 处的速度。 (注意:我知道我可以从二次解中推断出它,但我不想这样做,因为一旦我整合其他力,解就会变得非常复杂)。

问题应该如何转化,在位置formula上添加另一个初始条件?

注意:我还查看了solve_bvp的文档,但根据我的理解,它不符合我试图解决的问题......

python scipy differential-equations odeint pde
1个回答
0
投票

函数

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
© www.soinside.com 2019 - 2024. All rights reserved.