我正在开发一个项目(C# 和 .NET Framework),需要解决一些偏微分方程。是否有基于 .NET Framework 的特定库可以让我更轻松地完成工作?
我曾经使用过MATLAB,那里解决偏微分方程非常简单。我该如何解决这个问题?
我正在开发一个项目(C# 和 .NET Framework),需要解决一些偏微分方程。是否有基于 .NET Framework 的特定库可以让我更轻松地完成工作?
我曾经使用过MATLAB,那里解决偏微分方程非常简单。我该如何解决这个问题?
取决于您要解决哪些PDE以及您想如何解决它们。
我所知道的每种方法都需要线性代数。您需要为.NET找到一个好的矩阵包,最好的矩阵包可以有效地处理稀疏矩阵。
线性椭圆(稳态扩散),抛物线(瞬态扩散)和双曲线(F = MA动态)PDE需要稍微不同的方法。
这三个PDE都可以使用经典有限差分,有限元(加权残差)或边界元(Green函数)来创建您想要解决的系统矩阵。一般非线性PDE可能最好使用有限元/加权残差技术进行攻击。
但是,一旦将拋物线和双曲线PDE离散化,它们就会变成耦合的ODE集。您必须进行瞬态积分,以重复解决时间演变。拋物线ODE在时间上是一阶的;双曲线ODE在时间上是二阶的。
我正在学习CUDA和NVIDIA。您可能需要查找语言的CUDA绑定。
所有这些都是大主题。请使用Google搜索一些来源,因为在此处无法提供更多的概述。
更新:最近我了解到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的许可证不兼容(我相信AlgLib的许可证是GPL)。
请查看http://www.mathdotnet.com/About.aspx,它可能有你需要的内容。然而,我怀疑你应该根据你的应用需求选择最好的库,然后将其与你的 .net 应用程序进行接口。
你可能会发现,在这样的事情中(除非你使用它来学习语言或数学),有许多预先制作的库可供使用。