我的问题很简单:
计算矩阵的本征分解的最著名算法的最坏情况下的运行时间是多少?
本征分解是减少到矩阵乘法还是在最坏的情况下是最著名的算法(通过SVD)?
请注意,我要求的是最坏情况的分析(仅就),而不是要求与问题相关的常数(如条件编号)的范围。
编辑:给出以下一些答案,让我调整一下问题:我会对近似感到满意。近似值可以是乘法,加法,逐项输入或任何您想要的合理定义。我感兴趣的是,是否存在一种比对依赖性更好的算法?
编辑2:请参见对称矩阵上的相关问题。
我的问题很简单:
计算矩阵的本征分解的最著名算法的最坏情况下的运行时间是多少?
本征分解是减少到矩阵乘法还是在最坏的情况下是最著名的算法(通过SVD)?
请注意,我要求的是最坏情况的分析(仅就),而不是要求与问题相关的常数(如条件编号)的范围。
编辑:给出以下一些答案,让我调整一下问题:我会对近似感到满意。近似值可以是乘法,加法,逐项输入或任何您想要的合理定义。我感兴趣的是,是否存在一种比对依赖性更好的算法?
编辑2:请参见对称矩阵上的相关问题。
Answers:
Ryan在mathoverflow上回答了类似的问题。这是链接:mathoverflow-answer
基本上,您可以通过计算符号行列式将特征值计算简化为矩阵乘法。这给出了O()的运行时间,以获取位特征值。当前最好的运行时是O(),其近似值在。
Ryan的参考是``Victor Y.Pan,Zhao Q.Chen:矩阵特征问题的复杂性。STOC 1999:507-516''。
(我相信在较老的Aho,Hopcroft和Ullman的书《计算机算法的设计和分析》中也讨论了特征值的复杂度与矩阵乘法之间的关系,但是,我没有这本书在我的面前,我无法给您确切的页码。)
查找特征值本质上是一个迭代过程:查找特征值等同于找到多项式的根。此外,Abel-Ruffini定理指出,一般而言,您不能以简单的封闭形式(即,带有如二次方程式这样的部首)来表达任意多项式的根。因此,您不能希望“精确地”计算特征值。
这意味着频谱分解算法必须是近似的。任何通用算法的运行时间都必须取决于所需的精度。它不能仅仅取决于尺寸。
我不是这方面的专家。我猜想对n的三次依赖性很好。我见过的所有算法都使用矩阵矢量乘法,而不是矩阵矩阵乘法。因此,如果全部归结为矩阵矩阵乘法,我会有些惊讶。
看看 http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms
我只会给出与矩阵特征值有关的部分答案。
如前所述,有很多迭代方法可以找到矩阵的特征值(例如幂迭代),但是总的来说,找到特征值会减少找到特征多项式的根。可以在找到特征多项式,其中是位乘法的代价,是最大条目的位大小,乘以用Bareiss算法计算符号行列式。请参阅Yap关于“算法代数基础”的书,特别是Chap。10,“线性系统”。
一旦找到特征多项式,就可以通过使用隔离区间找到所需的任何精确度的根。参见Yap的书,第二章。有关详细信息,请参见“ 6多项式的根”。我忘记了确切的运行时间,但忘记了它的多项式,即特征多项式的阶数和所需精度的位数。
我怀疑计算本征向量的精确度也是多项式,但是我看不到简单的算法。当然,前面已经提到过一些标准的技巧,但是据我所知,它们都不能保证多项式运行时间达到所需的精度。
这是一个古老的问题,但似乎遗漏了一些重要的文献。
我们为某些算法提供了更强的理论支持。例如,存在基于矩阵符号函数的迭代,请参见Demmel,Dumitriu和Holtz的“快速线性代数是稳定的”。该论文表明,特征值问题可以及时解决,其中是矩阵乘法的指数,是任何。
是的,有Pan + Chen + Zheng的论文建议在BigFloat中组装特征多项式并进行计算,因为最后会损失很多精度,但是没有多少人会认为这是一种实用的方法。
我还提到最广泛使用的算法,即Francis QR迭代,无法证明通用矩阵具有收敛性。Kressner的书讨论了几个反例。
是的,几乎所有的数值线性代数都可以简化为矩阵乘法,尽管数值稳定性始终是一个问题。另外,对于诸如本征分解的问题,您应该对近似值感到满意,因为解法可能不合理。查阅Bini和Pan 撰写的《多项式和矩阵计算》一书。
这是另一个参考- 快速线性代数是稳定的 http://www.netlib.org/lapack/lawnspdf/lawn186.pdf