gpt4 book ai didi

excel - 最快的矩阵逆Excel VBA

转载 作者:行者123 更新时间:2023-12-04 22:00:30 31 4
gpt4 key购买 nike

我有许多带有许多未知数的方程(我的数据在 Excel 中),目前我正在使用矩阵方法来求解它们。
我使用以下形式的内置 MMULT(矩阵乘法)和 MINVERSE(矩阵求逆):- Result = MMULT (MINVERSE(matrix1),matrix2)
这就是问题所在,我的矩阵大约为 2000 x 2000 或更多,而 Excel 需要大量时间进行逆运算(矩阵乘法非常快)。

我加快进程的最佳方法是什么?我不介意将数据导出到任何外部 3rd 方程序(与 Excel 兼容),然后将逆矩阵导入回 Excel。

我不太懂C/C++,但我觉得如果我们把矩阵逆函数编译成一个DLL,然后在excel VBA中使用它,也许速度会提高。请帮忙。

请参阅以下链接:
Why is MATLAB so fast in matrix multiplication?

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

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

最佳答案

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

  • 将 Python Numpy 和 Scipy 库与 ExcelPython 或 xlwings(现在包括 ExcelPython)一起使用。我博客上关于该主题的最新帖子(包括免费下载)是:
    https://newtonexcelbach.wordpress.com/2016/01/04/xlscipy-python-scipy-for-excel-update-with-new-functions/

  • 优点:
    自由的
    易于实现(尤其是使用 Anaconda Python,现在包括 xlwings)。
    无需编译。

    Scipy 代码速度很快,并且包含用于稀疏矩阵的包,这在适用的情况下对求解时间和可以处理的矩阵的最大大小产生了巨大的影响。

    我的博客上提供了免费和开源的电子表格实现。

    缺点:
    将大型数据集从 VBA 传输到 Python 的开销可能很大,事实上,对于中小型矩阵,它通常大于求解时间。
  • 使用 Python 版本的 Alglib 库。在我的博客中搜索 Alglib 以获取最近使用 Python 的示例,以及使用 C++ 和 C# 的旧示例。

  • 的优点和缺点:
    至于 Numpy 和 Scipy,除了也有商业版本,它可能会提供性能优势(我还没有尝试过)。
  • 将 Numpy/Scipy 与 Pyxll 一起使用。
    https://newtonexcelbach.wordpress.com/2013/09/10/python-matrix-functions-using-pyxll/用于示例电子表格。

  • 优点:
    应该大大减少数据传输开销。
    比目前的 xlwings 更成熟,文档更好。

    缺点:
    商业包(但免费用于评估和非商业用途)
    不是开源的。
  • 使用带有 Visual Studio 或其他编译器的开源 C++ 或 Fortran 包来生成基于 xll 的函数。

  • 优点:
    可能是最好的全能表现。

    缺点:
    需要更多编码。
    实现比较困难,特别是如果你想分发给其他人。
    32 位/64 位问题可能更难解决。

    正如评论中提到的,矩阵求逆比其他矩阵求解方法慢得多,但即使考虑到这一点,与替代编译例程相比,内置 Excel 矩阵函数也非常慢,安装上面列出的替代方法之一的优点是非常值得努力。

    关于excel - 最快的矩阵逆Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852444/

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