如何逼近大矩阵的条件数?

计算科学 线性代数 matlab 有限差分 条件数
2021-12-07 07:44:08

如何近似大矩阵的条件数G, 如果G是傅里叶变换的组合F(非均匀或均匀),有限差分R, 和对角矩阵S?

矩阵非常大,不存储在内存中,只能作为函数使用。

特别是,我有以下矩阵:

Gμ=SHFHFS+μRHR

我想调查两者之间的关系μ和条件编号k(Gμ).

我认为需要某种迭代方法?最好有一些 MATLAB 代码可用。

1个回答

MATLAB 对此有几个“精确”函数,cond并且rcond,后者返回条件数的倒数。下面对Matlab 近似函数condest进行更全面的描述。

条件数的估计通常是作为矩阵线性系统解的副产品生成的,因此您可能能够将条件数估计搭载在您需要做的其他工作上。有关如何计算估计值的简要说明,请参见此处。此外, Sandia Labs AztecOO 文档注释(参见第 3.1 节)可选条件数估计可从迭代求解器获得(使用生成的具有共轭梯度的三对角 Lanczos 矩阵或生成的具有重新启动的 GMRES 的 Hessenburg 矩阵)。

由于您的矩阵“非常大”并且“仅可用作函数”,因此逻辑方法将是一种搭载共轭梯度求解器或变体的方法。

最近 arXiv.org 的一篇论文Non-stational extremal eigenvalue approximations in iterative solutions of linear systems and estimators for relative error提出了这种方法,并引用了一些早期文献。

现在我看,这个论坛有许多密切相关的以前的问题(不是所有的答案,但检查评论):

用 CG 估计极端特征值

估计非常大的矩阵的条件数

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


由于 MATLAB 代码的可用性是问题的一部分,这里有一些关于 的信息condest,这是一个估计 1 范数条件数的内置函数A1A11. 这个想法来自 Hager(1984),2010 年的文章和扩展在这里,明确计算A1(找到一列的最大 1-范数)并估计A11通过梯度法。另请参阅 John Burkardt 的CONDITION,一个 MATLAB 库(可用的其他语言)“用于计算或估计矩阵的条件数”。

由于您的矩阵显然是 Hermitian 且正定的,因此 2 范数条件数可能更令人感兴趣。那么问题就等于估计最大与最小(绝对)特征值的比率。挑战在某种程度上与 1 范数情况相似,因为通常可以很容易地获得对最大特征值的良好估计,但估计最小特征值被证明更加困难。

尽管针对非 SPD(甚至非平方)情况,但最近 arXiv.org 的这篇论文Reliable Iterative Condition-Number Estimation很好地概述了最小特征值估计问题和 Krylov 子空间的有希望的攻击路线方法 (LSQR) 相当于 SPD 情况下的共轭梯度。