|
分類:[.NET 全般]
初めて利用する者です。 どなたか、反応拡散方程式をC++で実装する方法について、どんな小さなことでも良いので、ご存知の方がおられましたら教えて下さい>_< このサイト内で「微分」とか「方程式」で検索しても0件だったので、もしスレ違いならご指摘ください
Mathematicaで計算していたのですが、諸事情によりC++で実装することになりました。
C++はかなり素人ですが、今のところ、非常に原始的な形では実装できております。すなわち、かかわるすべての物質の濃度を配列で表し、一定のステップサイズごとに計算して進めるというものです。完全な陽解法のため、陰解法と異なりステップサイズを非常に小さくしないといけず、現実的な時間内に計算が終わりません。陰解法その他を実装しようかと思っているところですが、情報検索能力の無さから、反応拡散方程式における効率のよいコードの書き方についての説明を見つける事ができません。
パッケージも探してみましたが、ズバリ「反応拡散方程式」を扱えるC++パッケージは見つかりませんでした。(←どなたかもしご存知ならリンク等教えて下さい) 見つかった範囲で最も私の目的に近いものは、「ODEINT」や「GNU科学技術計算ライブラリ」のようですが、どちらも常微分方程式までのサポートにとどまります。これらを時間と空間に関する偏微分方程式にする方法を私は知りません。
おそらくいちばんカナメになるのは、「ステップサイズを状況に合わせて変える(特に、求めたい精度の範囲内で適当に大きくするのが計算速度的に重要)」と「計算を高速にするC++の記述法」あたりだと思います。これらについて何か情報ソースがあればお教え下さいませ。
プラットフォームはWindows 8の普通のパソコンで動いているMicrosoft Visual Studio Express 2012です。(ただ私はプラットフォーム云々より、コードの書き方の段階で詰まってしまっていますが)
|