scipy.integrate.solve_bvp 对于诺依曼边界条件?

scipy.integrate.solve_bvp for Neumann boundary conditions?

问题是罐头上写的是什么。我正在尝试用数值方法求解边界值问题,我的朋友问我求解器是否适用于这些条件。求解器的页面没有给出我们的条件,即 bc(y(a),y(b), p) = 0 但我们问题的形式是 y(0) = some constant valuey'(b) = 0,给出我们的 Neumann 条件,您是否需要重写函数像射击方法一样进行一阶减少?

我想你正在求解一些二阶 ODE

y''(t) = F(t,y(t), y'(t))

对于一阶系统,使用状态向量 u = [y, v] = [y, y']。那么调用 BVP 求解器的最小值是

def ode(t,u): y,v = u; return [v, F(t,y,v)];
def bc(u0, ub): return [u0[0]-y0, ub[1]];

y0 = someconstantvalue;

t_init = [0,b];
u_init = [[y0, y0], [0, 0]];
res = solve_bvp(ode, bc, t_init, u_init)

始终检查 res.success 或至少打印出 res.message。您可能需要更好的初始猜测,对于非线性问题,不同的初始猜测可以给出不同的解决方案。 res.sol 包含作为插值函数的解决方案,为了生成绘图,最好使用此函数而不是 res.xres.y

中内部步骤的稀疏集合