本篇为稀疏矩阵求解算法经典论著<Direct Methods for Sparse Linear System>的<读书笔记 8>
4.6 Symbolic analysis
矩阵的符号分析是其数值分解的前导。它通常只包括计算非零模式而不进行数值计算。这使得数值分解可以对具有相同非零模式的矩阵序列进行重复计算(在求解非线性方程时经常出现的一种情况)。符号因子分解包括对因子分解的非零模式的显式表示的计算;一些稀疏的Cholesky算法需要这一点。矩阵的置换对fill-in有很大的影响。通常找到一个fill-reducing置换矩阵
4.7 Up-looking Cholesky
函数cs_cho1是up-looking Cholesky算法的实现。在本书中,用粗体描述代码中相对应的注释,如下:
Nonzero pattern of L(k, :):
Triangular solve:
Compute L(k,k):
执行完整的稀疏Cholesky分解,包括用函数S=cs_schol(order,A)完成fill-reducing preordering和符号分析,接下来用N=cs_chol(A,S),其中order为0,则用自然排序,如果order为1,则用对
4.8 left-looking and supernodal Cholesky
left-looking的Cholesky分解算法比向上的Cholesky分解算法更常用。其伪代码为:
它一次计算一列,可以从以下表达式推导得到:
其中,每个矩阵的中间的行和列均为矩阵第
该方法要求计算
left-looking的数值分解需要访问
left-looking算法构成了超节点法(supernodal)的基础。在Cholesky分解以及LU分解中,经常会出现以下形式的矩阵,黑色的稠密块(block)即被称为超节点supernodal。考虑到上面提到的公式,三个矩阵中间的行与列可以扩展为维度为
chol_super函数是supernodal left- looking Cholesky分解的原型。
chol_super依赖于四个关键操作,所有这些操作都可以利用密集的矩阵内核:
1. 一个对称的更新
2. 一个密集的Cholesky分解,函数chol。
3.一个稀疏矩阵乘积,
4. 稠密三角形解
4.9 Right-looking and multifrontal Cholesky
right-looking Cholesky 分解基于以下表达式,其中
可以通过
right-looking方法是multifrontal法的基础。multifrontal法与choL_right方法类似,除了对外积
与chol_right不同的是,在前波矩阵中计算的外积不会立即添加到稀疏矩阵