如何解决已知参数的 BVP?

计算科学 scipy 微分方程 bvp
2021-12-16 09:36:09

我需要解决二阶边值问题 (BVP),其中方程取决于几个已知参数,它们是几何参数和材料常数。

我想为已知参数值的几种组合求解这个方程。是否可以使用 来做到这一点solve_bvp()我正在按照 in 中的args参数的思路进行思考solve_ivp()

如果我的问题不清楚,想象一下我想从solve_bvp() 文档中求解Bratu 方程的几个值k,而不必每次都更改k函数中的值fun(x,y)如何实现?

1个回答

看起来solve_ivp直到args最近才出现,请参阅 GitHub 上的问题

他们建议的解决方法是在您的函数周围使用 lambda 表达式,它将其他参数设置为关键字。

对于 Bratu 方程,从文档中修改示例,我相信这看起来像:

def fun(x, y,k=0):
    return np.vstack((y[1], -k*np.exp(y[0])))

def bc(ya, yb):
    return np.array([ya[0], yb[0]])

x = np.linspace(0, 1, 5)
y_a = np.zeros((2, x.size))

res_a = solve_bvp(lambda x,y: fun(x,y,k=1), bc, x, y_a)