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

jjhzyzn0  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(258)

我读不懂。
我感兴趣的是一个有阻力和马格努斯效应的弹道问题,但我首先关注的是更简单的问题,只考虑引力。

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

我有球

的初始和最终三维位置和时间

,但我不知道如何将这些信息提供给求解器。它期望y0,在我的符号中,是

,但我不知道

的速度。(**注:**我知道我可以从二次解中推断出它,但我不想这样做,因为一旦我整合了其他力,解会变得非常复杂)。
如何将问题转化为在位置

上添加另一个初始条件?

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

xkftehaa

xkftehaa1#

函数scipy.integrate.solve_bvp确实是合适的,有p0p1:(x(t),y(t),y(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

相关问题