带有混合 BC 的 ode 的哪种数值方法

计算科学 边界条件
2021-12-02 00:26:03

我有一个二阶非线性 ODE(没什么花哨的),但 BC 对我来说有点奇怪:

  • y(0)=0
  • yya作为x

解决这个问题的好数值方法是什么?想到 MATLAB,但如果有的话,我对 C/C++ 中的库持开放态度。

谢谢!

3个回答

解决此类 BVP 的常见介绍性方法是Shooting Method如您所知,解决问题:

y(t)=f(t,y,y)y(x0)=y0y(x0)=y0

使用诸如欧拉方法或任何种类的 RK 方法之类的技术是相当直接的。您选择什么时间步长算法取决于您的问题的刚度和稳定性。

但是,您并没有这个问题。射击方法涉及用不同的y_0反复求解上述方程,y0直到您的y接近ya这可以通过在您的时间步长算法周围包装一个寻根方法来完成。

您的问题还增加了在远场而不是某个点中定义正确 BC 的复杂性。你显然不能将你的解决方案推进到无穷大,所以你必须选择一些任意的右边界xlarge并用 BC 解决它两次:

y(xlarge)=yay(2xlarge)=ya

如果您的两个解决方案一致,那么您知道被选择得足够大,就像在处具有边界一样。如果没有,你必须用更高的边界来解决它。xlarge

据我所知,边界元法(BEM)可以处理渐近边界条件。由于其对渐近边界条件的简单处理,它似乎在声学和电磁学问题上很受欢迎。对于一维问题,它可能会特别好。

戈德里克的解决方案是一个很好的解决方案,但有时有一种更好的方法来做渐近边界条件的拍摄方法。

限制中捕获原始行为。例如,像这样的术语x

(xα)dϕdx
βx2ϕ

将变为

xdϕdx
0

如果得到的微分方程完全可解,则可以选择具有所需渐近行为的精确解,并且某些足够大以使渐近逼近良好,然后使用射击方法找到匹配点。x

这种技术也适用于振荡渐近边界条件。

如果你发现自己经常做这类问题,你可能想看看Bender 和 Orszag 的渐近学知识的 eldrich tome。