我正在做一个项目(C# 和 .NET Framework),它需要我解决一些偏微分方程。是否有任何基于 .NET Framework 的特定库可供我查看并使我的工作更简单?
我使用过 MATLAb,在那里求解偏微分方程非常简单。我怎么解决这个问题?
我正在做一个项目(C# 和 .NET Framework),它需要我解决一些偏微分方程。是否有任何基于 .NET Framework 的特定库可供我查看并使我的工作更简单?
我使用过 MATLAb,在那里求解偏微分方程非常简单。我怎么解决这个问题?
取决于您要解决的 PDE 以及您希望如何处理它们。
我知道的每种方法都需要线性代数。你会想为 .NET 找到一个好的矩阵包,这是你能找到的最好的,一个可以有效处理稀疏矩阵的包。
线性椭圆(稳态扩散)、抛物线(瞬态扩散)和双曲线(F= MA 动态)偏微分方程需要稍微不同的方法。
所有这三个 PDE 都可以使用经典的有限差分、有限元(加权残差)或边界元(格林函数)来创建您想要求解的系统矩阵。一般非线性偏微分方程可能最好使用有限元/加权残差技术进行攻击。
但是,一旦离散化抛物线和双曲线 PDF,它们就会变成耦合的 ODE 集。您必须进行瞬态积分才能反复求解时间演化。抛物线 ODE 在时间上是一阶的;双曲 ODE 在时间上是二阶的。
我正在学习 CUDA 和 NVIDIA。您可能想查看您的语言的 CUDA 绑定。
所有这些都是他们自己的大话题。请谷歌搜索一些来源,因为这里只能提供粗略的概述。
更新:我最近开始了解Microsoft Solver Foundation。我自己没有研究过,但也许它有助于 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),因为它们的许可证可能与 AlgLib 的许可证不兼容(我相信这是 GPL)。
查看http://www.mathdotnet.com/About.aspx,它可能有你需要的东西。但是我怀疑你应该为你的应用程序需求获得最好的库,然后将它连接到你的 .net 应用程序。
你可能会发现像这样的东西(除了你用来学习语言或数学的地方)有很多预装的库。
您可以在 MATLAB 中解决该问题,并使用MATLAB 编译器+ Builder NE 工具箱创建一个链接到应用程序其余部分的 .NET 程序集。