Matlab / Octave中计算大型矩阵条件数的最快算法


9

从条件数的定义来看,似乎需要矩阵求逆来计算它,我想知道对于通用方矩阵(或者对称正定数是否更好)是否可以利用某些矩阵分解来计算条件数。更快的方法。

Answers:


7

尽管没有条件定理,但计算条件数(甚至将其近似为2的因子)似乎具有与计算因数分解相同的复杂度。

从对称正定矩阵的稀疏Cholesky因子或从普通平方矩阵的稀疏分解(具有隐式),可以通过计算的稀疏逆子集)得出Frobenius范数中的条件数。,这比计算完整逆数要快得多。(与此相关的是我的论文:超定线性系统的混合范数和界,Linear Algebra Appl。216(1995),257-266。http ://www.mat.univie.ac.at/~neum/scan/74 .pdfRQRQ(RTR)1

编辑:如果则对于任何单位不变的范数,对于稀疏QR因式分解的计算,请参见例如http://dl.acm.org/citation.cfm?id=174408。 对于稀疏逆的计算,请参见例如我的论文:稀疏线性模型中协方差的受限最大似然估计,Genetics Selection Evolution 30(1998),1-24。https://www.mat.univie.ac.at/~neum/ms/reml.pdf 成本大约是分解成本的3倍。A=QR

cond(A)=cond(R)=cond(RTR).




因此,您提出以下建议:给定一个矩阵计算其QR形式为,其中 是上三角矩阵,并且是一个正交矩阵,然后条件编号由 这里的重点是如何找到一种计算QR分解的快速方法。我对吗?AA=QRRQcond(A)=||A||||A1||(RTR)1
linello 2012年

@linello:不完全;看到我的编辑。
阿诺德·诺伊迈耶

谢谢!我要检查一下,此步骤的费用是多少?
linello 2012年

@linello:对于完整矩阵, ; 对于稀疏矩阵,它很大程度上取决于稀疏结构。O(n3
阿诺德·诺伊迈耶

4

使用对称矩阵的特征值/特征向量分解或通用矩阵的SVD来计算条件数当然很容易,但是这些并不是特别快的方法。

有一些迭代算法可以计算出对大多数情况有用的条件数的估计值,而无需进行计算所有工作。参见例如MATLAB中的函数。 一个-1个condest


但是有时估计值太小。尽管没有条件定理,但计算条件数(甚至将其近似为2的因子)似乎具有与计算因数分解相同的复杂度。
阿诺德·纽迈耶

1

对于稀疏的Hermitian矩阵,可以使用Lanczos算法计算其特征值。如果不是Hermitian,则可以通过计算的特征值来计算其奇异值。HHHŤH

由于可以很快地找到最大和最小的特征值/奇异值(很早在对角线化完成之前),因此Lanczos方法对于计算条件数特别有用。


我一直想知道在哪里可以找到用于lanczos迭代的可读matlab代码,该代码阐明了如何获取最小或最大特征值。你能建议我一个吗?
linello 2012年

我没有Lanczos算法的MATLAB代码。
chaohuang 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.