5

我正在做一个项目(C# 和 .NET Framework),它需要我解决一些偏微分方程。是否有任何基于 .NET Framework 的特定库可供我查看并使我的工作更简单?

我使用过 MATLAb,在那里求解偏微分方程非常简单。我怎么解决这个问题?

4

4 回答 4

7

取决于您要解决的 PDE 以及您希望如何处理它们。

我知道的每种方法都需要线性代数。你会想为 .NET 找到一个好的矩阵包,这是你能找到的最好的,一个可以有效处理稀疏矩阵的包。

线性椭圆(稳态扩散)、抛物线(瞬态扩散)和双曲线(F= MA 动态)偏微分方程需要稍微不同的方法。

所有这三个 PDE 都可以使用经典的有限差分、有限元(加权残差)或边界元(格林函数)来创建您想要求解的系统矩阵。一般非线性偏微分方程可能最好使用有限元/加权残差技术进行攻击。

但是,一旦离散化抛物线和双曲线 PDF,它们就会变成耦合的 ODE 集。您必须进行瞬态积分才能反复求解时间演化。抛物线 ODE 在时间上是一阶的;双曲 ODE 在时间上是二阶的。

我正在学习 CUDA 和 NVIDIA。您可能想查看您的语言的 CUDA 绑定。

所有这些都是他们自己的大话题。请谷歌搜索一些来源,因为这里只能提供粗略的概述。

更新:我最近开始了解Microsoft Solver Foundation。我自己没有研究过,但也许它有助于 C# 开发人员解决这个问题。

于 2009-09-21T01:22:48.973 回答
3

另一个建议是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)。

于 2009-09-20T23:06:34.873 回答
2

查看http://www.mathdotnet.com/About.aspx,它可能有你需要的东西。但是我怀疑你应该为你的应用程序需求获得最好的库,然后将它连接到你的 .net 应用程序。

你可能会发现像这样的东西(除了你用来学习语言或数学的地方)有很多预装的库。

于 2009-09-20T23:03:20.713 回答
2

您可以在 MATLAB 中解决该问题,并使用MATLAB 编译器+ Builder NE 工具箱创建一个链接到应用程序其余部分的 .NET 程序集。

于 2009-09-21T08:59:26.013 回答