Answers:
为此,MATLAB有几个“精确”函数,cond
和rcond
,后者返回条件编号的倒数。Matlab近似函数condest
将在下面更全面地描述。
通常情况下,条件数的估计是作为矩阵线性系统解的副产品生成的,因此您可能可以将条件数的估计背负在您仍然需要执行的其他工作上。有关如何计算估算值的简要说明,请参见此处。同样,Sandia Labs AztecOO文档说明(请参阅第3.1节)也可以从迭代求解器中获得可选的条件数估计(使用生成的具有共轭梯度的三对角Lanczos矩阵或生成的具有重新启动GMRES的Hessenburg矩阵)。
由于您的矩阵“非常大”并且“仅可用作函数”,因此逻辑方法将是一种在共轭梯度求解器或变体上搭载的方法。
最近arXiv.org纸非平稳极值特征值近似线性系统和估计的相对误差的迭代解决方案提出了这样的方法,并有一些引文早期文献。
现在,我看一下,这个论坛上有很多与之密切相关的先前的问题(并非都与Answers有关,但请查看Comments):
Matlab / Octave中计算大型矩阵条件数的最快算法
由于MATLAB代码的可用性是Question的一部分,因此,这里有一些信息condest
,该函数可以估算1范数条件数。这个想法来自Hager(1984),在此处有2010年的文章及其扩展名,以显式计算(找到一列的最大1-范数)并估算通过渐变方法。另请参阅John Burkardt的CONDITION,这是一个MATLAB库(其他可用语言),“用于计算或估计矩阵的条件数”。
由于您的矩阵显然是Hermitian且为正定的,因此2范式条件数可能会引起更大的兴趣。那么问题就在于估计最大(最小)特征值与最小(绝对)特征值之比。该挑战在某种程度上与1-范数情况相似,因为通常可以轻松地获得对最大特征值的良好估计,但是对最小特征值的估计却更加困难。
尽管针对非SPD(甚至非平方)情况,最近的arXiv.org论文《可靠的迭代条件数估计》很好地概述了最小特征值估计问题以及Krylov子空间的有希望的攻击路线方法(LSQR)在SPD情况下等于共轭梯度。