使用C#求解偏微分方程

时间:2009-09-20 22:59:59

标签: c# .net math differential-equations

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

我使用MATLAb并且解决偏微分方程非常简单。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:7)

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

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

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

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

但抛物线和双曲线PDF将在您离散后转变为耦合的ODE集合。你必须做瞬态整合来反复解决时间演变。抛物线ODE是时间上的第一顺序;双曲线ODE是时间上的二阶。

我正在学习CUDA和NVIDIA。您可能希望查看针对您的语言的CUDA绑定。

所有这些都是他们自己的重大话题。请Google提供一些消息来源,因为这里不可能提供更多粗略概述。

更新:我最近意识到Microsoft Solver Foundation。我自己没有调查过,但也许它对C#开发人员解决这个问题很有帮助。

答案 1 :(得分: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)不兼容。

答案 2 :(得分:2)

查看http://www.mathdotnet.com/About.aspx,它可能符合您的需求。但是我怀疑你应该为你的应用程序需求获得最好的库,然后将它与你的.net应用程序接口..

你可能会发现这样的事情(除了用来学习语言或数学的地方)之外,还有很多预制的库。

答案 3 :(得分:2)

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