.NET(C#)中用于计算的最佳工具(最有效)是什么:
- 积分
- 偏导数
- 其他重要的数学
人们可以评论 Mathematica 和 Matlab 以及它们与C#的集成吗?
.NET(C#)中用于计算的最佳工具(最有效)是什么:
人们可以评论 Mathematica 和 Matlab 以及它们与C#的集成吗?
Math.NET是一个用 C# 为 Microsoft .NET 平台编写的数学开源工具包,旨在为数值科学和符号代数计算提供一个自包含的干净框架。特别是,Math.NET Numerics是dnAnalytics与Math.NET Iridium合并的结果,包括以下功能:
我不能保证它是最好的或更高效的,但几天前我了解到Luca Bolognese为 .NET 开发了一个财务函数库
你可以在这里找到它:http: //code.msdn.microsoft.com/FinancialFunctions
也许它对你有用。
我没有使用 Mathematica/.NET 桥接器的经验,但我使用过 Mathematica/Java 桥接器,从文档来看,它非常相似。当然,我无法回答的一个问题是接口的实现在稳定性和性能方面有多好。
从概念上讲,我发现调用 Mathematica 的 Java 接口非常好。您有一组对象和方法,可让您启动 Mathematica 会话并将 Mathematica 表达式发送给它们以进行评估。您可以发送文本(这在简单的情况下很容易,但如果您想要一些重要的东西则很棘手)或更多Expr
反映语法树结构的结构化对象。这些表达式将允许您做任何事情:以数值或符号方式计算积分、求导数、求解 ODE 等。
它失败的一个领域是错误处理。Mathematica 本身没有例外。相反,当它遇到麻烦并继续尝试评估它正在处理的表达式时,它会产生“消息”。鉴于 Mathematica 相当不寻常的语义(它对具有重复规则重写的表达式进行操作),这是有道理的,但是与 Mathematica 通信的默认方法集不允许您轻松地从 Java 中监视这些消息(或者,看起来, .NET),尽管可以编写自己的方法来更好地完成此工作。
Microsoft 的Visual F#编程语言专为此类工作而设计,因此您可能只想从 C# 代码中调用现有的 F# 解决方案。例如,在安装了我们的F# for Numerics库的 Visual Studio 2010 中,您可以交互地将 x 3 -x-1 从 -3 集成到 3,如下所示:
> Functional.integrate (fun [x] -> x**3.0 - x - 1.0) [-3.0, 3.0];;
val it : float = -6.0
并计算该函数关于x
at的偏导数,x=2
如下所示:
> Functional.d (fun x -> x**3.0 - x - 1.0) 2.0;;
val it : float = 11.0
您可以查看http://www.dmoz.org/Science/Math/Software/ - 他们列出了几个 C#。我会说尝试一些(如果是商业版,则为演示版)并进行一些分析以查看它们是否符合您的要求。您也可以使用MATLAB - 请参阅该条目的限制和替代部分。(我对这些工具没有个人经验。)
看看 f# http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/
它将成为 Visual Studio 2010 的一部分。
如果您有附加产品 MATLAB Builder for .NET,您可以将 MATLAB 代码打包到可以从 C# 调用的 .NET 程序集中。