私はいくつかの偏微分方程式を解く必要があるプロジェクト (C# および .NET Framework) に取り組んでいます。.NET Framework に基づいて、作業を簡素化できる特定のライブラリはありますか?
私は MATLAb を使用しており、そこで偏微分方程式を解くのは非常に簡単です。どうすればこの問題を解決できますか?
私はいくつかの偏微分方程式を解く必要があるプロジェクト (C# および .NET Framework) に取り組んでいます。.NET Framework に基づいて、作業を簡素化できる特定のライブラリはありますか?
私は MATLAb を使用しており、そこで偏微分方程式を解くのは非常に簡単です。どうすればこの問題を解決できますか?
どのPDEを解決したいか、およびどのようにそれらにアプローチしたいかによって異なります。
私が知っているすべてのアプローチには、線形代数が必要です。.NETに適した行列パッケージを見つけたいと思うでしょう。これは、スパース行列を効率的に処理できる、見つけることができる最高の行列です。
線形楕円(定常状態拡散)、放物線(過渡拡散)、および双曲線(F = MA動的)PDEには、わずかに異なるアプローチが必要です。
これらの3つのPDEはすべて、古典的な有限差分、有限要素(重み付き残差)、または境界要素(グリーン関数)を使用して、解く必要のあるシステム行列を作成できます。一般的な非線形偏微分方程式は、おそらく有限要素/重み付き残差法を使用して攻撃するのが最適です。
ただし、放物線と双曲線のPDFは、離散化すると、結合されたODEのセットに変わります。時間発展を繰り返し解決するには、一時的な積分を行う必要があります。放物線ODEは時間的に一次です。双曲線ODEは時間的に2次です。
私はCUDAとNVIDIAについて学んでいます。あなたの言語のCUDAバインディングを調べたいと思うかもしれません。
これらはすべて、それ自体が大きなトピックです。ここで大まかな概要以上のものを提供することはできないので、いくつかの情報源についてはグーグルでお願いします。
更新:最近、MicrosoftSolverFoundationに気づきました。私自身は調べていませんが、C#開発者がこの問題を解決するのに役立つかもしれません。
別の提案はAlgLibです。必要なものを見つけなければならない包括的なライブラリとは異なり、AlgLib にはすべてのアルゴリズムが分離されており、複数の言語 (ほとんど/すべての場合に C# を含む) で提供されることが多いため、これが気に入っています。微積分 AlgLib カバーについて:
Euler's method
Runge-Kutta method
Runge-Kutta method for a system of ODEs
Bulirsch-Stoer method for a system of ODEs
ただし、注意が必要です... AlgLib でこれらのアルゴリズムを確認したところ、ライセンスが AlgLib のライセンス (GPL だと思います) と互換性がない可能性があるため、(AlgLib によって) サポートされていないことに気付きました。
MATLAB で問題を解決し、MATLAB コンパイラ+ Builder NE ツールボックスを使用して、残りのアプリにリンクする .NET アセンブリを作成できます。
http://www.mathdotnet.com/About.aspxを確認してください。必要なものが含まれている場合があります。ただし、アプリケーションの要件に最適なライブラリを取得し、それを .net アプリケーションに接続する必要があると思います..
おそらく、このようなもの (言語または数学のいずれかを学習するために使用する場合を除く) には、事前に用意されたライブラリが多数あることに気付くでしょう。