最快的matrix逆Excel VBA

我有很多未知数的方程(我的数据是在Excel中),目前我正在使用matrix方法来解决它们。 我使用内置的MMULT(matrix乘法)和MINVERSE(matrix求逆),forms如下: – Result = MMULT(MINVERSE(matrix1),matrix2)问题在于这个问题,我的matrix大小为2000 x 2000或更多,Excel需要很多时间做逆(matrix乘法非常快)。

什么是加快这个过程的最好方法? 我不介意将数据导出到任何外部第三方程序(与Excel兼容),然后将反转的matrix导回Excel。

我不太了解C / C ++,但是我觉得如果我们将matrix逆函数编译成一个DLL,然后在Excel中使用相同的VBA,速度可能会提高。 请帮忙。

请看下面的链接: 为什么MATLAB在matrix乘法中如此之快?

发现MATLAB的matrix计算速度最快。 我们可以在Excel / VBA中使用任何这样的库吗?

我find了一些库,如C / C ++ / C#或.NET中的LAPACK,ARMADILO等。 如何在Excel VBA中使用这些库的编译版本?

我是John Coleman链接的博客的作者。 有很多选项可用,这取决于您熟悉编译和链接到不同的语言。 我想说的主要选项是(为了便于实施):

  1. 使用Python Numpy和Scipy库与ExcelPython或xlwings(现在包括ExcelPython)。 在我的博客(包括免费下载)最近在这个问题上的post是: https : //newtonexcelbach.wordpress.com/2016/01/04/xlscipy-python-scipy-for-excel-update-with-new-functions /

优点:易于实现(尤其是使用Anaconda Python,现在包括xlwings)。
不需要编译。

Scipy代码速度很快,并且包含稀疏matrix的包,这些包在适用的情况下对解决时间有很大的影响,并且可以处理的matrix的最大尺寸。

免费和开源的电子表格实现可在我的博客上find。

缺点:将大数据集从VBA传输到Python的开销可能会非常大,事实上,对于中小型的matrix来说,这通常比解决scheme的时间要长。

  1. 使用Python版本的Alglib库。 在我的博客中searchAlglib最近使用Python的例子,以及使用C ++和C#的旧例子。

优点和缺点:至于Numpy和Scipy,除了有一个商业版本,它可以提供性能优势(我没有尝试过)。

  1. 用Pyxll使用Numpy / Scipy。 示例电子表格https://newtonexcelbach.wordpress.com/2013/09/10/python-matrix-functions-using-pyxll/

优点:数据传输开销应该大大降低。 更成熟和文档比当前xlwings更好。

缺点:商业包装(但免费评估和非商业用途)不开源。

  1. 使用Visual Studio或其他编译器的开源C ++或Fortran包来生成基于xll的函数。

优点:可能是最好的全面performance。

缺点:需要更多的编码。 执行起来比较困难,特别是如果你想分发给别人。 32位/ 64位问题可能更难以解决。

正如在评论中所提到的那样,matrix求逆比其他matrix求解方法慢得多,但是即使允许这样做,与其他编译程序相比,内置的Excelmatrix函数也是非常慢的,安装上面列出的替代scheme的优点是非常值得努力。