在没有明确拼写出矩阵分量的情况下求解线性方程组的算法

问题描述 投票:2回答:1

我有一个线性函数(n输入 - > n输出),并使用函数的特殊结构(一些类似DP的算法),我可以在O(n)时间内评估输出,而不是O(n ^ 2)时间。现在,给定一些输出值,我需要找到评估输出的输入。

我可以拼出矩阵组件(通过用n个基础输入评估线性函数)并使用一些算法,如LU分解,但这需要花费O(n ^ 3)时间来计算。是否有更快的算法,利用线性函数的结构?

(由于线性函数不对称,因此无法使用共轭梯度法。)

我需要精确的解决方案,其中n很小(n = 10~20),但我需要在一秒钟内进行数十万次这种计算。

从代码设计的角度来看,如果算法不需要转置线性函数会更好。 (虽然以更多代码和更多调试为代价,但可以提供具有O(n)时间复杂度的转置函数。)

algorithm matrix linear-algebra
1个回答
2
投票

你考虑过GMRES吗?您提到您正在寻找精确的解决方案,但是您可以合理地快速获得机器精度误差。

我可以在O(n)时间内评估输出,而不是O(n ^ 2)时间。

您可以使用线性运算符来利用这一点,例如使用GMRES in scipy implementationA可以是LinearOperator。线性运算符只是一个评估Ax的函数,这是你的“评估输出”步骤。

否则,如果没有临时解决方案,我不熟悉可以使用线性运算符加速的任何精确方法,因此我需要了解更多关于您的问题的信息,例如您的矩阵被绑定了吗?

© www.soinside.com 2019 - 2024. All rights reserved.