我正在研究一个项目(C#和.NET Framework),它要求我解决一些偏微分方程。是否有基于.NET Framework的特定库我可以看到并使我的工作更简单?
我使用MATLAb并且解决偏微分方程非常简单。我该如何解决这个问题?
答案 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程序集,该程序集链接到您应用程序的其余部分。