gpt4 book ai didi

.net - DotNumerics、AlgLib、dnAnalytics、Math.net、F# for Numerics、Mtxvec?

转载 作者:行者123 更新时间:2023-12-01 19:34:41 24 4
gpt4 key购买 nike

我已经疯狂搜索 Google 和 Stack Overflow 好几天了,但尚未找到任何最新的、完全相关的信息来回答以下问题:最好的 C#/F#/.NET 数学库是什么(特别是,那些包装或实现与 Lapack 相同功能的函数等)?

我在 Stack Overflow 上看到的最好的帖子之一是:https://stackoverflow.com/questions/3227647/open-source-math-library-for-f

那篇文章以及之前的其他文章没有充分回答我的问题,因为没有对不同库的用户体验进行系统比较。

我对以下库(在实际使用中)如何完整地实现 Lapack(或一组广泛的等效线性代数功能)感兴趣;而且,我很好奇它们之间的相对性能,特别是在非常大的矩阵上。另外,我想听听其他人使用各种库的经验:困难、易用性等。

下面是“免费”/开源/经济实惠的 .NET/F#/C# 数学库的完整列表,据我所知,这些库具有线性代数功能集。如果 Stack Overflow 上的社区能够分享他们使用以下库的任何经验,我将不胜感激:

我对 F# for Numerics 很感兴趣(因为我正在使用 F#),但我很难确定各个库的优点和缺点。例如,各种库中缺少或包含哪些功能,以及它们的使用难易程度和性能如何。

DotNumerics 似乎是 Lapack 在 C# 中的全面实现,但我找不到任何人在任何地方分享其经验。 Math.NET 似乎最终可能成为 .NET 的一个优秀、全面的数学库,但很难判断该项目有多活跃,而且在当前阶段似乎处于不断变化之中。 Alglib 曾被认为是可靠的一两次,但我想听到更多关于它们相对于其他工具的信息。我喜欢支持原生 F# 数字库的想法,但我不确定开发人员 (Flying Frog Consultancy) 对支持和开发 F# 数字库的 promise 程度......以及他们计划在 1.0 版本中包含哪些功能以及他们的功能1.0 版本的目标日期。

最佳答案

选择数学库的一个常见陷阱是我们希望存在一个适用于所有内容的数学库。

在寻找图书馆之前,你应该首先问“我想要什么样的数学图书馆?”。然后你会得到一个标准列表,例如是否开源、是否高性能、是否便携、是否易于使用。

以下是我对您列表中的库的评论(我没有使用最后两个):

1) 点数值

( http://www.dotnumerics.com/ )

他们使用 fortran2C# 转换器将 Lapack 过程代码转换为 C# 类。用户友好的 C# 包装器是为原始 Lapack 类编写的。

2) Alglib ( http://www.alglib.net/ )

该库有多种语言版本,例如 delphi、c++ 和 c#。我相信它比您列出的任何其他图书馆都有更悠久的历史。

大部分函数都是从 Lapack 翻译而来的。而且它的界面不是那么用户友好。 (但是你有Lapack风格界面的灵 active 。)使用lapack风格界面意味着你需要更多地了解矩阵及其运算。

3) dnAnalytics ( http://dnanalytics.codeplex.com/ )

该库现在正在合并到 Math.Net 中。看来合并还没有完成。 dnA 中的一些函数在 Math.Net 中仍然不可用。

4) Math.NET ( http://www.mathdotnet.com/ )它的实现是从头开始的,即它不是 Lapack 的直接翻译。他们的目标是为.Net 平台提供一个纯粹的托管库。这意味着易于使用和便携性是两个主要目标。一个问题是他们自己的实现是否正确。一件好事是这个库是可移植的,您可以毫不费力地在 Mono、XNA、Windows Mobile Phone 上使用它。

上述库不关注 F#。然而,Math.Net 的一名团队成员就职于 MS Research Cambridge,并且是一位 F# 专家。正如 Cuda 所说,他们将为该库制定一个 F# 接口(interface)。他们还将提供原生包装。但也许你会等待很长一段时间,比“几个月”还要长:)

出于对高性能的考虑,上述库不提供 native 包装器(至少现在是这样)。如果你想要原生性能+.Net,你最好使用商业库。有一些开源解决方案:

<强>1。 http://ilnumerics.net/ 这是一个类似 numpy 的 .Net 解决方案。他们 PInvoke 到 Lapack dll(例如 netlib 上的非优化 lapack、AMD 和 Intel 的优化版本。)

<强>2。 F# 中的数学提供程序。阅读我在 this question 中的答案。由于 F# 源代码现已开源。我可能会修改库并发布我的更新:)

通常你不需要一个大的数学库。您只需要一些功能,例如,如果您需要快速矩阵乘法过程,使用 PInovke 到平台优化的 BLAS dll 是最简单的方法。如果您需要为 children ​​做一款面向教育的数学软件,那么Math.net的质量就足够了。如果您在一家公司并开发可靠的数学组件,那么为什么不使用由高素质团队支持的商业组件呢?

找到一个完美的数学库很难。但找到一个库来解决您的问题通常很容易。

关于.net - DotNumerics、AlgLib、dnAnalytics、Math.net、F# for Numerics、Mtxvec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4159385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com