odeint C++ ライブラリを使用して、離散化された偏微分方程式から結合された一連の ODE の数値積分を実装しました。うまく機能し、非常に高速ですが、1 つの問題があります。
ODE の私のシステムには、いわゆる吸収境界条件があります。N double のベクトル (人口密度) である状態変数 n の時間導関数は、システム関数で計算されますが、それが起こる前 (または後)時間積分) 設定したい:
n[N]=n[N-2];
n[N-1]=n[N-2];
ただし、システム関数の状態変数がconstとして宣言されているため、もちろんこれは機能しません。これは、ライブラリをいじる以外に変更できないように見えます...これを回避する方法はありますか?
dndt[N]
とを 0に設定dndt[N-1]
することは解決策のように見えるかもしれませんが、境界条件を吸収するという概念に反するため、実際には役に立ちません (n[N]
そして、任意の時点での の値ではなく、 でn[N-1]
の値を常に持つことになります)。間に合うように)、だから私は本当に n を変更したいと思います。t=0
n[N-2]
助けてくれてありがとう!
よろしく、
マイケル