.NET 矩阵库 [英] Matrix Library for .NET

查看:35
本文介绍了.NET 矩阵库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为 .NET/C# 寻找一个好的(经过充分测试、功能齐全、理想情况下有一个漂亮的界面)矩阵库.我在这里的主要要求只是它应该是免费的(在这种情况下我并不特别关心它是否是开源的)并且最好支持 稀疏矩阵 操作.强制性要求是所有基本运算(例如乘法、转置、求逆)以及寻找特征值和特征向量.实现用于发现特征值的数值方法而不是/以及分析方法,特别是 Lanczos 算法对于稀疏矩阵,这是非常可取的,因为我将要处理的矩阵非常大(长度为 10,000 以上)以及正方形,而且相当稀疏.话虽如此,我可能会在那里要求更多,因此任何有关合理完整矩阵库的建议都会很棒.

I'm looking for a good (well-tested, fully-featured, and ideally with a nice interface) matrix library for .NET/C#. My main requirements here are only that it should be free (I don't particularly care whether it's open-source in this case) and preferably support sparse matrix operations. The obligatory requirements are all the basic operations (e.g. multiplication, transposition, inversion) as well as finding eigenvalues & eigenvectors. Implementation of a numerical rather than/as well as analytical methods for discovery of eigenvalues, particularly the Lanczos algorithm for sparse matrices, would be highly preferable since the matrices I'm going to be dealing with are very large (lengths of 10,000 upwards) as well as square, and also reasonably sparse. Saying that, I could be asking for a bit much there, so any suggestions for a reasonably complete matrix library would be great.

现在我知道 Python 有一两个用于此类任务的有用库(即 NumPy/SciPy),但不幸的是,该领域似乎缺乏 .NET.

Now I'm aware that Python has one or two useful libraries for such tasks (namely NumPy/SciPy), but .NET unfortunately seems to be lacking in the area.

经过一番搜索,我发现了以下适用于 .NET 的库,我可能会用到它们:

A bit of searching turned up the following libraries for .NET, which I could potentially used:

  • Lutz Roeder's Mapack
  • DotNetMatrix (CodeProject)
  • C# Matrix Library (CodeProject)

但是,由于我没有使用任何这些库或其他库的任何经验(并且在任何情况下都没有足够的时间正确检查每个库),如果这里有人可以讨论他们的建议,我将不胜感激各种图书馆,它们的优缺点,特别是在适合我的用途方面,以及他们对它们的一般经验.

However, since I have had no experience whatsoever using any of these libraries or others (and not exactly enough time to check each of them out properly in any case), I would very much appreciate if anyone here could discuss their recommendations regarding the various libraries, their pros/cons particularly with regards to suitability for my uses, and their general experiences with them.

使用 MatLab 始终是一种选择,但不是首选,因为如果我可以将矩阵数学直接与我的程序集成会方便得多.

Resorting to MatLab is always an option, but not a preferred one, as it would be much more convenient if I could integrate the matrix math directly with my program.

推荐答案

上次我评估它时还没有完全到位,但是已经有相当多的活动,因此您还应该考虑(免费和开源)Math.NET 数字.

It wasn't quite there last time I evaluated it, but there has been quite a bit of activity, so you should also consider the (free and open source) Math.NET Numerics.

现在看来,他们似乎已经完成了新版本,并添加了稀疏矩阵支持以及其他不错的功能.

In looking now, it seems they've finished their new version, and have added sparse matrix support, as well as other nice goodies.

如果您想要更强大的支持,不幸的是,您确实需要进入 .NET atm 的商业包.

If you want more robust support, you unfortunately really need to get into commercial packages for .NET atm.

有两个功能非常丰富的包,它们都很好地支持矩阵.Extreme Numerics 效果很好,并且有一些非常好的功能.我也听说过关于 IMSL Visual Numerics 数学库的好消息.

There are two very feature-rich packages, both of which support matrices very well. Extreme Numerics works great, and has some very nice features. I've also heard very good things about the IMSL Visual Numerics math libraries.

这篇关于.NET 矩阵库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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