1、CG 算法的预处理技术:、为什么要对 A 进行预处理:其收敛速度依赖于对称正定阵 A 的特征值分布特征值如何影响收敛性:特征值分布在较小的范围内,从而加速 CG 的收敛性特征值和特征向量的定义是什么?(见笔记本以及收藏的网页)求解特征值和特征向量的方法:Davidson 方法:Davidson 方法是用矩阵( D - I)- 1( A - I) 产生子空间,这里 D 是 A 的对角元所组成的对角矩阵。 是由 Rayleigh-Ritz 过程所得到的 A 的近似特征值。什么是子空间法: Krylov 子空间叠代法是用来求解形如 Ax=b 的方程,A 是一个 n*n 的矩阵,当 n 充分大时,直接
2、计算变得非常困难,而 Krylov 方法则巧妙地将其变为 Kxi+1=Kxi+b-Axi 的迭代形式来求解。这里的 K(来源于作者俄国人 Nikolai Krylov 姓氏的首字母)是一个构造出来的接近于 A 的矩阵,而迭代形式的算法的妙处在于,它将复杂问题化简为阶段性的易于计算的子步骤。如何取正定矩阵 Mk 为:Span 是什么?:设 ,称它们的线性组合 为向量1, =1|,=1,2的生成子空间,也称为由 张成的子空间。记为 ,也可以记为1, 1, ( 1,)( 1,)什么是 Jacobi 迭代法:什么是 G_S 迭代法:请见 PPT迭代法求解线性方程组什么是 SOR 迭代法:什么是收敛速度
3、: 称 收 敛 速 度 。 度 , 简为 迭 代 法 的 渐 近 收 敛 速)(ln)(:5定 义 BBR什么是可约矩阵与不可约矩阵?:不可约矩阵(irreducible matrix)和可约矩阵(reducible matrix)两个相对的概念。定义 1:对于 n 阶方阵 A 而言,如果存在一个排列阵 P 使得 PAP 为一个分块上三角阵,我们就称矩阵 A 是可约的;否则称矩阵 A 是不可约的。定义 2:对于 n 阶方阵 A=(aij) 而言,如果指标集 1,2,.,n 能够被划分成两个不相交的非空指标集 J 和 K,使得对任意的 jJ 和任意的 kK 都有 ajk=0, 则称矩阵 A 是可
4、约的;否则称矩阵 A 是不可约的。n 阶方矩阵 A 是不可约的当且仅当与矩阵 A 对应的有向图是强连通的。什么是正交?:在三维向量空间中, 两个向量的内积如果是零, 那么就说这两个向量是正交的。换句话说, 两个向量正交意味着它们是相互垂直的。若向量 与 正交,则记为 。什么是正交矩阵?:如果:AA=E(E 为单位矩阵,A表示“矩阵 A 的转置矩阵” 。 )或AA=E,则 n 阶实矩阵 A 称为正交矩阵, 若 A 为单位正交阵,则满足以下条件:1) AT 是正交矩阵2)(E 为单位矩阵)3) A 的各行是单位向量且两两正交4) A 的各列是单位向量且两两正交5) (Ax,Ay)=(x,y) x,
5、yR6) |A| = 1 或-1倒着写的 A 和 E 都是什么意思啊?:反着的 E:谓词逻辑 存在量词 x: P(x) 意味着有至少一个 x 使 P(x) 为真。 n N: n 是偶数。 倒着的 A:任意的 逻辑合取 陈述 A B 为真,如果 A 与 B 二者都为真;否则为假。 n 2 n = 3 当 n 是自然数的时候。 与命题逻辑 逻辑析取 陈述 A B 为真,如果 A 或 B (或二者)为真;如果二者都为假,则陈述为假。 n 4 n 2 n 3 当 n 是自然数的时候。迭代法与直接法比较优劣是什么?:对称正定的定义是什么?:设 M 是 n 阶方阵,如果对任何非零向量 z,都有 zMz 0
6、,其中 z 表示 z 的转置,就称 M 正定矩阵。判定定理 1:对称阵 A 为正定的充分必要条件是:A 的特征值全为正。判定定理 2:对称阵 A 为正定的充分必要条件是:A 的各阶顺序主子式都为正。迭代法求解稀疏矩阵时是否有填充元问题?:CG 法求解线性矩阵时有无误差问题? :有。误差可能导致收敛变慢甚至无法求解。什么是 Krylov 子空间法?:设要求解线性代数方程组 Ax=b,取,其中0010(,)(,.,)mmKrSpanrr,且 为初始解,从 中寻找近似解 ,使相应的残向量与另某个子0rbAxxKmx空间 正交,即mLmmrbAL则称 为 Krylov 子空间,且上述方法称为 Kryl
7、ov 子空间方法。KGMRES 方法的缺点是什么?:因为它实际上求式 AZ=r 的解等价在在 Krylov 子空间中极小化残余向量的|.|范数。但 GMRES 会有失去超线性收敛性、可能产生停滞、GMRES 每迭代一步都要进行 Arnoldi 过程中都要消耗大量的计算时间、随着子空间维数的增大,引起存储空间过多的需求,每次迭代正交化过程所需代价显著增长等缺点。矩阵右上角有个 H,这是什么矩阵呢?(有个 T 是转置,有个 H 是什么): 一般来讲 AT表示转置,AH 表示转置共轭,对实矩阵而言是一回事,对复矩阵而言转置共轭比单纯的转置更常用一些,比如酉变换、Hermite 型等。什么是正交投影法
8、和斜投影法?:从 n 维向量空间中找出一个子空间 ,从其中寻找近似解,子空间 常称为搜索空间。如果 ,则为在 中求出一个近似解,显然要有dim个闲置条件,通常采用 个正交性条件,特别地,可以采用残向量 与 个mrbAxm线性无关向量正交的条件,这 个线性无关向量就定义了另外一个 维子空间 ,通常称之为限制子空间或左子空间,同时称该限制条件为 Petrov-Galerkin 条件。当 时,称对应的投影法为斜交投影法,否则称为正交投影法。什么是 Hessenberg 矩阵?:假设一个 N*N 矩阵 A, 在 ij+1 时,它的 a(i,j)=0 。 (A 的 i,j项=0 ) ,那么这个矩阵 A
9、就叫做 HESSENBERG MATRIX。常用范数有哪些?:这里以 Cn 空间为例,Rn 空间类似。最常用的范数就是 p-范数。若,那么可以验证 p-范数确实满足范数的定义。其中三角不等式的证明不是平凡的,这个结论通常称为闵可夫斯基(Minkowski)不等式。当 p 取 1,2, 的时候分别是以下几种最简单的情形:1-范数:x1=x1 +x2+ +xn2-范数:x2=(x1 2+x22+ +xn 2 )1/2-范数:x=max(x1,x2,xn)共轭梯度法的原理是什么?:请见 PPT共轭梯度法自己理解的预条件技术?:对线性方程组 AX=b,对 A 进行一些变换,例如 LAL-1,使 LAL
10、-1的特征值变得相对集中,提高投影算法(CG ,PCG )的收敛性。对 A 进行的变化就称为预条件技术。什么是 Petrov-Galerkin 条件?:预条件技术有几种?:有五种(1 )对角预处理法:若 A 是严格对角占优的矩阵,则可以选择 M=diag(a 11, a22, ann), 可以通过初等矩阵变换,将 A 变换成 M 矩阵的形式。(2 )基于经典迭代的预处理方法(矩阵分裂法):Jacobi,GS,Sor(3 )多项式预处理方法:选择一个多项式 s(x)预处理矩阵选择为 M-1=s(A),具体做法如下:将预处理矩阵取为一个低次的矩阵多项式 M-1=s(A),原方程变为: s(A)Ax
11、=s(A)b,然后用迭代法求解。 (见张兰的论文)(4 )无填充不完全分解预处理法:以系数矩阵的因子分解为基础得到的预处理,这是一种比较有效的预处理方程,主要有不完全 LU 分解,不完全 Cholesky 分解以及相应的块不完全分解等。(5 )子结构、区域分裂、EBE 预处理途径(见张永杰论文) 。什么是左预条件?:如果将迭代方法应用于 M-1Ax=M-1b,则称之为左预条件技术什么是右预条件?:如果将迭代方法应用于 AM-1z=b,再通过 Mx=z,求出解 x,则称之为右预条件技术。什么是 cond()? :Cond(A) 称作矩阵 A 的条件数,为矩阵 A 的范数与 A 的逆矩阵的范数的乘
12、积。cond(A)=A A -1。从线性代数的分析可知,矩阵的条件数总是大于 1.正交矩阵的条件数等于 1,奇异矩阵的条件数为无穷大,而病态矩阵的条件数则为比较大的数据。什么是线性无关?:向量 v1, v2, ., vn线性无关 ,当且仅当它们满足以下条件:如果 a1, a2, ., an是 K 的元素,适合:a1v1 + a2v2 + . + anvn = 0,那么对所有 i = 1, 2, ., n 都有 ai = 0。什么是 hermite 矩阵即厄米特矩阵?:厄米特矩阵( Hermitian Conjugate Matrix, 又译作“埃尔米特矩阵” 或“ 厄米矩阵” ),指的是自共轭
13、矩阵。矩阵中每一个第 i 行第 j 列的元素都与第 j 行第 i 列的元素的共轭相等。对称矩阵是 hermite 矩阵的特例。如果判断线性方程组是病态?:一般当 det(A)的绝对值很小时,方程组 Ax=b 就可能是病态。为什么预处理方法备受关注?:对不同的矩阵情况,有不同的预处理方案,没有一种通用的预处理方案,于是出现了很多种预处理方法。预处理矩阵与迭代矩阵是什么关系?: M 为预条件矩阵,G 为迭代矩阵。有 G=M-1N。什么是表征矩阵性态的条件数?:系数矩阵的最大特征值和最小特征值之比。为什么 PCG 算法强于 CG 算法?:虽然共轭梯度法在理论上最多 n 次迭代就可以达到精度解,但由于
14、舍入误差的存在和矩阵 A 的一些病态特性,使p 1,p 2, 。 。 。 ,p kA 正交性以及r 1, r2, ,rk 的正交性随着 k 增加而变差。故 xn 一般不是精确解,而且降低了收敛的速度。何况对于大型和超大型的线性方程组,即使 n 次迭代收敛,也是实际计算中不能接受的。于是出现了 PCG,它通过适当的预处理方法引入预处理矩阵 M,使矩阵的特征值分布更为集中,降低矩阵条件数,改善矩阵病态特性,已达到提高收敛速度的目的。矩阵谱半径定义?: 设 A 是 nn 矩阵, i 是其特征值,i=1,2,n.称 (A)=max|i|,i=1,2,n为 A 的谱半径。共轭梯度法的推导?:(1)采用泛
15、函多项式的推导过程请见:网页共轭梯度法 。(2 )用矩阵知识进行推导的过程请见:张永杰的论文 p34 页。什么是 BEM(边界元方法)?: 边界元法(boundary element method)是一种继有限元法之后发展起来的一种新数值方法,与有限元法在连续体域内划分单元的基本思想不同,边界元法是只在定义域的边界上划分单元,用满足控制方程的函数去逼近边界条件。所以边界元法与有限元相比,具有单元个数少,数据准备简单等优点。但用边界元法解非线性问题时,遇到同非线性项相对应的区域积分,这种积分在奇异点附近有强烈的奇异性,使求解遇到困难。什么是引理?:引理(lemma)是数学中为了取得某个更好的结论
16、而作为步骤被证明的命题,其意义并不在于自身被证明,而在于为达成最终目的作出贡献。一个引理可用于证明多个结论。数学中存在很多著名的引理,这些引理可能对很多问题的解决有帮助。例如欧几里得引理,乌雷松引理,德恩引理,法图引理,高斯引理,中山引理,庞加莱引理,里斯引理和佐恩引理等。引理和定理没有严格的区分。什么是谱半径的相似不变性?:什么是正则化?:正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。什么是不适定问题?:在经典的数学物理中,
17、人们只研究适定问题。适定问题是指满足下列三个要求的问题:解是存在的;解是惟一的;解连续依赖于定解条件。这三个要求中,只要有一个不满足,则称之为不适定问题。特别,如果条件不满足,那么就称为阿达马意义下的不适定问题。一般地说不适定问题,常常是指阿达马意义下的不适定问题。什么是残量?:r=b-AX,其中 r 为残量什么是 Z-矩阵,L- 矩阵,M-矩阵?:如果一个 n*n 的矩阵 A=(a ij)满足 时,ij,称 A 为 Z-矩阵;如果 A 是 Z-矩阵,且 ,称 A 为 L-矩阵;如果 A 是0ija0iL-矩阵且 ,称 A 为 M-矩阵。1ARG MIN 的含义是什么? :最通俗的理解:表示使
18、目标函数取最小值时的变量值:=什么意思?: x:=y,表示 x 定义为 y 的一个名称。什么是谱条件数?:什么是主元?:主对角线上的元素,左上角到右下角。 不是方阵就是左上角到最下一行,将这一行数的左下角那些数化成零,不就是阶梯型了嘛。可以很方便的讨论矩阵的解,和矩阵的其他性质。什么是共轭?:设 A 为 n 阶实对称正定矩阵,如果有两个 n 维向量 S1 和 S2 满足S1AS2=0 (1 )则称向量 S1 与对于矩阵 A 共轭。如果 A 为单位矩阵,则式 (1)即成为 S1S2,这样两个向量的点积(或称内积)为零,此二向量在几何上是正交的,它是共轭的一种特例。设 A 为对称正定矩阵,若一组非
19、零向量 S1,S2 ,Sn 满足SiASj=0 (ij ) (2)则称向量系 Si(i=1,2,n)为关于矩阵 A 共轭。共扼向量的方向称为共轭方向。什么是严格对角占优?:如果 A 的每个对角元的绝对值都比所在行的非对角元的绝对值的和要大,即|a_ii|sumj!=i|a_ij|对所有的 i 成立,那么称 A 是(行)严格对角占优阵。如果 A是行严格对角占优阵,那么称 A 是列严格对角占优阵。什么是半正定矩阵?:如果对任何非零向量 x,都有 xAx0(或 xAx0)成立,且有非零向量 x0,使 x0Ax0=0,则称 f 为半正定(半负定)二次项,矩阵 A 称为半正定矩阵(半负定矩阵) 。如何判
20、定半正定矩阵?:1、对于半正定矩阵来说,相应的条件应改为所有的 主子式 非负。顺序主子式非负并不能推出矩阵是半正定的。比如以下例子:2、 半正定矩阵定义:设 A 是实对称矩阵。如果对任意的实非零列矩阵 X 有 XT*A*X0,就称 A 为半正定矩阵。3、 AMn(K)是半正定矩阵 的充要条件是:A 的所有主子式 大于或等于零。什么是主子式?:n 阶行列式的 i 阶主子式为:在 n 阶行列式中,选取行号(如 1、3 、7 行) ,再选取相同行号的列号(1、3 、7 列) ,则有行和列都为 i 个的行列式即为 n 阶行列式的 i 阶主子式,也可以说由上述选取的行列交汇处的元素所组成的新的行列式 就
21、称为“n 阶行列式的一个 i 阶主子式” 。什么是顺序主子式?:特殊的:n 阶行列式的 i 阶顺序主子式:上述 i 阶主子式中定义中,由 1i 行和 1i 列所确定的子式即为“n 阶行列式的 i 阶顺序主子式”。市面上求解线性方程组的求解器有哪些?(1 ) LAPACKSLAPACK,其名为 Linear Algebra PACKage 的缩写,是一以 Fortran 编程语言写就,用于数值计算的函式集。 LAPACK 提供了丰富的工具函式,可用于诸如解多元线性方程式、线性系统方程组的最小平方解、计算特征向量、用于计算矩阵 QR分解的 Householder 转换、以及奇异值分解等问题。 在
22、NetLib 亦提供了 API 经简化的 Fortran 95 版本的 LAPACK95。LAPACK 以 BSD 授权的方法释出。(2 ) Intel PardisoIntel MKL 提供了针对稀疏矩阵求解的 PARDISO 接口,它是在共享内存机器上,实现的稀疏矩阵的直接求解方法,对于一些大规模的计算问题, PARDISO 的算法表现了非常好的计算效率与并行性。一些数值测试表明,随着计算节点数目增加, PARDISO 具有接近线性的加速比例。(3 ) IML with sparselib from NISTSparseLib+ 是一个 C+类库。可通过不同的计算平台有效的计算稀疏矩阵。软
23、件包包含存储格式(如压缩行,压缩列和坐标格式) ,并提供基本的功能来管理稀疏矩阵。BlAS 工具包用于进行高效的内核数学运算(如稀疏矩阵向量乘法等) 。通过一个计算机体系结构,提高可移植性和性能。(4 ) SAMG 解算器最新版的代数多网格法的 SAMG 解算器系统已经被实现,这对于已经证明由SCAI-Franhofer 研究院开发的 SAMG 计算器,运用与中等规模模型时要比传统的PCG 解算器快 3-11 倍,并且对于包含一百万或更多网格单元的大规模模型更快。(5 ) Hypre form LLNLHypre(High Performance Preconditioners,高性能预条件子
24、)由美国加州大学(UC)和劳伦斯-利弗莫尔国家实验室(LLNL)应用计算中心(CASC)开发的。该软件包主要用于大规模并行计算机上求解大型稀疏线性方程组组,主要目的是为用户提供高级并行预条件子。它具有强壮性、易用性、适应性和互动性。(6 ) FASP from BiCMR几何/代数多重网格法,以及迭代器(7 ) Blitzpak from landmark结构化网格油藏求解器,只在 UNIX 环境下可用。 PARDISO 对应求解过程包括如下步骤:1. 矩阵重排与符号分解(Reordering and Symbolic Factorization):PARDISO Solver 根据不同的矩阵
25、类型,计算不同类型的行列交换矩阵 P 与对角矩阵 D,对 A 矩阵进行交换重排。新得到的矩阵分解后会包括尽量少的非零元素。2. 矩阵 LU 分解: 对 进行 LU 分解。3. 方程求解与迭代:根据 LU 分解的结果,求解方程,如果对结果的精度有进一步要求,使用迭代法进一步提高解精度。4. 迭代结束,释放计算过程的内存。使用 PARDISO 的时候,可能会有一些常见的问题:第一,Paridso 提示内存不足:出现这类问题的时候,可以首先检查一下 Pardiso 对求解该问题的内存需求,Paridiso 计算时,可以通过下面的数据求得:max(iparm(15), iparm(16)+iparm(
26、17)可以对比一下这个数据,查看系统的内存是否满足需求。Paridso 同时支持,in-core 与 out-of-core 的计算。 如果, 计算的数据太大,而不能完全在内存求解的时候,可以的使用 out-of-core 的 pardiso(设置 iparm(60) 参数) 。 Out-of-core 的计算会将中间计算数据保存于硬盘上,从而能够解决一些大的计算问题。实际中,还常常遇到的一个问题是,许多应用是 32 位的程序, 这样,即使使用 out-of-core 的 pardiso 来求解,仍然会受到 32 位的地址空间的限制。 如果计算数据非常的大,需要改写为 64 位的计算程序。第二
27、,检查输入数据的合法性:使用 Pardiso 在进行计算的时候,常常会出现中间计算错误。由于 Pardiso 采用CSR 格式的压缩存储的矩阵。 很多情况下,计算错误是由于输入了不合法的计算数据而导致。对于这类问题,可以在调用 Pardiso 的时候, 进行输入数据的检查(设置iparm(27) 的参数) , Paridso 如果发现输入数据的错误,会给出错误提示。这类检查,可以帮助发现一些简单的,特别是与输入数据的索引相关的输入错误。第三,使用缺省参数:Pardiso 中提供了丰富的输入参数选项。 用户在调用的时候,需要确保正确的输入参数。 很多在计算过程中发生的错误,往往与不正确的输入参数
28、相关。 一个常用的检查方法是输入缺省的 paridso 的参数(iparm(1) =0) ,Paridso 使用缺省参数进行计算,来检验程序的正确性。第四,在 C/C+语言的调用 Pardiso:在 Intel MKL 函数手册中, Pardiso 相关参数的说明是以 Fortran 语言的形式给出。 如果我们在 C/C+语言中,调用 Pardiso 函数,需要注意输入数据的数组下标。 C 语言中对应的数组下标是从 0 开始,程序中对应于 Fortran 的下标需要减一(比如,手册中提到,iparm(10) 的参数,在 C 程序中,需要写为 iparm9) IML with sparselib
29、 from NIST. SparseLib+ is a C+ class library for efficient sparse matrix computations across various computational platforms. The software package consists of matrix classes encompassing several sparse storage formats (e.g. compressed row, compressed column and coordinate formats), and providing bas
30、ic functionality for managing sparse matrices. The Sparse BLAS Toolkit is used to for efficient kernel mathematical operations (e.g. sparse matrix-vector multiply) and to enhance portability and performance across a wide range of computer architectures. Included in the package are various preconditi
31、oners commonly used in iterative solvers for linear systems of equations. The focus is on computational support for iterative methods (for example, see IML+), but the sparse matrix objects presented here can be used in their own right.SparseLib+ matrices can be built out of nearly any C+ matrix/vect
32、or classes; it is shipped with the MV+ classes by default.Sparselib+ authors are Roldan Pozo, Karin Remington, and Andrew Lumsdaine.DocumentationA Sparse Matrix Library in C+ for High Performance Architectures, (38K, compressed postscript.) Proceedings of the Second Object Oriented Numerics Conferen
33、ce, pp. 214-218, 1994.J. Dongarra, A. Lumsdaine, R. Pozo, K. Remington.SparseLib+ Sparse Matrix Class Library, Users Guide, gzip postscript , pdfR. Pozo, K. Remington, A. LumsdaineSoftwareDownload SparseLib+ v. 1.7 source code: sparselib_1_7.zip Hypre form LLNLHypre 的主要特点:(1 ) 可扩展的预条件子:Hypre 包含可扩展求解超大规模稀疏线性方程组的积累预条件子算法,包括诸如结构化多重网格(SMG)和基于矩阵元的代数多重网格(AMG) 。(2 ) 常用的迭代方法实现:Hypre 提供一些最常用的基于 Krylov 子空间迭代法。比如求解非对称矩阵的 GMRES 和求解对称矩阵 CG(包括PCG,CGNR,BiCGStab).(3 ) 直观的以网格为中心的界面:Hypre 通过各种网格界面表示和处理稀疏矩阵,每个界面提供对一些求解器的访问,因此不需要用户去学习和创建复杂的数据结构,而别的线性求解其软件包没有这个功能。