DotNumerics,AlgLib,dnAnalytics,Math.net,F#的数字,M​​txvec? [英] DotNumerics, AlgLib, dnAnalytics, Math.net, F# for Numerics, Mtxvec?

查看:424
本文介绍了DotNumerics,AlgLib,dnAnalytics,Math.net,F#的数字,M​​txvec?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在寻找谷歌和堆栈溢出像疯了似的好几天,还没有找到任何最近的,完全相关的信息来回答以下问题:什么是最好的C#/ F#/ NET数学库(具体。 ,那些包装或实现相同的功能LAPACK等)?

I’ve been searching Google and Stack Overflow like crazy for days and have yet to find any recent, completely relevant information to answer the following question: What are the best C#/F#/.NET math libraries (specifically, those that wrap or implement the same functionality as Lapack, etc.)?

一对堆栈溢出更好的职位,我没看到是:<一href="http://stackoverflow.com/questions/3227647/open-source-math-library-for-f">http://stackoverflow.com/questions/3227647/open-source-math-library-for-f

One of the better posts on Stack Overflow that I did see was: http://stackoverflow.com/questions/3227647/open-source-math-library-for-f

而之所以该职位,和其他previous的帖子,没有充分回答我的问题是,用各种库的用户体验,没有系​​统的比较给出。

The reason that that post, and other previous posts, didn’t sufficiently answer my question was that no systematic comparison of user experiences with various libraries was given.

我喜欢下面的如何彻底库(在现实世界中使用)执行LAPACK(或一套广泛的功能相当于线性代数);而且,我很好奇他们的表现相对于彼此尤其是在非常大的矩阵。另外,我想听听关于利用各种库别人的经验:困难,易用性等

I’m interested in how completely the following libraries (in real-world usage) implement Lapack (or a broad set of equivalent linear algebra of functionality); and, I’m curious about their performance relative to each other particularly on very large matrices. Also, I’d like to hear about others’ experiences utilizing the various libraries: difficulties, ease of use, etc.

下面是其中的免费/开源/实惠的.NET / F#/ C#数学库的COM prehensive名单 - 据我所知 - 有一个线性代数功能集。我倒是深深的AP preciate,如果这里的社区对堆栈溢出将芯片与他们有下列库任何经验:

Below is a comprehensive list of the "free"/opensource/affordable .NET/F#/C# math libraries which – as far as I know – have a linear algebra feature set. I’d deeply appreciate it if the community here on Stack Overflow would chip in with any experiences they have with the following libraries:

  • DotNumerics
  • Alglib
  • dnAnalytics
  • Math.NET
  • F# for Numerics
  • MtxVec 2010

我感兴趣的F#的Numerics的(因为我使用F#的工作),但我有困难,确定了各个库的优势和弱点。等,这些功能都丢失或包含在各种库,以及如何方便地使用它们以及他们如何执行。

I’m interested in F# for Numerics (since I’m working with F#) but I’m having difficulty ascertaining the strengths and weaknesses of the various libraries. Like, which features are missing or included in various libraries, and how easily they are used and how well they perform.

DotNumerics好像在C#中的COM prehensive实施LAPACK,但我无法找到任何人谁是分享他们的经验与它的任何地方。 Math.NET好像它最终可能会成为一个优秀的,COM prehensive数学的.NET库,但它很难说该项目是如何积极的是,似乎这是非常在不断变化的当前阶段。 Alglib已经谈到了一次或两次作为坚实的,但我想听到更多关于他们相对于其他人。我喜欢支持本机F#Numerics的库的想法,但我不能确定如何致力于开发(飞蛙顾问)是支持和发展F#的Numerics的......什么功能,他们计划在其1.0版本,什么,包括他们的目标日期为1.0版本。

DotNumerics seems like a comprehensive implementation of Lapack in C#, but I can’t find anyone who’s shared their experiences with it anywhere. Math.NET seems like it could eventually be an excellent, comprehensive math library for .NET, but it’s difficult to tell how active the project is and it seems that it’s very much in flux in its current stage. Alglib has been spoken of once or twice as being solid, but I’d like to hear more about them relative to others. I like the idea of supporting a native F# numerics library, but I’m not certain how committed the developer (Flying Frog Consultancy) is to supporting and developing F# for Numerics… and what functionality they plan to include in their 1.0 release and what their target date is for a 1.0 release.

推荐答案

选择数学函数库的一个常见的​​问题是,我们希望存在一个数学库的一切。

One common pitfall of choosing math library is that we hope there exists a math library for everything.

在寻找一个库,你应该先问我想要什么样的数学库?。那么你将有标准,例如开源与否,高性能与否,便携式或没有,容易使用或不列表。

Before finding a library, you should first ask "what kind of math library do I want?". Then you will have a list of criteria, such as open source or not, high performance or not, portable or not, easy to use or not.

以下是我在你的名单库的意见(我没有使用过的最后两个):

Following is my comments on the libraries in your list (I haven't used the last two):

1) DotNumerics

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

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

他们用fortran2C#翻译是翻译的LAPACK程序,code到C#类。用户友好的C#包装器的原LAPACK类写的。

They use a fortran2C# translator that translates the Lapack procedures code into C# classes. User friendly C# wrappers are written for the raw Lapack classes.

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

本库在几种语言,如德尔福,C ++和C#。我相信它有比你列出的任何其他库历史较长。

This library is available in several languages, like delp c++ and c#. I believe it has longer history than any other libraries you listed.

大部分的功能​​从LAPACK翻译。而它的界面不是那么人性化。 (但你的LAPACK风格界面的灵活性。)使用LAPACK风格的界面意味着您需要了解更多关于矩阵及其运算。

Most of the functions are translated from Lapack. And its interface is not so user friendly. (But you have the flexibility of Lapack style interface.) Using lapack style interface means that you need to know more about the matrix and its operations.

3) dnAnalytics (HTTP://dnanalytics.$c$cplex.com/)

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

该库合并到Math.Net现在。看来,合并尚未完成。在DNA中的一些功能还没有上市,在Math.Net。

This library is merging into Math.Net now. It seems that the merging is not done yet. A few functions in dnA is still not available in Math.Net.

4) Math.NET (http://www.mathdotnet.com/) 它的实现是从头开始,也就是说,它是不是从LAPACK的直接翻译。他们的目标是为.NET平台,一个纯粹的托管库。这意味着,使用方便,便于携带有两个主要目标。其中值得关注的是,自己的执行是否正确。其中一个好处是,该库是可移植的,你可以在单声道,XNA,的Windows Mobile手机使用毫不费力的感觉。

4) Math.NET (http://www.mathdotnet.com/) Its implementation is from scratch, i.e., it is not a direct translation from Lapack. They aim to provide a purely managed library for .Net platform. That means easy usage and portability are two primary goals. One concern is that whether their own implementation is correct or not. One good thing is that this library is portable in the sense that you can use it on Mono, XNA, Windows Mobile Phone with little effort.

以上库不专注于F#。然而在Math.Net队员一期工程为MS剑桥研究院和是F#专家。就像Cuda的说,他们将制定出一个F#接口库。此外,他们将提供原生的包装。但是,也许你会等待很长的时间,不是好几个月长:)

The above libraries dont' focus on F#. However one of the team members in Math.Net works for MS Research Cambridge and is an F# expert. Like Cuda said, they will work out an F# interface for the library. Also they will provide native wrappers. But maybe you will wait a long time, longer than "several months" :)

有关高性能的关注,上述库不提供原生包装(至少目前如此)。如果您希望本机性能+净,你最好使用商业库。有一些开源的解决方案:

For the concern of high performance, the above libraries don't provide native wrappers (at least now). If you want native performance + .Net, you had better use a commercial library. There are some open source solutions:

1。 http://ilnumerics.net/ 这是像.NET解决方案中一个numpy的。他们的PInvoke到LAPACK的DLL(如非优化的LAPACK的NETLIB,AMD和英特尔的优化版本。)

1. http://ilnumerics.net/ This is a numpy like solution for .Net. They PInvoke to Lapack dlls (e.g. the non-optimized lapack at netlib, the optimized versions from AMD and Intel.)

2。数学供应商在F#中。阅读我在这个问题。由于F#源$ C ​​$ C现在开源。我可以修改库并释放我的更新:)

2. math provider in F#. read my answer in this question. Since F# source code is now open sourced. I may revise the library and release my updates :)

通常你并不需要一个大的数学库。你只需要一些功能,例如,如果你需要一个快速的矩阵乘法程序,用PInovke一个平台优化的BLAS DLL是最简单的方法。如果你需要做一个教育导向的数学软件为孩子,然后Math.net的质量是不够的。如果你在一家公司开发可靠的数学成分,那么我们为什么不使用商业一个又一个高素质的团队提供支持?

Usually you don't need a big math library. You just need some functionality, e.g., if you need a fast matrix multiplication procedure, using PInovke to a platform optimized BLAS dll is the easiest way. If you need do a education oriented math software for kids, then the quality of Math.net is enough. If you are in a company and developing reliable math components, then why don't use a commercial one backed by a high-quality team?

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

这篇关于DotNumerics,AlgLib,dnAnalytics,Math.net,F#的数字,M​​txvec?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆