我有一个二阶非线性 ODE(没什么花哨的),但 BC 对我来说有点奇怪:
- 作为
解决这个问题的好数值方法是什么?想到 MATLAB,但如果有的话,我对 C/C++ 中的库持开放态度。
谢谢!
我有一个二阶非线性 ODE(没什么花哨的),但 BC 对我来说有点奇怪:
解决这个问题的好数值方法是什么?想到 MATLAB,但如果有的话,我对 C/C++ 中的库持开放态度。
谢谢!
解决此类 BVP 的常见介绍性方法是Shooting Method。如您所知,解决问题:
与和
使用诸如欧拉方法或任何种类的 RK 方法之类的技术是相当直接的。您选择什么时间步长算法取决于您的问题的刚度和稳定性。
但是,您并没有这个问题。射击方法涉及用不同的y_0反复求解上述方程,直到您的接近。这可以通过在您的时间步长算法周围包装一个寻根方法来完成。
您的问题还增加了在远场而不是某个点中定义正确 BC 的复杂性。你显然不能将你的解决方案推进到无穷大,所以你必须选择一些任意的右边界并用 BC 解决它两次:
和
如果您的两个解决方案一致,那么您知道被选择得足够大,就像在处具有边界一样。如果没有,你必须用更高的边界来解决它。
据我所知,边界元法(BEM)可以处理渐近边界条件。由于其对渐近边界条件的简单处理,它似乎在声学和电磁学问题上很受欢迎。对于一维问题,它可能会特别好。
戈德里克的解决方案是一个很好的解决方案,但有时有一种更好的方法来做渐近边界条件的拍摄方法。
限制中捕获原始行为。例如,像这样的术语
将变为和
如果得到的微分方程完全可解,则可以选择具有所需渐近行为的精确解,并且某些足够大以使渐近逼近良好,然后使用射击方法找到匹配点。
这种技术也适用于振荡渐近边界条件。
如果你发现自己经常做这类问题,你可能想看看Bender 和 Orszag 的渐近学知识的 eldrich tome。