我刚刚使用 odeint C++ 库从离散 PDE 中实现了一组耦合 ODE 的数值积分。它运行良好,速度快如闪电,但有一个问题:
我的 ODE 系统具有所谓的吸收边界条件:我的状态变量 n 的时间导数,它是 N 个双倍的向量(人口密度)在系统函数中计算,但在此之前(或之后时间积分)我想设置:
n[N]=n[N-2];
n[N-1]=n[N-2];
但是,这当然是行不通的,因为系统函数中的状态变量被声明为const,并且看起来除了通过干预库之外无法更改...有什么办法解决这个问题吗?
我应该提到将dndt[N]
and设置dndt[N-1]
为零可能看起来像一个解决方案,但它并没有真正帮助,因为它违背了吸收边界条件的概念(n[N]
然后n[N-1]
总是具有它们在的值t=0
,而不是n[N-2]
在任何点的值及时),所以我真的更喜欢改变 n。
谢谢你的帮助!
问候,
迈克尔