ii 纸上得来终觉浅, 绝知此事要躬行 学而不思则罔, 思而不学则殆 知识, 只有当它靠积极的思考得来 而不是凭记忆得来的时候, 才是真正的知识

Size: px
Start display at page:

Download "ii 纸上得来终觉浅, 绝知此事要躬行 学而不思则罔, 思而不学则殆 知识, 只有当它靠积极的思考得来 而不是凭记忆得来的时候, 才是真正的知识"

Transcription

1 矩阵计算讲义 * 潘建瑜 jypan@math.ecnu.edu.cn 2018 年 3 月 1 日 * 本讲义仅供 矩阵计算 课堂教学使用

2 ii 纸上得来终觉浅, 绝知此事要躬行 学而不思则罔, 思而不学则殆 知识, 只有当它靠积极的思考得来 而不是凭记忆得来的时候, 才是真正的知识

3 目录 第零讲 引言 课程主要内容 主要参考资料 二十世纪最优秀的十大算法 课程主页 计算数学 数值线性代数 一些记号 第一讲 线性代数基础 线性空间与内积空间 线性空间 内积空间 正交与正交补 向量范数与矩阵范数 向量范数 矩阵范数 序列的收敛 矩阵与投影 特征值与特征向量 投影变换与投影矩阵 不变子空间 矩阵标准型 Jordan 标准型 Schur 标准型 几类特殊矩阵 对称正定矩阵 对角占优矩阵 不可约矩阵 iii

4 iv 目录 Gerschgorin 圆盘定理 其它常见特殊矩阵 Kronecker 积 课后习题 第二讲 线性方程组直接方法 Gauss 消去法和 LU 分解 LU 分解 LU 分解的实现 IKJ 型 LU 分解 待定系数法计算 LU 分解 三角方程求解 选主元 LU 分解 矩阵求逆 特殊方程组的求解 对称正定线性方程组 对称不定线性方程组 三对角线性方程组 带状线性方程组 Toeplitz 线性方程组 扰动分析 δx 与 ˆx 的关系 δx 与 x 的关系 δx 与残量的关系 相对扰动分析 误差分析 LU 分解的舍入误差分析 Gauss 消去法的舍入误差分析 解的改进和条件数估计 高精度运算 矩阵元素缩放 (Scaling) 迭代改进法 课后习题

5 目录 v 第三讲 线性最小二乘问题 引言 超定方程组 欠定方程组 初等变换矩阵 初等矩阵 Gauss 变换 Householder 变换 Givens 变换 正交变换的舍入误差分析 QR 分解 QR 分解的存在性与唯一性 基于 MGS 的 QR 分解 基于 Householder 变换的 QR 分解 列主元 QR 分解 基于 Givens 变换的 QR 分解 QR 分解的稳定性 奇异值分解 奇异值基本性质 奇异值更多性质 奇异值扰动分析 线性最小二乘问题的求解方法 正规方程法 QR 分解法 奇异值分解法 广义逆与最小二乘 广义逆 广义逆基本性质 广义逆的计算 广义逆与线性最小二乘 最小二乘扰动分析 最小二乘问题的推广及其应用 正则化 加权正则化

6 vi 目录 约束最小二乘问题 应用 : 多项式数据拟合 应用 : 线性预测 应用 : 信号光滑 应用 : 反卷积 Deconvolution 应用 : 采样信号补全 课后习题 第四讲 非对称特征值问题 幂迭代方法 反迭代方法 反迭代算法 Rayleigh 商迭代 正交迭代方法 QR 迭代方法 QR 迭代与幂迭代的关系 QR 迭代与反迭代的关系 QR 迭代与正交迭代的关系 QR 迭代的收敛性 带位移的 QR 迭代 带位移的隐式 QR 迭代 上 Hessenberg 矩阵 隐式 QR 迭代 位移的选取 收缩 Deflation 特征向量的计算 广义特征值问题 广义 Schur 分解 QZ 方法 应用 : 多项式求根 课后习题 第五讲对称特征值问题 Jacobi 迭代 Rayleigh 商迭代

7 目录 vii 5.3 对称 QR 迭代 分而治之法 对分法和逆迭代 奇异值分解 二对角化 Golub-Kahan SVD 算法 dqds 算法 Jacobi 算法 扰动分析 特征值与 Rayleigh 商 对称矩阵特征值的扰动分析 对称矩阵特征向量的扰动 Rayleigh 商逼近 相对扰动分析 课后习题 第六讲 线性方程组定常迭代方法 离散 Poisson 方程 一维 Poisson 方程 二维 Poisson 方程 定常迭代方法 矩阵分裂迭代方法 Jacobi 迭代 Gauss-Seidel 迭代 SOR 迭代 SSOR 迭代方法 AOR 迭代 Richardson 方法 分块迭代方法 收敛性分析 定常迭代方法的收敛性 二维离散 Poisson 方程情形 不可约对角占优矩阵 对称正定矩阵 相容次序矩阵

8 viii 目录 6.4 加速方法 外推技术 Chebyshev 加速 交替方向与 HSS 方法 多步迭代法 交替方向法 HSS 方法 快速 Poisson 方法 FFT 离散 Sine 变换 Possion 方程与 DST 课后习题 第七讲 子空间迭代方法 Krylov 子空间 Arnoldi 过程与 Lanczos 过程 Krylov 子空间算法一般格式 GMRES 方法 算法描述 具体实施细节 GMRES 方法的中断 带重启的 GMRES 方法 共轭梯度法 (CG) 算法基本过程 实用迭代格式 收敛性分析 CG 算法的收敛性 CG 算法的超收敛性 GMRES 方法的收敛性 其它 Krylov 子空间迭代算法 课后习题 第八讲预处理 预处理迭代方法 预处理 CG 方法

9 目录 ix 预处理 GMRES 方法 左 右预处理 GMRES 的最优性质 预处理技术 矩阵分裂预处理子 不完全 LU 分解 课后习题 第九讲 特征值问题的迭代解法 投影算法 Rayleigh-Ritz 方法 Lanczos 方法 Arnoldi 方法 非对称 Lanczos 方法 附录 A IEEE 浮点运算标准 259 A.1 IEEE 中的浮点数的表示方法 A.2 IEEE 中的浮点数运算 A.3 浮点运算舍入误差分析 A.4 课后习题 附录 B 数值计算中的误差 269 B.1 误差与有效数字 B.1.1 基本算术运算的误差估计 B.1.2 函数求值的误差估计 B.2 误差分析 B.2.1 定量分析 B.2.2 定性分析 B.3 数值稳定性 B.3.1 数学问题的稳定性 B.3.2 病态问题与条件数 B.3.3 算法的稳定性 B.3.4 数值计算注意事项 B.4 课后习题

10 x 目录 附录 C 高性能计算 科学计算软件介绍 277 C.1 科学计算发展 C.1.1 数值分析经典论文 C.1.2 Longer list of papers C.2 矩阵运算的复杂度 C.3 数值线性代数程序库 C.3.1 BLAS C.3.2 LAPACK C.3.3 ARPACK C.3.4 其它 C.4 交互式数学软件 C.4.1 MATLAB C.4.2 Mathematica C.4.3 Maple C.4.4 Sage C.5 集群管理 参考文献 287

11 算法目录 2.1 Gauss 消去法 LU 分解 LU 分解 ( 用 A 存储 L 和 U) LU 分解 (IKJ 型 ) LU 分解 ( 待定系数法或 Doolittle 法 ) 向前回代求解 Ly = b ( 行存储方式 ) 向后回代求解 Ux = y ( 列存储方式 ) 部分选主元 LU 分解 Cholesky 分解 改进的平方根法 追赶法 求解 Yule-Walker 方程组的 Durbin 算法 求解对称正定 Toeplitz 线性方程组的 Levinson 算法 通过迭代改进解的精度 计算 Householder 向量 Givens 变换 Gram-Schmidt 过程 基于 MGS 的 QR 分解 基于 Householder 变换的 QR 分解 基于 Givens 变换的 QR 分解 幂迭代算法 (Power Iteration) 反迭代算法 (Inverse Iteration) Rayleigh 商迭代算法 (Rayleigh Quotient Iteration (RQI)) 正交迭代算法 (Orthogonal Iteration) QR 迭代算法 (QR Iteration) 带位移的 QR 迭代算法 (QR Iteration with shift) 上 Hessenberg 化 (Upper Hessenberg Reduction) Jacobi 迭代算法 经典 Jacobi 迭代算法 循环 Jacobi 迭代算法 ( 逐行扫描 ) Rayleigh 商迭代 计算对称三对角矩阵的特征值和特征向量的分而治之法 ( 函数形式 ) 修正的 Newton 算法 计算矩阵 D + uu 的特征值和特征向量的稳定算法 xi

12 xii 算法目录 5.8 对分法 : 计算 A 在 [a, b) 中的所有特征值 带位移的 LR 算法 qds 算法的单步 (B i B i+1 ) dqds 算法的单步 (B i B i+1 ) 单边 Jacobi 旋转的单步 单边 Jacobi: 计算 A = UΣV Jacobi 迭代 求解二维离散 Poisson 方程的 Jacobi 迭代方法 Gauss-Seidel 迭代 求解二维离散 Poisson 方程的红黑排序 G-S 迭代方法 求解线性方程组的 SOR 迭代方法 SSOR 方法 Chebyshev 加速方法 二维离散 Poisson 方程的快速方法 Arnoldi 过程 (MGS) Lanczos 过程 Krylov 子空间迭代算法 GMRES 方法基本框架 实用 GMRES 方法 GMRES(k): 带重启的 GMRES 方法 共轭梯度法 (CG) 两边预处理 CG 方法 PCG: 预处理 CG 方法 基于 P - 内积的 CG 方法 左预处理 GMRES 方法 右预处理 GMRES 方法 General ILU Factorization Algorithm ILU Factorization of IKJ version 幂迭代 : 计算最大特征值 Rayleigh Ritz 算法 Lanczos 算法 Arnoldi 算法 非对称 Lanczos 算法 A.1 Horner 法则 A.2 带舍入误差的 Horner 法则

13 第零讲引言 0.1 课程主要内容 线性方程组的直接解法 (Gauss 消去法 / LU 分解 ) 线性最小二乘问题的数值算法 非对称矩阵的特征值计算 对称矩阵特征值计算与奇异值分解 线性方程组迭代算法 ( 大规模, 稀疏, 特殊结构 ) 特征值问题的迭代算法 ( 大规模, 稀疏, 部分特征值和特征向量 ) 0.2 主要参考资料 G. Golub and C. F. van Loan, Matrix Computations (4th), Johns Hopkins University Press, 中文版 : 矩阵计算 ( 第三版 ), 袁亚湘等译, 科学出版社, J. W. Demmel, Applied Numerical Linear Algebra, SIAM, 中文版 : 应用数值线性代数, 王国荣译, 人民邮电出版社, L. N. Trefethen and D. Bau, III, Numerical Linear Algebra, SIAM, 中文版 : 数值线性代数, 陆金甫等译, 人民邮电出版社, 徐树方, 矩阵计算的理论与方法, 北京大学出版社, 曹志浩, 数值线性代数, 复旦大学出版社, 二十世纪最优秀的十大算法 The Best of the 20th Century: Editors Name Top 10 Algorithms, SIAM News, Volume 33, Number 4, Monte Carlo method (1946) 2. Simplex Method for Linear Programming (1947) 3. Krylov Subspace Iteration Methods (1950) 4. The Decompositional Approach to Matrix Computations (1951) 5. The Fortran Optimizing Compiler (1957) 6. QR Algorithm for Computing Eigenvalues ( ) 7. Quicksort Algorithm for Sorting (1962) 8. Fast Fourier Transform (1965) 9. Integer Relation Detection Algorithm (1977) 10. Fast Multipole Method (1987) ( 蓝色 : 属于数值线性代数 ; 下划线 : 与数值线性代数密切相关.) 1

14 2 第零讲引言 0.4 课程主页 计算数学 计算数学, 也称数值分析或计算方法, 研究各种问题的数值计算方法和数学理论, 其定义可以参考 Golub 教授的 History of numerical linear algebra: A personal view [31], 或 Trefethen 教授的 Numerical analysis [71] 年 Von Neumann 和 Goldstine 在 美国数学会通报 发表了题为 高阶矩阵的数值求逆 的 著名论文, 开启了现代计算数学的研究. 半个多世纪以来, 伴随着计算机技术的不断进步, 计算数学得到 了蓬勃发展, 并逐渐成为了一个独立和重要的学科. 科学计算利用先进的计算能力认识和解决复杂的科 学工程问题, 它融建模 算法 软件研制和计算模拟为一体, 是计算机实现其在高科技领域应用的必不 可少的纽带和工具. 计算不仅仅只是作为验证理论模型正确性的手段, 大量的事例表明它已成为重大科 学发现的一种重要手段 [86]. 计算 理论和实验一起已成为当今世界科学技术创新的主要方式 [81], 也 是当前公认的从事现代科学研究的三种方法. 通俗地讲, 科学计算就是通过数学建模将实际问题转化为数学问题, 然后对数学问题进行离散和数 值求解, 从而得到原问题的近似解, 同时对得到的近似解进行误差估计, 以确保近似解的可靠性. 随着计算机的高速发展, 高性能科学计算在国家安全和科技创新等方面的重要作用也日益受到世 界各国的重视. 欧美等国家已投入巨资, 大力发展先进的计算方法, 研制大型的实用软件 年的美 国总统信息技术咨询委员会报告 计算科学 : 确保美国竞争力 认为, 在迅猛发展的高性能计算技术推 动下, 计算科学将是 21 世纪确保国家核心竞争能力的战略技术之一, 而科学计算是计算科学中最主要 的内容. 我国也非常重视计算数学和科学计算的发展, 在历次科学规划中都将计算数学和科学计算列 为重点发展领域. 科学计算的核心是计算数学是 [86]. 计算数学主要研究各种计算问题的有效算法及其有关的数学 理论, 包括算法的设计与分析 ( 收敛性, 稳定性, 复杂性等 ). 其研究内容包括数值逼近 ( 函数插值与最佳 逼近 ), 数值积分与数值微分, 数值代数 ( 数值线性代数和非线性代数 ), 微分方程数值解 ( 常微分方程, 偏 微分方程 ), 最优化理论与方法, 误差理论. 国家自然科学基金委员会关于计算数学的分类 (2018): 数学 ( 数理科学部, A01) 计算数学与科学工程计算 (A0117) - 偏微分方程数值计算 (A011701) - 流体力学中的数值计算 (A011702) - 一般反问题的计算方法 (A011703) - 常微分方程数值计算 (A011704) - 数值代数 (A011705) 结构矩阵 稀疏性与模型约化 科学与工程中的矩阵计算 矩阵方程求解 非线性 方程求解 矩阵分析 特征值问题 大型线性方程组求解 最小二乘问题 其他 - 数值逼近与计算几何 (A011706)

15 0.5 计算数学 3 - 谱方法及高精度数值方法 (A011707) - 有限元和边界元方法 (A011708) - 多重网格技术与区域分解 (A011709) - 自适应方法 (A011720) - 并行计算 (A011711) 运筹学 (A0112) - 线性与非线性规划 (A011201) - 组合最优化 (A011202) - 随机最优化 (A011203) - 可靠性理论 (A011204) 力学 ( 数理科学部, A02) 固体力学 (A0203) - 计算固体力学 (A020317) 流体力学 (A0204) - 计算流体力学 (A020415) 电子学与信息系统 ( 信息科学部, F01) 信号理论与信号处理 (F0111) - 压缩感知理论与方法 (F011110) 图像处理 (F0115) 图像表征与显示 (F0116) 人工智能 ( 信息科学部, F06) 2018 年新增条目 机器学习 (F0602) - 机器学习基础理论与方法 (F060201) - 监督学习 (F060202) - 弱监督学习 (F060203) - 无监督学习 (F060204) - 统计学习 (F060205) - 集成学习 (F060206) - 强化学习 (F060207) - 深度学习理论与方法 (F060208) 机器感知与模式识别 (F0603) 交叉学科中的信息科学 ( 信息科学部, F07) 2018 年新增条目 信息与数学交叉问题 (F0702) - 电子通信与数学交叉 (F070201) - 计算机与数学交叉 (F070202) - 自动化与数学交叉 (F070203) - 人工智能与数学交叉 (F070204) - 半导体与数学交叉 (F070205) - 光学与数学交叉 (F070206)

16 4 第零讲引言 计算数学的主要任务 : - 算法设计 : 构造求解各种数学问题的数值方法. - 算法分析 : 研究数值方法的收敛性 稳定性 计算复杂性 计算精度等. - 算法实现 : 编程实现 软件开发. 一个好的数值方法一般需满足以下几点 : 有可靠的理论分析, 即收敛性稳定性等有数学理论保证 有良好的计算复杂性 ( 时间和空间 ) 易于在计算机上实现 要有具体的数值试验来证明是行之有效的 数值方法一般都是近似方法, 求出的解是有误差的, 因此误差分析非常重要. 0.6 数值线性代数 If any other mathematical topic is as fundamental to the mathematical sciences as calculus and differential equations, it is numerical linear algebra. Trefethen & Bau [70], 数值代数, 包含数值线性代数和数值非线性代数. 数值代数是计算数学的基础 [86]. 数值线性代数, 也称矩阵计算, 主要研究以下问题 : - 线性方程组求解 Ax = b, A R n n 非奇异 - 最小二乘问题 min Ax b 2, x R n A R m n, m n - 矩阵特征值问题 - 矩阵奇异值问题 Ax = λx, A R n n, λ C, x C n, x 0 A Ax = σ 2 x, A R m n, σ 0, x R n, x 0 - 其它问题 : 广义特征值问题, 二次特征值问题, 非线性特征值问题, 矩阵方程, 特征值反问题, 张量计算,... 矩阵计算常用方法 ( 技术或技巧 ) - 矩阵分解 - 矩阵分裂 - 扰动分析 问题的特殊结构对算法的设计具有非常重要的影响.

17 0.7 一些记号 5 在编程实现时, 要充分利用现有的优秀程序库. 0.7 一些记号 实部与虚部 : Re(z) 表示复数 z 的实部, Im(z) 表示复数 z 的虚部 ; 矩阵 : 通常用大写字母表示, 如 A, B, X ; 向量 : 小写字母, 如 x, y, z ; 标量 : 小写字母或希腊字母, 如 a, b, c, α, β ; 转置 : x 和 A 表示向量和矩阵的普通转置, x 和 A 表示向量和矩阵的共轭转置 ; 下标 : 用 a ij, A(i, j) 或 [A + B] i,j 表示矩阵的元素 ; 冒号的作用 : ( 采用 MATLAB 中的表示方法 ) - a:h:b 等差序列 : a 为首项, h 为公差, 最后一项 b, 若 h = 1 时, 可简写成 a : b - x(2:5) 子向量 : [x(2), x(3), x(4), x(5)] - A(i 1 :i 2, j 1 :j 2 ) 子矩阵 : A 的第 i 1 至第 i 2 行与第 j 1 至第 j 2 列组成的子矩阵 - A(i 1 :i 2, :) 子矩阵 : A 的第 i 1 至第 i 2 行组成的子矩阵 - A(:, j 1 :j 2 ) 子矩阵 : A 的第 j 1 至第 j 2 列组成的子矩阵. 本讲义中, 为了便于算法的 MATLAB 实现, 我们通常会用 MATLAB 的方式来编写算法的伪代码.

18 6 第零讲引言

19 第一讲线性代数基础 1.1 线性空间与内积空间 线性空间线性空间是线性代数最基本的概念之一, 它是定义在某个数域上并满足一定条件的一个集合. 我们首先给出数域的概念. 定义 1.1 ( 数域 ) 设 F 是包含 0 和 1 的一个数集, 如果 F 中的任意两个数的和, 差, 积, 商 ( 除数不为 0) 仍然在 F 中, 则称 F 为一个数域. 常见的数域有 : 有理数域 Q, 实数域 R 和复数域 C. 定义 1.2 ( 线性空间 ) 设 S 是一个非空集合, F 是一个数域. 在 S 上定义一种代数运算, 称为加法, 记为 + ( 即对任意 α, β S, 都存在唯一的 γ S, 使得 γ = α + β), 并定义一个从 F S 到 S 的代数运算, 称为数乘, 记为 ( 即对任意 k F 和任意 α S, 都存在唯一的 β S, 使得 β = k α). 如果这两个运算满足下面的规则, 则称 (S, +, ) 是数域 F 上的一个线性空间 : 加法四条规则 (1) 交换律 : α + β = β + α, α, β S; (2) 结合律 : (α + β) + γ = α + (β + γ), α, β, γ S; (3) 零元素 : 存在一个元素 0, 使得 α + 0 = α, α S; (4) 逆运算 : 对任意 α S, 都存在负元素 β S, 使得 α + β = 0, 记 β = α; 数乘四条规则 (1) 单位元 : 1 α = α, 1 F, α S; (2) 结合律 : k (l α) = (kl) α, k, l F, α S; (3) 分配律 : (k + l) α = k α + l α, k, l F, α S; (4) 分配律 : k (α + β) = k α + k β, k F, α, β S. 为了表示方便, 通常省略数乘符号, 即将 k α 写成 kα. 例 1.1 常见的线性空间有 : R n 所有 n 维实向量组成的集合, 是 R 上的线性空间 ; C n 所有 n 维复向量组成的集合, 是 C 上的线性空间 ; R m n 所有 m n 阶实矩阵组成的集合, 是 R 上的线性空间 ; C m n 所有 m n 阶复矩阵组成的集合, 是 C 上的线性空间. P n 所有次数不超过 n 的多项式组成的集合. 7

20 8 第一讲线性代数基础 C[a, b] 区间 [a, b] 上所有连续函数组成的集合. C p [a, b] 区间 [a, b] 上所有 p 次连续可微函数组成的集合. 线性相关性和维数设 S 是数域 F 上的一个线性空间, x 1, x 2,..., x k 是 S 中的一组向量. 如果存在 k 个不全为零的数 α 1, α 2,..., α k F, 使得 α 1 x 1 + α 2 x α k x k = 0, 则称 x 1, x 2,..., x k 线性相关, 否则就是线性无关. 设 x 1, x 2,..., x k 是 S 中的一组向量. 如果 x S 可以表示为 x = α 1 x 1 + α 2 x α k x k, 其中 α 1, α 2,..., α k F, 则称 x 可以由 x 1, x 2,..., x k 线性表示, 或者称 x 是 x 1, x 2,..., x k 的线性组合. 设向量组 {x 1, x 2,..., x m }, 如果存在其中的 r (r m) 个线性无关向量 x i1, x i2,..., x ir, 使得所有向量都可以由它们线性表示, 则称 x i1, x i2,..., x ir 为向量组 {x 1, x 2,..., x m } 的一个极大线性无关组, 并称这组向量的秩为 r, 记为 rank({x 1, x 2,..., x m }) = r. 设 x 1, x 2,..., x n 是 S 中的一组线性无关向量. 如果 S 中的任意一个向量都可以由 x 1, x 2,..., x n 线性表示, 则称 x 1, x 2,..., x n 是 S 的一组基, 并称 S 是 n 维的, 即 S 的维数为 n, 记为 dim(s) = n. 如果 S 中可以找到任意多个线性无关向量, 则称 S 是无限维的. 子空间设 S 是一个线性空间, W 是 S 的一个非空子集合. 如果 W 关于 S 上的加法和数乘也构成一个线性空间, 则称 W 为 S 的一个线性子空间, 有时简称子空间. 例 1.2 设 S 是一个线性空间, 则由零向量组成的子集 {0} 是 S 的一个子空间, 称为零子空间. 另外, S 本身也是 S 的子空间. 这两个特殊的子空间称为 S 的平凡子空间, 其他子空间都是非平凡子空间. 下面给出子空间的判别定理. 定理 1.1 设 S 是数域 F 上的一个线性空间, W 是 S 的一个非空子集合. 则 W 是 S 的一个子空间的充要条件是 W 关于加法和数乘封闭, 即 (1) 对任意 α, β W, 有 α + β W; (2) 对任意 k F 和任意 α W, 有 kα W. 下面是关于子空间的维数的一个很重要性质. 定理 1.2 ( 维数公式 ) 设 S 1, S 2 是线性空间 S 的两个有限维线性子空间, 则 S 1 + S 2 和 S 1 S 2 也都是 S 的线性子空间, 且 dim(s 1 + S 2 ) + dim(s 1 S 2 ) = dim(s 1 ) + dim(s 2 ).

21 1.1 线性空间与内积空间 9 直和设 S 1, S 2 是线性空间 S 的两个线性子空间, 如果 S 1 + S 2 中的任一元素 x 都可以唯一表示成 x = x 1 + x 2, x 1 S 1, x 2 S 2, 则称 S 1 + S 2 为直和, 记为 S 1 S 2. 关于线性子空间的直和的判定, 有下面的结论. 定理 1.3 设 S 1, S 2 是线性空间 S 的两个线性子空间, 则下面的论述等价 (1) S 1 + S 2 是直和 ; (2) S 1 + S 2 中的零元素表示方法唯一, 即若 0 = x 1 + x 2, x 1 S 1, x 2 S 2, 则 x 1 = x 2 = 0. (3) S 1 S 2 = {0}; (4) dim(s 1 ) + dim(s 2 ) = dim(s 1 + S 2 ); 例 1.3 设 A C m n, 则 C n = Ker(A) Ran(A ); C m = Ker(A ) Ran(A). 定理 1.4 设 S 1 是线性空间 S 的一个线性子空间, 则存在 S 的另一个线性子空间 S 2, 使得 S = S 1 S 2. 矩阵的秩设 A C m n, 则称 A 的列向量组的秩为 A 的列秩, 称 A 的行向量组的秩为 A 的行秩. 可以验证, 矩阵 A 的列秩与行秩是相等的. 因此我们统一称它们为矩阵 A 的秩, 记为 rank(a). 关于矩阵的秩, 我们有下面的性质. 引理 1.1 设 A, B C m n, 则 rank(a) min{m, n} ; rank(a ) = rank(a) ; rank(a A) = rank(aa ) = rank(a) ; 对任意非奇异矩阵 P C m m 和 Q C n n, 有 rank(p A) = rank(aq) = rank(a) = rank(p AQ); rank(a + B) rank(a) + rank(b); rank(a) = rank(b) 当且仅当存在非奇异矩阵 P C m m 和 Q C n n 使得 A = P BQ; 若 A C m k, B C k n, 则 rank(a) + rank(b) k rank(ab) min{rank(a), rank(b)}.

22 10 第一讲线性代数基础 设 x 1, x 2,..., x k C n, 记 span{x 1, x 2,..., x k } { α 1 x 1 + α 2 x α k x k : α 1, α 2,..., α k C }, 则 span{x 1, x 2,..., x k } 构成 C n 的一个线性子空间, 称为由 x 1, x 2,..., x k 张成的子空间. 特别地, 记 span(a) 为由 A 的所有列向量张成的子空间. 设 A C m n, 则 A 可以看作是从 C n 到 C m 的一个线性变换 ( 或线性映射 ): A : x Ax 我们分别称 Ker(A) { x C n : Ax = 0 } C n 和 Ran(A) { y C m : y = Ax, x C n } C m 为 A 的零空间 ( 核 ) 和像空间 ( 列空间, 值域 ). 可以证明, Ker(A) 是 C n 的线性子空间, Ran(A) 是 C m 的线性子空间, 且 Ran(A) = span(a). 引理 1.2 设 A C m n, 则有 dim(ran(a)) = rank(a) dim(ker(a)) + dim(ran(a)) = n dim(ran(a A)) = dim(ran(a )) Ran(A A) = Ran(A ) Ker(A A) = Ker(A) 内积空间内积空间就是带有内积运算的线性空间, 是 n 维欧氏空间的推广. 定义 1.3 ( 内积空间 ) 设 S 是数域 F 上的一个线性空间, 定义一个从 S S 到 F 的代数运算, 记为 (, ), 即对任意 x, y S, 都存在唯一的 f F, 使得 f = (x, y). 如果该运算满足 (1) (x, y) = (y, x), x, y S; (2) (x + y, z) = (x, z) + (y, z), x, y, z S; (3) (kx, y) = k(x, y), k F, x, y S; (4) (x, x) 0, 等号当且仅当 x = 0 时成立 ; 则称 (, ) 为 S 上的一个内积 (inner product, 有时也称为标量积, scalar product ), 而定义了内积的线性空间称为内积空间. 特别地, 定义在实数域 R 上的内积空间称为 Euclidean 空间 ( 或欧氏空间 ), 定义在复数域 C 上的内积空 间称为酉空间.

23 1.1 线性空间与内积空间 11 例 1.4 在线性空间 C n 上定义内积 n (x, y) = y x = x i ȳ i, 则 C n 构成一个内积空间. 这种方式定义的内积就称为欧拉内积 (Euclidean innner product ). i=1 例 1.5 对任意 A, B R m n, 定义 (A, B) = tr(b A), 其中 tr( ) 表示矩阵的迹, 即对角线元素之和, 则可以证明 (A, B) 是一个内积, 因此 R m n 构成一个欧 氏空间 正交与正交补定义 1.4 ( 正交 ) 设 S 是内积空间, x, y S, 如果 (x, y) = 0, 则称 x 与 y 正交, 记为 x y; 设 S 1 是 S 的子空间, x S, 如果对任意 y S 1 都有 (x, y) = 0, 则称 x 与 S 1 正交, 记为 x S 1 ; 设 S 1, S 2 是 S 的两个子空间, 如果对任意 x S 1, 都有 x S 2, 则称 S 1 与 S 2 正交, 记为 S 1 S 2. 定理 1.5 设 S 1, S 2 是内积空间 S 的两个子空间, 如果 S 1 S 2, 则 S 1 + S 2 是直和. 定义 1.5 ( 正交补 ) 设 S 1 是内积空间 S 的一个子空间, 则 S 1 的正交补定义为 即 S 中所有与 S 1 正交的元素组成的集合. S 1 { x S : x S 1 }, 容易验证, 子空间 S 1 的正交补 S 1 也是 S 的一个子空间. 另外, 我们还可以得到下面的结论. 定理 1.6 设 S 1 是内积空间 S 的一个有限维子空间, 则 S 1 存在唯一, 且 S = S 1 S 1. 例 1.6 设 A C m n, 则 Ker(A ) = Ran(A). 证明. 首先证明 Ker(A ) Ran(A). 设 y Ker(A ), 则 A y = 0. 设 z 是 Ran(A) 中的任意一个向量, 则存在 x C n, 使得 z = Ax. 于是 z y = (Ax) y = x (A y) = 0, 即 y Ran(A). 所以 Ker(A ) Ran(A).

24 12 第一讲线性代数基础 另一方面, 设 y Ran(A), 则对任意向量 z Ran(A), 都有 y z = 0. 又 AA y Ran(A), 所以 (A y) (A y) = y (AA y) = 0, 即 A y = 0, 也就是说 y Ker(A ). 所以 Ran(A) Ker(A ). 1.2 向量范数与矩阵范数 向量范数定义 1.6 ( 向量范数 ) 若函数 f : C n R 满足 (1) f(x) 0, x C n 且等号当且仅当 x = 0 时成立 ; ( 非负性, nonnegativity) (2) f(αx) = α f(x), x C n, α C ( 正齐次性, homogeneity) (3) f(x + y) f(x) + f(y), x, y C n ; ( 三角不等式, triangular inequality) 则称 f(x) 为 C n 上的范数 (norm ), 通常记作. 相类似地, 我们可以定义实数空间 R n 上的向量范数. 如果 f 只满足 f(x) 0, 正齐次性和三角不等式, 则称为半范数 (seminorm ). 例 1.7 常见的向量范数 : 1- 范数 : x 1 = x 1 + x x n ; 2- 范数 : x 2 = x x x n 2 ; - 范数 : x = max x i ; 1 i n ( n ) 1/p p- 范数 : x p = x i p, 1 p <. i=1 定义 1.7 ( 范数的等价性 ) 设 α 与 β 是 C n 空间上的两个向量范数, 若存在正常数 c 1, c 2, 使得 c 1 x α x β c 2 x α 对任意 x C n 都成立, 则称 α 与 β 是等价的. 定理 1.7 C n 空间上的所有向量范数都是等价的, 特别地, 有 x 2 x 1 n x 2, x x 1 n x,

25 1.2 向量范数与矩阵范数 13 x x 2 n x. 有限维赋范线性空间上的所有范数都是等价的. 定理 1.8 (Cauchy-Schwartz 不等式 ) 设 (, ) 是 C n 上的内积, 则对任意 x, y C n, 有 且等号成立的充要条件是 x 与 y 线性相关. (x, y) 2 (x, x) (y, y) 证明. 若 y = 0, 则结论显然成立. 假设 y 0, 则对任意 α C 有 ( ) 0 (x αy, x αy) = (x, x) ᾱ(x, y) α (y, x) ᾱ(y, y). 由于 y 0, 所以 (y, y) > 0. 取 ᾱ = (y, x) (y, y), 代入上式可得 0 (x, x) (y, x) (x, y). (y, y) 由于 (y, x) = (x, y), 所以上式即为 (x, y) 2 (x, x) (y, y). 下面考虑等号成立的条件. 充分性 : 如果 x 与 y 线性相关, 则通过直接验证即可知等号成立. 必要性 : 假设等号成立. 如果 y = 0, 则显然 x 与 y 线性相关. 现假定 y 0. 取 α = (y, x) (y, y), 则 即 x αy = 0. 所以 x 与 y 线性相关. (x αy, x αy) = (x, x) 任何一个内积都可以定义一个相应的范数. (x, y) 2 (y, y) = 0, 推论 1.9 设 (, ) 是 C n 上的内积, 则 x (x, x) 是 C n 上的一个向量范数. 更一般地, 我们有下面的 Holder 不等式. 定理 1.10 (Holder 不等式 ) 设 (, ) 是 R n 上的 Euclidean 内积, 则对任意 x, y R n, 有 其中 p, q > 0, 且 1 p + 1 q = 1. (x, y) 2 x p y q,

26 14 第一讲线性代数基础 定理 1.11 ( 范数的连续性 ) 设 是 C n 上的一个向量范数, 则 f(x) x 是 C n 上的连续函数 矩阵范数定义 1.8 ( 矩阵范数 ) 若函数 f : C m n R 满足 (1) f(a) 0, A C m n 且等号当且仅当 A = 0 时成立 ; (2) f(αa) = α f(a), A C m n, α C; (3) f(a + B) f(a) + f(b), A, B C m n ; 则称 f(x) 为 C m n 上的范数, 通常记作. 设 是 C m n 上的范数, 若对任意 A C m n 和任意 x C n, 有 Ax A x, (1.1) 则称矩阵范数 与向量范数相容, 这里的 Ax 和 x 分别为 C m 和 C n 上的向量范数. 类似地, 我们可以定义 R m n 上的矩阵范数. 设 f 是 C n n 上的范数, 如果 f 还满足 (4) f(ab) f(a)f(b), A, B C n n 则称 f 是相容的矩阵范数. 在本讲义中, 如果不加特别指出, 所涉及的矩阵范数都是指相容的矩阵范数. 一类常用的矩阵范数就是由向量范数导出的算子范数. 引理 1.3 ( 算子范数, 诱导范数, 导出范数 ) 设 是 R n 上的向量范数, 则 A Ax sup x R n, x 0 x = max Ax x =1 是 R n n 上的范数, 称为算子范数, 或诱导范数, 导出范数. 例 1.8 常见的矩阵范数 : F - 范数 p- 范数 ( 算子范数 ) n n A F = a ij 2 ; i=1 j=1 Ax p A p = sup. x 0 x p

27 1.2 向量范数与矩阵范数 15 引理 1.4 可以证明 : ( n ) (1) 1- 范数 ( 列范数 ): A 1 = max a ij ; 1 j n i=1 n (2) - 范数 ( 行范数 ): A = max a ij ; (3) 2- 范数 : A 2 = ρ(a A). 1 i n j=1 计算 2- 范数时需要求谱半径, 因此通常比计算 1- 范数和 - 范数更困难. 但在某些情况下可以用下面的 范数等价性来估计一个矩阵的 2- 范数. 定理 1.12 ( 矩阵范数的等价性 ) R n n 空间上的所有范数都是等价的, 特别地, 有 1 n A 1 A 2 n A 1, 1 n A A 2 n A, 1 n A A 1 n A, 1 n A 1 A F n A 2. 除此之外, 我们还有下面的性质. 引理 1.5 设 A R n n, 则 A 2 2 A 1 A, 且 max { a ij } A 2 n max { a ij }. 1 i,j n 1 i,j n 定理 1.13 范数的性质 : (1) 对任意相容范数, 有 A k A k ; (2) 对任意算子范数, 有 Ax A x, AB A B, 即算子范数是相容范数 ; (3) Ax 2 A F x 2, AB F A F B F, 即 F - 范数是相容范数 ; (4) F - 范数不是算子范数 ; (5) 2 和 F 是酉不变范数, 即对任意酉矩阵 U, V, 有 UA 2 = AV 2 = UAV 2 = A 2, UA F = AV F = UAV F = A F (6) A 2 = A 2, A 1 = A ; (7) 若 A 是正规矩阵, 则 A 2 = ρ(a), 因此, A 2 A, 其中 是任意算子范数.

28 16 第一讲线性代数基础 序列的收敛 首先给出向量序列收敛的定义. { 定义 1.9 ( 向量序列的收敛 ) 设 } x (k) 是 C n 中的一个向量序列. 如果存在向量 x = [x k=1 1, x 2,..., x n ] C n 使得 lim k x(k) i = x i, i = 1, 2,..., n, 其中 x (k) i 表示 x (k) 的第 i 个分量. 则称 { x (k) } ( 按分量 ) 收敛到 x, 即 x 是 x (k) 的极限, 记为 lim k x(k) = x. 相类似地, 我们可以给出矩阵序列收敛的定义. { [ ]} 定义 1.10 ( 矩阵序列的收敛 ) 设 A (k) = [a ij ] C m n 使得 a (k) ij 则称 A (k) 收敛到 A, 即 A 是 A (k) 的极限, 记为 k=0 lim k a(k) ij = a ij, i = 1, 2,..., m, j = 1, 2,..., n, lim k A(k) = A. 是 C m n 中的一个矩阵序列. 如果存在矩阵 A = 关于向量序列和矩阵序列的收敛性, 我们有下面的结论 [82]. { [ 定理 1.14 设向量序列 {x (k) } k=0 Cn, 矩阵序列 A (k) = a (k) ij ]} (1) lim k x(k) = x lim k x(k) x = 0, 其中 为任一向量范数 ; (2) lim k A(k) = A lim k A(k) A = 0, 其中 为任一矩阵范数 ; (3) lim k A(k) = 0 lim k A(k) x = 0, x R n. k=0 C m n, 则 下面是关于收敛速度的定义. 定义 1.11 设点列 {ε k } k=1 收敛, 且 lim k= ε k = 0. 若存在一个有界常数 0 < c <, 使得 ε k+1 lim k ε k p = c, 则称点列 {ε k } 是 p 次 ( 渐进 ) 收敛的. 若 1 < p < 2 或 p = 1 且 c = 0, 则称点列是超线性收敛的. 1.3 矩阵与投影 特征值与特征向量

29 1.3 矩阵与投影 17 定义 1.12 设 A C n n, 称 p A (λ) = det(a λi) 为 A 的特征多项式, 其零点就是 A 的特征值. 定理 1.15 (Cayley-Hamilton) [43] 设 p A (λ) 是 A C n n 的特征多项式, 则 p A (A) = 0. 由 Cayley-Hamilton 定理可知, 总存在一个多项式 p(t) 使得 p(a) = 0. 我们称满足 p(a) = 0 的首项系数为 1 的次数最低的多项式为 A 的最小多项式. 最小多项式可以通过 Jordan 标准型来计算, 见定理 定义 1.13 设 A C n n. 若存在 λ C 和非零向量 x, y C n, 满足 Ax = λx, y A = λy, 则称 λ 为 A 的特征值, x 为 A 对应于 λ 的 ( 右 ) 特征向量, y 为 A 对应于 λ 的左特征向量, 并称 (λ, x) 为 A 的一个特征对 (eigenpair). 关于特征值的几个说明 : 只有当 A 是方阵时, 才具有特征值与特征向量 ; 实矩阵的特征值与特征向量有可能是复的 ; n 阶矩阵总是存在 n 个特征值 ( 其中可能有相等的 ); 特征值有代数重数和几何重数 ; 相似变换不改变矩阵的特征值 ; 矩阵 A 的所有特征值组成的集合称为 A 的谱, 通常记为 σ(a). 定义 1.14 设 A R n n. 若存在一个非奇异矩阵 X C n n, 使得 X 1 AX = Λ, (1.2) 其中 Λ C n n 是对角矩阵. 则称 A 是可对角化的, 矩阵 Λ 的对角线元素即为 A 的特征值, 分解 (1.2) 称为矩阵 A 的特征值分解或谱分解. 定理 1.16 设 A C n n. 则 (1) A 可对角化当且仅当 A 有 n 个线性无关的特征向量 ; (2) A 可对角化当且仅当 A 的所有特征值的代数重数与几何重数都相等 ; (3) 若 A 有 n 个互不相等的特征值, 则 A 可对角化. 定理 1.17 (Bendixson) 设 A C n n, 令 H = 1 2 (A + A ), S = 1 2 (A A ). 则有 λ min (H) Re(λ(A)) λ max (H), λ min (is) Im(λ(A)) λ max (is),

30 18 第一讲线性代数基础 其中 Re( ) 和 Im( ) 分别表示实部和虚部. 这个定理告诉我们, 一个矩阵的特征值的实部的取值范围由其 Hermite 部分确定, 而虚部则由其反 Hermite 部分确定. 定理 1.18 矩阵的特征值关于矩阵元素是连续的. 即当矩阵的元素发生变化时, 其特征值的变化是连续的. 该结论可以通过多项式零点关于多项式系数的连续性得到 投影变换与投影矩阵设 S 1 和 S 2 是内积空间 S 的两个子空间, 且 S = S 1 S 2, 则 S 中的任意向量 x 都可唯一表示为 x = x 1 + x 2, x 1 S 1, x 2 S 2. 我们称 x 1 为 x 沿 S 2 到 S 1 上的投影, 记为 x S1. 设线性变换 P : S S. 如果对任意 x S, 都有 P x = x S1, 则称 P 是从 S 沿子空间 S 2 到子空间 S 1 上的投影变换 ( 也称投影算子或投影矩阵 ), 对应的变换矩阵称为投影矩阵. 线性变换在不同的基下对应不同的变换矩阵. 在不加特别指出时, 本讲义中如果线性空间是 R n 或 R m n, 我们采用单位标准基, 如 {e 1, e 2,..., e n }. 设 P 是从 S 沿子空间 S 2 到子空间 S 1 上的投影变换, 则对任意 x S 1 都有 P x = x. 因此, S 1 Ran(P ). 又由定义可知 Ran(P ) S 1, 所以 S 1 = Ran(P ). 类似地, 我们也可以验证 于是存在直和分解 S 2 = Ker(P ). S = Ran(P ) Ker(P ). 若 S = R n, 则立即可以得到下面的结论. 引理 1.6 设 P R n n 是一个投影矩阵, 则 R n = Ran(P ) Ker(P ). (1.3) 反之, 若 (1.3) 成立, 则 P 是沿子空间 Ker(P ) 到子空间 Ran(P ) 上的投影变换. 下面的性质说明, 投影矩阵由其像空间和零空间唯一确定.

31 1.3 矩阵与投影 19 引理 1.7 若 S 1 和 S 2 是 R n 的两个子空间, 且 R n = S 1 S 2, 则存在唯一的投影矩阵 P, 使得 Ran(P ) = S 1, Ker(P ) = S 2, 即对任意向量 x R n, 有 P x S 1, x P x S 2. 下面给出一个投影矩阵的判别定理. 定理 1.19 矩阵 P R n n 是投影矩阵的充要条件是 P 2 = P, 即 P 是幂等矩阵 (Idempotence ). 证明. 必要性 : 设 P 是投影矩阵, 则对任意 x R n, 都有 P 2 x = P (P x) = P x. 因此 P 2 = P. 充分性 : 设 P 2 = P. 我们只需证明 Ran(P ) + Ker(P ) = R n. 显然 Ran(P ) + Ker(P ) R n, 因此只要证明 R n Ran(P ) + Ker(P ). 对任意 x R n, 有 x = P x + (x P x). 由 P (x P x) = P x P 2 x = 0 可知 x P x Ker(P ). 因此 R n Ran(P ) + Ker(P ). 所以结论 Ran(P ) + Ker(P ) = R n 成立. 引理 1.8 设 P R n n 是一个投影矩阵, 则 (1) I P 也是一个投影矩阵, 且 Ker(P ) = Ran(I P ); (2) P 也是一个投影矩阵. 设 S 1 和 S 2 是 R n 的两个 m 维子空间. 如果 S 1 S2 = {0} ( 或 R n = S 1 S2 ), 则存在唯一的投影矩阵 P, 使得 Ran(P ) = S 1, Ker(P ) = S2. 此时, 我们称 P 是 S 1 上与 S 2 正交的投影矩阵. 令 v 1, v 2,..., v m 和 w 1, w 2,..., w m 分别是 S 1 和 S 2 的一组基, 则 P 可以由这两组基来表示. 定理 1.20 设 P R n n 是 S 1 上与 S 2 正交的投影矩阵, 则 P = V (W V ) 1 W, (1.4) 其中 V = [v 1, v 2,..., v m ], W = [w 1, w 2,..., w m ]. 证明. 留作练习. 虽然投影矩阵 P 由子空间 S 1 和 S 2 唯一确定, 但其矩阵表示形式 (1.4) 并不唯一.

32 20 第一讲线性代数基础 定理 1.21 ( 正交投影 ) 设 S 1 是内积空间 S 的一个子空间, x S, 则 x 可唯一分解成 其中 x 1 称为 x 在 S 1 上的正交投影. x = x 1 + x 2, x 1 S 1, x 2 S 1, 若 P 是从 S 沿子空间 S1 到子空间 S 1 上的投影变换, 则称 P 为子空间 S 1 上的正交投影变换 ( 也称正交投影算子, 对应的矩阵称为正交投影矩阵 ), 记为 P S1. 如果 P 不是正交投影变换, 则称其为斜投影变换 (oblique projector ) 定理 1.22 投影矩阵 P R n n 是正交投影矩阵的充要条件 P = P. 证明. 留作练习. 由定理 1.20 可立即得到下面的结论. 推论 1.23 设 P 是子空间 S 1 上的正交投影变换. 令 v 1, v 2,..., v m 是 S 1 的一组标准正交基, 则 P = V V. 定理 1.24 设 P R n n 是一个正交投影矩阵, 则 P 2 = 1, 且对 x R n, 有 x 2 2 = P x (I P )x 2 2. 下面是关于正交投影矩阵的一个很重要的应用. 定理 1.25 设 S 1 是 R n 的一个子空间, z R n 是一个向量. 则最佳逼近问题 min x S 1 x z 2 的唯一解为 x = P S1 z. 即 S 1 中距离 z 最近 (2- 范数意义下 ) 的向量是 z 在 S 1 上的正交投影. 证明. 留作练习. 推论 1.26 设矩阵 A R n n 对称正定, 向量 x S 1 R n. 则 x 是最佳逼近问题 min x S 1 x z A

33 1.3 矩阵与投影 21 的解的充要条件是 A(x z) S 1. 这里 x z A A 1 2 (x z) 2. 证明. 留作练习 不变子空间 定义 1.15 设 A R n n, 子空间 S R n. 若 AS S, 即对任意 x S, 都有 Ax S, 则称 S 为 A 的 一个不变子空间. 由特征向量张成的子空间是不变子空间. 定理 1.27 设 x 1, x 2,..., x m 是 A 的一组线性无关的特征向量, 则 span{x 1, x 2,..., x m } 是 A 的一个 m 维不变子空间. 定理 1.28 设 A R n n, X R n k 且 rank(x) = k. 则 span(x) 是 A 的不变子空间的充要条件是存在一个矩阵 B R k k 使得 AX = XB, 此时, B 的特征值都是 A 的特征值. 证明. 设 X = [x 1, x 2,..., x k ], 由 rank(x) = k 可知向量组 {x 1, x 2,..., x k } 构成子空间 span(x) 的一组基. 首先证明必要性. 设 span(x) 是 A 的不变子空间, 则 Ax j span(x). 所以有 Ax j = b 1j x 1 + b 2j x b kj x k, j = 1, 2,..., k, 其中 b ij R 是线性表出系数. 将上式写成矩阵形式即为 AX = XB 其中 B = [b ij ] R k k. 其次证明充分性. 设存在矩阵 B R k k, 使得 AX = XB. 则 Ax j 为 x 1, x 2,..., x k 的线性组合. 又 {x 1, x 2,..., x k } 为 span(x) 的一组基, 所以对任意 x span(x) 都有 Ax span(x), 即 span(x) 是 A 的一个不变子空间. 下面证明 B 的特征值都是 A 的特征值. 将 X 扩充成一个非奇异的方阵 ], 即存在矩阵 X R n (n k), 使得 Y = [X, X] R n n 非奇异. 将 Y 1 写成分块形式 : Y 1 = [ Z1 Z 2, 其中 Z 1 R k n, Z 2 R (n k) n. 由等式 Y 1 Y = I n n 可得 Z 1 X = I k k, Z 2 X = 0. 又 AX = XB, 所以 [ ] [ Y 1 Z1 AY = A[X, X] Z1 AX Z 1 A = X ] [ Z1 XB Z 1 A Z 2 AX Z 2 A X = X ] [ B Z1 A Z 2 XB Z 2 A X = X ] 0 Z 2 A X. Z 2 因此 B 的特征值都是 Y 1 AY 的特征值. 由于 A 与 Y 1 AY 相似, 所以它们具有相同的特征值. 由此, 定理结论成立.

34 22 第一讲线性代数基础 推论 1.29 设 A R n n, X R n k 且 rank(x) = k. 若存在一个矩阵 B R k k 使得 AX = XB, 则 (λ, v) 是 B 的一个特征对当且仅当 (λ, Xv) 是 A 的一个特征对. 1.4 矩阵标准型 Jordan 标准型在计算矩阵的特征值时, 一个基本的思想是通过相似变换, 将其转化成一个形式尽可能简单的矩阵, 使得其特征值更易于计算. 在这里, 我们介绍两个非常有用的特殊矩阵 : Jordan 标准型和 Schur 标准型. 定理 1.30 设 A C n n, 则存在非奇异矩阵 X C n n, 使得 J 1 X 1 J 2 AX =. J, (1.5).. 其中 J i 的维数等于 λ i 的代数重数, 且具有下面的结构 J i1 λ i 1 J i J i =., J.. ik =. λ i 1 这里的 ν i 为 λ i 的几何重数, J ik 为 ( 对应于 λ i 的 ) Jordan 块. J p J iνi λ i 证明. 参见高等代数相关资料, 如 [80]. 块对角矩阵 J 就称为 A 的 Jordan 标准型, 除了其中的 Jordan 块排列次序外是唯一确定的. 易知, 对于每一个 Jordan 块 J ik, 都存在一个列满秩矩阵 X ik 使得 AX ik = X ik J ik. 除此之外, Jordan 标准型还具有以下性质 : Jordan 块的个数等于 A 的线性无关的特征向量的个数 ; A 可对角化的充要条件是每个 Jordan 块都是 1 1 的, 此时 X 的列向量就是 A 的特征向量. 推论 1.31 所有可对角化矩阵组成的集合在所有矩阵组成的集合中是稠密的. 可通过矩阵的 Jordan 标准型来计算最小多项式.

35 1.4 矩阵标准型 23 定理 1.32 设 λ 1, λ 2,..., λ p 为 A C n n 的互不相等的特征值, 则 A 的最小多项式为 q A (t) = 其中 r i 是 λ i 的最大 Jordan 块的维数. p (t λ i ) ri, i= Schur 标准型 Jordan 标准型在理论研究中非常有用, 但数值计算比较困难, 目前还没有找到十分稳定有效的数值算法. 下面我们介绍一个比较实用的标准型 : Schur 标准型. 定理 1.33 设 A C n n, 则存在一个酉矩阵 U C n n 使得 λ 1 r 12 r 1n U 0 λ 2 r 2n AU =. R 或 A = URU, (1.6) λ n 其中 λ 1, λ 2,..., λ n 是 A 的特征值 ( 可以按任意顺序排列 ). 证明. 我们对 n 使用归纳法. 当 n = 1 时, 结论显然成立. 假设结论对阶数为 n 1 的矩阵都成立. 考虑 n 阶矩阵 A C n n. 设 λ 是 A 的一个特征值, 其对应的特征向量为 x C n, 且 x 2 = 1. 构造一个以 x 为第一列的酉矩阵 X = [x, X]. 于是 [ ] [ x X AX = A [x, X X] x Ax x A = X ] X Ax X A X. 因为 x Ax = λx x = λ, 且 X Ax = X (λx) = λ X x = 0, 故 [ λ x X A AX = X ] [ ] λ Ã12 0 X A X, 0 Ã 22 其中 Ã 22 C (n 1) (n 1). 根据归纳假设, 存在酉矩阵 Ũ C (n 1) (n 1), 使得 Ũ A 22 Ũ = R C (n 1) (n 1) 是一个上三角矩阵. 令 [ ] 1 0 U = X, 0 Ũ 则有 [ 1 ] 0 [ 1 ] 0 U AU = 0 Ũ X AX 0 Ũ

36 24 第一讲线性代数基础 [ ] [ ] [ ] [ ] [ ] 1 0 λ Ã λ Ã12 Ũ λ Ã12 Ũ = = = R. 0 Ũ 0 Ã 22 0 Ũ 0 Ũ Ã 22 Ũ 0 R 由于 R 是上三角矩阵, 故 R 也是一个上三角矩阵, 其对角线元素即为 A 的特征值. 由归纳法可知, 定理结论成立. 关于 Schur 标准型的几点说明 : Schur 标准型可以说是酉相似变化下的最简形式 ; 定理中的 U 和 R 不是唯一的, 其中 R 的对角线元素可以按任意顺序排列. 推论 1.34 设 A C n n, 则 A 是正规矩阵当且仅当 (1.6) 中的 R 是对角矩阵, 即 A 可酉对角化的充要条件是 A 是正规矩阵 ; A 是 Hermite 矩阵当且仅当 (1.6) 中的 R 是实对角矩阵. 众所周知, 当 A 是实矩阵时, 其特征值和特征向量仍可能是复的. 在实际计算中, 我们希望避免复数运算. 下面我们给出实 Schur 标准型 ( 或拟 Schur 标准型 ). 定理 1.35 设 A R n n, 则存在正交矩阵 Q R n n, 使得 Q AQ = T, (1.7) 其中 T R n n 是拟上三角矩阵, 即 T 是块上三角的, 且对角块为 1 1 或 2 2 的块矩阵. 若对角块是 1 1 的, 则其就是 A 的一个特征值, 若对角块是 2 2 的, 则其特征值是 A 的一对共轭复特征值. 证明. 同样可以使用归纳法. 当 n = 1 时, 结论显然成立. 假定结论对所有不超过 n 1 阶的矩阵都成立. 考虑 n 阶实矩阵 A. 设 λ 是 A 的一个特征值. 若 λ 是实的, 则存在一个对应的实特征向量, 后面的证明与定理 1.33 的证明类似. 若 λ 是复数 ( 虚部不为 0), 设其对应的单位复特征向量为 u. 由于 λū = λu = Au = Āū = Aū, 故 ( λ, ū) 也是 A 的一个特征对. 令 ũ = 1 (u + ū), 2 ṽ = 1 (u ū), 2i 即 ũ, ṽ 分别为 u 的实部与虚部, 于是 ũ R n, ṽ R n. 由定理 1.27 可知, span{ũ, ṽ} = span{u, ū} 是 A 的 一个不变子空间. 将 {ũ, ṽ} 进行正交化 ( 利用 Gram-Schmidt 正交化过程 ): 存在列正交矩阵 Q R n 2 和 非奇异上三角矩阵 R R 2 2, 使得 [ũ, ṽ] = Q R. 则 span{ Q} = span{ũ, ṽ} 也是 A 的不变子空间. 由定理 1.28 可知, 存在矩阵 B R 2 2 使得 A Q = QB. 将 Q 扩充成一个正交矩阵, 即存在矩阵 ˆQ R n (n 2) [ 使得 Q, ˆQ] 是正交矩阵. 于是有 [ ] [ Q, ˆQ A Q, ˆQ] = [ Q A Q Q A ˆQ ] [ B ˆQ A Q ˆQ A ˆQ = Q A ˆQ ] 0 ˆQ A ˆQ, 其中 ˆQ A ˆQ R (n 2) (n 2). 对 ˆQ A ˆQ 使用归纳假设, 即可证明定理结论成立. 易知, 若 A 的实 Schur 标准型 T 是对角矩阵, 则 A 的特征值都是实的. 反之, 结论也成立.

37 1.5 几类特殊矩阵 25 推论 1.36 设 A R n n 的特征值都是实的, 则存在正交矩阵 Q R n n 和上三角矩阵 R R n n 使得 Q AQ = R, 其中 R 的对角线元素即为 A 的特征值. 若 A 是实正规矩阵, 则其 Schur 分解中的 U 和 R 是否也都可以是实的? 1.5 几类特殊矩阵 对称正定矩阵定义 1.16 设 A C n n. 若对所有向量 x C n 有 Re(x Ax) 0, 则称 A 是半正定的 ; 进一步, 若对所有非零向量 x C n 有 Re(x Ax) > 0, 则称 A 是正定的. 若 A 是 Hermite 的且半正定, 则称 A 为 Hermite 半正定 ; 若 A 是 Hermite 的且正定, 则称 A 为 Hermite 正定 ; 若对所有向量 x C n 有 x Ax R, 则 A = A. 因此, 若 A 是 Hermite ( 半 ) 正定的, 则 A 必定是 Hermite 矩阵. 本讲义中, 正定和半正定矩阵不要求是对称或 Hermite. 定理 1.37 设 A C n n. 则 A 正定 ( 半正定 ) 的充要条件是矩阵 H = 1 2 (A + A ) 正定 ( 半正定 ). 定理 1.38 设 A R n n. 则 A 正定 ( 半正定 ) 的充要条件是对任意非零向量 x R n 有 x Ax > 0 (x Ax 0). 证明. 留作练习. 如果 A 是 Hermite ( 半 ) 正定矩阵, 则可以定义其平方根, 即存在唯一的 Hermite ( 半 ) 正定矩阵 B, 使得 B 2 = A. 事实上, 我们有下面更一般的性质. 定理 1.39 设 A C n n 是一个 Hermite 半正定矩阵, k 是一个给定的正整数. 则存在一个唯一的 Hermite 半正定矩阵 B C n n 使得 B k = A. 同时, 我们还有下面的性质 : (1) BA = AB, 且存在一个多项式 p(t) 使得 B = p(a);

38 26 第一讲线性代数基础 (2) rank(b) = rank(a), 因此, 若 A 是正定的, 则 B 也正定 ; (3) 如果 A 是实矩阵的, 则 B 也是实矩阵. 证明. 留作练习 ( 可参见 [43]). 特别地, 当 k = 2 时, 称 B 为 A 的平方根, 通常记为 A 1 2. Hermite 正定矩阵与内积之间有下面的关系. 定理 1.40 设 (, ) 是 C n 上的一个内积, 则存在一个 Hermite 正定矩阵 A C n n 使得 (x, y) = y Ax. 反之, 若 A C n n 是 Hermite 正定矩阵, 则 f(x, y) y Ax 是 C n 上的一个内积. 证明. 留作练习. 上述性质在实数域中也成立 对角占优矩阵 首先给出对角占优矩阵的定义. 定义 1.17 设 A C n n, 若 a ii j i a ij 对所有 i = 1, 2,..., n 都成立, 且至少有一个不等式严格成立, 则称 A 为弱行对角占优. 若对所有 i = 1, 2,..., n 不等式都严格成立, 则称 A 是严格行对角占优. 通常简称为弱对角占优和严格对角占 优. 类似地, 可以定义弱列对角占优和严格列对角占优. 定理 1.41 若 A C n n 是严格对角占优矩阵, 则 A 非奇异. 证明. 我们使用反证法. 假设 A 奇异, 即 Ax = 0 存在非零解, 不妨设为 x = [x 1, x 2,..., x n ]. 不失一般 性, 设下标 k 满足 x = x k, 则 x k > 0. 考察 Ax = 0 的第 k 个方程 : a k1 x 1 + a k2 x a kn x n = 0. 可得 a kk = 1 x k n j=1,j i a kj x j n j=1,j i a kj x j x k n j=1,j i a kj,

39 1.5 几类特殊矩阵 这与 A 严格对角占优矛盾. 所以 A 非奇异 不可约矩阵下面给出不可约矩阵的定义. 定义 1.18 设 A C n n, 如果存在置换矩阵 P, 使得 P AP 为块上三角矩阵, 即 [ ] P AP A11 A 12 =, 0 A 22 其中 A 11 C k k (1 k < n), 则称 A 为可约矩阵, 否则称为不可约矩阵. 下面的定理可用于判别一个矩阵是否可约. 定理 1.42 设 A C n n, 指标集 Z n = {1, 2,...,..., n}. 则 A 可约的充要条件是存在非空指标集 J Z n 且 J Z n, 使得 a ij = 0, i J 且 j Z n \ J. 这里 Z n \ J 表示 J 在 Z n 中的补集. 证明. 留作练习. 我们知道, 严格对角占优矩阵是非奇异的. 如果 A 是不可约的弱对角占优矩阵, 则可以同样证明 A 是非奇异的. 定理 1.43 设 A C n n 是不可约的弱对角占优矩阵, 则 A 非奇异. 证明. 我们使用反证法. 假设 A 奇异, 即存在特征值 λ = 0. 设其对应的非零特征值向量为 x = [x 1, x 2,..., x n ], 且满足 x = 1, 即 x i 1, i = 1, 2,..., n. 定义指标集 J = {k Z n : x k = 1}. 显然, J 是非空的. 由 Ax = λx = 0 可知, 对任意的 k J, 有 n a kk x k = a kj x j. j=1,j k 所以 其中等号成立当且仅当 a kk 1 x k n j=1,j k a kj x j n j=1,j k a kj, (1.8) a kj = 0, j Z n \ J. (1.9) 由于 A 是弱对角占优的, 所以 n a kk = a kj. j=1,j k

40 28 第一讲线性代数基础 因此结论 (1.9) 对所有的 k J 都成立. 下面我们说明 J Z n. 否则的话, 如果 J = Z n, 则由 (1.8) 可知 A 不可能是弱对角占优的. 所以 J 非空且 J Z n. 由定理 1.42 可知 A 是可约的, 这与条件 A 不可约矛盾. 所以, λ = 0 不是 A 的特征值, 即 A 非奇异. 关于严格对角占优矩阵和不可约弱对角占优矩阵的非奇异性, 也可以使用 Gerschgorin 圆盘定理来证明, 参见 [83] Gerschgorin 圆盘定理 设 A = [a ij ] C n n, 定义集合 D i z C : z a ii 这就是 A 的 n 个 Gerschgorin 圆盘. n j=1,j i a ij, i = 1, 2,..., n. (1.10) 定理 1.44 (Gerschgorin 圆盘定理 ) 设 A = [a ij ] C n n. 则 A 的所有特征值都包含在 A 的 Gerschgorin 圆盘的并集中, 即 σ(a) n D i. i=1 证明. 设 λ 是 A 的特征值, 对应的非零特征向量为 x = [x 1, x 2,..., x n ] C n, 即 Ax = λx. 不失一般性, 设 x = x i, 则 x i > 0. 考察 Ax = λx 的第 i 个方程可得 n λx i a ii x i = a ij x j. j=1,j i 因此 所以 λ D i. λ a ii = 1 x i n j=1,j i a ij x j n j=1,j i a ij x j x i n j=1,j i a ij. 将 A 的非对角线元素换成 τa ij, 其中 0 τ 1, 并利用特征值关于矩阵元素的连续性, 我们就可以得到下面的结论. 定理 1.45 设 A = [a ij ] C n n. 如果 n D i 可分解成两个不相交的子集 S 和 T, 即 i=1 n D i = S T 且 S T =. i=1 假定 S 由 k 的圆盘组成, 而 T 由其它 n k 个圆盘组成. 则 S 中恰好包含 A 的 k 个特征值 ( 重特征值按重数计算 ), 而 T 中则包含 A 的其它 n k 个特征值.

41 1.5 几类特殊矩阵 29 定理 1.46 设 A = [a ij ] C n n 不可约. 如 A 的一个特征值 λ 在盘 D i 的边界上 ( 即圆周上 ). n D i 的边界上, 则它必定在所有圆 i=1 证明. 参见 [83]. 推论 1.47 设 A = [a ij ] C n n 不可约. 如 λ 在则它必定不是 A 的特征值. n D i 的边界上, 但至少有一个圆盘的圆周不经过 λ, i= 其它常见特殊矩阵 带状矩阵 (banded matrix): a ij 0 当且仅当 b u i j b l, 其中 b u 和 b l 为非负整数, 分别称为下 带宽和上带宽, b u + b l + 1 称为 A 的带宽 (bandwidth); 上 Hessenberg 矩阵 (upper Hessenberg matrix): a ij = 0 for i j > 1 ; 下 Hessenberg 矩阵 (lower Hessenberg matrix): a ij = 0 for i j < 1 ; Toeplitz 矩阵 : t 0 t 1 t n+1. t T = t 1 t n 1 t 1 t 0 循环矩阵 (circulant matrix): C = c 0 c n 1 c n 2 c 1 c 1 c 0 c n 1 c 2 c 2 c 1 c 0 c c n 1 c n 2 c n 3 c 0 Hankel 矩阵 : h 0 h 1 h n 2 h n 1 h 1 h n H =.. h n 2 h 2n 2 h n 1 h n h 2n 2 h 2n

42 30 第一讲线性代数基础 1.6 Kronecker 积定义 1.19 设 A C m n, B C p q, 则 A 与 B 的 Kronecker 积定义为 a 11 B a 12 B a 1n B a 21 B a 22 B a 2n B A B =. C mp nq a m1 B a m2 B a mn B Kronecker 积也称为直积, 或张量积. 任意两个矩阵都存在 Kronecker 积, 且 A B 和 B A 是同阶矩阵, 但通常 A B B A. 定理 1.48 矩阵的 Kronecker 积有以下性质 : (1) (αa) B = A (αb) = α(a B), α C; (2) (A B) = A B, (A B) = A B ; (3) (A B) C = A (B C); (4) (A + B) C = A C + B C; (5) A (B + C) = A B + A C; (6) 混合积 : (A B)(C D) = (AC) (BD) (7) (A 1 A 2 A k )(B 1 B 2 B k ) = (A 1 B 1 ) (A 2 B 2 ) (A k B k ); (8) (A 1 B 1 )(A 2 B 2 ) (A k B k ) = (A 1 A 2 A k ) (B 1 B 2 B k ) ; (9) rank(a B) = rank(a) rank(b) ; 定理 1.49 设 A C m m, B C n n, 并设 (λ, x) 和 (µ, y) 分别是 A 和 B 的一个特征对, 则 (λµ, x y) 是 A B 的一个特征对. 由此可知, B A 与 A B 具有相同的特征值. 定理 1.50 设 A C m m, B C n n, 则 (1) tr(a B) = tr(a)tr(b) ; (2) det(a B) = det(a) n det(b) m ; (3) A I n + I m B 的特征值为 λ i + µ j, 其中 λ i 和 µ j 分别为 A 和 B 的特征值 ; (4) 若 A 和 B 都非奇异, 则 (A B) 1 = A 1 B 1 ;

43 1.7 课后习题 31 推论 1.51 设 A = Q 1 Λ 1 Q 1 1, B = Q 2Λ 2 Q 1 2, 则 A B = (Q 1 Q 2 )(Λ 1 Λ 2 )(Q 1 Q 2 ) 1. A B 与 B A 通常是不相等的, 但它们之间存在下面的关系式. 定理 1.52 设 A C m m, B C n n, 则存在 m + n 阶置换矩阵 P 使得 P (A B)P = B A. 定理 1.53 设矩阵 X = [x 1, x 2,..., x n ] R m n, 记 vec(x) 为 X 按列拉成的 mn 维列向量, 即 vec(x) = [x 1, x 2,..., x N ], 则有 vec(ax) = (I A)vec(X), vec(xb) = (B I)vec(X), 以及 (A B)vec(X) = vec(bxa ). Kronecker 积一个重要应用是可以将某些矩阵方程转化成一般的代数方程. 定理 1.54 矩阵方程 等价于代数方程 AX + XB = D (I A + B I)vec(X) = vec(d). 1.7 课后习题 练习 1.1 设 A C m n (m < n) 是满秩矩阵, Z C n (n m) 是由 ker(a) 的一组基构成的矩阵. 试证明 : ( n ) 1 练习 1.2 证明 : x = lim x i p p. p i=1 练习 1.3 证明定理 1.7 中的三个不等式 : (1) x 2 x 1 n x 2, (2) x x 1 n x, (3) x x 2 n x. 练习 1.4 证明定理 1.8, 即 Cauchy-Schwartz 不等式 : Ran(A ) = Ker(Z ). 设 (, ) 是 C n 上的内积, 则对任意 x, y C n, 有 (x, y) 2 (x, x) (y, y).

44 32 第一讲线性代数基础 练习 1.5 证明 : ( n ) (1) A 1 = max a ij 1 j n i=1 ; (2) A 2 = max x 0, y 0 练习 1.6 证明 : 定义在 R n n 上的算子范数和 F - 范数是相容范数. 练习 1.7 证明 : (1) 对任意的算子范数, 有 I = 1; (2) 对任意的相容范数, 有 I 1. 练习 1.8 证明 : A 练习 1.9 证明 : 1 (1) A 2 A 1 n A 2 ; n (2) max a ij 是矩阵范数, 但不是相容范数. 1 i,j n 1 n A F A 1 n A F ; (3) A 2 A F n A 2 ; (4) A 2 2 A 1 A. 练习 1.10 设 A R n n 是正交矩阵. 证明 : det(a) = ±1. y Ax x 2 y 2. 练习 1.11 设 A, B R n n 都是正交矩阵, 且 det(a) = det(b). 证明 : A + B 奇异. 练习 1.12 设 A R n n. 证明 : rank(a) = 1 的充要条件是存在非零向量 a, b R n 使得 A = ab. 练习 1.13 设 A k 是 A R n n 的一个 k 阶子矩阵, p 是任意一个算子范数. 证明 : A k p A p. 练习 1.14 设 是 R m 空间上的一个向量范数, A R m n, 且 rank(a) = n. 证明 : x Ax 是一个向量范数. 练习 1.15 设 是 R n 空间上的一个向量范数. 证明 : A 1 1 = min x =1 Ax. 练习 1.16 设 A R n n, x R n 且 x 0. 证明 ( ) A I xx 2 x x 练习 1.17 设 A, B R n n, 矩阵 F = A 2 F Ax 2 2 x x. [ ] [ ] A 0 0 A C =, D =. 0 B B 0 证明 : C 2 = max{ A 2, B 2 }, D 2 = max{ A 2, B 2 }. 练习 1.18 证明定理 1.20: 设 P R n n 是 S 1 上与 S 2 正交的投影矩阵, 则 P = V (W V ) 1 W, 其中 V = [v 1, v 2,..., v m ] 和 W = [w 1, w 2,..., w m ] 的列向量组分别构成 S 1 和 S 2 的一组基. 练习 1.19 证明定理 1.22: 投影矩阵 P R n n 是正交投影矩阵的充要条件 P = P

45 1.7 课后习题 33 练习 1.20 证明定理 1.25: 设 S 1 是 R n 的一个子空间, z R n 是一个向量. 则最佳逼近问题 min x S 1 x z 2 的唯一解为 x = P S1 z, 即 S 1 中距离 z 最近 (2- 范数意义下 ) 的向量是 z 在 S 1 上的正交投影. 练习 1.21 证明推论 1.26: 设矩阵 A R n n 对称正定, 向量 x S 1 R n. 则 x 是最佳逼近问题 min x S 1 x z A 的解的充要条件是 A(x z) S 1. 这里 x z A A 1 2 (x z) 2. 练习 1.22 设 A R m n (m n) 是满秩矩阵, Z R n (n m) 是由 Ker(A) 的一组基构成的矩阵. 试证 明 : (1) P Z Z(Z Z) 1 Z 是 Ker(A) 上的正交投影算子 ; (2) P A A (AA ) 1 A 是 Ran(A ) 上的正交投影算子 ; (3) P Z = I P A. 练习 1.23 设 Jordan 块矩阵 试证明 : ( 其中 k p) 是二项式系数, 即 J = λ R. n n... 1 ( λ k k ( 1) λ k 1 k ) n 1 λ k (n 1) ( λ J k k k ) n 2 λ k (n 2) =,.... λ λ k ( ) k k! = p!(k p)!, p k; p 0, p > k. 练习 1.24 证明定理 ( 矩阵最小多项式与 Jordan 标准型 ) 练习 1.25 证明定理 1.37: A C n n 正定 ( 半正定 ) 的充要条件是矩阵 H = (A + A )/2 正定 ( 半正定 ). 练习 1.26 证明定理 1.38: A R n n 正定 ( 半正定 ) 的充要条件是对任意非零向量 x R n 有 x Ax > 0 (x Ax 0).

46 34 第一讲线性代数基础 练习 1.27 设 A R n n 正定, 证明 : A 1 也正定. 练习 1.28 证明定理 (Hermite 半正定矩阵的平方根 ) 练习 1.29 证明定理 1.42 ( 矩阵可约的充要条件 ): 设 A R n n, 指标集 Z n = {1, 2,...,..., n}. 则 A 可约的充要条件是存在非空指标集 J Z n 且 J Z n, 使得 这里 Z n \ J 表示 J 在 Z n 中的补集. a ij = 0, i J 且 j Z n \ J. 练习 1.30 设 A R m n, B R n m, 证明 : tr(ab) = tr(ba). 练习 1.31 (Sherman-Morrison 公式 ) 设 A R n n 非奇异, x, y R n. 证明 : 若 y A 1 x 1, 则 A xy 可逆, 且 (A xy ) 1 = A 1 A 1 xy A 1 y A 1 x 1. 练习 1.32 设 A R n n 非奇异, X, Y R n m (m n). 证明 : 若 Y A 1 X I 非奇异, 则 A XY 可逆, 且 (A XY ) 1 = A 1 A 1 X(Y A 1 X I) 1 Y A 1. ( 提示 : 可利用公式 B 1 = A 1 A 1 (B A)B 1 ) [ ] B C 练习 1.33 设 A =, 其中 B, D C n n 均为上三角矩阵, 且 B 和 D 的对角线元素互不相等. 0 D [ ] ( [ ]) B 0 I S 证明 : 存在矩阵 S, 使得 S 1 AS =. 提示 : 可设 S = 0 D 0 I 练习 1.34 设矩阵 A, B 都是可对角化的, 即 A = XΛ A X 1, B = Y Λ B Y 1. 试给出 A B 的特征值分解. 练习 1.35 设 a R, 证明 : 1 a 1 a a a a 2 a n 1. 1 a... = a a 1 思考题练习 1.36 证明定理 1.40: 设 (, ) 是 C n 上的一个内积, 则存在一个 Hermite 正定矩阵 A C n n 使得 (x, y) = y Ax 对任意 x, y C n 都成立. 反之, 若 A C n n 是 Hermite 正定矩阵, 则 f(x, y) y Ax 是 C n 上的一个内积.

47 1.7 课后习题 35 练习 1.37 设 A R m n (m n) 是满秩矩阵, Z R n (n m) 是由 Ker(A) 的一组基构成的矩阵. 若 G R n n 对称非奇异, 试证明 : P Z = G 1 G 1 A (AG 1 A )AG 1, 其中 P Z Z(Z GZ) 1 Z. 练习 1.38 设 B R m n (m n) 是满秩矩阵, C R m m 是对称半正定矩阵. 试证明 : B (BB ) 1 B B (C + BB ) 1 B 是对称半正定的. 练习 1.39 设 P 是置换矩阵, 则 P 可以表示为一系列初等置换矩阵 ( 即交换单位矩阵的两行所得到的矩阵 ) 的乘积. 试问在什么条件下, 有 P = P.

48

49 第二讲线性方程组直接方法 一般来说, 求解线性方程组的数值方法可以分为两类 : 直接法与迭代法. 本章介绍直接法, 即 Gauss 消去法. 直接法相对比较稳定, 因此在工程计算中很受欢迎. 但由于运算量是 O(n 3 ), 当问题规模较大时, 时间会很长 ( 这里 n 表示未知量的个数 ). 目前, 直接法主要用于小规模或中等规模线性方程组的数值求解. 2.1 Gauss 消去法和 LU 分解 LU 分解 考虑线性方程组 Ax = b, (2.1) 其中 A R n n 非奇异, b R n 为给定的右端项. Gauss 消去法本质上就是对系数矩阵 A 进行 LU 分解, 即将 A 分解成两个矩阵的乘积 A = LU, (2.2) 其中 L 是单位下三角矩阵, U 为非奇异上三角矩阵. 这个分解就称为 LU 分解. 假定矩阵 A 存在 LU 分解 (2.2), 则方程组 (2.1) 就转化为求解下面两个三角方程组 { Ly = b, 显然, 这两个方程组都非常容易求解. 基于 LU 分解的 Gauss 消去法描述如下 : Ux = y. 算法 2.1. Gauss 消去法 1: 将 A 进行 LU 分解 : A = LU, 其中 L 为单位下三角矩阵, U 为非奇异上三角矩阵 ; 2: 利用向前回代, 求解 Ly = b, 即得 y = L 1 b; 3: 利用向后回代, 求解 Ux = y, 即得 x = U 1 y = (LU) 1 b = A 1 b. 我们知道, 当系数矩阵 A 非奇异时, 方程组 (2.1) 总是存在唯一解. 但是, 并不是每个非奇异矩阵都存在 LU 分解. 定理 2.1 (LU 分解的存在性和唯一性 ) 设 A R n n. 则存在唯一的单位下三角矩阵 L 和非奇异上三角矩阵 U, 使得 A = LU 的充要条件是 A 的所有顺序主子矩阵 A k = A(1 : k, 1 : k) 都非奇异, k = 1, 2,..., n. 37

50 38 第二讲线性方程组直接方法 证明. 必要性 : 设 A 11 是 A 的 k 阶顺序主子矩阵, 将 A = LU 写成分块形式 [ ] [ ] [ ] [ A11 A 12 L11 0 U11 U 12 L11 U 11 L 11 U 12 ] = =. A 21 A 22 L 21 L 22 0 U 22 L 21 U 11 L 21 U 12 + L 22 U 22 可得 A 11 = L 11 U 11. 由于 L 11 和 U 11 均非奇异, 所以 A 11 也非奇异. 充分性 : 用归纳法. 当 n = 1 时, 结论显然成立. 假设结论对 n 1 阶矩阵都成立, 即对任意 n 1 阶矩阵, 如果其所有的顺序主子矩阵都非奇异, 则存在 LU 分解. 考虑 n 阶的矩阵 A, 写成分块形式 [ ] A11 A 12 A = A 21 A 22, 其中 A 11 R (n 1) (n 1) 是 A 的 n 1 阶顺序主子矩阵. 由归纳假设可知, A 11 存在 LU 分解, 即存在单 位下三角矩阵 L 11 和非奇异上三角矩阵 U 11 使得 A 11 = L 11 U 11. 令 L 21 = A 21 U 1 11, U 12 = L 1 11 A 12, U 22 = A 22 L 21 U 12, 则 ] ] ] A = [ A11 A 12 A 21 A 22 = [ L11 U 11 L 11 U 12 L 21 U 11 U 22 + L 21 U 12 = [ L11 0 L 21 1 ] [ U11 U 12 0 U 22 LU. 易知 U 非奇异, 所以 A 存在 LU 分解. 下面证明唯一性. 设 A 存在两个不同的 LU 分解 : A = LU = LŨ, 其中 L 和 L 为单位下三角矩阵, U 和 Ũ 为非奇异上三角矩阵. 则有 L 1 L = U Ũ 1, 该等式左边为下三角矩阵, 右边为上三角矩阵, 所以只能是对角矩阵. 由于单位下三角矩阵的逆仍然是 单位下三角矩阵, 所以 L 1 L 的对角线元素全是 1, 故 L 1 L = I, 即 L = L, Ũ = U. 由归纳法可知, 结论成立.

51 2.1 Gauss 消去法和 LU 分解 LU 分解的实现 给定一个矩阵 a 11 a 12 a 1n a 21 a 22 a 2n A =. R n n.... a n1 a n2 a nn 我们可以通过矩阵初等变换来构造 A 的 LU 分解. 第一步 : 假定 a 11 0, 构造矩阵 l L 1 = l , 其中 l i1 = a i1, i = 2, 3,..., n.. a l n 易知 L 1 的逆为 L 1 1 = l l l n 用 L 1 1 左乘 A, 并将所得到的矩阵记为 A (1), 则 A (1) = L 1 1 A a 11 a 12 a 1n 0 a (1) 22 a (1) 2n a (1) n2 a (1) nn 即左乘 L 1 1 后, A 的第一列中除第一个元素外其它都变为 0. 第二步 : 类似地, 我们可以将上面的操作作用在 A (1) 的子矩阵 A (1) (2 : n, 2 : n) 上, 将其第一列除第一个元素外都变为 0. 也就是说, 假定 a (1) 22 0, 构造矩阵 L 2 = 0 l l n2 0 1, 其中 l i2 = a(1) i2 a (1) 22, i = 3, 4,..., n.

52 40 第二讲线性方程组直接方法 用 L 1 2 左乘 A (1), 并将所得到的矩阵记为 A (2), 则 a 11 a 12 a 13 a 1n 0 a (1) 22 a (1) 23 a (1) 2n A (2) = L 1 2 A(1) = L 1 2 L 1 1 A = 0 0 a (2) 33 a (2) 3n a (2) n3 a (2) nn 依此类推, 假定 a (k 1) kk 0 (k = 3, 4,..., n 1), 则我们可以构造一系列的矩阵 L 3, L 4,..., L n 1, 使得 a 11 a 12 a 13 a 1n L 1 n 1 L 1 2 L 1 1 A =. 0 a (1) 22 a (1) 23 a (1) 2n 0 0 a (2) 33 a (2) 3n a (n 1) nn 为一个上三角矩阵. 我们将这个上三角矩阵记为 U, 并记 l L = L 1 L 2 L n 1 = l 31 l , (2.3)..... l n1 l n2 l n3 1 则可得 A = LU, 这就是 A 的 LU 分解. 将上面的过程写成算法, 描述如下 : 算法 2.2. LU 分解 1: Set L = I, U = 0 % 将 L 设为单位矩阵, U 设为零矩阵 2: for k = 1 to n 1 do 3: for i = k + 1 to n do 4: l ik = a ik /a kk % 计算 L 的第 k 列 5: end for 6: for j = k to n do 7: u kj = a kj % 计算 U 的第 k 行 8: end for 9: for i = k + 1 to n do 10: for j = k + 1 to n do 11: a ij = a ij l ik u kj % 更新 A(k + 1 : n, k + 1 : n) 12: end for

53 2.1 Gauss 消去法和 LU 分解 41 13: end for 14: end for Gauss 消去法的运算量 由算法 2.2 可知, LU 分解的运算量 ( 含加减乘除 ) 为 n 1 n n n n 1 ( = n i + 2(n i) 2 ) = 2 3 n3 + O(n 2 ). i=1 j=i+1 j=i+1 k=i+1 由于回代过程的运算量为 O(n 2 ), 所以 Gauss 消去法的总运算量为 i=1 2 3 n3 + O(n 2 ). 评价算法的一个主要指标是执行时间, 但这依赖于计算机硬件和编程技巧等, 因此直接给出算法 执行时间是不太现实的. 所以我们通常是统计算法中算术运算 ( 加减乘除 ) 的次数. 在数值算法 中, 大多仅仅涉及加减乘除和开方运算. 一般地, 加减运算次数与乘法运算次数具有相同的量级, 而除法运算和开方运算次数具有更低的量级. 为了尽可能地减少运算量, 在实际计算中, 数, 向量和矩阵做乘法运算时的先后执行次序为 : 先计 算数与向量的乘法, 然后计算矩阵与向量的乘法, 最后才计算矩阵与矩阵的乘法. 矩阵 L 和 U 的存储当 A 的第 i 列被用于计算 L 的第 i 列后, 在后面的计算中不再被使用. 同样地, A 的第 i 行被用于计算 U 的第 i 行后, 在后面的计算中也不再被使用. 因此, 为了节省存储空间, 我们可以在计算过程中将 L 的第 i 列存放在 A 的第 i 列, 将 U 的第 i 行存放在 A 的第 i 行, 这样就不需要另外分配空间存储 L 和 U. 计算结束后, A 的上三角部分为 U, 其绝对下三角部分为 L 的绝对下三角部分 (L 的对角线全部为 1, 不需要存储 ). 此时算法可以描述为 : 算法 2.3. LU 分解 ( 用 A 存储 L 和 U) 1: for k = 1 to n 1 do 2: for i = k + 1 to n do 3: a ik = a ik /a kk 4: for j = k + 1 to n do 5: a ij = a ij a ik a kj 6: end for 7: end for 8: end for 根据指标的循环次序, 算法 2.3 也称为 KIJ 型 LU 分解. 在实际计算中, 我们一般不建议使用这个 算法. 因为对于指标 k 的每次循环, 都需要更新 A 的第 k + 1 至第 n 行. 这种反复读取数据的做 法会使得计算效率大大降低.

54 42 第二讲线性方程组直接方法 对于按行存储的数据结构, 我们一般采用后面介绍的 IKJ 型 LU 分解. 1 function A = mylu(a) 2 n=size(a,1); 3 for k=1:n-1 4 if A(k,k) == 0 5 fprintf('error: A(%d,%d)=0!\n', k, k); 6 return; 7 end 8 for i=k+1:n 9 A(i,k)=A(i,k)/A(k,k); 10 for j=k+1:n 11 A(i,j)=A(i,j)-A(i,k)*A(k,j); 12 end 13 end 14 end MATLAB 源代码 2.1. LU 分解的 MATLAB 代码 (KIJ 型 ) 为了充分利用 MATLAB 的向量运算优势, 提高运算效率, 上面的程序可改写为 1 function A = mylu(a) 2 n=size(a,1); 3 for k=1:n-1 4 if A(k,k) == 0 5 fprintf('error: A(%d,%d)=0!\n', k, k); 6 return; 7 end 8 A(k+1:n,k)=A(k+1:n,k)/A(k,k); MATLAB 源代码 2.2. LU 分解 (KIJ 型 ) 9 A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); 10 end IKJ 型 LU 分解 如果数据是按行存储的, 如 C/C++, 我们一般采用下面的 IKJ 型 LU 分解. 算法 2.4. LU 分解 (IKJ 型 ) 1: for i = 2 to n do 2: for k = 1 to i 1 do 3: a ik = a ik /a kk 4: for j = k + 1 to n do 5: a ij = a ij a ik a kj

55 2.1 Gauss 消去法和 LU 分解 43 6: end for 7: end for 8: end for 上述算法可以用下图来描述. 如果数据是按列存储的, 如 FORTRAN 或 MATLAB, 则该怎样设计算法? 待定系数法计算 LU 分解 我们也可以利用待定系数法来实现矩阵的 LU 分解. 假设 A 存在 LU 分解, 即 A = LU, 或 a 11 a 12 a 13 a 1n 1 u 11 u 12 u 13 u 1n a 21 a 22 a 23 a 2n l 21 1 u 22 u 23 u 2n a 31 a 32 a 33 a 3n = l 31 l 32 1 u 33 u 2n a n1 a n2 a n3 a nn l n1 l n2 l n,n 1 1 通过比较等式两边的元素来计算 L 和 U 中的各元素的值. 具体计算过程如下 : (1) 比较等式两边的第一行, 可得 再比较等式两边的第一列, 可得 (2) 比较等式两边的第二行, 可得 再比较等式两边的第二列, 可得 u 1j = a 1j, j = 1, 2,..., n. a i1 = l i1 u 11 l i1 = a i1 /u 11, i = 2, 3,..., n. a 2j = l 21 u 1j u 2j = a 2j l 21 u ij, j = 2, 3,..., n. a i2 = l i1 u 12 + l i2 u 22 l i1 = (a i2 l i1 u 12 )/u 22, i = 3, 4,..., n. u nn

56 44 第二讲线性方程组直接方法 (3) 以此类推, 第 k 步时, 比较等式两边的第 k 行, 可得 u kj = a kj (l k1 u 1j + + l k,k 1 u k 1,j ), j = k, k + 1,..., n. 比较等式两边的第 k 列, 可得 l ik = (a ik l i1 u 1k l i,k 1 u k 1,k )/u kk, i = k + 1, k + 2,..., n. 直到第 n 步, 即可计算出 L 和 U 的所有元素. 同样, 我们可以利用 A 来存储 L 和 U. 算法描述如下 : 算法 2.5. LU 分解 ( 待定系数法或 Doolittle 法 ) 1: for k = 1 to n do k 1 2: a kj = a kj a ki a ij, 3: a ik = 1 a kk 4: end for i=1 j = k, k + 1,..., n k 1 a ik a ij a jk, i = k + 1, k + 2,..., n j=1 相应的 MATLAB 程序为 : 1 function A = mylu2(a) 2 [n,n]=size(a); 3 for k=1:n 4 A(k,k)=A(k,k)-A(k,1:k-1)*A(1:k-1,k); 5 if (A(k,k)==0) MATLAB 源代码 2.3. 待定系数法 LU 分解 6 fprintf('error: A(%d,%d)=0!\n', i,i); return; 7 end 8 A(k,k+1:n)=A(k,k+1:n)-A(k,1:k-1)*A(1:k-1,k+1:n); 9 A(k+1:n,k)=(A(k+1:n,k)-A(k+1:n,1:k-1)*A(1:k-1,k))/A(k,k); 10 end 三角方程求解得到 A 的 LU 分解后, 我们最后需要用回代法求解两个三角方程组 Ly = b, Ux = y, 其中 L 是单位下三角矩阵, U 为非奇异上三角矩阵. 下面是关于一般下三角方程组的求解算法 ( 行存储方式 ).

57 2.1 Gauss 消去法和 LU 分解 45 算法 2.6. 向前回代求解 Ly = b ( 行存储方式 ) 1: y 1 = b 1 /l 11 2: for i = 2 : n do 3: for j = 1 : i 1 do 4: b i = b i l ij y j 5: end for 6: y i = b i /l ii 7: end for 组. 如果数据是按列存储的, 则采用列存储方式效率会高一些. 下面是按列存储方式求解上三角方程 算法 2.7. 向后回代求解 Ux = y ( 列存储方式 ) 1: x n = y n /u nn 2: for i = n 1 : 1 : 1 do 3: for j = 1 : i do 4: y j = y j x i+1 u i+1,j 5: end for 6: x i = y i /u ii 7: end for 这两个算法的运算量均为 n 2 + O(n). 以上两个算法都是向后稳定的 (componentwise backward stable) [41] 选主元 LU 分解 在 LU 分解算法 2.2 中, 我们称 a (k 1) kk 为主元. 如果 a (k 1) kk = 0, 则算法就无法进行下去. 即使 a (k 1) kk 不为零, 但如果 a (k 1) kk 的值很小, 由于舍入误差的原因, 也可能会给计算结果带来很大的误差. 此时我们就需要通过选主元来解决这个问题. [ ] [ ] 例 2.1 用 LU 分解求解线性方程组 Ax = b, 其中 A =, b =, 要求在运算过程中 保留 3 位有效数字. 解. 根据 LU 分解算法 2.2, 我们可得 l 11 = 1.00, l 21 = a 21 /a 11 = , l 22 = 1.00, u 11 = a 11 = , u 12 = a 12 = , u 22 = a 22 l 21 u ,

58 46 第二讲线性方程组直接方法 即 解方程组 Ly = b 可得 [ ] [ ] A y 1 = , y 2 = b 2 l 21 y 解方程组 Ux = y 可得 x 2 = y 2 /u , x 1 = (y 1 u 12 x 2 )/u /u 易知, 方程的精确解为 x 1 = 10.0 和 x 2 = 我们发现 x 1 的误差非常大. 导致这个问题的原因就是 a 11 太小, 用它做主元时会放大舍入误差. 所以我们需要通过置换矩阵来选主元. 首先介绍置换矩阵的一些基本性质. 引理 2.1 设 P R n n 为置换矩阵, X R n n 为任意矩阵, 则 (1) P X 相当于将 X 的行进行置换 ; XP 相当于将 X 的列进行置换 ; (2) P 1 = P, 即 P 是正交矩阵 ; (3) det(p ) = ±1; (4) 置换矩阵的乘积仍然是置换矩阵. 定理 2.2 ( 选主元 LU 分解的存在性 ) 设 A R n n 非奇异, 则存在置换矩阵 P 1, P 2, 以及单位下三角 矩阵 L 和非奇异上三角矩阵 U, 使得 P 1 AP 2 = LU. 其中 P 1 和 P 2 中只有一个是必需的. 证明. 用归纳法. 当 n = 1 时, 取 P 1 = P 2 = L = 1, U = A 即可. 假设结论对 n 1 成立. 设 A R n n 是 n 阶非奇异矩阵, 则 A 至少存在一个非零元, 取置换矩阵 ˆP1 和 ˆP2 使得 ] 其中 a 11 0, A 22 R (n 1) (n 1). 记 ˆP 1 A ˆP 2 = [ a11 A 12 A 21 A 22 u 11 = a 11, U 12 = A 12, L 21 = A 21 /a 11, U 22 = A 22 L 21 U 12. 则有 [ ] [ ] [ ] 1 0 u11 U 12 a11 A 12 = = ˆP 1 A ˆP 2. L 21 I 0 U 22 A 21 A 22 两边取行列式可得 ([ ]) ([ ]) 0 det(p 1 A ˆP 1 0 u11 U 12 2 ) = det det = a 11 det(u 22 ). L 21 I 0 U 22,

59 2.1 Gauss 消去法和 LU 分解 47 所以 det(u 22 ) 0, 即 U 22 R (n 1) (n 1) 非奇异. 由归纳假设可知, 存在置换矩阵 P1 和 P2 使得 P 1 U 22 P2 = L 22 Ũ 22, 其中 L22 为单位下三角矩阵, Ũ22 为非奇异上三角矩阵. 取 [ ] [ ] 1 0 P 1 = ˆP 1, P 2 = ˆP 1 0 2, 0 P1 0 P2 则有 [ ] [ ] [ ] [ ] u11 U P 1 AP 2 = 0 P1 L 21 I 0 U 22 0 P2 [ ] [ ] [ ] 1 0 u11 U = P 1 L 21 P1 0 P L 1 22 Ũ 22 P 2 0 P2 [ ] [ ] [ ] [ ] u11 U = P 1 L 21 P1 0 P L Ũ 22 P 2 0 P2 [ ] [ ] 1 0 u11 U 12 P2 = P 1 L 21 L22 0 Ũ 22 LU, 其中 L 为单位下三角矩阵, U 为非奇异上三角矩阵. 由归纳法可知, 结论成立. 问题 : 第 k 步时, 如何选取置换矩阵 P 1 和 P 2? 1. 选取 P 1 和 P 2 使得主元为剩下的矩阵中绝对值最大, 这种选取方法称为 全主元 Gauss 消去法, 简称 GECP (Gaussian elimination with complete pivoting); 2. 选取 P 1 和 P 2 使得主元为第 k 列中第 k 到第 n 个元素中, 绝对值最大, 这种选取方法称为 部分选主元 Gauss 消去法, 简称 GEPP (Gaussian elimination with partial pivoting), 此时 P 2 = I, 因此也称为列主元 Gauss 消去法. GECP 比 GEPP 更稳定, 但工作量太大, 在实际应用中通常使用 GEPP 算法. GEPP 算法能保证 L 所有的元素的绝对值都不超过 1. 算法 2.8. 部分选主元 LU 分解 1: p = 1 : n % 用于记录置换矩阵 2: for i = 1 to n 1 do 3: a ki = max i j n a ji % 选列主元 4: if k = i then 5: for j = 1 to n do 6: tmp = a ij, a ij = a kj, a kj = tmp % 交换 A 的第 i 行与第 k 行 7: end for 8: tmp = p(k), p(k) = p(i), p(i) = tmp % 更新置换矩阵 9: end if

60 48 第二讲线性方程组直接方法 10: for j = i + 1 to n do 11: a ji = a ji /a ii % 计算 L 的第 i 列 12: end for 13: for j = i + 1 to n do 14: for k = i + 1 to n do 15: a jk = a jk a ji a ik % 更新 A(i + 1 : n, i + 1 : n) 16: end for 17: end for 18: end for 相应的 MATLAB 程序如下 : 1 function [A,p] = PLU(A) 2 [n,n]=size(a); 3 p=1:n; 4 for i=1:n-1 5 [a,k]=max(abs(a(i:n,i))); 6 if a==0 MATLAB 源代码 2.4. 部分选主元 LU 分解 7 error('error: 第 %d 步的列主元为 0!\n', i); 8 end 9 k=k+i-1; 10 if k~=i 11 tmp=a(i,:); A(i,:)=A(k,:); A(k,:)=tmp; 12 tmp=p(i); p(i)=p(k); p(k)=tmp; 13 end 14 A(i+1:n,i)=A(i+1:n,i)/A(i,i); 15 A(i+1:n,i+1:n)=A(i+1:n,i+1:n)-A(i+1:n,i)*A(i,i+1:n); 16 end MATLAB 代码见 PLU.m [ ] [ ] 例 2.2 用部分选主元 LU 分解求解线性方程组 Ax = b, 其中 A =, b =, 要求在 运算过程中保留 3 位有效数字. [ 解. 由于 ] a 21 > a 11, 根据部分选主元 LU 分解算法, 我们需要将第一行与第二行交换, 即取 P = 0 1, 然后计算 Ã = P A 的 LU 分解, 可得 1 0 l 11 = 1.00, l 21 = ã 21 /ã 11 = , l 22 = 1.00, u 11 = ã 11 = 3.43, u 12 = ã 12 = 8.50, u 22 = ã 22 l 21 u ,

61 2.2 特殊方程组的求解 49 即 解方程组 Ly = P b 可得 [ ] [ ] P A y 1 = , y 解方程组 Ux = y 可得 x 2 = y 2 /u , x 1 = (y 1 u 12 x 2 )/u /u 所以, 数值解具有 3 位有效数字 矩阵求逆 我们可以通过部分选主元 LU 分解来计算矩阵的逆. 设 P A = LU, 则 A 1 = U 1 L 1 P, 等价于求解下面 2n 个三角线性方程组 Ly i = P e i, Ux i = y i, i = 1, 2,..., n. 也可以分别计算 L 1 和 U 1, 然后相乘. 哪种方法划算? 2.2 特殊方程组的求解 如果系数矩阵具有一定的特殊结构, 则可以充分利用这些特殊结构来构造高效的算法. 本节考虑以下特殊方程组的求解 : 对称正定情形 对称不定情形 三对角矩阵 带状矩阵 Toeplitz 矩阵 对称正定线性方程组 考虑线性方程组 Ax = b 其中 A R n n 对称正定的. 我们首先给出对称正定矩阵的几个基本性质.

62 50 第二讲线性方程组直接方法 定理 2.3 设 A R n n. A 对称正定当且仅当 A 对称且所有特征值都是正的 ; A 对称正定当且仅当 X AX 对称正定, 其中 X R n n 是一个任意的非奇异矩阵 ; 若 A 对称正定, 则 A 的任意主子矩阵都对称正定 ; 若 A 对称正定, 则 A 的所有对角线元素都是正的, 且 max { a ij } < max{a ii }, 即绝对值最大的元 i j i 素出现在对角线上. 定理 2.4 (Cholesky 分解 ) 设 A R n n 对称正定, 则存在唯一的对角线元素为正的下三角矩阵 L, 使得 A = LL. 该分解称为 Cholesky 分解. 证明. 首先证明存在性, 我们用数学归纳法来构造矩阵 L. 解为 当 n = 1 时, 由 A 的对称正定性可知 a 11 > 0. 取 l 11 = a 11 即可. 假定结论对所有不超过 n 1 阶的对称正定矩阵都成立. 设 A R n n 是 n 阶对称正定, 则 A 可分 [ ] [ a11 ] [ ] [ a11 ] a11 A A = A =, 12 A 22 I 0 Ã 22 I 1 a11 A 12 1 a11 A 12 [ ] 1 0 其中 Ã 22 = A 22 A 12 A 12/a 11. 由定理 2.3 可知, 对称正定, 故 Ã 22 是 n 1 阶对称正定矩阵. 0 Ã 22 根据归纳假设, 存在唯一的对角线元素为正的下三角矩阵 L, 使得 Ã 22 = L L. 令 [ a11 ] [ ] [ a11 ] L = =. I 0 L L 1 a11 A 12 易知, L 是对角线元素均为正的下三角矩阵, 且 1 a11 A 12 [ a11 ] [ ] [ ] [ a11 ] LL = = A. I 0 L 0 L I 1 a11 A 12 1 a11 A 12 由归纳法可知, 对任意对称正定实矩阵 A, 都存在一个对角线元素为正的下三角矩阵 L, 使得 A = LL. 唯一性可以采用反证法, 留做作业. 该定理也可以通过 LU 分解的存在唯一性来证明.

63 2.2 特殊方程组的求解 51 Cholesky 分解的实现 设 A = LL, 即 a 11 a 12 a 1n l 11 a 21 a 22 a 2n l 21 l 22. = a n1 a n2 a nn l n1 l n2 l nn l 11 l 21 l n1 l 22 l n l nn 直接比较等式两边的元素可得 n j 1 a ij = l ik l jk = l jj l ij + l ik l jk, i, j = 1, 2,..., n. 根据这个计算公式即可得下面的算法 : k=1 k=1 算法 2.9. Cholesky 分解 1: for j = 1 to n do ( j 1 2: l jj = a jj k=1 l 2 jk ) 1/2 3: for i = j + ( 1 to n do ) j 1 4: l ij = a ij l ik l jk /l jj 5: end for 6: end for k=1 关于 Cholesky 算法的几点说明 与 LU 分解一样, 可以利用 A 的下三角部分来存储 L; 1 Cholesky 分解算法的运算量为 3 n3 + O(n 2 ), 大约为 LU 分解的一半 ; Cholesky 分解算法是稳定的 ( 稳定性与全主元 Gauss 消去法相当 ), 故不需要选主元. 改进的 Cholesky 分解算法 为了避免开方运算, 我们可以将 A 分解为 : A = LDL, 即 a 11 a 12 a 1n 1 d 1 a 21 a 22 a 2n l 21 1 d 2. = a n1 a n2 a nn l n1 l n,n 1 1 通过待定系数法可得... d n 1 l 21 l n1 1 l n n j 1 a ij = l ik d k l jk = d j l ij + l ik d k l jk, j = 1, 2,..., n, i = j + 1, j + 2,..., n. k=1 k=1

64 52 第二讲线性方程组直接方法 基于以上分解来求解对称正定线性方程组的算法称为改进的平方根法 : 算法 改进的平方根法 1: % 先计算分解 2: for j = 1 to n do 3: d j = a jj j 1 k=1 l2 jk d k 4: for i = j + 1 to n do 5: l ij = (a ij j 1 k=1 l ikd k l jk )/d j 6: end for 7: end for 8: % 解方程组 : Ly = b 和 DL x = y 9: y 1 = b 1 10: for i = 2 to n do 11: y i = b i i 1 k=1 l iky k 12: end for 13: x n = y n /d n 14: for i = n 1 to 1 do 15: x i = y i /d i n k=i+1 l kix k 16: end for 对称不定线性方程组设 A R n n 是非奇异的对称不定矩阵. 若 A 存在 LU 分解, 即 A = LU, 则可写成 A = LDL, 其中 D 是由 U 的对角线元素构成的对角矩阵. 然而, 当 A 不定时, 其 LU 分解不一定存在. 若采用选主元 LU 分解, 则其对称性将被破坏. 为了保持对称性, 在选主元时必须对行列进行同样的置换, 即选取置换矩阵 P, 使得 P AP = LDL. (2.4) 通常称 (2.4) 为对称矩阵的 LDL T 分解. 不幸的是, 这样的置换矩阵可能不一定存在, 即分解 (2.4) 不一定存在. 例 2.3 设对称矩阵 A = 由于 A 的对角线元素都是 0, 对任意置换矩阵 P, 矩阵 P AP 的对角线元素仍然都是 0. 因此, 矩阵 A 不存在分解 (2.4).

65 2.2 特殊方程组的求解 53 Aasen 算法基于以上原因, Aasen[1] 提出了下面的分解 P AP = LT L, (2.5) 其中 P 为置换矩阵, L 为单位下三角矩阵, T 为对称三对角矩阵. 分解 (2.5) 本质上与部分选主元 LU 分解是一样的, 具体实施细节可参见 [41, 89]. 块 LDL T 分解设 A 对称非奇异, 则存在置换矩阵 P 使得 [ ] B E P AP =, E C 其中 B R 或 B R 2 2, 且非奇异. 因此可以对 P AP 进行块对角化, 即 [ ] [ ] [ ] I 0 B 0 I B P AP 1 E =, EB 1 I 0 C EA 1 E 0 I 其中 C EA 1 E 是 Schur 补. 不断重复以上过程, 就可以得到 A 的块 LDL T 分解 : P AP = L DL, 其中 D 是拟对角矩阵, 即块对角矩阵且对角块的大小为 1 或 2. 与选主元 LU 分解类似, 我们需要考虑块 LDL T 分解的选主元策略, 即如何选取置换矩阵 P. Kahan 于 1965 年首先考虑了选主元块 LDL T 分解. 目前常用的策略有 全主元策略 : Bunch 和 Parlett [17] 于 1971 年提出了全主元策略来选取置换矩阵, 并证明了其稳定性 [15]. 但需要进行 n 3 /6 次比较运算, 代价比较昂贵. 部分选主元策略 : 由 Bunch 和 Kaufman [16] 于 1977 年提出, 将比较运算复杂度降低到 O(n 2 ) 量级, 而且具有较满意的向后稳定性. 因此被广泛使用. 具体实施也可以参见 [41], 或 [23] ( 分块版本 ). Rook 策略 : 该策略由 Ashcraft, Grimes 和 Lewis [3] 提出, 整体上与部分选主元类似, 但在选主元时加了一层迭代, 从而能够提供更高的精度. 目前大部分软件都采用部分选主元块 LDL T 分解来求解对称线性方程组. 关于 Aasen 算法和块 LDL T 分解比较也可参见 [3, 8] 三对角线性方程组考虑三对角线性方程组 Ax = f, 其中 A 是三对角矩阵 : b 1 c 1. a A = cn 1 a n 1 b n

66 54 第二讲线性方程组直接方法 我们假定 且 b 1 > c 1 > 0, b n > a n 1 > 0, (2.6) b i a i 1 + c i, a i c i 0, i = 1,..., n 1. (2.7) 即 A 是不可约弱对角占优的. 此时, 我们可以得到下面的三角分解 b 1 c 1 α 1 1 β 1. a a 1 α 2 1 A = = cn 1 a n 1 b n 由待定系数法, 我们可以得到递推公式 : α 1 = b 1, β 1 = c 1 /α 1 = c 1 /b 1, α i = b i a i 1 β i 1, a n 1 β i = c i /α i = c i /(b i a i 1 β i 1 ), i = 2, 3,..., n 1 α n = b n a n 1 β n 1. 为了使得算法能够顺利进行下去, 我们需要证明 α i 0. 定理 2.5 设三对角矩阵 A 满足条件 (2.6) 和 (2.7). 则 A 非奇异, 且 (1) α 1 = b 1 > 0; (2) 0 < β i < 1, i = 1, 2,..., n 1; (3) 0 < c i b i a i 1 < α i < b i + a i 1, i = 2, 3,..., n; α n... LU. (2.8)... βn 1 1 证明. 由于 A 是不可约且弱对角占优, 所以 A 非奇异. ( 见定理??) 结论 (1) 是显然的. 下面我们证明结论 (2) 和 (3). 由于 0 < c 1 < b 1, 且 β 1 = c 1 /b 1, 所以 0 < β 1 < 1. 又 α 2 = b 2 a 1 β 1, 所以 α 2 b 2 a 1 β 1 > b 2 a 1 c 2 > 0, (2.9) α 2 b 2 + a 1 β 1 < b 2 + a 1. (2.10) 再由结论 (2.9) 和 β 2 的计算公式可知 0 < β 2 < 1. 类似于 (2.9) 和 (2.9), 我们可以得到 α 3 b 3 a 2 β 2 > b 3 a 2 c 3 > 0, α 3 b 3 + a 2 β 2 < b 3 + a 2. 依此类推, 我们就可以证明结论 (2) 和 (3). 由定理 2.5 可知, 分解 (2.8) 是存在的. 因此, 原方程就转化为求解 Ly = f 和 Ux = y. 由此便可得 求解三对角线性方程组的追赶法也称为 Thomas 算法 (1949), 其运算量大约为 8n 6.

67 2.2 特殊方程组的求解 55 算法 追赶法 1: α 1 = b 1 2: β 1 = c 1 /b 1 3: y 1 = f 1 /b 1 4: for i = 2 to n 1 do 5: α i = b i a i 1 β i 1 6: β i = c i /α i 7: y i = (f i a i 1 y i 1 )/α i 8: end for 9: α n = b n a n 1 β n 1 10: y n = (f n a n 1 y n 1 )/α n 11: x n = y n 12: for i = n 1 to 1 do 13: x i = y i β i x i+1 14: end for 具体计算时, 由于求解 Ly = f 与矩阵 LU 分解是同时进行的, 因此, α i 可以不用存储. 但 β i 需要 存储. 由于 β i < 1, 因此在回代求解 x i 时, 误差可以得到有效控制. 需要指出的是, 我们也可以考虑下面的分解 b 1 c 1 1 α 1 c 1. a γ 1 1. α.. 2 A = = (2.11)... cn 1.. cn 1 γ n 1 1 a n 1 b n 但此时 γ i 可能大于 1. 比如 γ 1 = a 1 /b 1, 因此当 b 1 < a 1 时, γ 1 > 1. 所以在回代求解时, 误差可能得不到有效控制. 另外一方面, 计算 γ i 时也可能会产生较大的舍入误差 ( 大数除以小数 ). 但如果 A 是列对角占优, 则可以保证 γ i < 1. 如果 A 是 ( 行 ) 对角占优, 则采用分解 (2.8); 如果 A 是列对角占优, 则采用分解 (2.11). α n 带状线性方程组设 A R n n 是带状矩阵, 其下带宽为 b L, 上带宽为 b U, 即 a ij = 0 for i > j + b L or i < j b U. 其形状如下图所示 :

68 56 第二讲线性方程组直接方法 图 2.1. 带状矩阵 对于带状矩阵, 其 LU 分解有如下性质 : 定理 2.6 设 A R n n 是带状矩阵, 其下带宽为 b L, 上带宽为 b U. 若 A = LU 是不选主元的 LU 分解, 则 L 为下带宽为 b L 的带状矩阵, U 为上带宽为 b U 的带状矩阵. 求解 Ax = b 的运算量大约为 2nb L b U + 2n(b L + b U ). 若采用部分选主元的 LU 分解, 则有定理 2.7 设 A R n n 是带状矩阵, 其下带宽为 b L, 上带宽为 b U. 若 P A = LU 是部分选主元的 LU 分解, 则 U 为上带宽不超过 b L + b U 的带状矩阵, L 为下带宽为 b L 的 基本带状矩阵, 即 L 每列的非零元素不超过 b L + 1 个 Toeplitz 线性方程组 设 T n R n n 是 Toeplitz 矩阵, 即 T n = t 0 t 1 t n+1. t t 1 t n 1 t 1 t 0 易知 Toeplitz 矩阵是反向对称 (persymmetric) 矩阵, 即关于东北 西南对角线对称. 记 J n 为 n 阶反向单位 矩阵, 即 易知 J n = J 1 n = J n. J n =

69 2.2 特殊方程组的求解 57 引理 2.2 矩阵 A R n n 是反向对称矩阵当且仅当 A = J n A J n 或 J n A = A J n. 若 A 可逆, 则可得 即反向对称矩阵的逆也是反向对称矩阵. A 1 = Jn 1 (A ) 1 Jn 1 ( = J n A 1 ) Jn, Toeplitz 矩阵的逆是反向对称矩阵, 但不一定是 Toeplitz 矩阵. Yule-Walker 方程组的 Durbin 算法设 T n 对称正定, 考虑线性方程组 T n x = r n, (2.12) 其中 r n = [t 1, t 2,..., t n 1, t n ]. 这类线性方程组称为 Yule-Walker 方程组, 其中 t n 为任意给定的实数. 由于 T n 对称正定, 所以 t 0 > 0. 因此我们可以对 T n 的对角线元素进行单位化. 不失一般性, 我们假定 T n 的对角线元素为 1, 即 1 t 1 t n 1. t T n = t1 t n 1 t 1 1 由于方程组右端项的特殊性, 我们可以通过递推来求解. 设 x (k) 是 T k x = r k 的解, 下面导出 T k+1 x = r k+1 的解 x (k+1). 记 [ ] z x (k+1) (k) =, α k 则 T k+1 x (k+1) = r k+1 可写为 [ ] [ ] Tk J k r k z (k) r k J = k 1 α k [ rk t k+1 ]. 因此可得 由于 T k 是反向对称矩阵, 故 T 1 k z (k) = T 1 k ( r k α k J k r k ) = x (k) α k T 1 k J kr k, (2.13) α k = t k+1 r k J kz (k). (2.14) J k = J k T 1 k. 所以可得 z (k) = x (k) α k T 1 k J kr k = x (k) α k J k T 1 k r k = x (k) + α k J k x (k).

70 58 第二讲线性方程组直接方法 代入 (2.14) 可得 (1 + r k x(k) )α k = t k+1 r k J kx (k). 又 [ ] [ ] [ ] [ ] I Jk x (k) Tk J k r k I Jk x (k) Tk r k J = k r, k x(k) 由 T k+1 的对称正定性可知 1 + r k x(k) > 0, 故可得 x (k+1) 的计算公式 α k = t k+1 r k J kx (k) 1 + r k x(k), z (k) = x (k) + α k J k x (k). k = 1, 2,.... (2.15) 运算量为 O(k). 因此, 我们就可以从一阶 Yule-Walker 方程出发, 利用递推公式 (2.15) 计算 T n x = r n 的 解. 总的运算量大约为 3n 2. 为了减少运算量, 我们引入一个变量 β k 1 + r k x(k), 则 β k+1 = 1 + r k+1 x(k+1) [ ] x (k) + α k J k x (k) = 1 + [r k, t k+1] α k = 1 + r k x(k) + α k (t k+1 + r k J kx (k) ) = (1 α 2 k)β k. 于是可得求解 Yule-Walker 方程组的 Durbin 算法, 总运算量大约为 2n 2. 算法 求解 Yule-Walker 方程组的 Durbin 算法 1: 输入数据 : t = [t 1, t 2,..., t n ] % 注 : 这里假定 t 0 = 1 2: x(1) = t 1, β = 1, α = t 1 3: for for k = 1 to n 1 do 4: β = (1 ( α 2 )β ) k 5: α = t k+1 t i x(k + 1 i) /β i=1 6: x(1 : k) = x(1 : k) + αx(k : 1 : 1) 7: x(k + 1) = α 8: end for 一般右端项的 Toeplitz 线性方程组 考虑一般右端项的方程组 T n x = b, 其中 T n 是对称正定 Toeplitz 矩阵, b = [b 1, b 2,..., b n ]. 与求解 Yule-Walker 方程组类似, 我们利用递推方 法来求解.

71 2.2 特殊方程组的求解 59 假定 x (k) 和 y (k) 分别是方程组 T k x = [b 1, b 2,..., b k ] b (k) 和 T k y = [t 1, t 2,..., t k ] [ ] z (k) 的解. 设 x (k+1) = 是 T k+1 x = b (k+1) 的解, 则可得 通过计算可得 µ k z (k) = T 1 k [ ] [ ] [ ] Tk J k r k z (k) b (k) r k J =. k 1 µ k b k+1 b(k) µ k T 1 k J kr k = x (k) µ k J k T 1 k r k = x (k) + µ k J k y (k), µ k = b k+1 r k J kx (k) 1 + r k y(k). 所以, 我们可以先计算 T k x = b (k) 和 T k x = r k 的解, 然后利用上述公式得到 T k+1 x = b (k+1) 的解, 这 就是 Levinson 算法, 该算法的总运算量大约为 4n 2. 算法 求解对称正定 Toeplitz 线性方程组的 Levinson 算法 1: 输入数据 : t = [t 1, t 2,..., t n 1 ] 和 b = [b 1, b 2,..., b n ] % 这里假定 t 0 = 1 2: y(1) = t 1, x(1) = b 1, β = 1, α = t 1 3: for k = 1 to n 1 do 4: β = ( (1 α 2 )β ) k 5: µ = b k+1 t i x(k + 1 i) /β i=1 6: x(1 : k) = x(1 : k) + µy(k : 1 : 1) 7: x(k + 1) = µ 8: if k < n ( 1 then ) k 9: α = t k+1 + t i y(k + 1 i) /β i=1 10: y(1 : k) = y(1 : k) + αy(k : 1 : 1) 11: y(k + 1) = α 12: end if 13: end for 在数学与工程的许多应用中都会出现 Toeplitz 线性方程组, 如样条插值, 时间序列分析, Markov 链, 排队论, 信号与图像处理等. Levinson 算法 [51] 是较早的关于对称正定 Toeplitz 线性方程组的快速算法, 但并不稳定 ( 只具有弱稳定性 ) [18]. 后来人们提出了各种各样的快速和超快速算法, 大致如下

72 60 第二讲线性方程组直接方法 方法 运算量 存储量 Fast stable 20n 2 n 2 /2 Fast but unstable 3n 2 4n Superfast and unstable O(n log 2 n) O(n) Superfast preconditioner O(n log n) O(n) Fast : Levinson-Durbin (1946), Trench (1964),... Fast stable: Bareiss (1969), Gohberg, Kailath and Olshevsky (1995), Chandrasekaran and Sayed (1998), Gu (1998),... Superfast: Brent, Gustavson and Yun (1980), Bitmead and Anderson (1980), Morf (1980), de Hoog (1987), Ammar and Gragg (1988), van Barel, Heinig and Kravanja (2001) [6], Stewart (2003), Codevico, Heinig and Van Barel (2005) [20], Xia, Xi and Gu (2012),... Superfast Preconditioners: Strang, Chan, Chan, Tyrtyshnikov,... 其中最后一行的 Superfast preconditioners 指的是预处理迭代算法. 关于 Toeplitz 线性方程组的快速求解方法介绍可参见 Stewart (2014) [69]. 2.3 扰动分析 考虑线性方程组 Ax = b. 设 x 是精确解, ˆx 是通过数值计算得到的近似解. 假定 ˆx 满足线性方程组 (A + δa)ˆx = b + δb. 下面讨论 δx ˆx x 的大小, 即向后误差分析 δx 与 ˆx 的关系 定理 2.8 设 是任一向量范数 ( 当该范数作用在矩阵上时就是相应的导出范数 ), 则 δx 与 ˆx 满足 下面的关系式 当 δb = 0 时, 有 ( δx δa ˆx A 1 A A + δb ). A ˆx δx ˆx κ(a) δa A (2.16) 证明. 由等式 (A + δa)ˆx = b + δb = Ax + δb 可知 A(ˆx x ) = δaˆx + δb, 即 δx = A 1 ( δaˆx + δb).

73 2.3 扰动分析 61 所以 δx A 1 ( δa ˆx + δb ), (2.17) 即 若 δb = 0, 则可得 ( δx δa ˆx A 1 A A + δb ). A ˆx δx ˆx κ(a) δa A δx 与 x 的关系 引理 2.3 设 是任一算子范数, X R n n. 若 X < 1, 则 I X 可逆, 且有 (I X) 1 = k=0 X k 和 (I X) X. 证明. 先证明级数 k=0 X k 收敛, 即其每个分量都收敛. 记 x (k) ij 知, 存在常数 c 使得对任意矩阵 Y R n n 都有 Y F c Y. 所以 X k F c X k c X k. x (k) ij 为 X k 的 (i, j) 元素. 由范数的等价性可 注意, 这里的常数 c 与 X 和 k 都无关. 由条件 X < 1 可知, 级数 c X k 收敛, 所以级数 也收敛, 即 X k 收敛. k=0 因为 lim k Xk = 0, 且 (I X)(I + X + X X k ) = I X k+1, 所以 (I X) k=0 k=0 X k = lim k (I Xk+1 ) = I, k=0 x (k) ij 即 且 (I X) 1 = X k, k=0 (I X) 1 = X k X k X k 1 = 1 X. k=0 k=0 k=0 由 (A + δa)ˆx = b + δb 可得 δx = (A + δa) 1 (b + δb Ax δax )

74 62 第二讲线性方程组直接方法 = (I + A 1 δa) 1 A 1 ( δax + δb). 假定 δa 很小, 满足 A 1 δa A 1 δa < 1, 则由引理 2.3 可得 当 δa 0 时, 我们可得 δx x δx x (I + A 1 δa) 1 A 1 A 1 1 A 1 δa A 1 A = 1 A 1 A δa κ(a) 1 κ(a) δa A κ(a) 1 κ(a) δa A ( δa + δb x A ( δa + δb x ( δa A + ( δa A + δb b ) ) ) δb A x ( δa A + δb ) ( δa κ(a) b A + δb ) b ) 定理 2.9 设 A R n n 非奇异且 A 1 δa < 1, 则 δx x κ(a) 1 κ(a) δa A ( δa A + δb ). (2.18) b 如果 δa = 0, 则 1 δb κ(a) b δx x κ(a) δb b. 证明. 只需证明左边一个不等式即可. 由于 δa = 0, 所以 Aδx = δb. 两边取范数, 然后同除 x 可得 A δx x Aδx A 1 b δb A 1 b. 所以结论成立. 定理 2.10 设 A R n n 非奇异, 则有 { δa 2 min A 2 } : A + δa 奇异 = 1 κ 2 (A) 证明. 记 d min { δa 2 : A + δa 奇异 }, 只需证明 d = 1 A 1 2. 先证明 d 1 A 1 2. 若 δa 2 < A 1 1 2, 则 A 1 δa 2 A 1 2 δa 2 < 1.

75 2.3 扰动分析 63 由引理 2.3 可知 I + A 1 δa 非奇异. 因此 A + δa = A(I + A 1 δa) 也非奇异, 这表明使得 A + δa 奇异 的 δa 必须满足 δa 2 A 1 1 2, 即 d 1 A 1 2. 知 下面证明 d 1 A 1 2, 即证明存在 δa 满足 δa 2 = A 使得 A + δa 奇异. 由范数的定义可 A 1 2 = max A 1 x 2, x 2=1 故存在 x 满足 x 2 = 1 使得 A 1 2 = A 1 x 2. 令 y = A 1 x/ A 1 x 2, 则 y 2 = 1, 且 xy 2 = max xy z 2 = max y z x 2 = max y z. z 2=1 z 2=1 z 2=1 由于 y z y 2 z 2 = 1, 且当 z = y 时有 y z = 1, 所以 xy 2 = 1. 构造 则 δa = xy A 1, 2 δa 2 = xy 2 1 A 1 = 2 A 1. 2 下面证明 A+δA 奇异. 我们只需证明以 A+δA 为系数矩阵的齐次线性方程组有非零解. 由于 A 1 x 2 = A 1 2, 容易验证 (A + δa)y = A A 1 x A 1 x 2 xy A 1 2 y = x A 1 2 x A 1 2 = 0, 即 A + δa 奇异, 所以 d 1 A 1 2. 综上可得 d = min { δa 2 } 1 : A + δa 奇异 = A 1. 2 定理 2.10 的结论对所有 p- 范数都成立, 参见 [30, 47]. 度量 { δa p dist p (A) min A p 表示 A 距离奇异矩阵集合的相对距离. } : A + δa 奇异 = 1 κ p (A), δx 与残量的关系 这是研究线性方程组的扰动理论的一个较实用的方法.

76 64 第二讲线性方程组直接方法 记残量 ( 残差 ) 为 r = b Aˆx, 则有 δx = ˆx x = ˆx A 1 b = A 1 (Aˆx b) = A 1 r, 所以可得 δx A 1 r 这个估计式的优点是不用去估计 δa 和 δb 的大小. 由于在实际计算中, r 通常是可以计算的, 因此该估 计式比较实用. 定理 2.11 设 A R n n 非奇异, 为任一算子范数. 记 r = b Aˆx, 则 r (1) 若存在  满足 ˆx = b, 则  A ˆx ; (2) 存在 δa 满足 δa = r ˆx, 使得 (A + δa)ˆx = b. 证明. (1) 由 ˆx = b 可知 所以有 即 ( A)ˆx = b Aˆx = r. r = ( A)ˆx  A ˆx, r  A ˆx. (2) 以 2- 范数为例, 取 δa = rˆx ˆx 2 即可 相对扰动分析前面给出了解的误差 δx 的界是与条件数 κ(a), δa 和 δb 成比例的. 在许多情况下, 这个界是令人满意的. 但有时会相差很大, 这个界就不能很好的反映实际计算中解的误差. [ ] [ ] [ ] γ 0 γ 1 例 2.4 设 A =, b =, 其中 γ > 1. 则 Ax = b 的精确解为 x =, 任何合理的直接法求 得的解的误差都很小. 但系数矩阵的谱条件数为 κ 2 (A) = γ, 当 γ 很大时, κ 2 (A) 也很大, 因此误差界 (2.16) 和 (2.18) 可以是很大. 针对这个问题, 我们按分量进行分析. 记 [ ] [ ] δa11 δb1 δa =, δb =, δa 22 δb 2

77 2.3 扰动分析 65 并设 δa ij ε a ij, δb i ε b i. 则 ] δb 1 + b 1 δb 1 + γ 1 [ˆx1 x 1 δx = = δa 11 + a 11 ˆx 2 x 2 δb 2 + b = δa 11 + γ 1 2 δb = 1 δa 22 + a 22 δa δb 1 δa 11 δa 11 + γ δb 2 δa 22 δa 故 如果 δb = 0, 则 这个界与 (2.16) 或 (2.18) 相差约 γ 倍. δx δx 2ε 1 ε. ε 1 ε. 相对条件数为了得到更好误差界, 我们引入相对条件数 κ cr (A), 即 κ cr (A) A 1 A, 有时也称为 Bauer 条件数或 Skeel 条件数. 假定 δa 和 δb 满足 δa ε A 和 δb ε b. 则由 (A + δa)ˆx = b + δb 可得 δx = A 1 ( δaˆx + δb) A 1 ( δa ˆx + δb ) A 1 (ε A ˆx + ε b ) = ε A 1 ( A ˆx + b ). (2.19) 若 δb = 0, 则有 δx = δx ε A 1 A ˆx ε A 1 A ˆx, 即 δx ˆx A 1 A ε = κcr (A) ε (2.20) 相对条件数有下面的性质 引理 2.4 设 A R n n 非奇异, D R n n 为非奇异对角矩阵, 则 κ cr (DA) = κ cr (A).

78 66 第二讲线性方程组直接方法 定理 2.12 设 A R n n 非奇异. 使得 δa ε A, δb ε b 成立, 且满足 (A + δa)ˆx = b + δb 的最小的 ε > 0 称为按分量的相对向后误差, 其表达式为 其中 r = b Aˆx. r i ε = max, 1 i n ( A ˆx + b ) i 更多关于数值计算的稳定性和矩阵扰动分析方面的知识, 可以参考 [41, 68, 87]. 2.4 误差分析 LU 分解的舍入误差分析关于 LU 分解的舍入误差分析, 我们有下面的结果. 定理 2.13 假定 A R n n 的所有顺序主子式都不为 0, 则带舍入误差的 LU 分解可表示为 A = LU + E, 其中误差 E 满足 E γ n L U. 这里 γ n = nε u 1 nε u, ε u 表示机器精度. 证明. 见 [41, page 164] Gauss 消去法的舍入误差分析 引理 2.5 [41] 设 ŷ 和 ˆx 分别是由向前回代算法 2.6 和向后回代算法 2.7 计算得到的数值解, 则 (L + δl)ŷ = b, δl γ n L (U + δu)ˆx = ŷ, δu γ n U. 该引理表明, ŷ 和 ˆx 只有很小的误差, 因此向前回代算法 2.6 和向后回代算法 2.7 都是稳定的. 于是 b = (L + δl)ŷ = (L + δl)(u + δu)ˆx = (LU + L δu + δl U + δl δu)ˆx = (A E + L δu + δl U + δl δu)ˆx.

79 2.4 误差分析 67 记 δa = E + L δu + δl U + δl δu, 则 ˆx 是扰动方程 (A + δa)x = b 精确解, 且 δa = E + L δu + δl U + δl δu E + L δu + δl U + δl δu (3γ n + γn) L 2 U γ 3n L U, 其中 γ 3n = 3nε u 1 3nε u. 两边取范数后可得 对 1- 范数, - 范数和 F - 范数成立 (2- 范数不成立 ). 的, 即 δa 3nε u L U 根据算法向后稳定性的定义, 要说明带选主元 Gauss 消去法是向后稳定的, 必须要求 δa 是 小 δa = O(ε u ) A. 数值试验表明, 部分选主元 Gauss 消去法几乎总是保持 L U A. 记 ρ n max i,j,k a (k) ij max i,j a ij 为部分选主元 Gauss 消去法的增长因子, 其中 a (k) ij 是部分选主元 Gauss 消去法过程第 k 步时 a ij 的值. 由于 L n, U nρ n A, 因此 [41] 定理 2.14 设 ˆx 是由部分选主元 Gauss 法得到的数值解, 则 ˆx 满足 (A + δa)ˆx = b, δa n 2 γ 3n ρ n A. (2.21) 所以若 ρ n 比较小或随着 n 变大时增长比较缓慢, 则当 n 不是很大时, 部分选主元 Gauss 消去法是 向后稳定的. 遗憾的是, 理论上无法保证 ρ n 比较小 [41, page 166]. 性质 2.1 部分选主元 Gauss 消去法能保证 ρ n 2 n 1, 且这个界是可以达到的. 事实上, (2.21) 中的界几乎总是远远大于真正的 δa. 在绝大多数情况下, 部分选主元 Gauss 消去法是向后稳定的, 但理论上也存在失败的例子. 全主元 Gauss 消去法是数值稳定的. 在大部分实际应用中, 部分选主元 Gauss 消去法与全主元 Gauss 消去法具有同样的数值稳定性.

80 68 第二讲线性方程组直接方法 2.5 解的改进和条件数估计 当矩阵 A 是病态时, 即使残量 r = b Aˆx 很小, 所求得的数值解 ˆx 仍可能带有较大的误差. 此时需 要通过一些方法来提高解的精度 高精度运算 在计算中, 尽可能采用高精度的运算. 比如, 原始数据是单精度的, 但在计算时都采用双精度运算, 或者更高精度的运算. 但更高精度的运算会带来更大的开销 矩阵元素缩放 (Scaling) 如果 A 的元素在数量级上相差很大, 则在计算过程中很可能会出现大数与小数的加减运算, 这样就可能会引入更多的舍入误差. 为了避免由于这种情况而导致的舍入误差, 我们可以在求解之前先对矩阵元素进行缩放 (Scaling), 即在矩阵两边同时乘以两个适当的对角矩阵. 例 2.5 考虑线性方程组 x 1 x 2 x = 用部分选主元 Gauss 消去法求解, 计算过程中保留 8 位有效数字, 最后求得的数值解为 x = [ , , ]. 而精确解为 x = [ , , ]. 数值解的第一个分量存在很大的误差. 我们考虑对矩阵元素进行缩放, 即在方程两边同时乘以一个对角矩阵 D = diag( , 1, 1), 然后求解一个新的方程组 DADy = Db. 最后令 x = Dy, 即可求得比较精确的数值解. 设 β 是计算机浮点数的基 ( 一般为 2), 构造对角矩阵 D 1 = diag(β r1, β r2,..., β rn ), D 2 = diag(β c1, β c2,..., β cn ). 将原线性方程组 Ax = b 转化为等价方程组 D 1 1 AD 2y = D 1 1 b. 在对方程组进行缩放时, 需要 O(n 2 ) 运算量, 通常不会产生较大的舍入误差. 对角矩阵 D 1 是对系数矩阵进行缩放, 而 D 2 是对未知量进行缩放. 通过求解缩放后的线性方程组, 我们可以证明 [33] 其中 ε u 是机器精度. D2 1 ( x x) D2 1 x ε u κ (D1 1 AD 2),

81 2.6 课后习题 69 为了平衡矩阵元素的大小, 一种好的方案是左乘一个对角矩阵 D 1 ( 即对 A 的行进行缩放 ), 其中 D ii = n a ij. 然后再执行部分选主元 LU 分解. j= 迭代改进法设近似解 ˆx, 残量 r = b Aˆx. 当 ˆx 没达到精度要求时, 可以考虑方程组 Az = r. 设 z 是该方程组的精确解, 则 A(ˆx + z) = Aˆx + Az = (b r) + r = b, 因此 ˆx + z 就是原方程组的精确解. 在实际计算中, 我们可能得到的是近似解 ẑ, 但通常 r Aẑ 应该比较小, 特别地, 比 r 更小. 因此 ˆx + ẑ 应该比 ˆx 更接近精确解. 如果新的近似解 ˆx + ẑ 仍不满足精度要求, 则可重复以上过程. 这就是通过迭代来提高解的精度. 算法 通过迭代改进解的精度 1: 设 P A = LU, ˆx 是 Ax = b 的近似解 2: while 近似解 ˆx 不满足精度要求, do 3: 计算 r = b Aˆx 4: 求解 Ly = P r, 即 y = L 1 P r 5: 求解 Uz = y, 即 z = U 1 y 6: 令 ˆx = ˆx + z 7: end while 由于每次迭代只需计算一次残量和求解两个三角线性方程组, 因此运算量为 O(n 2 ). 所以相对来讲还是比较经济的. 为了提高计算精度, 在计算残量 r 时最好使用原始数据 A, 而不是 P LU, 因此对 A 做 LU 分解时需要保留矩阵 A, 不能被 L 和 U 覆盖. 实际计算经验表明, 当 A 病态不是很严重时, 即 ε u κ (A) < 1, 迭代法可以有效改进解的精度, 最 后达到机器精度. 但 ε u κ (A) 1 时, 一般没什么效果. 这里 ε u 表示机器精度. 2.6 课后习题 [ ] a11 练习 2.1 设 A = [a ij ] R n n, 且 a 11 0, 经过一次 Gauss 消去法后得到 A (2) =. 0 A 2 证明 : (1) 若 A 对称, 则 A 2 也对称 ; (2) 若 A 对称正定, 则 A 2 也对称正定. 练习 2.2 验证等式 (2.3).

82 70 第二讲线性方程组直接方法 练习 2.3 设矩阵 A = 计算 A 的 LU 分解 练习 2.4 设矩阵 A = 计算 A 的 Cholesky 分解 练习 2.5 设矩阵 A = 1 2 a. 问 : 当 a 取何值时, A 存在 Cholesky 分解? 0 a 2 练习 2.6 设 A R n m, 其中 n m, 证明 : A A 2 = A 2 2. 当 m = n 时, 证明 : κ 2 (A A) = κ 2 (A) 2. 练习 2.7 设 A = [a ij ] R n n 对称正定, 证明 : a 2 ij < a iia jj. 练习 2.8 证明 Cholesky 分解 ( 即定理 2.4) 的唯一性. 练习 2.9 设 A R n n 对称非奇异, 且存在分解 A = LDM, 其中 L, M R n n 是单位下三角矩阵, D R n n 是对角矩阵. 证明 : L = M. 练习 2.10 将 A R n n 写成分块形式 [ ] A11 A 12 A =, A 21 A 22 其中 A 11 R k k (1 k n) 非奇异. 我们称矩阵 S = A 22 A 21 A 1 11 A 12 为 A 中 A 11 的 Schur 补 ( 通常简称 Schur 补 ). (1) 假设 A 存在 LU 分解, 证明 : 对于不选主元的 Gauss 消去法, 第 k 步后, A 22 已被 S 覆盖. (2) 假设 A 21 = A 12, 且 A 11 和 A 22 都正定, 证明 A 非奇异. 练习 2.11 设 A R n n 严格列对角占优, 即 n a jj > a ij. i=1, i j 证明 : (1) A 非奇异 ; (2) 部分选主元 Gauss 消去法与不选主元的 Gauss 消去法是一样的, 即 Gauss 消去法进行 k 步之后, 剩余的右下角部分仍然是严格列对角占优. 练习 2.12 给定一个非奇异矩阵 A 和一个向量 b. 试证明 : 对充分小的 δa 2, 存在非零的 δa 和 δb, 使得不等式 (2.17) 中的等号成立, 即 δx 2 = A 1 ( ) 2 δa 2 ˆx 2 + δb 2. 思考题 练习 2.13 以 1- 范数或 - 范数为例, 证明定理 2.11 中的结论 (2).

83 2.6 课后习题 71 练习 2.14 证明不等式 (2.19) 和 (2.20) 中的等号是可以达到的. 实践题练习 2.15 写出列存储方式一般下三角方程组 Ly = b 的求解算法, 并编写相应的 MATLAB 程序. 函数形式 : y=lu_ly(l,b) 练习 2.16 根据算法 2.11, 编写求解对角占优三对角线性方程组的追赶法程序. 函数形式 : x=lu_tridiag(a,b,c,f) 其中 a, b, c 分别是系数矩阵的三条对角线, f 是右端项. 练习 2.17 带状矩阵的 LU 分解. 设 A 是 n 阶带状矩阵, 上带宽为 L < n, 下带宽为 M < n, 编写一个函数, 计算 A 的 LU 分解 ( 不带选主元 ), 并统计运算量. 函数形式 : [L,U]=LU_banded(A,L,M)

84

85 第三讲线性最小二乘问题 广义的最小二乘问题 (Least Squares ) 包括线性最小二乘问题, 总体最小二乘问题, 等式约束最小二乘问题, 刚性加权最小二乘问题等等. 它在统计学, 最优化问题, 材料与结构力学, 信号与图像处理等方面都有着广泛的应用, 是计算数学的一个重要研究分支, 也是一个活跃的研究领域. 本讲主要介绍求解线性最小二乘问题的三种常用方法 : 正规方程法 ( 也称法方程法 ), QR 分解法和 SVD 分解法. 一般来说, 正规方程法是最快的, 特别是当 A 的条件数较小时, 正规方程法几乎与其他方法一样精确. 而 SVD 分解法是最慢的, 但结果最可靠. 为了方便起见, 我们有时将线性最小二乘问题 (3.1) 简称为最小二乘问题. 关于最小二乘问题的更多求解方法, 请参考 [12, 88]. 3.1 引言 考虑线性最小二乘问题 其中 A R m n, b R m. 问题 (3.1) 的解称为最小二乘解. 当 m = n 且 A 非奇异时, 这就是一个线性方程组, 解为 x = A 1 b; min Ax x R b 2 n 2 (3.1) 当 m > n 时, 约束个数大于未知量个数, 此时我们称问题 (3.1) 为超定的 (overdetermined); 当 m < n 时, 未知量个数大于约束个数, 此时我们称问题 (3.1) 为欠定 ( 或亚定 ) 的 (underdetermined). 为了讨论方便, 这里假定 A 是满秩的 超定方程组 当 m > n 时, 线性方程组 Ax = b 的解可能不存在. 此时一般考虑求解最小二乘问题 (3.1). 记 J(x) = Ax b 2 2. 易知 J(x) 是关于 x 的二次函数, 而且是凸函数 (Hessen 阵半正定 ). 因此, 由凸函数的性质可知, x 是问 题 (3.1) 的解当且仅当 x 是 J(x) 的稳定点 ( 但解可能不唯一 ). 令其一阶导数为零, 可得 A Ax A b = 0. 于是将最小二乘问题转化为一个 ( 半正定 ) 线性方程组, 这就是后面的正规方程. 73

86 74 第三讲线性最小二乘问题 欠定方程组 若 m < n, 则线性方程组 Ax = b 存在无穷多个解. 这时我们通常寻求最小范数解, 即所有解中范数 最小的解. 于是原问题就转化为下面的约束优化问题 1 min Ax=b 2 x 2 2 (3.2) 对应的 Lagrange 函数为 L(x, λ) = 1 2 x λ (Ax b), 其中 λ = [λ 1, λ 2,..., λ m ] 是 Lagrange 乘子. 此时优化问题 (3.2) 的解就是 L(x, λ) 的鞍点, 即下面方程 组的解 : 写成矩阵形式为 L x = x + A λ = 0, L λ [ ] [ ] [ ] I A x 0 =. A 0 λ b = Ax b = 0. 如果 A ( 行 ) 满秩, 即 rank(a) = m, 则系数矩阵非奇异 ( 见练习 3.2), 上述方程组存在唯一解. 本讲主要讨论超定线性最小二乘问题的求解. 3.2 初等变换矩阵 矩阵计算的一个基本思想就是把较复杂的问题转化为等价的较简单的, 易于求解问题. 而完成这个 转化的基本工具就是初等变换矩阵, 其中常用的有三个 : Gauss 变换, Householder 变换和 Givens 变换 初等矩阵 我们考虑初等矩阵 E(u, v, τ) = I τuv, 其中 u, v C n 是非零向量, τ 是一个非零复数. 事实上, E(u, v, τ) 是单位矩阵的一个秩 1 扰动. 定理 3.1 设 E(u, v, τ) 是一个初等矩阵, 我们有 (1) det(e(u, v, τ)) = 1 τv u; (2) 若 1 τv u 0, 则 E(u, v, τ) 非奇异, 且 (E(u, v, τ)) 1 = E(u, v, γ), 其中 γ = τ τv u 1. 证明. (1) 易知 [ ] [ ] [ ] [ ] I 0 I τuv τu I 0 I τu =. v v τv u

87 3.2 初等变换矩阵 75 由行列式的乘法可知 ([ ]) ([ ]) ([ ]) ([ ]) I 0 I τuv τu I 0 I τu det det det = det. v v τv u 所以 det ( E(u, v, τ) ) = det(i τuv ) = 1 τv u. (2) 若 1 τv u 0, 则 det ( E(u, v, τ) ) 0, 所以 E(u, v, τ) 非奇异. 通过直接计算可知 E(u, v, τ)e(u, v, γ) = I τuv γ(1 τv u)uv = I τuv = I. τ τv u 1 (1 τv u)uv 定理 3.2 设 A C n n, 则 A 非奇异当且仅当 A 可以分解成若干个初等矩阵的乘积 Gauss 变换设 l j = [0,..., 0, l j+1,j,..., l n,j ], j = 1, 2,..., n, 则 Gauss 变换定义为 1... L(l j ) E(l j, e j, 1) = I + l j e j = 1, l j+1,j l n,j 1 向量 l j 称为 Gauss 向量 [33]. 由定理 3.1 可知 det(l(l j )) = 1, (L(l j )) 1 = E(l j, e j, 1) = E( l j, e j, 1) = L( l j ). Gauss 变换主要用于矩阵的 LU 分解 Householder 变换 定义 3.1 我们称矩阵 H = I 2 v v vv = I 2 v 2 vv, 0 v C n, (3.3) 2 为 Householder 矩阵 ( 或 Householder 变换, 或 Householder 反射 ), 向量 v 称为 Householder 向量. 我们通 常将矩阵 (3.3) 记为 H(v).

88 76 第三讲线性最小二乘问题 从几何上看, 一个 Householder 变换就是一个关于超平面 span{v} 的反射. 对任意一个向量 x C n, 可将其写为 其中 αv span{v}, y span{v}. 则 x = v x v v + y αv + y, v Hx = x 2 v v vv x = x 2αv = αv + y, 即 Hx 与 x 在 span{v} 方向有着相同的分量, 而在 v 方向的分量正好相差一个符号. 也就是说, Hx 是 x 关于超平面 span{v} 的镜面反射, 见图 3.1. 因此, Householder 矩阵也称为反射矩阵. 图 3.1. Householder 变换的几何意义 下面是关于 Householder 矩阵的几个基本性质. 定理 3.3 设 H C n n 是一个 Householder 矩阵, 则 (1) H = H, 即 H Hermite 的 ; (2) H H = I, 即 H 是酉矩阵 ; (3) H 2 = I, 所以 H 1 = H ; (4) det(h) = 1; (5) H 有两个互异的特征值 : λ = 1 和 λ = 1, 其中 λ = 1 的代数重数为 n 1. Householder 矩阵的一个非常重要的应用就是可以将一个向量除第一个元素以外的所有元素都化为零. 我们首先给出一个引理. 引理 3.1 设 x, y C n 为任意两个互异的向量, 则存在一个 Householder 矩阵 H(v) 使得 y = H(v)x 的充要条件是 x 2 = y 2 且 x y R. 证明. 若 x 2 = y 2 且 x y R, 则 y y = x x 且 x y = y x. 于是 令 v = x y, 则有 x y 2 2 = (x y) (x y) = x x y x x y + y y = 2(x x y x). H(v)x = x 2(x y)(x y) x x y 2 2 = x 2(x y)(x x y x) 2(x x y x) = y,

89 3.2 初等变换矩阵 77 即存在 Householder 矩阵 H(v) 使得 y = H(v)x. 反之, 如果存在 Householder 矩阵 H 使得 y = Hx, 由于 H 是 Hermite 的, 所以 x y = x Hx R. 又因为 H 是酉矩阵, 所以 y 2 = Hx 2 = x 2. 由引理 3.1, 我们可以立即得到下面的定理. 定理 3.4 设 x = [x 1, x 2,..., x n ] R n 是一个非零向量, 则存在 Householder 矩阵 H(v) 使得 H(v)x = αe 1, 其中 α = x 2 ( 或 α = x 2 ), e 1 = [1, 0,..., 0] R n. 设 x = [x 1, x 2,..., x n ] R n 是一个实的非零向量, 下面讨论如何计算定理 3.4 中 Householder 矩阵 H(v) 所对应的 Householder 向量 v. 由引理 3.1 的证明过程可知 v = x αe 1 = [x 1 α, x 2,..., x n ]. 在实际计算中, 为了尽可能地减少舍入误差, 我们通常避免两个相近的数做减运算, 否则就会损失有效数字. 因此, 我通常取 α = sign(x 1 ) x 2. 事实上, 我们也可以取 α = sign(x 1 ) x 2, 但此时为了减少舍入误差, 我们需要通过下面的公式来计算 v 的第一个分量 v 1 α = sign(x 1 ) x 2, v 1 = x 1 α = x2 1 x 2 2 x 1 + α = (x2 2 + x x 2 n). x 1 + α x 1 α, if sign(x 1 ) < 0 v 1 = (x 2 + x x 2 n), x 1 + α otherwise 无论怎样选取 α, 我们都有 H = I βvv 其中 β = 2 v v = 2 2 (x 1 α) 2 + x = x2 n 2α 2 = 1. 2αx 1 αv 1 在实数域中计算 Householder 向量 v 的算法如下, 总运算量大约为 3n. 如果 x 是复向量, 则有没有相应的结论? 如果有的话, 其对应的 Householder 向量是什么? 算法 3.1. 计算 Householder 向量 % Given x R n, compute v R n such that Hx = x 2 e 1, where H = I βvv 1: function [β, v] = House(x) 2: n = length(x) (here length(x) denotes the dimension of x) 3: σ = x x x 2 n 4: v = x 5: if σ = 0 then 6: if x 1 < 0 then

90 78 第三讲线性最小二乘问题 7: v 1 = 2x 1, β = 2/v1 2 8: else 9: v 1 = 0, β = 0 10: end if 11: else 12: α = x σ % α = x 2 13: if x 1 < 0 then 14: v 1 = x 1 α 15: else 16: v 1 = σ/(x 1 + α) 17: end if 18: β = 2/(v1 2 + σ) 19: end if 在实际计算时, 我们可以将向量 v 单位化, 使得 v 1 = 1. 这样, 我们就无需为 v 另外分配空间, 而 是将 v(2 : n) 存放在 x(2 : n) 中, 因为经过 Householder 变换后, 向量 x 除第一个分量外, 其它都为 零. 同时, 为了避免可能产生的溢出, 我们也可以事先将 x 单位化, 即令 x = x/ x 2 1 function [beta,v] = House(x) 2 n = length(x); 3 sigma = dot(x(2:n),x(2:n)); 4 v = x; 5 if sigma == 0 6 if x(1) < 0 7 v(1) = 2*x(1); 8 beta = 2/(v(1)*v(1)); 9 else 10 v(1) = 1; 11 beta = 0; 12 end 13 else 14 alpha = sqrt(x(1)*x(1)+sigma); 15 if x(1) < 0 16 v(1) = x(1) - alpha; 17 else 18 v(1) = -sigma/(x(1)+alpha); 19 end 20 beta = 2/(v(1)*v(1)+sigma); 21 end MATLAB 源代码 3.1. House 向量

91 3.2 初等变换矩阵 79 可以证明, 上述算法具有很好的数值稳定性 [75], 即 H H 2 = O(ε u ), 其中 H 是由上述算法计算得到的近似矩阵, ε u 是机器精度. Householder 变换运算量设 A R m n, H = I βvv R m, 则 HA = (I βvv )A = A βv(v A). 因此, 在做 Householder 变换时, 并不需要生成 Householder 矩阵, 只需要 Householder 向量即可. 上面矩阵相乘的总运算量大约为 4mn Givens 变换为简单起见, 我们这里这讨论实数域中的 Givens 变换. 设 θ [0, 2π], 我们称矩阵 1... c s G(i, j, θ) =... R n n, (i j) s c... 1 为 Givens 变换 ( 或 Givens 旋转, 或 Givens 矩阵 ), 其中 c = cos(θ), s = sin(θ). 即将单位矩阵的 (i, i) 和 (j, j) 位置上的元素用 c 代替, 而 (i, j) 和 (j, i) 位置上的元素分别用 s 和 s 代替, 所得到的矩阵就是 G(i, j, θ). 定理 3.5 G(i, j, θ) 是正交矩阵, 且 det(g(i, j, θ)) = 1. 我们需要注意的是, 当一个矩阵左乘一个 Givens 矩阵时, 只会影响其第 i 行和第 j 行的元素. 而当一个矩阵右乘一个 Givens 矩阵时, 只会影响其第 i 和第 j 列的元素. 例 3.1 设 x = r 的值如下 : [ x1 x 2 ] [ ] [ ] c s r R 2, 则存在一个 Givens 变换 G = R 2 2 使得 Gx =, 其中 c, s 和 s c 0 若 x 1 = x 2 = 0, 则 c = 1, s = 0, r = 0 ; 若 x 1 = 0 但 x 2 0, 则 c = 0, s = x 2 / x 2, r = x 2 ; 若 x 1 0 但 x 2 = 0, 则 c = sign(x 1 ), s = 0, r = x 1 ; 若 x 1 0 且 x 2 0, 则 c = x 1 /r, s = x 2 /r, r = x x2 2. 也就是说, 通过 Givens 变换, 我们可以将向量 x R 2 的第二个分量化为 0. 事实上, 对于任意一个向量 x R n, 我们都可以通过 Givens 变换将其任意一个位置上的分量化为

92 80 第三讲线性最小二乘问题 0. 更进一步, 我们也可以通过若干个 Givens 变换, 将 x 中除第一个分量外的所有元素都化为 0. 算法 3.2. Givens 变换 % Given x = [a, b] R 2, compute c and s such that Gx = [r, 0] where r = x 2 1: function [c, s] = givens(a, b) 2: if b = 0 then 3: if a 0 then 4: c = 1, s = 0 5: else 6: c = 1, s = 0 7: end if 8: else 9: if b > a then 10: τ = a b, s = sign(b) 1 + τ 2, 11: else 12: τ = b a, c = sign(a), 1 + τ 2 13: end if 14: end if c = sτ s = cτ 正交变换的舍入误差分析 引理 3.2 设 P R n n 是一个精确的 Householder 或 Givens 变换, P 是其浮点运算近似, 则 fl( P A) = P (A + E), fl(a P ) = (A + F )P, 其中 E 2 = O(ε u ) A 2, F 2 = O(ε u ) A 2. 这说明对一个矩阵做 Householder 变换或 Givens 变换是向后稳定的. 定理 3.6 考虑对矩阵 A 做一系列的正交变换, 则有 fl( P k P 1 A Q 1 Q k ) = P k P 1 (A + E)Q 1 Q k, 其中 E 2 = O(ε u ) (k A 2 ). 这说明整个计算过程是向后稳定的. 一般地, 假设 X 是一个非奇异的线性变换, X 是其浮点运算近似. 当 X 作用到 A 上时, 我们有 fl( XA) = XA + E = X(A + X 1 E) X(A + F ), 其中 E 2 = O(ε u ) XA 2 O(ε u ) X 2 A 2, 故 F 2 = X 1 E 2 O(ε u ) X 1 2 X 2 A 2 = O(ε u ) κ 2 (X) A 2, 因此, 舍入误差将被放大 κ 2 (X) 倍. 当 X 是正交变换时, κ 2 (X) 达到最小值 1, 这就是为什么在浮点运算中尽量使用正交变换的原因.

93 3.3 QR 分解 QR 分解 QR 分解是将一个矩阵分解一个正交矩阵 ( 酉矩阵 ) 和一个三角矩阵的乘积. QR 分解被广泛应用于 线性最小二乘问题的求解和矩阵特征值的计算 QR 分解的存在性与唯一性定理 3.7 (QR 分解 ) [43] 设 A C m n (m n). 则存在一个单位列正交矩阵 Q C m n ( 即 Q Q = I n n ) 和一个上三角矩阵 R C n n, 使得 A = QR. (3.4) 若 A 列满秩, 则存在一个具有正对角线元素的上三角矩阵 R 使得 (3.4) 成立, 且此时 QR 分解唯一, 即 Q 和 R 都唯一. 证明. 设 A = [a 1, a 2,..., a n ] C m n. 若 A 列满秩, 即 rank(a) = n. 则 QR 分解 (3.4) 就是对 A 的列向 量组进行 Gram-Schmidt 正交化过程的矩阵描述 ( 见算法 3.3). 算法 3.3. Gram-Schmidt 过程 1: r 11 = a 1 2 2: q 1 = a 1 /r 11 3: for j = 2 to n do 4: q j = a j 5: for i = 1 to j 1 do 6: r ij = qi a j % qi 表示共轭转置 7: q j = q j r ij q i 8: end for 9: r jj = q j 2 10: q j = q j /r jj 11: end for 如果 A 不是列满秩, 我们可以做类似的正交化过程 : 如果 a 1 = 0, 则令 q 1 = 0; 否则令 q 1 = a 1 / a 1 2 ; 对于 j = 2, 3,..., n, 计算 q j = a j j 1 i=1 (q i a j)q i. 如果 q j = 0, 则表明 a j 可以由 a 1, a 2,..., a j 1 线性表出, 令 q j = 0. 否则令 q j = q j / q j 2. 于是我们有 A = QR, 其中 Q = [q 1, q 2,..., q n ] 列正交 ( 但不是单位列正交 ), 其列向量要么是单位向量, 要么就是零向量. 这里 的 R = [r ij ] n n 是上三角矩阵, 定义如下 qi r ij = a j, for i j 0, for i > j

94 82 第三讲线性最小二乘问题 如果 Q 的某一列 q k = 0, 则 R 中对应的第 k 行就全为 0. 设 rank(a) = l < n, 则 Q 有 l 个非零列, 设为 q i1, q i2,..., q il. 它们形成 C m 中的一个单位正交向量组, 所以我们可以将其扩展成 C m 中的一组标准正交基, 即 q i1, q i2,..., q il, q 1,..., q m l. 然后我们用 q 1 替换 Q 中的第一个零列, 用 q 2 替换 Q 中的第二个零列, 依此类推, 将 Q 中的所有零列都替换掉. 将最后得到的矩阵记为 Q, 则 Q C m n 单位列正交, 且 QR = QR. 这是由于 Q 中的新添加的列向量正好与 R 中的零行相对应. 所以我们有 QR 分解 A = QR. 下面证明满秩矩阵 QR 分解的存在唯一性. 存在性 : 由于 A 列满秩, 由 Gram-Schmidt 正交化过程 ( 算法 3.3) 可知, 存在上三角矩阵 R = [r ij ] n n 满足 r jj > 0, 使得 A = QR, 其中 Q 单位列正交. 唯一性 : 假设 A 存在 QR 分解 A = Q 1 R 1 = Q 2 R 2, 其中 Q 1, Q 2 C m n 单位列正交, R 1, R 2 C n n 为具有正对角元素的上三角矩阵. 则有 Q 1 = Q 2 R 2 R 1 1. (3.5) 由于 R 1, R 2 均为上三角矩阵, 所以 R 2 R 1 1 也是上三角矩阵, 且其对角线元素为 R 2 (i, i)/r 1 (i, i), i = 1, 2,..., n. 由 (3.5) 可得 1 = Q 1 2 = Q 2 R 2 R = R 2 R 所以 R 2 (i, i) 1, i = 1, 2,..., n. R 1 (i, i) 同理可证 R 1 (i, i)/r 2 (i, i) 1. 所以 又 Q 1 2 F = tr(q 1Q 1 ) = n, 所以由 (3.5) 可知 R 1 (i, i) = R 2 (i, i), i = 1, 2,..., n. R 2 R F = Q 2 R 2 R F = Q 1 2 F = n. 由于 R 2 R1 1 的对角线元素都是 1, 所以 R 2 R1 1 只能是单位矩阵, 即 R 2 = R 1. 因此 Q 2 = AR2 1 = AR1 1 = Q 1, 即 A 的 QR 分解是唯一的. 有时也将 QR 分解定义为 : 存在酉矩阵 Q C m m 使得 ] [ R11 A = Q 0,

95 3.3 QR 分解 83 其中 R 11 R n n 为上三角矩阵. 由 QR 分解的存在性证明过程可知, 当 A 不是满秩矩阵时, 存在一个置换矩阵 P, 使得 AP 的前 r 列是线性无关的, 其中 r = rank(a). 因此我们可以对 AP 进行 QR 分解, 于是我们可以得到下面的结论. 推论 3.8 设 A C m n (m n). 则存在一个置换矩阵 P, 使得 [ ] R11 R 12 AP = Q, 0 0 n n 其中 Q C m n 单位列正交, R 11 C r r 是非奇异上三角矩阵. 上述结论也可简化为 ] AP = Q [R 11 R 12, 其中 Q C m r 单位列正交, R 11 C r r 是非奇异上三角矩阵. 通过 GS 正交化过程实现的 QR 分解中, Q 和 R 都可能是复矩阵. 如果 A 是实矩阵, 则上面证明 中的运算都可以在实数下进行, 因此 Q 和 R 都可以是实矩阵. 如果 A 是非奇异的方阵, 则 QR 分解也可以用来求解线性方程组 Ax = b. 基于 GS 正交化的 QR 分解算法 3.3 的运算量大约为 2mn 2. 在后面, 我们会介绍基于 Household 变换的 QR 分解, 在不需要计算 Q 的情况下, 运算量大约为 2mn 2 2n 3 /3; 如果需要计算 Q, 则 需另外大约 2mn 2 2n 3 /3 运算量. 推论 3.9 ( 满秩分解 ) 设 A C m n 且 rank(a) = l min{m, n}, 则存在满秩矩阵 F C m l 和 G C l n, 使得 A = F G. 下面给出 QR 分解的具体实现方法, 分别基于 MGS 过程, Householder 变换和 Givens 变换 基于 MGS 的 QR 分解在证明 QR 分解的存在性时, 我们利用了 Gram-Schmidt 正交化过程. 但由于数值稳定性方面的原因, 在实际计算中, 我们一般不采用 Gram-Schmidt 过程, 取而代之的是修正的 Gram-Schmidt 过程 (modified Gram-Schmidt process), 即 MGS. 本算法的运算量大约为 2mn 2. 算法 3.4. 基于 MGS 的 QR 分解 % Given A R m n, compute Q = [q 1,..., q n ] R m n and R R n n such that A = QR 1: Set R = [r ik ] = 0 n n (the n n zero matrix)

96 84 第三讲线性最小二乘问题 2: if a 1 = 0 then 3: q 1 = 0 4: else 5: r 11 = a 1 2 6: q 1 = a 1 / a 1 2 7: end if 8: for k = 2 to n do 9: q k = a k 10: for i = 1 to k 1 do 11: r ik = q i q k 12: q k = q k r ik q i 13: end for 14: if q k 0 then 15: r kk = q k 2 16: q k = q k /r kk 17: end if 18: end for 由 MGS 得到的 QR 分解中, Q R m n, R R n n 基于 Householder 变换的 QR 分解 由定理 3.4 可知, 通过 Householder 变换, 我们可以将任何一个非零变量 x R n 转化成 x 2 e 1, 即除第一个元素外, 其它都为零. 下面我们就考虑通过 Householder 变换来实现矩阵的 QR 分解. 我们首先考虑 m = n 时的情形. 设矩阵 A R n n, 令 H 1 R n n 为一个 Householder 变换, 满足 H 1 a 11 a n1 r 1 a 21 0 =... 0 于是 H 1 A = r 1 ã 12 ã 1n 0. Ã 2 0, 其中 Ã 2 R (n 1) (n 1). 同样地, 我们可以构造一个 Householder 变换 H2 R (n 1) (n 1), 将 Ã 2 的第

97 3.3 QR 分解 85 一列中除第一个元素外的所有元素都化为 0, 即 r 2 ã 23 ã 2n 0 H 2 à 2 =. à 3 0. 令 [ ] 1 0 H 2 = 0 H2. 则 H 2 R n n, 且 H 2 H 1 A = r 1 ã 12 ã 13 ã 1n 0 r 2 ã 23 ã 2n à 3. 不断重复上述过程. 这样, 我们就得到一系列的矩阵 [ ] Ik 1 0 H k =, k = 1, 2, 3, 4,..., n 1 0 Hk 使得 r 1 ã 12 ã 1n 0 r 2 ã 2n H n 1 H 2 H 1 A =. R r n 由于 Householder 变换都是正交矩阵, 因此 H 1, H 2,..., H n 1 也都是正交矩阵. 令 Q = (H n 1 H 2 H 1 ) 1 = H 1 1 H 1 2 H 1 n 1 = H 1H 2 H n 1, 则 Q 也是正交矩阵, 且 A = (H n 1 H 2 H 1 ) 1 R = QR. 以上就是基于 Householder 变换的 QR 分解的具体实现过程. 最后所得到的上三角矩阵 R 就存放在 A 的上三角部分. 矩阵 Q 可通过下面的算法实现 Q = I n, Q = QH k, k = 1, 2,..., n 1. 这里我们假定 A 是满秩的, 如果 A 不是满秩, 则可以考虑列主元 QR 分解.

98 86 第三讲线性最小二乘问题 如果 m > n, 我们仍然可以通过上面的过程进行 QR 分解, 只是最后我们得到一个正交矩阵 Q R m m 和一个上三角矩阵 R R m n, 使得 A = QR. 如果不需要生成 Q, 则基于 Householder 变换的 QR 分解的总运算量大约为 2mn 2 2/3n 3. 如果保留了每一步的 Householder 向量, 则 Q 也可以通过下面的向后累积方法实现 : Q = I n, Q = H k Q, k = n 1, n 2,..., 1. 这样做的好处是一开始 Q 会比较稀疏, 随着迭代的进行, Q 才会慢慢变满. 而前面的计算方法, 第一步就将 Q 变成了一个满矩阵. 采用这种方法计算 Q 的运算量大约为 4(m 2 n mn n3 ). 如果将 Q 写成下面的形式 Q = I + W Y, 则可以采用分块形式来计算 W 和 Y, 虽然运算量会稍有增长, 但大多数运算是矩阵乘法, 因此可以尽可能多地采用 3 级 BLAS 运算, 效率可能会更高. 详情可参见 Golub [33] 算法 3.5. 基于 Householder 变换的 QR 分解 % Given A R m n, compute Q and R such that A = QR where Q R m m and R R m n % The upper triangular part of R is stored in the upper triangular part of A 1: Set Q = I m m 2: for k = 1 to n do 3: x = A(k : m, k) 4: [β, v k ] = House(x) 5: A(k : m, k : n) = (I m k+1 βv k v k )A(k : m, k : n) ( 6: = A(k : m, k : n) βv k v ka(k : m, k : n)) 7: Q(:, k : m) = Q(:, k : m)(i m k+1 βv k v k ) 8: = Q(:, k : m) β ( ) Q(:, k : m)v k v k 9: end for 上面的算法只是关于利用 Householder 变换来实现 QR 分解的一个简单描述, 并没有考虑运算 量问题. 在实际计算时, 我们通常会保留所有的 Householder 向量. 由于第 k 步中 Hk 所对应的 Householder 向量 v k 的长度为 m k + 1, 因此我们先把 v k 单位化, 使得 v k 的第一元素为 1, 这样 就只要存储 v k (2 : end), 共 m k 个元素. 这样, 我们就可以把所有的 Householder 向量存放在 A 的严格下三角部分. 而 A 的上三角部分仍然存放 R. 在计算 Q 时采用向后累积的方法, 所以总的 运算量大约为 4m 2 n 2mn n3. 若 m = n, 则运算量大约为 8 3 n3. 我们也可以考虑分块 Householder QR 分解, 以便充分利用 3 级 BLAS 运算, 提高计算效率.

99 3.3 QR 分解 列主元 QR 分解当 A 不是满秩时, 我们可以进行列主元 QR 分解. 定理 3.10 ( 列主元 QR 分解 ) 设 A C m n (m n), 且 rank(a) = k < n. 则存在置换矩阵 P, 正交矩 阵 Q C m m, 使得 [ ] R11 R 12 AP = Q 0 0 其中 R 11 C k k 是非奇异上三角矩阵, 且对角线元素满足 r 11 r 22 r kk > 0. m n, 列主元 QR 分解的实现过程与 QR 分解基本类似, 只是在第 l 步时, 需要选个列主元, 同时可能需要 做一个列交换. 假设经过 l 1 步后, 我们得到下面的分解 [ ] (l 1) R AP (l 1) = Q (l 1) 11 R (l 1) 12 0 R (l 1) Q (l 1) R (l 1), 22 即 ( Q (l 1)) AP (l 1) = R (l 1), 其中 P (l 1) 是置换矩阵, Q (l 1) 是正交矩阵, R (l 1) 12 R (l 1) (l 1) 是非奇异上三角矩阵. 下面进行第 l 步 : (1) 首先计算 R (l 1) 22 的所有列的范数, 如果范数都为 0, 则 R (l 1) 22 = 0, 此时必有 l 1 = k, 算法结束. (2) 当 l k 时, R (l 1) 22 0, 记范数最大的列为第 i l 列 ( 如果有相等的, 取其中一个即可 ). 若 i l 1, 则交换 R (l 1) 的第 l 列与第 i l + l 1 列, 并记相应的置换矩阵为 P l. [ ] (3) 以 R (l 1) Il 的第 i l 列为 Householder 向量, 构造 Householder 变换 Hl, 并令 H l =, P (l) = 0 Hl P (l 1) P l, 则 H l (Q (l 1)) AP (l) = H l R (l 1) P l = [ R (l 1) 11 R (l 1) 12 0 R(l 1) 22 ] R (l), 其中 R(l 1) 22 的第一列除第一个元素外, 其余都是零. 且该元素的值等于 R (l 1) 22 第 i l 列的范数. 记 Q (l) Q (l 1) H l, 则 [ ] (l) R AP (l) = Q (l) R (l) 11 R (l) 12 = 0 R (l), 22 其中 R (l) 11 Rl l 为非奇异上三角矩阵. 依此类推, 直到第 k 步, 我们就可以得到 A 的列主元 QR 分解, 其中 R 11 的对角线元素的递减关系 是由于选取列主元和 Householder 变换的性质得到的 基于 Givens 变换的 QR 分解 我们同样可以利用 Givens 变换来做 QR 分解.

100 88 第三讲线性最小二乘问题 设 A R n n, 首先构造一个 Givens 变换 G 21, 作用在 A 的最前面的两行上, 使得 G 21 a 11 ã 11 a 21 0 a 31 = a a n1 a n1 由于 G 21 只改变矩阵的第 1 行和第 2 行的值, 所以其它行保存不变. 然后再构造一个 Givens 变换 G 31, 作 用在 G 21 A 的第 1 行和第 3 行, 将其第一列的第三个元素化为零. 由于 G 31 只改变矩阵的第 1 行和第 3 行 的值, 所以第二行的零元素维持不变. 以此类推, 我们可以构造一系列的 Givens 变换 G 41, G 51,..., G n1, 使得 G n1 G 21 A 的第一列中除第一个元素外, 其它元素都化为零, 即 0 G n1 G 21 A = 下面我们可以对第二列进行类似的处理. 构造 Givens 变换 G 32, G 42,..., G n2, 将第二列的第 3 至第 n 个元素全化为零, 同时保持第一列不变. 以此类推, 我们对其他列也做类似的处理. 最后, 通过构造 1 2 n(n 1) 个 Givens 变换, 将 A 转化成一个上三角矩阵 R, 即 R = G n,n 1 G 21 A. 令 Q = (G n,n 1 G 21 ). 由于 Givens 变换是正交矩阵, 所以 Q 也是正交矩阵. 于是, 我们就得到矩阵 A 的 QR 分解 A = QR. 与 Householder 变换一样, 在进行 Givens 变换时, 我们不需要显式地写出 Givens 矩阵. 对于稠密矩阵而言, 基于 Givens 变换的 QR 分解的运算量比 Householder 变换要多很多. 当需要连续应用一系列 Givens 变换时, 我们可以使用快速 Givens 变换 ( 见 [12]). 但即便如此, 其速 度仍然要慢于 Householder 变换. 因此基于 Givens 变换的 QR 分解主要用于当矩阵的非零下三角元素相 对较少时的情形, 比如对上 Hessenberg 矩阵进行 QR 分解. 如果 A R m n, 其中 m > n, 我们仍然可以通过 Givens 变换进行 QR 分解. 下面是基于 Givens 变换的 QR 分解的算法描述. 算法 3.6. 基于 Givens 变换的 QR 分解 % Given A R m n, compute Q and R such that A = QR where Q R m m and R R m n % The upper triangular part of R is stored in the upper triangular part of A 1: Set Q = I m m 2: for k = 1 to n do

101 3.4 奇异值分解 89 3: for i = k + 1 to m do 4: [c, s]=givens(a kk, a ik ) [ ] [ ] [ ] A(k, k : n) A(k, k : n) c s 5: = G where G = A(i, k : n) A(i, k : n) s c 6: [Q(1 : m, k), Q(1 : m, i)] = [Q(1 : m, k), Q(1 : m, i)]g 7: end for 8: end for QR 分解的稳定性 基于 Householder 变换和 Givens 变换的 QR 分解都具有很好的数值稳定性. 详细分析可以参考 [75] 和 [41]. 基于 MGS 的 QR 分解也是向后稳定的, 参见 [56]. 当需要计算矩阵 Q 时, 基于 MGS 的 QR 分解的运算量相对较少. 因此当 A 的列向量具有很好的线 性无关性时, 我们可以使用 MGS 来计算 QR 分解. 但是, 由于舍入误差的原因, 最后得到的矩阵 Q 会带有一定的误差, 可能会导致 Q 失去正交性. Björck [11] 证明了, 通过 MGS 计算的矩阵 Q 满足 Q Q = I + E MGS 其中 E MGS 2 ε u κ 2 (A). 而 Householder 变换计算的矩阵 Q 满足 Q Q = I + E H 其中 E H 2 ε u. 因此, 如果正交性至关重要, 则当 A 的列向量接近线性相关时, 最好使用 Householder 变换. 3.4 奇异值分解 奇异值分解 (SVD) 分解是矩阵计算中非常有用的工具之一. 设 A C m n (m n), 则 A A C n n 和 AA C m m 都是 Hermite 半正定矩阵, 且它们具有相同的非零特征值 ( 都是正实数 ). 定理 3.11 (SVD) [33] 设 A C m n (m n), 则存在酉矩阵 U C m m 和 V C n n 使得 [ ] [ ] Σ Σ U AV = 或 A = U V, (3.6) 0 0 其中 Σ = diag(σ 1, σ 2,..., σ n ) R n n, 且 σ 1 σ 2... σ n 0. 分解 (3.6) 称为 A 的奇异值分解 (SVD ), 而 σ 1, σ 2,..., σ n 则称为 A 的奇异值. 证明. 首先假设 A 0, 否则只需令 Σ = 0 即可, U 和 V 可以是任意酉矩阵. 下面我们对 m 和 n 用归纳法来证明.

102 90 第三讲线性最小二乘问题 当 n = 1 和 m n 时, 我们取 Σ = A 2, V = 1, U C m m 是第一列为 u 1 = A/ A 2 的酉矩阵, 于是 [ ] Σ A = U 0 即为 A 的奇异值分解. 假设 C (m 1) (n 1) 中的矩阵都存在奇异值分解, 下面证明 A C m n 也存在有奇异值分解. 由 2- 范数的定义可知, 存在向量 v C n 满足 v 2 = 1 使得 A 2 = Av 2. 令 u = 1 σ Av Cm, 其中 σ = A 2, 则 u 2 = 1. 我们将 v 和 u 都扩充成酉矩阵, 即存在 Ũ C m (m 1) 和 Ṽ C n (n 1), 使得 [u, Ũ] C m m 和 [v, Ṽ ] Cn n 都是酉矩阵. 于是 Ũ Av = Ũ (σu) = 0, u Av = u (σu) = σ. V 所以 又 Ã = σ = A 2 = Ã = 2 [ ] [ ] [ ] [ ] u u, Ũ A v, Ṽ Av u AṼ σ u AṼ = =. Ũ Av Ũ AṼ 0 Ũ AṼ Ã 2 Ã e 1 2 = [ ] σ, u 2 AṼ = σ 2 + u AṼ 2 2, 所以 u AṼ 2 = 0, 即 u AṼ = 0. 于是 [ ] [ ] u, Ũ A v, Ṽ = [ ] σ 0, 0 A 1 其中 A 1 = Ũ AṼ C(m 1) (n 1). 由归纳假设可知, A 1 存在奇异值分解, 设为 [ ] Σ1 A 1 = U 1 V1, 0 其中 U 1 C (m 1) (m 1) 和 V 1 C (n 1) (n 1) 都是酉矩阵, Σ 1 R (n 1) (n 1) 是对角矩阵, 且其对角 线元素按降序排列. 令 U = [ ] [ ] u, Ũ 1 0 [ ] [ ], V = v, 0 U Ṽ 1 0, 1 0 V 1 则 U C m m 和 V C n n 都是酉矩阵, 且 [ ] 1 0 [ ] [ ] [ ] U AV = u, 0 U Ũ A v, Ṽ V 1 [ ] [ ] [ ] 1 0 σ = 0 U 1 0 A 1 0 V 1 [ ] [ ] σ 0 Σ = =, (3.7) 0 U1 A 1 V 1 0

103 3.4 奇异值分解 91 [ ] σ 0 其中 Σ =. 又 0 Σ 1 [ ] σ 2 = A 2 2 = U AV 2 Σ 2 = ([ ]) σ 2 0 = ρ, 0 Σ 2 1 所以 σ 不小于 Σ 1 中的所有对角线元素, 即 Σ 的对角线元素也是按降序排列. 因此, (3.7) 这就是 A 的奇异值分解. 由归纳法可知, 定理的结论成立. 该定理也可以通过 Hermite 半正定矩阵的特征值分解来证明. 如果 A R m n 是实矩阵, 则 U, V 也都可以是实矩阵 [43]. 由 (3.6) 可知, [ ] ΣΣ A A = V Σ ΣV, AA 0 = U U. 0 0 所以 σ1, 2 σ2, 2..., σn 2 是 A A 和 AA 的特征值. 因此, A 的奇异值就是 A A 的特征值的平方根. 若 rank(a) = r n, 则有 σ 1 σ 2 σ r > σ r+1 = = σ n = 0. 特别地, 如果 rank(a) = n, 则奇异值都是正的, 此时对角矩阵 Σ 非奇异. 矩阵 U = [u 1, u 2,..., u m ] 和 V = [v 1, v 2,..., v n ] 的列向量分别称为 A 的左奇异向量和右奇异向量, 即存在关系式 Av i = σ i u i, i = 1, 2,..., n, A u i = σ i v i, i = 1, 2,..., n, A u i = 0, i = n + 1, n + 2,..., m. 由定理 3.11 可知 [ ] Σ A = U V = σ 1 u 1 v1 + σ 2 u 2 v2 + + σ n u n vn = 0 n σ i u i vi. 记 U n = [u 1, u 2,..., u n ] C m n, 则 U n 是单位列正交矩阵 ( 即 UnU n = I n n ), 且 A = U n ΣV. (3.8) 这就是所谓的细 SVD (thin SVD ) [33] 或降阶 SVD (reduced SVD ) [70], 有的文献将 (3.8) 称为奇异值分解. 设 k < n, 我们称 A k = σ 1 u 1 v1 + σ 2 u 2 v2 + + σ k u k vk = 为 A 的截断 SVD (truncated SVD ). i=1 k σ i u i vi i=1

104 92 第三讲线性最小二乘问题 奇异值基本性质下面是关于奇异值的一些基本性质 : [ ] Σ 定理 3.12 设 A = U V 是 A C m n (m n) 的奇异值分解, 则下面结论成立 : 0 (1) A A 的特征值是 σi 2, 对应的特征向量是 v i, i = 1, 2,..., n; (2) AA 的特征值是 σi 2 和 m n 个零, 对应的特征向量是 u i, i = 1, 2,..., m; (3) A 2 = σ 1, A F = σ1 2 + σ σ2 n; (4) 若 rank(a) = r n, 则 Ran(A) = span{u 1, u 2,..., u r }, Ker(A) = span{v r+1, v r+2,..., v n }; (5) 设 x C n 且 x 2 = 1, 则 σ n Ax 2 σ 1 ; (6) ( 酉不变性 ) 设 X C m m 和 Y C n n 是酉矩阵, 则 σ i (X AY ) = σ i (A). 证明. 留作练习. 定理 3.13 设 A = UΣV 是 A C n n 的奇异值分解, 则下面结论成立 : (1) det(a) = σ 1 σ 2 σ n ; (2) 若 A 非奇异, 则 A 1 2 = σ 1 n, κ 2 (A) = σ 1 /σ n ; (3) 若 A 是 Hermite 的, 且 A = UΛU 是 A 的特征值分解, 即 U U = I, Λ = diag(λ 1, λ 2,..., λ n ), 其中 λ 1 λ 2 λ n, 则 A = UΣV 是 A 的奇异值分解, 其中 σ i = λ i, v i = sign(λ i )u i, 若 λ i = 0, 则取 sign(λ i ) = 1 ; [ ] [ ] 0 A 1 vi (4) 矩阵 H = 的特征值是 ±σ i, 对应的单位特征向量为. (A C m n 时也有 A 0 2 ±u i 类似结论 ) 证明. 留作练习 奇异值更多性质 下面是关于矩阵 A 的一个低秩逼近. 定理 3.14 设 A = U n ΣV 是 A C m n 的细奇异值分解. 令 A k = k σ i u i vi, 则 A k 是 i=1 min A B 2 (3.9) B C m n, rank(b)=k 的一个解, 且 A A k 2 = σ k+1.

105 3.4 奇异值分解 93 此时, 我们称 A k 是 A 的一个秩 k 逼近. 证明. 设 B C m n 且 rank(b) = k, 则 dim(ker(b)) + dim(span{v k+1 }) = (n k) + (k + 1) = n + 1 > n, 其中 V k+1 = [v 1, v 2,..., v k+1 ] C n k. 所以 Ker(B) 与 span{v k+1 } 有非零公共元素. 令 0 x Ker(B) span{v k+1 }, 不失一般性, 我们假设 x 2 = 1. 故存在 y C k+1 满足 y 2 = 1 使得 x = V k+1 y. 于是 A B 2 2 (A B)x 2 2 = Ax 2 2 = U n ΣV V k+1 y 2 2 [ ] 2 [ ] = Σ Ik+1 Σ1 y y = 0 0 k+1 其中 Σ 1 = diag(σ 1, σ 2,..., σ k+1 ). 这里我们利用了性质 i=1 y2 i = y 2 2 = 1. 所以 min A B 2 σ k+1. B C m n, rank(b)=k k+1 = σi 2 yi 2 σk+1, 2 i=1 又 rank(a k ) = k, 且 A A k 2 = n i=k+1 σ i u i vi 2 = U n σ k+1... σ n V 2 = σ k+1, 所以 且 A k 是问题 (3.9) 的一个解. min A B 2 = σ k+1, B C m n, rank(b)=k 定理中的 (3.9) 式也可以改写为 min A B 2 (3.10) B C m n, rank(b) k 对于 Frobenius 范数, 我们有类似的结论, 见习题 如果 rank(a) = k n, 则 σ i = 0, i = k + 1, k + 2,..., n. 此时 k A = σ i u i vi = A k. (3.11) i=1

106 94 第三讲线性最小二乘问题 定理 3.15 (Weyl) [66, page 67] 设 A, B C m n (m n), 且 rank(b) = k. 则有 max Ax 2 σ k+1 (A), (3.12) x Ker(B), x 2=1 和 因此, 且 min Ax 2 σ n k (A). (3.13) x Ker(B), x 2=1 σ 1 (A B) σ k+1 (A), σ n (A + B) σ n k (A) (3.14) σ i+j 1 (A) σ i (B) + σ j (A B), i = 1, 2,..., n, j = 1, 2,..., n i + 1. (3.15) 证明. 不等式 (3.12) 也可以写为 : 设 L 是 C n 中的任意一个 n k 维子空间, 则有 该不等式的证明与定理 3.14 的证明类似, 不再赘述. max Ax 2 σ k+1 (A). x L, x 2=1 下面证明结论 (3.13). 令 Ṽ k+1 = [v n k, v n k+1,..., v n ] C n (k+1). 类似地, 存在向量 y C k+1 满 足 y 2 = 1, 使得 x = Ṽk+1y Ker(B). 于是 [ Ax 2 2 = U n ΣV Ṽ k+1 y = Σ I k+1 其中 Σk+1 = diag(σ n k, σ n k+1,..., σ n ). 所以 ] y 2 2 [ 0 = Σ k+1 ] y min Ax 2 σ n k (A). x Ker(B), x 2=1 不等式 (3.14) 可由 (3.12), (3.13) 以及定理 3.12 中的性质 5 得到. 下面证明不等式 (3.15). 首先证明 i = j = 1 时结论成立. 事实上, 我们有 2 2 k+1 = σn k 1+iy 2 i 2 σn k, 2 σ 1 (A) = A 2 = B + (A B) 2 B 2 + A B 2 = σ 1 (B) + σ 1 (A B). 令 C = A B, 并设 B i 1 和 C j 1 分别是 B 和 C 的秩 i 1 和秩 j 1 逼近. 则 i=1 σ 1 (B B i 1 ) = B B i 1 2 = σ i (B), σ 1 (C C j 1 ) = C C j 1 2 = σ j (C). 所以 σ i (B) + σ j (C) = σ 1 (B B i 1 ) + σ 1 (C C j 1 ) σ 1 (A B i 1 C j 1 ). 又 rank(b i 1 + C j 1 ) i + j 2, 所以由不等式 (3.14) 可知 σ i (B) + σ j (C) = σ 1 (A B i 1 C j 1 ) σ i+j 1 (A). 根据定理 3.15, 我们可以得到矩阵奇异值的最小最大定理.

107 3.4 奇异值分解 95 定理 3.16 设 σ 1 σ 2 σ n 0 是矩阵 A C m n (m n) 的奇异值, 则 σ k (A) = min dim(l)=n k+1 max Ax 2, x L, x 2=1 k = 1, 2,..., n 和 σ k (A) = 其中 L 表示 C n 的一个子空间. max dim(l)=k min Ax 2, k = 1, 2,..., n, x L, x 2=1 证明. 见习题 ( 也可以利用 Hermite 矩阵的特征值的最小最大定理 ) 引理 3.3 ( 交错不等式 ) [44, page 149] 设 A C m n, A r 是由 A 去除 r 列 ( 或 r 行 ) 后得到的子矩阵, 则 σ i (A) σ i (A r ) σ i+r (A), i = 1, 2,..., min{m, n}. 这里, 当下标 k 大于矩阵的维数时, 我们令 σ k = 0. 更进一步, 如果 B C (m r) (n s) 是 A 的子矩阵, 则 σ i (A) σ i (B) σ i+r+s (A). 证明. 只需证明 r = 1 的情形, 其余情形可以通过递推实现. 假设 A 1 是由 A 中去除第 k 列后的子矩阵. 令 e k C n 为单位矩阵的第 k 列, 即第 k 个元素是 1, 其 它均为 0. 由定理 3.16 可知 σ k (A) = min dim(l)=n k+1 max Ax 2 x L, x 2=1 min dim(l)=n k+1 max Ax 2. x L, x 2=1, x e k 如果 x e k, 则 x k = 0, 所以 Ax = A 1 x, 其中 x = [x 1,..., x k 1, x k+1,..., x n ] C n 1. 故条件 x L, x 2 = 1, x e k 就等价于 x L, x 2 = 1, 其中 L C n 1 是由 L 中的向量去除第 k 个分量后组成的集合. 因此 dim( L) = dim(l) = n k + 1 或 dim( L) = dim(l) 1 = n k. 于是 min dim(l)=n k+1 max Ax 2 x L, x 2=1, x e k min dim( L)=n k+1 或 dim( L)=n k max A 1 x 2. x L, x 2=1 又 min dim( L)=n k+1 max A 1 x 2 x L, x 2=1 min dim( L)=n k max A 1 x 2, x L, x 2=1 且 A 1 C m (n 1), 所以 σ k (A) min dim(l)=n k+1 min dim( L)=(n 1) k+1 max x L, x 2=1,x e k Ax 2 max A 1 x 2 x L, x 2=1

108 96 第三讲线性最小二乘问题 同理可得 σ k+1 (A) = = σ k (A 1 ). max dim(l)=k+1 max dim(l)=k+1 max dim( L)=k = σ k (A 1 ). min x L, x 2=1 Ax 2 min x L, x 2=1,x e k Ax 2 min A 1 x 2 x L, x 2=1 我们注意到, 在前面的证明中, 并没有要求 m n. 因此对于 m < n 的情形, 上面的结论仍然成立. 如果 A 1 是由 A 中去除第 k 行后的子矩阵. 由于 A 与 A 具有相同的奇异值, 因此只需将上面的讨论运用到 A 上即可. 引理 3.4 [44, page 170] 设 A C n n, 1 k n, 则对任意的单位列正交矩阵 U k C m k 和 V k C n k, 有 σ i (U k AV k ) σ i (A), i = 1, 2,..., k. (3.16) 因此, det(u k AV k ) σ 1 (A)σ 2 (A) σ k (A). (3.17) 证明. 我们将 U k 和 V k 都扩充成酉矩阵 U C m m 和 V C n n, 则 Uk AV k 是 U AV 的子矩阵. 由引 理 3.3 可知, σ i (Uk AV k ) σ i (U AV ). 又 U AV 与 A 有相同的奇异值, 故结论 (3.16) 成立. 利用定理 3.13 中的性质 1, 即可得到不等式 (3.17). 定理 3.17 (Weyl 不等式, 1949) [44, page 171] 设 A C n n, 其奇异值和特征值分别为 σ 1 σ 2 σ n 0 和 λ 1 λ 2 λ n. 则 λ 1 λ 2 λ k σ 1 σ 2 σ k, k = 1, 2,..., n 且当 k = n 时, 等号成立. 证明. 设 A = URU 是 A 的 Schur 分解, 其中 U C n n 是酉矩阵, R C n n 是上三角矩阵, 且其对角线元素依次为 λ 1, λ 2,..., λ n. 取 U 的前 k 列组成一个单位列正交矩阵 U k, 则 R k Uk AU k 为 U AU = R 的 k 阶顺序主子矩阵, 即 R k 也是上三角矩阵, 且其对角线元素依次为 λ 1, λ 2,..., λ k. 所以由引理 3.4 可得 λ 1 λ 2 λ k = det(r k ) = det(uk AU k ) σ 1 σ 2 σ k. 当 k = n 时, λ 1 λ 2 λ n = det(a) = σ 1 σ 2 σ n.

109 3.5 线性最小二乘问题的求解方法 奇异值扰动分析下面的定理是关于奇异值的一个扰动性质. 定理 3.18 [66, page 69] 设 A, E C m n (m n). 则 σ i (A + E) σ i (A) E 2, i = 1, 2,..., n. 证明. 直接利用不等式 (3.15) 即可, 留作习题 下面是定理 3.18 的一个推论, 也是 SVD 的一个重要应用. 推论 3.19 设 A C n n, 是任意一个相容矩阵范数, 则对任意的 ε > 0, 总存在一个矩阵 A ε 使得 A A ε ε, 其中 A ε 具有互不相同的特征值. 由推论 3.19 可知, 可对角化矩阵在所有矩阵组成的集合中是稠密的. 3.5 线性最小二乘问题的求解方法 正规方程法这里我们考虑超定线性最小二乘问题的求解. 定理 3.20 设 A R m n (m n). 则 x R n 是线性最小二乘问题 (3.1) 的解当且仅当残量 r = b Ax 与 Ran(A) ( 值域 ) 正交, 即 x 是下面的正规方程的解 A (b Ax) = 0 或 A Ax = A b. (3.18) 证明. 充分性 : 设 x 是正规方程 (3.18) 的解. 对任意向量 y R n, 由 (b Ax ) Ran(A) 可知 Ay b 2 2 = (Ax b) + A(y x ) 2 2 = Ax b A(y x ) 2 2 Ax b 2 2. 因此, x 是线性最小二乘问题 (3.1) 的解. 必要性 : 设 x 是线性最小二乘问题 (3.1) 的解. 用反证法, 假定 z A (b Ax ) 0. 取 y = x +αz, 其中 α > 0, 则有 Ay b 2 2 = Ax b + αaz 2 2 = Ax b 2 2 2α z α 2 Az 2 2. 由于 z 2 > 0, 当 α 充分小时, 有 2 z 2 2 > α Az 2 2, 即上式右端小于 Ax b 2. 2 这与 x 是最小二乘解相矛盾. 所以 z = 0, 即 A (b Ax ) = 0.

110 98 第三讲线性最小二乘问题 由定理 3.20 可知, 求线性最小二乘问题 (3.1) 的解等价于求正规方程 (3.18) 的解. 由于 A b Ran(A ) = Ran(A A), 因此正规方程 A Ax = A b 是相容 (consistent) 的, 即最小二乘解总是存在的. 当 A 非奇异时, 这个解也是唯一的. 定理 3.21 设 A R m n (m > n). 则 A A 对称正定当且仅当 A 是列满秩的, 即 rank(a) = n. 此时, 线性最小二乘问题 (3.1) 的解是唯一的, 其表达式为 x = (A A) 1 A b. 当 A 列满秩时, 我们就可以使用 Cholesky 分解来求解正规方程, 总的运算量大约为 mn n3 + O(n 2 ), 其中大部分的运算量 (mn 2 ) 是用来计算 A A ( 由于 A A 对称, 因此只需计算其下三角部分 ). 最小二乘解的几何含义根据定理 3.20, 我们可以把 b 写成 b = Ax + r, 其中 r Ran(A). (3.19) 所以 Ax 就是 b 在 Ran(A) 上的正交投影, 见图 3.2. 图 3.2. 最小二乘解的几何描述 最小二乘解可能并不唯一, 但分解 (3.19) 总是唯一的. 最小二乘与鞍点问题 由定理 3.20 可知, 线性最小二乘问题 (3.1) 等价于 A r = 0, r = b Ax, 即 [ ] [ ] [ ] I A r b =. (3.20) A 0 x 0

111 3.5 线性最小二乘问题的求解方法 99 这就是线性最小二乘问题 (3.1) 的增广方程 (augmented system). 事实上, 方程组 (3.20) 是下面方程组的 一种特殊情形 [ ] [ ] [ ] B A r f =, A 0 x g 其中 B R m m 对称半正定. 这就是通常所说的鞍点问题. 这个方程组存在唯一解当且仅当 A 列满秩 且矩阵 [B, A] 行满秩 ( 见练习 3.4). 如果 B 对称正定, 则 r = B 1 (f Ax), 代入第二个方程可得 A B 1 Ax = A B 1 f g. 这就是广义的正规方程. 其所对应的广义线性最小二乘问题是 1 min x R n 2 Ax f 2 B + 1 g x, 其中范数 B 1 的定义是 x 2 B 1 = x B 1 x, 这里要求 B 是对称正定的 QR 分解法 这里假定 A R m n (m n) 是满秩的. 设 A 的 QR 分解为 A = QR, 我们用三种不同的方法来推 导线性最小二乘问题的解. 将 Q 的扩充成一个正交矩阵, 记为 [Q, ˆQ] R m m. 于是有 Ax b 2 2 = [Q, ˆQ] (Ax b) 2 2 = [Q, ˆQ] (QRx b) 2 2 [ ] Rx Q b 2 = ˆQ b 2 = Rx Q b ˆQ b ˆQ b, 等号成立当且仅当 Rx = Q b. 所以最小二乘解为 将 b 写成 b = (QQ + I QQ )b, 则 2 2 x = R 1 Q b. Ax b = Ax (QQ + I QQ )b 2 2 = (Ax QQ b) (I QQ )b. 由 A = QR 和 Q Q = I 可知 A (I QQ ) = A R Q QQ = A R Q = 0, 所以 (Ax QQ b) (I QQ )b = b QQ (I QQ )b = 0,

112 100 第三讲线性最小二乘问题 即 Ax QQ b 与 (I QQ )b 正交. 所以 Ax b 2 2 = Ax QQ b (I QQ )b 2 2 = Rx Q b (I QQ )b 2 2 (I QQ )b 2 2, 等号成立当且仅当 Rx = Q b. 所以最小二乘解为 x = R 1 Q b. 事实上, Q 的列向量组成 Ran(A) 的一组标准正交基, 因此 QQ 是 Ran(A) 上的正交投影算子. 由图 3.2 可知, x 满足 Ax = QQ b, 即 QRx = QQ b, 由此可得 x = R 1 Q b. 解正规方程. 由定理 3.20 可知, 最小二乘解为 x = (A A) 1 A b = (R Q QR) 1 R Q b = (R R) 1 R Q b = R 1 Q b. 用 QR 分解来求最小二乘解的运算量大约为 2mn 2 ( 如果采用 Householder 变换的话, 运算量大约为 2mn n3 ). 当 m n 时, 大约为正规方程的两倍. 当 m = n 时, 几乎相同. 通常 QR 算法比较稳定, 是求解最小二乘问题的首选方法, 特别是当 A 条件数较大 ( 病态 ) 时 奇异值分解法 [ ] Σ 设 A R m n 列满秩, A = U 0 V 是 A 的奇异值分解. 令 U n 为 U 的前 n 列组成的矩阵, 即 U = [U n, Ũ], 则 [ ] 2 Ax b 2 Σ 2 = U V x b 0 2 [ ] Σ = V x [U n, 0 Ũ] b [ ] ΣV x U 2 = nb Ũ b = ΣV x Unb Ũ b 2 2 Ũ b 2 2, 等号当且仅当 ΣV x Unb = 0 时成立, 即 x = (ΣV ) 1 Unb = V Σ 1 Unb. 这就是线性最小二乘问题 (3.1) 的解

113 3.6 广义逆与最小二乘 广义逆与最小二乘 广义逆 广义逆的概念最早由 Moore [55] 于 1920 年提出, 他给出的定义如下 : 设 A C m n, 若 X C n m 满足 AX = P Ran(A), XA = P Ran(X), (3.21) 即 AX 和 XA 分别为 Ran(A) 和 Ran(X) 上的正交投影算子, 则称 X 是 A 的广义逆 年, Penrose [59] 利用下面四个矩阵方程给出了广义逆的定义. 定义 3.2 设 A C m n, 若 X C n m 满足 AXA = A (3.22) XAX = X (3.23) (AX) = AX (3.24) (XA) = XA. (3.25) 则称 X 为 A 的广义逆 ( 或 Moore-Penrose 逆, 简称 MP 逆 ), 记为 A. 方程组 (3.21) 和 (3.22)-(3.25) 分别称为 Moore 方程组和 Penrose 方程组. 可以证明, 以上两个定义是等价的. 若 A C n n 非奇异, 则 A = A 1. 定理 3.22 [88] 设 A C m n, 则满足矩阵方程 (3.22)-(3.25) 的矩阵 X C n m 存在且唯一. 证明. 存在性 : 可以通过 SVD 构造. 设 rank(a) = r > 0, 且 A 的 SVD 为 [ ] Σ1 0 A = U V, Σ 1 = diag(σ 1, σ 2,..., σ r ) R r r. 0 0 令 [ ] Σ 1 0 X = V U. 0 0 容易验证, X 满足矩阵方程 (3.22)-(3.25). 唯一性 : 假设存在 X 和 Y 都满足矩阵方程 (3.22)-(3.25). 则 X = XAX = X(AX) = XX A = XX (AY A) = X(AX) (AY ) = (XAX)(AY ) = XAY. 另一方面, Y = Y AY = (Y A) Y = A Y Y = (AXA) Y Y = (XA) (Y A) Y = XAY AY = XAY. 所以 Y = X.

114 102 第三讲线性最小二乘问题 广义逆基本性质定理 3.23 设 A C m n, 则 (1) (A ) = A; (2) (A ) = (A ), (A ) = (A ) ; (3) rank(a) = rank(a ) = rank(a A); (4) (AA ) = (A ) A, (A A) = A (A ) ; (5) (AA ) AA = AA, (A A) A A = A A; (6) A = (A A) A = A (AA ), 特别地, 若 A 列满秩, 则 A = (A A) 1 A, 若 A 行满秩, 则 A = A (AA ) 1 ; (7) 若 U, V 是酉矩阵, 则 (UAV ) = V A U. 一般来说, 当 A, B 是方阵时, (AB) B A ; AA A A; (A k ) (A ) k ; A 和 A 的非零特征值并不是互为倒数. 定理 3.24 设 A C m n, 则 Ran(AA ) = Ran(AA ) = Ran(A), Ran(A A) = Ran(A A) = Ran(A ) = Ran(A ), Ker(AA ) = Ker(AA ) = Ker(A ) = Ker(A ), Ker(A A) = Ker(A A) = Ker(A). 推论 3.25 ( 广义逆与正交投影 ) 设 A C m n, 则 P A = AA, P A = A A, 其中 P A 和 P A 分别表示 Ran(A) 和 Ran(A ) 上的正交投影变换 广义逆的计算利用 SVD 我们可以利用 A 的奇异值分解来计算 A, 但运算量较大. 因为奇异值分解通常与 AA 或 A A 的特征值分解有关. 利用满秩分解

115 3.7 最小二乘扰动分析 103 定理 3.26 设 A R m n. (1) 若 A 是列满秩矩阵, 则 A = (A A) 1 A ; (2) 若 A 是行满秩矩阵, 则 A = A (AA ) 1 ; (3) 若 A 的秩是 r min{m, n}, 且其满秩分解为 A = F G, 其中 F R m r, G R r n, 则 A = G F = G (GG ) 1 (F F ) 1 F. 利用 QR 分解定理 3.27 设 A R m n (m n) 是列满秩矩阵, 其 QR 分解为 A = QR, 其中 Q R m n, R R n n, 则 A = R 1 Q. 其他算法 其他比较重要的算法有 : Greville 递推算法, Cline 算法等 广义逆与线性最小二乘 定理 3.28 设 A R m n (m n), 则线性最小二乘问题 (3.1) 的解为 x = A b + (I P Ran(A ))z, z R n. (3.26) 证明. 参见 [88, page 85]. 通常, 线性最小二乘问题的解 (3.26) 不是唯一的. 但当 A 列满秩时, P Ran(A ) = I, 此时解唯一. 定理 3.29 设 A R m n (m n). 记线性最小二乘问题 (3.1) 的解集为 S, 则 存在唯一解, 即线性最小二乘问题 (3.1) 存在唯一的最小范数解. min x 2 (3.27) x S 证明. 参见 [88, page 85]. 3.7 最小二乘扰动分析 定理 3.30 设 A R m n (m n) 且 rank(a) = n. 设 x 是线性最小二乘问题 (3.1) 的解, x 极小化

116 104 第三讲线性最小二乘问题 (A + δa) x (b + δb) 2, 则 x x 2 x 2 ε { 2κ2 (A) cos θ } + κ 2 2(A) tan θ + O(ε 2 ), 其中 κ 2 (A) = σ 1 (A)/σ n (A), θ 为 b 与 Ran(A) 的夹角, { δa 2 ε max, δb } 2, A 2 b 2 并假定 ε κ 2 (A) < 1 ( 确保 A + δa 满秩, 从而 x 唯一确定 ). 我们记 κ LS 2κ 2(A) cos θ + κ 2 2(A) tan θ, 这就是最小二乘问题的条件数. 当 θ = 0 时, b Ran(A), 此时 κ LS = 2κ 2 (A); 当 θ = π/2 时, b Ran(A), 此时最小二乘解为 x = 0, 而 κ LS = ; 当 0 < θ < π/2 时, κ LS = O(κ 2 2(A)). 定义残量 r = b Ax, r = (b + δb) (A + δa) x, 我们有下面的性质 [41] r r 2 r 2 ε (1 + 2κ 2 (A)). 当我们使用 QR 分解或 SVD 分解求解最小二乘问题时, 由于采用的是正交变换, 它们都是数值稳 定的. 而正规方程涉及求解方程组 A Ax = A b, 其精度依赖于条件数 κ 2 (A A) = κ 2 2(A), 因为其误差 是以 κ 2 2(A) 倍数增长. 因此当 A 的条件数较大时, 正规方程法的精度会大大降低. 3.8 最小二乘问题的推广及其应用 正则化 在求解超定线性方程组时, 我们极小化 Ax b 2 2, 而对于欠定线性方程组, 我们极小化的是 x 2 2. 两者合起来就是 其中 α > 0 是权系数. 对应的目标函数记为 1 min x R n n 2 Ax b α 2 x 2 2, (3.28) J(x) = Ax b α x 2 2. 当 α > 0 时, J(x) 是一个严格凸的二次函数, 因此存在唯一的最小值点. 令 J(x) 关于 x 的一阶导数为零, 则可得 (A A + αi)x = A b. 由于 A A + αi 对称正定, 故非奇异. 所以问题 (3.28) 的唯一解为 x = (A A + αi) 1 A b.

117 3.8 最小二乘问题的推广及其应用 加权正则化 一类应用更广泛的问题是下面的加权正则化问题 1 min x R n n 2 Ax b α 2 W x 2 2, (3.29) 其中 W R p n 是广义加权矩阵, 可以是非负对角矩阵, 对称正定矩阵, 也可以是一般矩阵 ( 如一阶差分 算子, 二阶差分算子等 ). 注意, W 不一定要求是方阵. 经过类似的推导, 问题 (3.29) 的解满足 如果 A A + αw W 非奇异, 则存在唯一解 (A A + αw W )x = A b. x = (A A + αw W ) 1 A b 约束最小二乘问题 考虑带有约束的最小二乘问题 1 min x R n n 2 Ax b 2 2 (3.30) s.t. Bx = f 其中 Bx = f 是约束条件, B R p n 和 f R p 都是给定的. 对应的 Lagrange 函数为 J(x) = 1 2 Ax b λ (Bx f). 分别对 x 和 λ 求一阶导数, 并令其等于零, 可得 [ ] [ ] [ ] A A B x A b =. B 0 λ f 如果 A A 非奇异, 且 B 行满秩, 则存在唯一解 几类特殊情形 如果 A = I 且 f = 0, 则有 λ = [ B(A A) 1 B ] 1 [ B(A A) 1 A b f ] x = (A A) 1 (A b B λ). 1 min x R n n 2 x b 2 2 s.t. Bx = 0 = x = b B (BB ) 1 Bb. 如果 b = 0, 则有 min x R n n 1 2 Ax 2 2 s.t. Bx = f = x = (A A) 1 B [ B(A A) 1 B ] 1 f.

118 106 第三讲线性最小二乘问题 如果 A = I 且 b = 0, 则有 1 min x R n n 2 x 2 2 s.t. Bx = f = x = B (BB ) 1 f 应用 : 多项式数据拟合最小二乘的一个重要应用就是低次多项式数据拟合 : 已知平面上 n 个点 {(t i, f i )} n i=1, 寻找一个低次多项式来拟合这些数据. 设拟合多项式为 p(x) = a 0 + a 1 t + a 2 t a m t m. 通常 m n. 将上述 n 个点 {(t i, f i )} n i=1 代入可得 1 t 1 t 2 1 t m 1 1 t 2 t 2 2 t m t n t 2 n t m n n (m+1) a 0 f 1 a 1 f 2 =.. a m f n 或 Ax = f, 其中 A R n (m+1), x = [a 0, a 1,..., a m ]. 由于 m n, 该方程组是超定的, 解通常是不存在的. 因此, 我们寻找一个近似解, 使得残量 f Ax 2 最小, 即求解最小二乘问题 min x R m+1 f Ax 2 2 例 3.2 举例 见 应用 : 线性预测预测一个时间序列的未来走向, 其中一个常用方法就是线性预测 (linear prediction). 假定一个时间序列在 t k 时刻的值 f k 线性依赖于其前 m 个时刻的值 f k 1, f k 2,..., f k m, 即 f k = a 1 f k 1 + a 2 f k a m f k m. (3.31) 现在已经测得该时间序列的前 n 个值 f i, i = 0, 1, 2,..., n 1, 如何预测其未来的取值. 这里 n m. 将现有的数据代入关系式 (3.31) 可得 f m 1 f m 2 f m 3 f 0 f m f m 1 f m 2 f f n 2 f n 3 f n 4 f n m 1 (n m) m a 1 a 2 =. f m f m+1 a m f n 1. 或 Ax = f,

119 3.8 最小二乘问题的推广及其应用 107 其中 A R (n m) m, x = [a 1, a 2,..., a m ]. 这也是一个超定问题, 其解也是通过求解下面的最小二乘 问题来获取 min x R m f Ax 2 2 例 3.3 举例 见 应用 : 信号光滑在获取数字信号时, 由于各种各样的原因, 最后得到的信号总会带有一定的噪声. 去噪是数字信号和图像处理中的一个基本问题. 其中一个有效方法就是加权最小二乘法. 例 3.4 举例 见 应用 : 反卷积 Deconvolution Deconvolution refers to the problem of finding the input to an LTI system when the output signal is known. Here, we assume the impulse response of the system is known. 例 3.5 举例 见 例 3.6 举例 : 图像处理去模糊 见 应用 : 采样信号补全 Due to transmission errors, transient interference, or impulsive noise, some samples of a signal may be lost or so badly corrupted as to be unusable. In this case, the missing samples should be estimated based on the available uncorrupted data. To complicate the problem, the missing samples may be randomly distributed through out the signal. Filling in missing values in order to conceal errors is called error concealment. 例 3.7 举例 见

120 108 第三讲线性最小二乘问题 3.9 课后习题 练习 3.1 试给出加权正则化问题 (3.29) 存在唯一解的充要条件. [ ] I A 练习 3.2 设 A R m n, 其中 m n. 试证明 : 矩阵非奇异的充要条件是 rank(a) = m. A 0 练习 3.3 设 A R m n, 证明 : Ran(A ) = Ran(A A). [ ] B A 练习 3.4 设 B R m m 对称半正定, A R m n, 其中 m n. 试证明 : 矩阵非奇异的充要条 A 0 件是 A 列满秩且矩阵 [B, A] 行满秩 ( 即 A 列满秩且 Ker(B) Ker(A ) = {0}). 练习 3.5 设 τ 0, 向量 u, v R n 均不为零. 求矩阵 E(u, v, τ) = I τuv 的特征值. 练习 3.6 设 A R n n 是正交矩阵, 则 A 可表示成至多 n 个 Householder 变换的乘积. 练习 3.7 设 A R n n 1 是正交矩阵, 则 A 可表示成至多 2 n(n 1) 个 Givens 变换的乘积. 练习 3.8 设 x = [x 1, x 2,..., x n ] R n 是一个非零向量, H 是 Householder 矩阵, 满足 Hx = αe 1. 证明 : H 的第一列与 x 平行. 练习 3.9 试给出定理 3.4 在复数空间上的相对应的结论, 并证明. 练习 3.10 设 H k [ R k k 是 Householder ] 变换, 其中 k < n. In k 0 证明 : H n = 是 n 阶 Householder 变换. 0 H k [ ] [ ] r11 r 12 r22 练习 3.11 设 R = R 2 2, 求一个 Givens 变换 G, 使得 G r 12 RG =. 0 r 22 0 r 11 练习 3.12 设 R R n n 是一个上三角矩阵, 且对角线元素互不相同. 证明 : 存在正交矩阵 Q, 使得 Q RQ 为上三角矩阵, 且对角线元素为 R 的对角线元素的降序排列. 练习 3.13 证明定理 3.12 和定理 3.13, 即奇异值的相关性质. 练习 3.14 证明奇异值的最小最大定理, 即定理 练习 3.15 证明奇异值的扰动性质, 即定理 练习 3.16 设矩阵 A 的奇异值分解为 A = U n ΣV = n i=1 min A B F = A A k F = B C m n, rank(b)=k σ i u i v i Cm n, 证明 σ 2 k+1 + σ2 k σ2 n. [ ] [ ] 其中 A k = k 0 A 0 B σ i u i vi. ( 提示 : 利用定理 5.20, 并构造矩阵和 ) i=1 A 0 B 0 练习 3.17 设 A R n n, 证明 ρ(a) σ max (A). 练习 3.18 ( 极分解 ) 设 A C n n. 证明 : (1) 存在酉矩阵 U 和唯一的 Hermite 半正定矩阵 P, 使得 A = P U. (2) 进一步, 若 A 非奇异, 则 U 也唯一. 练习 3.19 设 A C n n.

121 3.9 课后习题 109 证明 : A 可对角化当且仅当存在 Hermite 正定矩阵 P 使得 P 1 AP 是正规矩阵. ( 提示 : 利用极分解, 但不是对 A 进行极分解 ) 练习 3.20 设 A R n n, 证明 A 2 F n λ i (A) 2. i=1 ( 提示 : 利用 F - 范数与迹的关系, 以及 Schur 分解 ) 练习 3.21 设 A C n n 有 n 个互不相同的非零特征值, 其 Schur 分解为 A = URU, 其中 U 为酉矩阵, R 为上三角矩阵. 设矩阵 B C n n 满足 AB = BA. 证明 : U BU 是上三角矩阵. 计算题 练习 3.22 用 Householder 变换计算矩阵 A = 的 QR 分解 练习 3.23 设 A R n n 是一个对角加边矩阵 a 1 b 2 b 3 b n c 2 a 2 A = c 3 a c n a n 试给出用 Givens 变换计算 A 的 QR 分解的详细算法. [ ] I A 练习 3.24 设 A R m n (m n) 且 rank(a) = n. 计算矩阵的条件数. ( 用 A 的奇异值表示 ) A 0 实践题练习 3.25 编写 Householder 变换函数 : 对任意给定的变量 x R n, 输出 v 使得 H(v)x = x 2 e 1, 其中 H(v) = I 2vv, 函数原型 : v=house2(x) 练习 3.26 编写 Householder 变换函数 : 对任意给定的变量 x R n, 输出 v 使得 H(v)x = x 2 e 1, 其中 H(v) = I βvv 且 v 的第一个分量为 1. 函数原型 : [β, v] = House3(x) 练习 3.27 编写基于 Householder 变换的 QR 分解, 函数原型 : [Q, R] = QR_Householder(A) [ ] R 练习 3.28 设 A =, 其中 R R n n 是上三角矩阵, S R m n 是稠密矩阵, 试描述 A 的基于 S Householder 变换的 QR 算法. 要求算法过程中始终保持 R 中的零元. 练习 3.29 设 A = R + uv, 其中 R R n n 是上三角矩阵, u, v R n 为非零列向量, 试给出计算 A 的 QR 分解的有效算法. ( 提示 : 使用 Givens 变换, 算法总运算量大约为 O(n 2 )) 练习 3.30 构造并实现列主元 QR 分解的算法. 练习 3.31 构造并实现矩阵的 LQ 分解算法, 即 A = LQ, 其中 L 为下三角矩阵, Q 为正交矩阵.

122

123 第四讲非对称特征值问题 设 A R n n 是一个非对称的稠密矩阵, 本章主要讨论如何计算 A 的全部特征值和特征向量. 记 A 的特征值为 λ 1, λ 2,..., λ n. 本讲中我们总是假定 λ 1 λ 2 λ n 0, 即 A 的特征值按绝对值 ( 模 ) 降序排列. 本章主要介绍以下方法 : 幂迭代算法 位移策略与反迭代技巧 正交迭代法 QR 算法与实用的 QR 算法 关于稠密矩阵特征值计算的参考资料有 : J. H. Wilkinson, The Algebraic Eigenvalue Problem, 1965 [75] ( 有中文翻译 ) B. N. Parlett, The Symmetric Eigenvalue Problem, 2nd Eds., 1998 [57] G. W. Stewart, Matrix Algorithms, Vol II: Eigensystems, 2001 [67] G. H. Golub and C. F. Van Loan, Matrix Computations, 2013 [33] P. Arbenz, The course G, Numerical Methods for Solving Large Scale Eigenvalue Problems, 幂迭代方法 幂迭代方法是计算特征值和特征向量的一种简单易用的算法. 幂迭代虽然简单, 但它却建立了计 算特征值和特征向量的算法的一个基本框架. 算法 4.1. 幂迭代算法 (Power Iteration) 1: Choose an initial guess x (0) with x (0) 2 = 1 2: set k = 0 3: while not convergence do 4: y (k+1) = Ax (k) 5: x (k+1) = y (k+1) / y (k+1) 2 6: µ k+1 = (x (k+1), Ax (k+1) ) % 内积 111

124 112 第四讲非对称特征值问题 7: k = k + 1 8: end while 下面讨论幂迭代的收敛性. 假设 (1) A R n n 是可对角化的, 即 A = V ΛV 1, 其中 Λ = diag(λ 1, λ 2,..., λ n ) C n n, V = [v 1, v 2,..., v n ] C n n, 且 v i 2 = 1, i = 1, 2,..., n. (2) 同时, 我们还假设 λ 1 > λ 2 λ 3 λ n. 由于 V C n n 非奇异, 所以它的列向量组构成 C n 的一组基. 因此迭代初始向量 x (0) 可表示为 x (0) = α 1 v 1 + α 2 v α n v n = V [α 1, α 2,..., α n ]. 我们假定 α 1 0, 即 x (0) 不属于 span{v 2, v 3,..., v n } ( 由于 x (0) 是随机选取的, 从概率意义上讲, 这个假 设通常是成立的 ). 于是我们可得 α 1 α 1 α 1 λ k 1 α A k x (0) = (V ΛV 1 ) k α 2 V = V Λ k α 2 α 2 λ k 2 2 = V = α... 1 λ k 1V α 1 α n α n α n λ k n α n α 1 又 λ i /λ 1 < 1, i = 2, 3,..., n, 所以 1 ( ) k λ2 λ 1. ( ) k λn λ 1. 故当 k 趋向于无穷大时, 向量 [ 1, α 2 α 1 ( λi lim k λ 1 ( λ2 λ 1 ) k,..., α n ) k = 0, i = 2, 3,..., n. α 1 ( λn λ 1 ) k ], k = 0, 1, 2,... 收敛到 e 1 = [1, 0,..., 0]. 所以向量 x (k) = A k x (0) / A k x (0) 2 收敛到 ±v 1, 即 A 的对应于 ( 模 ) 最大的 特征值 λ 1 的特征向量. 而 µ k = (x (k) ) Ax (k) 则收敛到 v 1Av 1 = λ 1. 显然, 幂迭代的收敛快慢取决于 λ 2 /λ 1 的大小, λ 2 /λ 1 越小, 收敛越快. 通过上面的分析可知, 幂迭代只能用于计算矩阵的模最大的特征值和其相应的特征向量. 如果 A 的模最大的特征值是唯一的, 则称其为主特征值. 当 λ 2 /λ 1 接近于 1 时, 收敛速度会非常慢. 同时, 如 果 A 的模最大特征值是一对共轭复数, 则幂迭代就可能就会失效. 4.2 反迭代方法前面已经提到, 幂迭代算法的收敛速度取决于 λ 2 /λ 1 的大小. 当它的值接近于 1 时, 收敛速度会非常缓慢. 因此, 为了加快幂迭代算法的收敛速度, 我们希望 λ 2 /λ 1 的值越小越好. 一个简单易用的方法就是使用位移策略, 即将计算 A 的特征值转化为计算 A σi 的特征值, 即对 A 做一个移位. 这里 σ 是一个给定的数, 称 σ 为位移 (shift). 为了使得幂迭代作用到 A σi 时具有更快的收敛速度, 我们要求 σ 满足下面的两个条件 :

125 4.2 反迭代方法 113 (1) λ 1 σ 是 A σi 的模最大的特征值 ; (2) max λ i σ 2 i n λ 1 σ 尽可能地小. 其中第一个条件保证最后所求得的特征值是我们所要的, 第二个条件用于加快幂迭代的收敛速度. 显然, 在实际应用中, σ 的取值并不是一件容易的事. 例 4.1 设 A = XΛX 1, 其中 Λ 为对角矩阵, 分别用幂迭代方法和带位移的幂迭代方法计算 A 的主特征值. ( 见 Eig_Power_shift.m) 位移策略在特征值计算中非常重要, 主要是用在反迭代算法和 QR 迭代算法中 反迭代算法 如果我们将幂迭代算法作用在 A 1 上, 则可求出 A 的模最小的特征值. 事实上, 结合这种思想和位 移策略, 我们就可以计算矩阵的任意一个特征值. 算法 4.2. 反迭代算法 (Inverse Iteration) 1: Choose a scalar σ and an initial vector x (0) with x (0) 2 = 1 2: set k = 0 3: while not convergence do 4: y (k+1) = (A σi) 1 x (k) 5: x (k+1) = y (k+1) / y (k+1) 2 6: µ k+1 = (x (k+1), Ax (k+1) ) 7: k = k + 1 8: end while 该算法称为反迭代算法. 显然, 在反迭代算法中, µ k 收敛到距离 σ 最近的特征值, 而 x (k) 则收敛到其对应的特征向量. 设距离 σ 最近的特征值为 λ k, 则算法的收敛速度取决于 max λ k σ 1 i n λ i σ 的大小. 显然, σ 约接近于 λ k, 其值越小, 即算法收敛越快. 若 σ λ k, 则迭代几步就可以了. 反迭代算法的另一个优点是, 只要选取合适的位移 σ, 就可以计算 A 的任意一个特征值. 但反迭代算法的缺点也很明显 : 每步迭代需要解一个线性方程组 (A σi)y (k+1) = x (k), 这就需要对 A σi 做一次 LU 分解. 另外, 与幂迭代一样, 反迭代算法一次只能求一个特征值 Rayleigh 商迭代 在反迭代算法中, 有一个很重要的问题, 就是位移 σ 的选取.

126 114 第四讲非对称特征值问题 显然, 选取 σ 的基本原则是使得其与所求的特征值越靠近越好. 这里需要指出的是, 在每步迭代中, 位移 σ 可以不一样, 即在迭代过程中可以选取不同的位移 σ. 由于在反迭代算法 4.2 中, µ k 是收敛到所求的特征值的, 所以我们可以选取 µ k 作为第 k 步的位移. 这时所得到的反迭代算法就称为 Rayleigh 商迭代 (Rayleigh Quotient Iteration), 简记为 RQI. 算法 4.3. Rayleigh 商迭代算法 (Rayleigh Quotient Iteration (RQI)) 1: Choose an initial vector x (0) with x (0) 2 = 1 2: set k = 0 3: compute σ = (x (0) ) Ax (0) 4: while not converge do 5: y (k+1) = (A σi) 1 x (k) 6: x (k+1) = y (k+1) / y (k+1) 2 7: µ k+1 = (x (k+1), Ax (k+1) ) 8: σ = µ k+1 9: k = k : end while 一般来说, 如果 Rayleigh 商迭代收敛到 A 的一个单特征值, 则至少是二次收敛的, 即具有局部二次收敛性. 如果 A 是对称的, 则能达到局部三次收敛. 在 Rayleigh 商迭代中, 由于每次迭代的位移是不同的, 因此每次迭代需要求解一个不同的线性方程组, 这使得运算量大大增加. 例 4.2 设 A = XΛX 1, 其中 Λ 为对角矩阵, 用 Rayleigh 商迭代计算 A 的特征值. ( 见 Eig_Rayleigh.m) 4.3 正交迭代方法 幂迭代和反迭代都只能同时计算一个特征对. 如果想同时计算多个特征对, 我们可以采用多个初始 向量进行迭代. 而正交迭代算法就是基于这种思想, 它能够计算 A 的一个不变子空间, 从而可以同时计 算出多个特征值. 算法 4.4. 正交迭代算法 (Orthogonal Iteration) 1: Choose an n p column orthogonal matrix Z 0 2: set k = 0 3: while not convergence do 4: compute Y k+1 = AZ k 5: Y k+1 = Z k+1 ˆRk+1 % QR 分解

127 4.4 QR 迭代方法 115 6: k = k + 1 7: end while 在算法中使用 QR 分解是为了保持 Z k 的列正交性, 使得其列向量组构成子空间 span{a i Z 0 } 的一组正交基, 以确保算法的数值稳定性. 下面我们分析该算法的收敛性质. 假设 A 是可对角化的, 即 A = V ΛV 1, 其中 Λ = diag(λ 1, λ 2,..., λ n ), 且 λ 1 λ p > λ p+1 λ n. 则可得 span{z k } = span{y k } = span{az k 1 }, k = 1, 2,..., 由此可知 span{z k } = span{a k Z 0 } = span{v Λ k V 1 Z 0 }. 我们注意到 (λ 1 /λ p ) k... Λ k V 1 Z 0 = λ k p 1... V 1 Z 0 λ k p (λ n /λ p ) k [ ] (k) W p W (k). n p 由于当 i > p 时有 λ i /λ p < 1, 所以当 k 趋于无穷大时, W (k) n p 趋向于 0. 令 V = [V p, V n p ], 则 [ ] (k) W ( ) V Λ k V 1 Z 0 = λ k p p[v p, V n p ] W (k) = λ k p V p W p (k) + V n p W (k) n p. n p 所以当 k 时, 有 span{z k } = span{v Λ k V 1 Z 0 } = span{v p W (k) p 即 span{z k } 趋向于 A 的一个 p 维不变子空间 span{v p }. + V n p W (k) n p} span{v p W (k) p } = span{v p }, 定理 4.1 给定正整数 p (1 p n), 考虑算法 4.4. 假设 A 是可对角化的, 且 λ 1 λ p > λ p+1 λ n. 则 span{z k } 收敛到 A 的一个 p 维不变子空间. 当 A 不可对角化时, 利用 Jordan 标准型, 我们可以得到同样的结论, 见 [73, 74]. 在正交迭代中, 如果我们取 Z 0 = I, 则可得到一类特殊的正交迭代算法. 此时, 在一定条件下, 正交 迭代会收敛到 A 的 Schur 标准型. 4.4 QR 迭代方法 QR 迭代算法的基本思想是通过不断的正交变换, 将 A 转化为上三角形式 ( 或拟上三角形式 ). 算法 形式非常简单, 描述如下 :

128 116 第四讲非对称特征值问题 算法 4.5. QR 迭代算法 (QR Iteration) 1: Set A 1 = A and k = 1 2: while not convergence do 3: A k = Q k R k % QR 分解 4: compute A k+1 = R k Q k 5: k = k + 1 6: end while 在该算法中, 我们有 A k+1 = R k Q k = (Q k Q k)r k Q k = Q k (Q kr k )Q k = Q k A kq k. 由这个递推关系可得 A k+1 = Q k A kq k = Q k Q k 1 A k 1Q k 1 Q k = = Q k Q k 1 Q 1 AQ 1 Q k 1 Q k. 记 Qk = Q 1 Q k 1 Q k = [ ] q (k) 1, q(k) 2,..., q(k) n, 则 A k+1 = Q k A Q k, (4.1) 即 A k+1 与 A 正交相似 QR 迭代与幂迭代的关系 记 Rk = R k R k 1 R 1, 则有 Q k Rk = Q k 1 (Q k R k ) R k 1 = Q k 1 (A k ) R k 1 = Q k 1 ( Q k 1 A Q k 1 ) R k 1 = A Q k 1 Rk 1, 由此递推下去, 即可得 Q k Rk = A k 1 Q1 R1 = A k 1 Q 1 R 1 = A k. (4.2) 故 Q k Rk e 1 = A k e 1, 这说明 QR 迭代与幂迭代有关. 假设 λ 1 > λ 2 λ n, 则当 k 充分大时, A k e 1 收敛到 A 的模最大特征值 λ 1 对应的特征向量, 故 Qk 的第一列 q (k) 1 也收敛到 λ 1 对应的特征向量. 因此, 当 k 充分大时, A q (k) 1 λ 1 q (k) 1, 此时由 (4.1) 可知, A k+1 的第一列为 A k+1 (:, 1) = Q k A q(k) 1 λ 1 Q k q(k) 1 = λ 1 e 1, 即 A k+1 的第一列的第一个元素收敛到 λ 1, 而其它元素都趋向于 0, 收敛速度取决于 λ 2 /λ 1 的大小.

129 4.4 QR 迭代方法 QR 迭代与反迭代的关系 所以有 下面观察 Qk 的最后一列. 由 (4.1) 可知 A Q k = Q k A k+1 = Q k Q k+1 R k+1 = Q k+1 R k+1, Q k+1 = A Q k R 1 k+1. 由于 Qk+1 和 Qk 都是正交矩阵, 上式两边转置后求逆, 可得 观察等式两边矩阵的最后一列, 可得 其中 c 1 为某个常数. 依此类推, 可知 ( ) 1 ( (R ) Q k+1 = Q k+1 = 1 k+1 Q k A ) 1 = (A ) 1 Qk R k+1. q (k+1) n = c 1 (A ) 1 q (k) n, q (k+1) n = c (A ) k q (1) n, 其中 c 为某个常数. 假设 A 的特征值满足 λ 1 λ 2 λ n 1 > λ n > 0, 则 λ 1 n 是 (A ) 1 的模最大的特征值. 由幂迭代的收敛性可知, q n (k+1) 收敛到 (A ) 1 的模最大特征值 λ 1 n 所对应的特征向量, 即当 k 充分大时, 有 (A ) 1 q (k+1) n λ 1 n q n (k+1). 所以 (k+1) A q n λ n q n (k+1). 由 (4.1) 可知, A k+1 的最后一列为 A k+1 (:, n) = Q (k) ka q n λ n Q k q(k) n = λ n e n, 即 A k+1 的最后一行的最后一个元素收敛到 λ n, 而其它元素都趋向于 0, 收敛速度取决于 λ n /λ n 1 的 大小 QR 迭代与正交迭代的关系下面的定理给出了 QR 迭代算法与正交迭代算法 ( 取 Z 0 = I) 之间的关系. 定理 4.2 设正交迭代算法 4.4 和 QR 算法 4.5 中所涉及的 QR 分解都是唯一的. A k 是由 QR 迭代算法 4.5 生成的矩阵, Z k 是由正交迭代算法 4.4 ( 取 Z 0 = I) 生成的矩阵, 则有 A k+1 = Z k AZ k. 证明. 我们用归纳法证明该结论. 当 k = 0 时, A 1 = A, Z 0 = I. 结论显然成立.

130 118 第四讲非对称特征值问题 设 A k = Z k 1 AZ k 1. 由于 Z k 1 是正交矩阵, 我们有 Z k ˆRk = Y k = AZ k 1 = (Z k 1 Z k 1 )AZ k 1 = Z k 1 A k = (Z k 1 Q k )R k, 即 Z k ˆRk 和 (Z k 1 Q k )R k 都是 Y k 的 QR 分解. 由 QR 分解的唯一性可知, Z k = Z k 1 Q k, ˆR k = R k. 所以 Z k AZ k = (Z k 1 Q k ) A(Z k 1 Q k ) = Q k A kq k = Q k (Q kr k )Q k = R k Q k = A k+1, 即 A k+1 = Z k AZ k. 由归纳法可知, 定理结论成立 QR 迭代的收敛性 定理 4.3 设 A = V ΛV 1 R n n, 其中 Λ = diag(λ 1, λ 2,..., λ n ), 且 λ 1 > λ 2 > > λ n. 若 V 1 的所有主子矩阵都非奇异 ( 即 V 1 存在 LU 分解 ), 则 A k 的对角线以下的元素均收敛到 0. 证明. 设 V = Q v R v 是 V 的 QR 分解, V 1 = L v U v 是 V 1 的 LU 分解, 其中 L v 是单位下三角矩阵. 则 A k = V Λ k V 1 = Q v R v Λ k L v U v = Q v R v (Λ k L v Λ k )Λ k U v. 注意到矩阵 Λ k L v Λ k 是一个下三角矩阵, 且其 (i, j) 位置上的元素为 0, i < j, ( Λ k L v Λ k) (i, j) = 1, i = j, L v (i, j)λ k i /λk j, i > j. 由于当 i > j 时有 λ i /λ j < 1, 故当 k 充分大时, λ k i /λk j 趋向于 0. 所以我们可以把 Λ k L v Λ k 写成 其中 E k 满足 lim k E k = 0. 于是 对矩阵 I + R v E k Rv 1 将其代入 (4.3) 可得 Λ k L v Λ k = I + E k, A k = Q v R v (I + E k )Λ k U v = Q v (I + R v E k R 1 v )R v Λ k U v. (4.3) 做 QR 分解 : I + R v E k R 1 v = Q Ek R Ek. 由于 E k 0, 所以 Q Ek I, R Ek I. A k = Q v Q Ek R Ek R v Λ k U v = Q v Q Ek D k (D 1 k R E k R v Λ k U v ), (4.4) 其中 D k 是对角矩阵, 其对角线元素的模均为 1, 它使得上三角矩阵 D 1 k R E k R v Λ k U v 的对角线元素均为正. 这样, (4.4) 就构成 A k 的 QR 分解. 又由 (4.2) 可知 A k = Q k Rk, 根据 QR 分解的唯一性, 我们可得 Q k = Q v Q Ek D k, Rk = D 1 k R E k R v Λ k U v. 所以由 (4.1) 可知 A k+1 = Q k A Q k

131 4.4 QR 迭代方法 119 = (Q v Q Ek D k ) V ΛV 1 Q v Q Ek D k = D k Q E k Q vq v R v ΛR 1 v = D k Q E k R v ΛR 1 v Q Ek D k. Q 1 v Q v Q Ek D k 由于 Q Ek I, 所以当 k 时, A k+1 收敛到一个上三角矩阵. 收敛速度取决于 max λ i+1 1 i<n λ i 的大小. 需要指出的是, 由于 D k 的元素不一定收敛, 故 A k+1 对角线以上 ( 不含对角线 ) 的元素不一定收 敛, 但这不妨碍 A k+1 的对角线元素收敛到 A 的特征值 ( 即 A k+1 的对角线元素是收敛的 ). 例 4.3 QR 迭代算法演示. 设 9 A = X 5 3 X 1, 1 其中 X 是由 MATLAB 随机生成的非奇异矩阵. 即 在迭代过程中, 对于 A k 的下三角部分中元素, 如果其绝对值小于某个阈值 tol, 则直接将其设为 0, a (k) ij = 0 if i > j and a (k) ij < tol. 这里我们取 tol = 10 6 max 1 i,j n { a(k) ij }. ( 见 Eig_QR.m) 带位移的 QR 迭代 为了加快 QR 迭代的收敛速度, 我们可以采用位移策略和反迭代思想. 算法 4.6. 带位移的 QR 迭代算法 (QR Iteration with shift) 1: Set A 1 = A and k = 1 2: while not convergence do 3: Choose a shift σ k 4: A k σ k I = Q k R k % QR 分解 5: Compute A k+1 = R k Q k + σ k I 6: k = k + 1 7: end while 与不带位移的 QR 迭代一样, 我们有 A k+1 = R k Q k + σ k I = (Q k Q k)r k Q k + σ k I = Q k (A k σ k I)Q k + σ k I = Q k A kq k

132 120 第四讲非对称特征值问题 所以, 带位移的 QR 算法中所得到的矩阵 A k 仍然与 A 1 = A 正交相似. 在带位移的 QR 迭代算法中, 一个很重要的问题就是位移 σ k 的选取. 在前面的分析中我们已经知 道, A k+1 (n, n) 将收敛到 A 的模最小的特征值, 且收敛速度取决于模最小特征值与模第二小特征值之间 的比值. 显然, 若 σ k 就是 A 的一个特征值, 则 A k σ k I 的模最小特征值为 0, 故 QR 算法迭代一步就收 敛. 此时 A k+1 = R k Q k + σ k I = [ ] (n 1) (n 1) A k+1. 0 σ k 如果需要计算 A 的其它特征值, 则可对子矩阵 A (n 1) (n 1) k+1 使用带位移的 QR 迭代算法. 通常, 如果 σ k 与 A 的某个特征值非常接近, 则收敛速度通常会很快. 由于 A k (n, n) 收敛到 A 的一 个特征值, 所以在实际使用中, 一个比较直观的位移选择策略是 σ k = A k (n, n). 事实上, 这样的位移选 取方法通常会使得 QR 迭代有二次收敛速度. 例 4.4 带位移的 QR 迭代算法演示. 所有数据与设置与例 4.3 相同, 在迭代过程中, 取 σ k = A k (n, n). 如果 A k (n, n) 已经收敛, 则取 σ k = A k (n 1, n 1). ( 见 Eig_QR_shift.m) 4.5 带位移的隐式 QR 迭代 QR 迭代算法中需要考虑的另一个重要问题就是运算量 : 每一步迭代都需要做一次 QR 分解和矩阵乘积, 运算量为 O(n 3 ). 即使每计算一个特征值只需迭代一步, 则计算所有特征值也需要 O(n 4 ) 的运算量. 这是令人无法忍受的. 下面我们就想办法将总运算量从 O(n 4 ) 减小到 O(n 3 ). 为了实现这个目标, 我们需要利用 Hessenberg 矩阵. 具体步骤如下 : 首先通过相似变化将 A 转化成一个上 Hessenberg 矩阵, 然后再对这个 Hessenberg 矩阵实施隐式 QR 迭代. 所谓隐式 QR 迭代, 就是在 QR 迭代中, 我们不需要进行显式的 QR 分解. 这样就可以将 QR 迭代的每一步运算量从 O(n 3 ) 降低到 O(n 2 ). 从而将总的运算量降低到 O(n 3 ) 上 Hessenberg 矩阵 设 H = (h ij ) R n n, 若当 i > j + 1 时, 有 h ij = 0, 则称 H 为上 Hessenberg 矩阵. 定理 4.4 设 A R n n, 则存在正交矩阵 Q R n n, 使得 QAQ 是上 Hessenberg 矩阵. 下面我们给出具体的转化过程. 这里我们主要使用 Householder 变换 : 对任意向量 x R n, 总存在 一个 Householder 矩阵 H = I βvv 使得 Hx = x 2 e 1, 其中 e 1 = [1, 0,..., 0]. 我们以一个 5 5 的矩阵 A 为例. 第一步 : 令 Q 1 = diag(i 1 1, H 1 ), 其中 H 1 是对应于向量 A(2 : 5, 1) 的 Householder 矩阵. 于是可得 Q 1 A =

133 4.5 带位移的隐式 QR 迭代 121 由于用 Q 1 右乘 Q 1 A 时, 不会改变 Q 1 A 第一列元素的值, 故 A 1 Q 1 AQ 1 = 第二步 : 令 Q 2 = diag(i 2 2, H 2 ), 其中 H 2 是对应于向量 A 1 (3 : 5, 2) 的 Householder 矩阵, 则用 Q 2 左乘 A 1 时, 不会改变 A 1 的第一列元素的值. 用 Q 2 右乘 Q 2 A 1 时, 不会改变 Q 2 A 1 前两列元素的值. 因此, Q 2 A 1 = 0 和 A 2 Q 2 A 1 Q 2 = 第三步 : 令 Q 3 = diag(i 3 3, H 3 ), 其中 H 3 是对应于向量 A 2 (4 : 5, 3) 的 Householder 矩阵, 则有 Q 3 A 2 = 0 和 A 3 Q 3 A 2 Q 3 = 这时, 我们就将 A 转化成一个上 Hessenberg 矩阵, 即 QAQ = A 3 其中 Q = Q 3 Q 2 Q 1 是正交矩阵, A 3 是上 Hessenberg 矩阵. 下面是将任意一个矩阵转化成上 Hessenberg 矩阵的算法. 算法 4.7. 上 Hessenberg 化 (Upper Hessenberg Reduction) 1: Set Q = I 2: for k = 1 to n 2 do 3: compute Householder matrix H k = I β k v k v k with respect to A(k + 1 : n, k) 4: A(k + 1 : n, k : n) = H k A(k + 1 : n, k : n) = A(k + 1 : n, k : n) β k v k (v ka(k + 1 : n, k : n)) 5: A(1 : n, k + 1 : n) = A(1 : n, k + 1 : n) H k 6: Q(k + 1 : n, :) = H k Q(k + 1 : n, :) 7: end for = A(1 : n, k + 1 : n) β k A(1 : n, k + 1 : n)v k v k = Q(k + 1 : n, :) β k v k (v kq(k + 1 : n, :))

134 122 第四讲非对称特征值问题 在实际计算时, 我们不需要显式地形成 Householder 矩阵 H k. 上述算法的运算量大约为 14 3 n3 + O(n 2 ). 如果不需要计算特征向量, 则正交矩阵 Q 也不用计算, 此时运算量大约为 10 3 n3 + O(n 2 ). 上 Hessenberg 矩阵的一个很重要的性质就是在 QR 迭代中能保持形状不变. 定理 4.5 设 A R n n 是非奇异上 Hessenberg 矩阵, 其 QR 分解为 A = QR, 则 Ã RQ 也是上 Hessenberg 矩阵. 证明. 设 A = QR 是 A 的 QR 分解, 则 Q = AR 1. 由于 R 是一个上三角矩阵, 所以 R 1 也是一个上三角矩阵. 因此 Q 的第 j 列是 A 的前 j 列的线性组合. 又 A 是上 Hessenberg 矩阵, 所以 Q 也是一个上 Hessenberg 矩阵. 相类似地, 我们很容易验证 RQ 也是一个上 Hessenberg 矩阵. 所以结论成立. 若 A 是奇异的, 也可以通过选取适当的 Q, 使得定理 4.5 结论成立. 由这个性质可知, 如果 A R n n 是上 Hessenberg 矩阵, 则 QR 迭代中每一步的运算量可大大降低. Hessenberg 矩阵还有一个性质, 就是在 QR 迭代过程中能保持不可约性. 定理 4.6 设 A R n n 是不可约上 Hessenberg 矩阵, 其 QR 分解为 A = QR, 则 Ã RQ 也是不可约上 Hessenberg 矩阵. 证明. 留作练习. 推论 4.7 设 A R n n 是不可约上 Hessenberg 矩阵, 则在带位移的 QR 迭代中, 所有的 A k 均是不可 约上 Hessenberg 矩阵 隐式 QR 迭代在 QR 迭代中, 我们需要先做 QR 分解 A k = Q k R k, 然后再计算 A k+1 = R k Q k. 但事实上, 我们可以将这个过程进一步简化, 即不用计算 A k 的 QR 分解, 可以直接计算 A k+1. 这就是隐式 QR 迭代. 我们这里考虑不可约的上 Hessenberg 矩阵, 即 A 的下次对角线元素都不为 0. 事实上, 若 A 是可约的, 则 A 就是一个块上三角矩阵, 这时 A 的特征值计算问题就转化成计算两个对角块的特征值问题. 隐式 QR 迭代的理论基础就是下面的隐式 Q 定理. 定理 4.8 (Implicit Q Theorem) 设 H = Q AQ R n n 是一个不可约上 Hessenberg 矩阵, 其中 Q R n n 是正交矩阵, 则 Q 的第 2 至第 n 列均由 Q 的第一列所唯一确定 ( 可相差一个符号 ). 证明. 设 H = Q AQ 和 G = V AV 都是不可约上 Hessenberg 矩阵, 其中 Q = [q 1, q 2,..., q n ], V = [v 1, v 2,..., v n ] 都是正交矩阵, 且 q 1 = v 1. 下面我们只需证明 q i = v i 或 q i = v i, i = 2, 3,..., n, 即证明 W = V Q = diag(1, ±1,..., ±1).

135 4.5 带位移的隐式 QR 迭代 123 即 所以 记 W = [w 1, w 2,..., w n ], H = [h ij ]. 则有 GW = GV Q = (V AV )V Q = V AQ = V Q(Q AQ) = V QH = W H, i+1 Gw i = h ji w j, i = 1, 2,..., n 1. j=1 h i+1,i w i+1 = Gw i i h ji w j. 因为 q 1 = v 1, 所以 w 1 = [1, 0,..., 0]. 又 G 是上 Hessenberg 矩阵, 利用归纳法, 我们可以证明 w i 的第 i+1 到第 n 个元素均为 0. 所以 W 是一个上三角矩阵. 又 W 是正交矩阵, 所以 W = diag(1, ±1,..., ±1). 由此, 定理结论成立. 由于 Q k 的其它列都是由 Q k 的第一列唯一确定 ( 至多相差一个符号 ), 所以我们只要找到一个正交 矩阵 Qk 使得其第一列与 Q k 的第一列相等, 且 Q k A k Q k 为上 Hessenberg 矩阵, 则由隐式 Q 定理可知 Q k = W Q k, 其中 W = diag(1, ±1,..., ±1). 于是 j=1 Q k A k Q k = W Q k A kq k W = W A k+1 W. 又 W A k+1 W 与 A k+1 相似, 且对角线元素相等, 而其它元素也至多相差一个符号, 所以不会影响 A k+1 的收敛性, 即下三角元素收敛到 0, 对角线元素收敛到 A 的特征值. 因此在 QR 迭代算法中, 我们可以用 Q k A k Q k 代替 Q k A k Q k. 这就是隐式 QR 迭代的基本思想. 在实际计算中, Qk 是一系列 Givens 变换的乘积. 下面我们举一个例子, 具体说明如何利用隐式 Q 定理, 由 A 1 得到 A 2. 例 4.5 设 A R 5 5 是一个不可约上 Hessenberg 矩阵, 即 A 1 = A = 第一步 : 构造一个 Givens 变换 G 1, 其转置如下 c 1 s 1 s 1 c 1 G 1 G(1, 2, θ 1) = 这里 G 1 的第一列 [c 1, s 1, 0,..., 0] 就是 A 1 σ 1 I 的第一列 [a 11 σ 1, a 21, 0,..., 0] 的单位化后

136 124 第四讲非对称特征值问题 的列向量, 其中 σ 1 是位移. 于是有 G 1 A = 和 A (1) G 1 AG 1 = 与 A 1 相比较, A (1) 在 (3, 1) 位置上多出一个非零元, 我们把它记为 +, 并称之为 bulge. 在下面 的计算过程中, 我们的目标就是将其 赶 出矩阵, 从而得到一个新的上 Hessenberg 矩阵, 即 A 2. 第二步 : 为了消去这个 bulge, 我们可以构造 Givens 变换 1 c 2 s 2 G 2 G(2, 3, θ 2) = s 2 c 2 使得 G 2 A(1) = 为了保持与原矩阵的相似性, 需要再右乘 G 2, 所以 A (2) G 2 A(1) G 2 = 此时, bugle 从 (3, 1) 位置被 赶 到 (4, 2) 位置. 第三步 : 与第二步类似, 构造 Givens 变换 1 1 G 3 G(3, 4, θ 3) = c 3 s 3 s 3 c 3 1 使得 G 3 A(2) = 这时 A (3) G 3 A(2) G 3 = 于是, bugle 又从 (4, 2) 位置又被 赶 到 (5, 3) 位置.

137 4.5 带位移的隐式 QR 迭代 125 第四步 : 再次构造 Givens 变换 1 G 4 G(4, 5, θ 4) = 1 1 c 4 s 4 s 4 c 4 使得 G 4 A(3) = 于是 A (4) G 4 A(3) G 4 = 现在, bulge 已经被 赶 出矩阵, 且 A (4) = G 4 G 3 G 2 G 1 A 1G 1 G 2 G 3 G 4 = Q 1 A Q 1 1, 其中 Q1 = G 1 G 2 G 3 G 4. 通过直接计算可知, Q 1 的第一列为 [c 1, s 1, 0, 0, 0], 即 A 1 σ 1 I 的第一列的单位化. 根据隐式 Q 定理, A 2 A (4) = Q 1 A Q 1 1 就是我们所需要的矩阵. 如果 A R n n 是上 Hessenberg 矩阵, 则使用上面的算法, 带位移 QR 迭代中每一步的运算量为 6n 2 + O(n) 位移的选取在带位移的 QR 迭代算法中, 位移的选取非常重要. 通常, 位移越离特征值越近, 收敛速度就越快. 由习题 4.10 可知, 如果位移 σ 与某个特征值非常接近, 则 A k (n, n) σ 就非常接近于 0. 这说明 A k (n, n) 通常会首先收敛到 A 的一个特征值, 所以 σ = A k (n, n) 是一个不错的选择. 但是, 如果这个特征值是复数, 这种位移选取方法就可能失效. 下面我们介绍一种针对共轭复特征值的位移选取方法, 即双位移策略. 假设 σ C 是 A 的某个复特征值 λ 的一个很好的近似, 则其共轭 σ 也应该是 λ 的一个很好的近似. 因此我们可以考虑双位移策略, 即先以 σ 为位移迭代一次, 然后再以 σ 为位移迭代一次, 如此不断交替进行迭代. 这样就有 A 1 σi = Q 1 R 1, A 2 = R 1 Q 1 + σi, (4.5) A 2 σi = Q 2 R 2, A 3 = R 2 Q 2 + σi. 容易验证 A 3 = Q 2 A 2Q 2 = Q 2Q 1A 1 Q 1 Q 2 = Q A 1 Q, 其中 Q = Q 1 Q 2. 我们注意到 σ 可能是复的, 所以 Q 1 和 Q 2 都可能是复矩阵. 但我们却可以选取适当的 Q 1 和 Q 2, 使的 Q = Q 1 Q 2 是实正交矩阵.

138 126 第四讲非对称特征值问题 引理 4.1 在双位移 QR 迭代 (4.5) 中, 我们可以选取酉矩阵 Q 1 和 Q 2 使得 Q = Q 1 Q 2 是实矩阵. 证明. 由于 Q 2 R 2 = A 2 σi = R 1 Q 1 + (σ σ)i, 所以 ( Q 1 Q 2 R 2 R 1 = Q 1 R1 Q 1 + (σ σ)i ) R 1 = Q 1 R 1 Q 1 R 1 + (σ σ)q 1 R 1 = (A 1 σi) 2 + (σ σ)(a 1 σi) = A 2 1 (σ + σ)a 1 + σσi, = A 2 1 2Re(σ)A 1 + σ 2 I R n n. 又 Q 1 Q 2 是酉矩阵, R 2 R 1 是上三角矩阵, 故 (Q 1 Q 2 )(R 2 R 1 ) 是实矩阵 A 2 1 2Re(σ)A 1 + σ 2 I = (A 1 σi)(a 1 σi) 的 QR 分解. 所以 Q 1 Q 2 和 R 2 R 1 都可以是实矩阵. 由这个引理可知, 存在 Q 1 和 Q 2, 使得 Q = Q 1 Q 2 是实正交矩阵, 从而 A 3 = Q A 1 Q 也是实矩阵. 这时, 在迭代过程 (4.5) 中, 我们无需计算 A 2, 可直接由 A 1 计算出 A 3. 具体计算过程仍然是根据隐式 Q 定理 : 我们只要找到一个实正交矩阵 Q, 使得其第一列与 A 2 1 2Re(σ)A 1 + σ 2 I 的第一列平行, 并且 A 3 = Q A 1 Q 是上 Hessenberg 矩阵即可. 由于 A 2 1 2Re(σ)A 1 + σ 2 I 的第一列为 a a 12 a 21 2Re(σ)a 11 + σ 2 a 21 (a 11 + a 22 2Re(σ)) a 21 a (4.6). 0 所以 Q 的第一列是上述向量的单位化. 其它过程可以通过隐式 QR 迭代来实现. 但此时的 bulge 是一个 2 2 的小矩阵. 因此, 在双位移隐式 QR 迭代过程中, 我们需要使用 Householder 变换. 需要指出的是, 双位移 QR 迭代算法中的运算都是实数运算. 下面我们举一个例子, 具体说明如何在实数运算下实现双位移隐式 QR 迭代算法.

139 4.5 带位移的隐式 QR 迭代 127 例 4.6 设 A R 6 6 是一个不可约上 Hessenberg 矩阵, 即 0 A 1 = A = [ ] H 1 0 第一步 : 构造一个正交矩阵 H 1 =, 其中 H1 R 3 3, 使得其第一列与向量 (4.6) 平 0 I 3 3 行. 于是有 H 1 A = + 和 A (1) H AH + 1 = 与 A 1 相比较, A (1) 在 (3, 1), (4, 1) 和 (4, 2) 位置上出现 bulge. 在下面的计算过程中, 我们的目标 就是把它们 赶 出矩阵, 从而得到一个新的上 Hessenberg 矩阵, 即 A 1. I 第二步 : 令 H 2 = 0 H 2 0, 其中 H2 R 3 3 是对应于 A(2 : 4, 1) 的 Householder 变 0 0 I 3 3 换, 使得 H 0 2 A(1) = 和 A (2) H H 2 = 这时, 我们将 bugle 向右下角方向 赶 了一个位置. I 第三步 : 与第二步类似, 令 H 3 = 0 H 3 0, 其中 H3 R 3 3 是对应于 A(3 : 5, 2) 的 0 0 I 1 1

140 128 第四讲非对称特征值问题 Householder 变换, 使得 H 0 3 A(2) = 和 A (3) H 0 3 A(2) H 3 = 此时, bugle 又被向右下角方向 赶 了一个位置. [ ] I3 3 0 第四步 : 令 H 4 =, 其中 H4 R 3 3 是对应于 A(4 : 6, 3) 的 Householder 变换, 使得 0 H 4 H 0 4 A(3) = 第五步 : 此时, 只需构造一个 Givens 变换 G 5 = G 0 5 A(4) = 和 A (4) H 0 4 A(3) H 4 = [ I G(4, 5, θ) ] , 使得 和 A (5) G 0 5 A(4) G 5 = 现在, bulge 已经被全部消除, 且 A (5) = Q AQ, 其中 Q = H 1 H 2 H 3 H 4 G 5. 通过直接计算可知, Q 的第一列即为 H 1 的第一列, 也就是向量 (4.6) 的单位化. 根据隐式 Q 定理, A (5) = Q AQ 就是双位移 QR 迭代 (4.5) 中的 A 3. 最后要考虑位移 σ 的具体选取问题. 在单位移 QR 迭代算法中, 如果 A 的特征值都是实数的话, 我们可以取 σ k = A k (n, n). 推广到复共轭特征值上, 我们可以取 A k 的右下角矩阵 [ ] Ak (n 1, n 1) A k (n 1, n) A k (n, n 1) A k (n, n) 的复共轭特征值作为双位移. 这样选取的位移就是 Francis 位移.

141 4.6 特征向量的计算 129 一般来说, 采用 Francis 位移的 QR 迭代会使得迭代矩阵的右下角收敛到一个上三角矩阵 ( 两个实特征值 ) 或一个 2 2 的矩阵 ( 一对共轭特征值 ), 而且通常会有二次渐进收敛性. 在实际计算中, 计算一个特征值一般平均只需迭代两步. 判断 QR 迭代算法是否收敛主要是看 A k (n 1, n 2) ( 或 A k (n, n 1)) 是否趋向于 0. 但需要指出的是, QR 迭代并不是对所有矩阵都收敛. 例如 : A = 对于上面的矩阵, 采用 Francis 位移的 QR 迭代算法无效. 另外, 也可以考虑多重位移策略, 参见 [73] 收缩 Deflation 收缩 (deflation) 技术是实用 QR 迭代中的一个非常重要概念. 在隐式 QR 迭代过程中, 当矩阵 A k+1 的某个下次对角线元素 a i+1,i 很小时, 我们可以将其设为 0. 由于 A k+1 是上 Hessenberg 矩阵, 这时 A k+1 就可以写成分块上三角形式, 其中两个对角块都是上 Hessenberg 矩阵. 因此我们可以将隐式 QR 迭代作用在这两个规模相对较小的矩阵上, 从而可以大大节约运算量. 4.6 特征向量的计算设 A 的特征值都是实的, R = Q AQ 是其 Schur 标准型. 若 Ax = λx, 则 Ry = λy, 其中 y = Q x 或 x = Qy. 故只需计算 R 对应于 λ 的特征向量 y 即可. 因为 R 的对角线元素即为 A 的特征值, 所以可设 λ = R(i, i). 假定 λ 是单重特征值, 则方程 (R λi)y = 0 即为即 R 11 λi R 12 R R R 33 λi y 1 y 2 y 3 = 0, (R 11 λi)y 1 + R 12 y 2 + R 13 y 3 = 0, (4.7) R 23 y 3 = 0, (4.8) (R 33 λi)y 3 = 0, (4.9) 其中 R 11 R (i 1) (i 1), R 33 R (n i) (n i). 由于 λ 是单重特征值, 故 R 33 λi 非奇异, 因此 y 3 = 0. 令 y 2 = 1, 则可得 y 1 = (R 11 λi) 1 R 12. 因此计算特征向量 y 只需求解一个上三角线性方程组. 若 λ 是多重特征值, 则计算方法类似. 但如果 A 有复特征值, 则需要利用实 Schur 标准型, 计算较复杂.

142 130 第四讲非对称特征值问题 4.7 广义特征值问题设 A, B R n n, 若存在 λ C 和非零向量 x C n 使得 Ax = λbx, (4.10) 则称 λ 为矩阵对 ( 或矩阵束, matrix pair, matrix pencil ) (A, B) 的特征值, x 为相应的特征向量. 计算矩阵对 (A, B) 的特征值和特征向量就是广义特征值问题. 当 B = I 时, 广义特征值问题就退化为标准特征值问题. 当 B 非奇异时, 广义特征值问题就等价于标准特征值问题 B 1 Ax = λx 或 AB 1 y = λy, 其中 y = Bx. 容易看出, λ 是 (A, B) 的一个特征值当且仅当 det(a λb) = 0. (4.11) 若 (4.11) 对所有 λ C 都成立, 则称矩阵对 (A, B) 是奇异矩阵对, 否则称为正则矩阵对. 当 B 非奇异时, 特征方程 (4.11) 是一个 n 次多项式, 因此恰好有 n 个特征值. 当 B 奇异时, 特征方程 (4.11) 的次数低于 n, 因此方程的解的个数小于 n. 但是, 注意到 λ 0 是 (A, B) 的特征值当且仅当 µ = 1 λ 是 (B, A) 的特征值. 因此, 当 B 奇异时, µ = 0 是 (B, A) 的特征值, 于是我们自然地把 λ = 1 µ = 当作是 (A, B) 的特征值. 所以, 广义特征值不是分布在 C 上, 而是分布在 C { } 上. 容易验证, 若 U, V 非奇异, 则矩阵对 (U AV, U BV ) 的特征值与 (A, B) 是一样的. 因此我们称这种变换为矩阵对的等价变换. 如果 U, V 是酉矩阵, 则称为酉等价变换 广义 Schur 分解 广义 Schur 分解是矩阵对在酉等价变化下的最简形式. 定理 4.9 ( 广义 Schur 分解 ) 设 A, B C n n, 则存在酉矩阵 Q, Z C n n, 使得 Q AZ = R A, Q BZ = R B, (4.12) 其中 R A, R B C n n 都是上三角矩阵. 此时矩阵对 (A, B) 的特征值为 R A 和 R B 的对角线元素的比 值, 即 当 R B (i, i) = 0 时, 对应的特征值 λ i =. λ i = R A(i, i), i = 1, 2,..., n. R B (i, i) 证明. 若 B 非奇异, 则可设 B 1 A 的 Schur 分解为 Z B 1 AZ = R, 其中 R C n n 是上三角矩阵, Z C n n 是酉矩阵. 令 BZ 的 QR 分解为 BZ = QT,

143 4.8 应用 : 多项式求根 131 其中 T C n n 是上三角矩阵, Q C n n 是酉矩阵. 则 Q BZ = T, 且 Q AZ = T R 是上三角矩阵. 令 S = T R 即可. 若 B 奇异, 则根据矩阵特征值的连续性, 存在序列 {B k }, 使得 B k 非奇异, 且收敛到 B. 由上面的证明可知, 存在酉矩阵 Q k 和 Z k, 使得 Q k B kz k 和 Q k AZ k 都是上三角矩阵. 由于 {Q k } 和 {Z k } 都是有界的, 因此存在收敛子列. 记它们的极限分别为 Q 和 Z, 由矩阵乘积的连续性可知, Q 和 Z 都是酉矩阵, 且 Q BZ 和 Q AZ 都是上三角矩阵. 与实 Schur 分解类似, 当 A, B 都是实矩阵时, 我们有相应的广义实 Schur 分解, 具体证明过程可参见相关资料. 定理 4.10 ( 广义实 Schur 分解 ) 设 A, B R n n, 则存在正交矩阵 Q, Z R n n, 使得 Q AZ = T A, Q BZ = T B, (4.13) 其中 T A, T B R n n 都是拟上三角矩阵 QZ 方法 QZ 方法是用于计算 (A, B) 的广义 Schur 分解的方法, 是 QR 方法的自然推广, 实质上可以看作是 将 QR 方法作用到矩阵 AB 1 上. QZ 方法的详细推导和实现过程可参见相关资料, 如 [49, 67, 90]. 4.8 应用 : 多项式求根 考虑 n 次多项式 p n (x) = a n x n + a n 1 x n a 1 x + a 0. (4.14) 这里假定 a i 都是实数, 且 a n 0. 由代数学基本定理可知, p n (x) 在复数域中有且仅有 n 的零点 ( 其中重根按重数计 ). 当 n = 1 时, 可直接求解. 当 n = 2 时, 可以通过求根公式求解. 当 n = 3 时, 也存在相应的求根公式, 但不那么直观, 需要一定的构造技巧才能导出. 当 n = 4 时, 可以从三次方程求根公式中导出相应的求根公式. 而当 n 5 时, Abel 证明了不存在求根公式, 这意味着只能用数值方法 ( 迭代法 ) 求解. 从理论上讲, 任何求解非线性方程的迭代法都可以用来计算多项式的零点, 如著名的 Newton 法. 计算出一个零点后, 通过收缩技术, 将原问题转化为 n 1 多项式零点问题, 然后继续用迭代法求解. 如此不断重复, 直到求出所有的零点. 但由于舍入误差等原因, 对于高次多项式, 随着计算过程的推进, 计算误差会越来越大, 最后的计算结果往往无法令人满意. 在 MATLAB 中, 命令 roots 可以计算出多项式的所有零点, 其使用的方法就是计算矩阵特征值的 QR 迭代方法. 首先将多项式 (4.14) 转化为首项系数为 1 的多项式, 记为 q n (x) = x n + c n 1 x n c 1 x + c 0.

144 132 第四讲非对称特征值问题 多项式 q n (x) 可以看作是某个 n 阶矩阵的特征值多项式, 如 : 0 c c 1 A = c n 1 我们称矩阵 A 为 q n (x) 的友矩阵. 这样, 计算多项式 q n (x) 的零点问题就转化为计算 A 的特征值问题. 由于 A 已经是上 Hessenberg 矩阵, 因此隐式 QR 迭代方法的第一步 ( 上 Hessenberg 化 ) 就不用做了. 虽然 A 上三角部分大多是零, 而且发布也很有规律. 但无论是单位移 QR 迭代还是双位移 QR 迭代, 经过一步迭代后, 这些零元素都会消失, 因此总运算量仍然是 O(n 3 ). 因此, 如何利用 A 的特殊结构, 降低 QR 方法的运算量和存储量, 一直是颇受关注的问题. 直到最近, 陆续有学者 [10, 19, 76] 提出了快速 QR 方法, 将运算量降为 O(n 2 ), 存储量也降为 O(n). 主要思想是将 A 写成一个酉矩阵与秩一矩阵之差 : 0 1 c c 1 A =.... [0, 0,..., 1] U xy c n 1 易知, 经过一次 QR 迭代后, 仍可以写成一个酉矩阵与秩一矩阵之差. 基于这种观察, 就可以设计出快速的 QR 迭代方法, 详细过程可参见 [10, 19, 76], 或 [90]. 4.9 课后习题 练习 4.1 设 J = λ 练习 4.2 设 A C n n. 证明 :. C m m, 计算其特征值 λ 对应的特征向量和左特征向量... 1 λ (1) 若 A 是上三角矩阵, 且 A A = AA, 则 A 必定是对角矩阵 ; (2) A 是正规矩阵的充要条件是 A 酉相似于一个对角矩阵 ; (3) 设 λ 1, λ 2,..., λ n 是 A 的特征值, 则 A 是正规矩阵的充要条件是 n λ i 2 = A 2 F. 练习 4.3 设 λ 1, λ 2 C 是 A C n n 的两个互不相同的特征值, x C n 是 λ 1 的特征向量, y C n 是 λ 2 的左特征向量. 证明 : y x = 0. 练习 4.4 设 A C m n, B C n m, 证明 : AB 与 BA 具有相同的非零特征值. 练习 4.5 设 A C m m, B C n n, C C m n, 考虑矩阵方程 AX XB = C. i=1

145 4.9 课后习题 133 (1) 证明 : 当 A 和 B 没有共同特征值时, 矩阵方程存在唯一解. ( 提示 : 利用 Kronecker 积, 上述矩阵方程等价于 (I n A B I m )vec(x) = vec(c), 其中 vec( ) 表示将矩阵按列排列得到的向量 ) (2) 当 A 和 B 没有共同特征值时, 给出求解算法. ( 提示 : 利用 Schur 分解, 将 A 和 B 转化为相应的上三角矩阵 ) 练习 4.6 设 A C n n 可对角化, 其特征值为 λ 1, λ 2,..., λ n. n 证明 : λ i 2 = min det(s) 0 S 1 AS 2 F. 练习 4.7 设 i=1 A 11 A 12 A 1k A 22 A 2k A =.,... A kk 其中 A ii 都是方阵. 证明 : A 的特征值即为对角块 A 11, A 22,..., A kk 的特征值的并. 练习 4.8 设 A = QH = V G 是非奇异矩阵 A C n n 的两个 QR 分解, 其中 Q, V C n n 是酉矩阵, H, G C n n 是上三角矩阵. 证明 : 若存在 α 1 C 满足 α 1 = 1, 使得 q 1 = α 1 v 1, 则存在对角矩阵 W = diag(α 1, α 2,..., α n ) C n n 满足 α i = 1, 使得 Q = V W, H = W 1 G. 练习 4.9 设 H R n n 是不可约上 Hessenberg 矩阵, 证明 : 存在对角矩阵 D 使得 D 1 HD 的次对角元素都为 1. 若 H 的次对角元素都小于 1 或都大于 1, 估计 D 的谱条件数 κ 2 (D). 练习 4.10 设 H = [h ij ] R n n 是上 Hessenberg 矩阵, 其 QR 分解为 H = QR, 其中 R = [r ij ] R n n 是上三角矩阵. 证明 : r kk > h k+1,k, k = 1, 2,..., n 1. 因此, (1) 若 H 不可约, 则 r kk > 0, k = 1, 2,..., n 1; (2) 若 H 不可约且奇异, 则 r nn = 0. ( 提示 : 观察 H 的 QR 分解过程, 借助 Givens 变换 ) 练习 4.11 证明定理 4.6 : 设 A R n n 是不可约上 Hessenberg 矩阵, 其 QR 分解为 A = QR, 则 Ã RQ 也是不可约上 Hessenberg 矩阵. 计算题练习 4.12 用 Householder 变换, 将一个给定的矩阵 A R 4 4 化为上 Hessenberg 型. 练习 4.13 考虑用 Householder 变换将矩阵上 Hessenberg 化的算法, 给出具体的乘法运算次数和加减运算次数.

146 134 第四讲非对称特征值问题 练习 4.14 证明矩阵 的特征多项式是 a a 1 A = an a n 1 p(λ) = λ n + a n 1 λ n a 1 λ + a 0. 实践题 练习 4.15 编写 MATLAB 函数, 实现矩阵的上 Hessenberg 化, 即算法 4.7. [H, Q]=hessenberg(A)

147 第五讲对称特征值问题 设 A R n n 是对称矩阵. 在计算 A 的特征值和特征值向量时, 我们可以充分利用 A 的对称结构, 一方面尽可能地减少运算量, 另一方面也能构造出更加快速高效的算法. 关于对称矩阵的特征值和特征值向量, 目前常用算法有 : Jacobi 迭代 : 最古老的方法, 收敛速度较慢, 但精度较高, 且很适合并行计算. Rayleigh 商迭代 : 利用 Rayleigh 商作为位移的反迭代算法, 一般具有三次收敛性. 对称 QR 迭代 : 计算对称矩阵的特征值和特征向量的 QR 算法. 如果只需计算对称三对角矩阵的所 有特征值, 则该算法是目前最快的方法 ( 运算量为 O(n 2 )). 如果需要计算所有的特征值和特征向量, 则运算量约为 6n 3. 分而治之法 (Divide-and-Conquer) : 计算对称三对角矩阵的特征值和特征值向量的一种快速算法. 基本思想是将大矩阵分解成小矩阵, 然后利用递推思想求特征值和特征向量. 在最坏的情形下, 运 算量为 O(n 3 ), 但在实际应用中, 平均为 O(n 2.3 ). 如果使用快速多极子算法 (FMM) 后, 理论上的运 算量可降低到 O(n log p n), 其中 p 是一个较小的整数, 这使得分而治之算法成为目前求解对称三对 角矩阵的所有特征值和特征向量的最快方法之一. 对分法和反迭代 : 对分法主要用于求解对称三对角矩阵在某个区间中的特征值, 运算量约为 O(kn), 其中 k 为所需计算的特征值的个数. 反迭代用于计算特征向量, 在最佳情况下, 即特征值 适当分 离 时, 运算量约为 O(kn), 但在最差情况下, 即特征值成串地紧靠在一起时, 运算量约为 O(k 2 n), 而且不能保证特征向量的精度 ( 虽然实际上它几乎是精确的 ). 除了 Jacobi 迭代和 Rayleigh 商迭代外, 其余算法都需要先将对称矩阵三对角化. 这个过程大约需 4 8 花费 3 n3 的工作量, 如果需要计算特征向量的话, 则运算量约为 3 n Jacobi 迭代 该算法的基本思想是通过一系列的 Jacobi 旋转 J k 将 A 正交相似于一个对角矩阵, 即 A (0) = A, A (k+1) = J k A(k) J k, k = 0, 1,..., 且 A (k) 收敛到一个对角矩阵, 其中 J k 为正交矩阵. 135

148 136 第五讲对称特征值问题 Jacobi 旋转 J k 的构造 我们通常选取 J k 为 Givens 变换, 即 J k = G(i k, j k, θ k ) = i k j k i k cos θ k sin θ k... j k sin θ k cos θ k 由于 A (k) 是对称矩阵, 所以可以选取适当的 θ k, 将 A (k) (i, j) 和 A (k) (j, i) 化为 0. 引理 5.1 设 A R 2 2 是对称矩阵, 则存在 Givens 变换 G R 2 2 使得 G AG 为对角阵. 证明. 设 则 [ ] [ ] a b cos θ sin θ A =, G =, b c sin θ cos θ [ ] [ ] [ ] cos θ sin θ a b cos θ sin θ G AG = sin θ cos θ b c sin θ cos θ [ ] a cos 2 θ + c sin 2 1 θ + b sin 2θ 2 (c a) sin 2θ + b cos 2θ = 1 2 (c a) sin 2θ + b cos 2θ a sin2 θ + c cos 2 θ b sin 2θ 令 1 2 (c a) sin 2θ + b cos 2θ = 0 即得 解得 故引理结论成立. tan θ = a c 2b = cot 2θ = 1 tan2 θ 2 tan θ. sign(τ) τ τ 2, τ = a c 2b. 为了使得 A (k) 收敛到一个对角矩阵, 其非对角元素必须趋向于 0. 记 off(a) 为所有非对角元素的平 方和, 即 off(a) = a 2 ij = A 2 F i j 我们的目标就是使得 off(a) 尽快趋向于 0. n a 2 ii, i=1

149 5.1 Jacobi 迭代 137 引理 5.2 设 A = [a ij ] n n R n n 是对称矩阵, Â = [â ij ] n n = J AJ, J = G(i, j, θ), 其中 θ 的选取 使得 â ij = â ji = 0, 则 off(â) = off(a) 2a2 ij. 证明. 设 A = [a 1, a 2,..., a n ]. 令 Ã = J A = [ã ij ] n n. 由于 J 是正交阵, 故 J a k 2 = a k 2, k = 1, 2,..., n. 又 J 左乘 a k 时, 只影响其第 i, j 个元素的值, 故由 J a i 2 = a i 2 和 J a j 2 = a j 2 可得 ã 2 ii + ã 2 ji = a 2 ii + a 2 ji, ã 2 ij + ã 2 jj = a 2 ij + a 2 jj. (5.1) 同理, 由 Â = ÃJ 可得 â 2 ii + â 2 ij = ã 2 ii + ã 2 ij, â 2 ji + â 2 jj = ã 2 ji + ã 2 jj. (5.2) 又 â ij = â ji = 0, 故 â 2 ii + â 2 jj = a 2 ii + a 2 jj + a 2 ij + a 2 ji = a 2 ii + a 2 jj + 2a 2 ij. 由于 J AJ 只影响 A 的第 i, j 行和第 i, j 列, 故对角线元素中只有 a ii 和 a jj 受影响. 所以 n n â 2 kk = a 2 kk + 2a 2 ij, k=1 k=1 故 即引理结论成立. n n off(â) = Â 2 2 â 2 kk = A 2 2 a 2 kk 2a 2 ij = off(a) 2a 2 ij, k=1 k=1 由此可知, off(a (k) ) 总是不断减小的. 下面给出 Jacobi 迭代算法. 算法 5.1. Jacobi 迭代算法 1: Given a symmetric matrix A R n n 2: if eigenvectors are desired then 3: set J = I and shift = 1 4: end if 5: while not converge do 6: choose an index pair (i, j) such that a ij 0 7: τ = (a ii a jj )/(2a ij ) 8: t = sign(τ)/( τ τ 2 ) % 计算 tan θ 9: c = 1/ 1 + t 2 % 计算 cos θ 10: s = c t % 计算 sin θ 11: A = G(i, j, θ) AG(i, j, θ) % 实际计算时不需要做矩阵乘积 12: if shift = 1 then 13: J = J G(i, j, θ)

150 138 第五讲对称特征值问题 14: end if 15: end while 该算法涉及到 a ij 的选取问题, 一种直观的选取方法就是使得 a ij 为所有非对角元素中绝对值最大的一个, 于是我们就得到下面的经典 Jacobi 算法. 算法 5.2. 经典 Jacobi 迭代算法 1: Given a symmetric matrix A R n n 2: if eigenvectors are desired then 3: set J = I and shift = 1 4: end if 5: while off(a)> tol do 6: choose (i, j) such that a ij = max k l a kl 7: τ = (a ii a jj )/(2a ij ) 8: t = sign(τ)/( τ τ 2 ) 9: c = 1/ 1 + t 2 10: s = c t 11: A = G(i, j, θ) AG(i, j, θ) 12: if shift = 1 then 13: J = J G(i, j, θ) 14: end if 15: end while 可以证明, 经典 Jacobi 算法至少是线性收敛的. 定理 5.1 对于经典 Jacobi 算法 5.2, 有 off(a (k+1) ) ( 1 1 ) off(a (k) ), N = N n(n 1). 2 故 k 步迭代后, 有 off(a (k) ) ( 1 1 ) k ( off(a (0) ) = 1 1 ) k off(a). N N ( 证明. 由于在经典 Jacobi 算法 5.2 中, a ij = max k l a kl, 故 off(a (k) ) n(n + 1) 所以由引理 5.2 可知 ( 2 a (k) ij ) 2 1 N off(a(k) ), N = ( off(a (k+1) ) = off(a (k) ) a (k) ij n(n 1). 2 ) ( ) off(a (k) ). N a (k) ij ) 2, 即 事实上, 经典 Jacobi 算法最终是二次局部收敛的.

151 5.2 Rayleigh 商迭代 139 定理 5.2 经典 Jacobi 算法 5.2 是 N 步局部二次收敛的, 即对足够大的 k, 有 off ( A (k+n)) ( = O off 2( A (k))). 由于在经典 Jacobi 算法中, 每一步都要寻找绝对值最大的非对角元, 比较费时, 因此它并不实用. 我 们可以通过逐行扫描来选取 (i, j), 这就是循环 Jacobi 迭代算法. 算法 5.3. 循环 Jacobi 迭代算法 ( 逐行扫描 ) 1: Given a symmetric matrix A R n n 2: if eigenvectors are desired then 3: set J = I and shift = 1 4: end if 5: while off(a)> tol do 6: for i = 1 to n 1 do 7: for j = i + 1 to n do 8: if a ij 0 then 9: τ = (a ii a jj )/(2a ij ) 10: t = sign(τ)/( τ τ 2 ) 11: c = 1/ 1 + t 2 12: s = c t 13: A = G(i, j, θ) AG(i, j, θ) 14: if shift = 1 then 15: J = J G(i, j, θ) 16: end if 17: end if 18: end for 19: end for 20: end while 循环 Jacobi 也具有局部二次收敛性 [75, page 270]. 5.2 Rayleigh 商迭代 在反迭代算法中, x i 的 Rayleigh 商是特征值 λ i 的近似, 因此我们可以把它作为位移, 于是就得到下 面的 Rayleigh 商迭代算法. 算法 5.4. Rayleigh 商迭代 1: Given an initial guess x 0 with x 0 2 = 1

152 140 第五讲对称特征值问题 2: compute the Rayleigh quotient ρ 0 = x 0 Ax 0 3: set i = 1 4: while not converge do 5: σ = ρ i 1 6: y i = (A σi) 1 x i 1 7: x i = y i / y i 2 8: ρ i = x i Ax i 9: i = i : end while 关于 Rayleigh 商迭代的收敛性, 我们有下面的结论. 定理 5.3 如果特征值是单重的, 则当误差足够小时, Rayleigh 商迭代中每步迭代所得的正确数字的位数增至三倍, 即 Rayleigh 商迭代是局部三次收敛的. 证明. 设 A = QΛQ, 令 ˆx i = Q x i, 则在 Rayleigh 商迭代算法中 ρ i = x i Ax i = ˆx i Q AQˆx i = ˆx i Λˆx i. 令 ŷ i = Q y i, 则 ŷ i = Q (A ρ i 1 I) 1 x i = (Q AQ ρ i 1 I) 1ˆx i 1 = (Λ ρ i 1 I) 1ˆx i 1, 即, 以初始向量 x 0 对 A 做 Rayleigh 商迭代 等价于 以初始向量 ˆx 0 对 Λ 做 Rayleigh 商迭代, 即它们有相同的收敛性. 因此, 不失一般性, 我们可以假定 A = Λ 为对角阵, 此时 A 的特征向量为 e i, i = 1, 2,..., n. 我们假定 x i 收敛到 e 1. 令 d i = x i e 1, 则 d i 2 0. 为了证明算法具有局部三次收敛, 我们需要证明 : 当 ε i = d i 2 充分小时, 有 ε i+1 = d i+1 2 = x i+1 e 1 2 = O(ε 3 i ). 我们注意到 1 = x i x i = (e 1 + d i ) (e 1 + d i ) = 1 + 2d i (1) + d i d i = 1 + 2d i (1) + ε 2 i, 其中 d i (1) 表示 d i 的第一个元素. 故 d i (1) = ε 2 i /2. 所以 ρ i = x i Λx i = (e 1 + d i ) Λ(e 1 + d i ) = e i Λe 1 + 2e 1 Λd i + d i Λd i λ 1 η, 其中 η = (2e 1 Λd i + d i Λd i) = 2λ 1 d i (1) d i Λd i = λ 1 ε 2 i d i Λd i. 于是 η λ 1 ε 2 i + Λ 2 d i Λ 2 ε 2 i. 由 Rayleigh 商算法 5.4 可知 y i+1 = (Λ ρ i I) 1 x i [ xi (1) x i (2) x i (n) =,,..., λ 1 ρ i λ 2 ρ i λ n ρ i [ 1 + di (1) d i (2) d i (n) =,,..., λ 1 ρ i λ 2 ρ i λ n ρ i ] ]

153 5.2 Rayleigh 商迭代 141 其中 [ 1 ε 2 = i /2, η = 1 ε2 i /2 η 1 ε2 i /2 η ˆd i+1 = 因为 λ 1 是单重特征值, 所以 故当 ε i 足够小时, 于是我们有 即 ˆd 2 i+1 = O(ε 3 i ). 又 d i (2) λ 2 λ 1 + η,..., [ 1, ] d i (n) λ n λ 1 + η d i (2)η (1 ε 2 i /2)(λ 2 λ 1 + η),..., d i (n)η (1 ε 2 i /2)(λ n λ 1 + η) (e 1 + ˆd i+1 ). [ ] d i (2)η 0, (1 ε 2 i /2)(λ 2 λ 1 + η),..., d i (n)η (1 ε 2 i /2)(λ. n λ 1 + η) gap(λ 1, Λ) min i 1 λ i λ 1 > 0, λ j λ 1 + η λ j λ 1 η gap(λ 1, Λ) η gap(λ 1, Λ) 2 Λ 2 ε 2 i > 0. ˆd 2 d i 2 η i+1 (1 ε 2 i /2)(gap(λ 1, Λ) η ) 2 Λ 2 ε 3 i (1 ε 2 i /2)(gap(λ 1, Λ) η ), 1 ˆd 2 i+1 e 1 + ˆd 2 i ˆd 2 i+1, ] 即 由于 1 e 1 + ˆd 2 2 i+1 ˆdi+1. x i+1 = y i+1 = e 1 + ˆd i+1 y i+1 2 e 1 + ˆd 2, i+1 所以 ( 1 e 1 + ˆd ) 2 i+1 e 1 + ˆd i+1 2 d i+1 2 = x i+1 e 1 2 = e 1 + ˆd 2 i+1 1 e 1 + ˆd 2 2 i+1 + ˆdi+1 e 1 + ˆd 2 i+1 2 ˆd 2 i+1 e 1 + ˆd 2. i+1 又 ˆd 2 i+1 = O(ε 3 i ), 故 ε i+1 = d i+1 2 = O(ε 3 i ). 关于 RQI 算法的全局收敛性, 可见参考文献 [57].

154 142 第五讲对称特征值问题 5.3 对称 QR 迭代 将带位移的隐式 QR 算法运用到对称矩阵, 就得到对称 QR 迭代算法. 基本步骤 1. 对称三对角化 : 利用 Householder 变换, 将 A 化为对称三对角矩阵, 即寻找正交矩阵 Q 使得 T = QAQ 为对称三对角矩阵 ; 2. 使用带 ( 单 ) 位移的隐式 QR 迭代算法计算 T 的特征值与特征值向量 ; 3. 计算 A 的特征向量. 对称三对角化任何一个对称矩阵 A R n n 都可以通过正交变换转化成一个对称三对角矩阵 T. 这个过程可以通过 Householder 变换来实现, 也可以通过 Givens 变换来实现. 如果 A 是一个稠密矩阵, 则 Givens 变换的总运算量大约是 Householder 变换的两倍, 因此建议使用 Householder 变换. 对称 QR 迭代算法的运算量 三对角化需要 4n 3 /3 + O(n 2 ), 如果需要计算特征向量, 则运算量为 8n 3 /3 + O(n 2 ); 对 T 做带位移的隐式 QR 迭代, 每次迭代的运算量为 6n; 计算 T 的特征值时, 假定每个平均迭代 2 步, 则计算所有特征值的运算量为 12n 2 ; 若要计算 T 的所有特征值和特征向量, 则运算量为 6n 3 + O(n 2 ); 若只要计算 A 的所有特征值, 运算量为 4n 3 /3 + O(n 2 ); 若需要计算 A 的所有的特征值和特征向量, 则运算量为 26n 3 /3 + O(n 2 ); 位移的选取 Wilkinson 位移 位移的好坏直接影响到算法的收敛速度. 我们可以通过下面的方式来选取位移. 设 A (k) = a (k) 1 b (k) 1 b (k) b (k) b (k) n 1 n 1 a (k) n 一种简单的位移选取策略就是令 σ k = a (k) n. 事实上, a (k) n 就是收敛到特征向量的迭代向量的 Rayleigh 商. 这种位移选取方法几乎对所有的矩阵都有三次渐进收敛速度, 但也存在不收敛的例子, 故我们需要 对其做一些改进. 如果在 QR 迭代算法中使用位移 σ k = a (k) n, 而在 Rayleigh 商迭代算法 5.4 中取 x 0 = e n = [0,..., 0, 1], 则利用 QR 迭代与反迭代之间的关系可以证明 : QR 迭代算法中的 σ k 与 Rayleigh,

155 5.4 分而治之法 143 商迭代算法中的 ρ k 相等. 一种有效的位移是 Wilkinson 位移, 即取子矩阵 通过计算可得 Wilkinson 位移为 σ = a (k) n + δ sign(δ) δ 2 + 出于稳定性方面的考虑, 我们通常用下面的计算公式 σ = a (k) n [ a (k) n 1 b (k) n 1 ] b (k) n 1 a (k) n ( ) 2, b (k) n 1 其中 δ = 1 2 (a(k) n 1 a(k) n ). ( δ + sign(δ) ) 2 b (k) n 1 δ 2 + ( ). 2 b (k) n 1 的最接近 a (k) n 的特征值作为位移. 定理 5.4 采用 Wilkinson 位移的 QR 迭代是整体收敛的, 且至少是线性收敛. 事实上, 几乎对所有的对 称矩阵都是渐进三次收敛的. 证明. 见参考文献 [33, 57]. 例 5.1 带 Wilkinson 位移的隐式 QR 迭代算法收敛性演示 ( 见 [22, page 214]), 相应的 MATLAB 代码为 TriQR.m 5.4 分而治之法 分而治之 (Divide-and-Conquer) 算法是由 Cuppen [21] 于 1981 年首次提出, 但直到 1995 年才出现稳 定的实现方式 [39]. 该算法是目前计算维数大于 25 的矩阵的所有特征值和特征向量的最快算法. 下面 我们介绍该算法. 考虑不可约对称三对角矩阵 a 1 b 1. b am 1 b m 1 b m 1 a m b m T = b m a m+1 b m+1. b..... m bn 1 b n 1 a n

156 144 第五讲对称特征值问题 = a 1 b 1 b am 1 b m 1 b m 1 a m b m a m+1 b m b m+1 b m bn 1 + b m b m b m b m [ T1 0 ] b n 1 a n = 0 T 2 + b m vv, 其中 v = [0,..., 0, 1, 1, 0,..., 0]. 假定 T 1 和 T 2 的特征值分解已经计算出来了, 即 T 1 = Q 1 Λ 1 Q 1, T 2 = Q 2 Λ 2 Q 2, 下面考虑 T 的特征值分解. 首先介绍一个引理. 引理 5.3 设 x, y R n, 则 det(i + xy ) = 1 + y x. 证明. 见习题 5.2. 我们首先考虑 T 的特征值与 T 1 和 T 2 的特征值之间的关系. [ ] T1 0 T = + b m vv 0 T 2 [ ] Q1 Λ 1 Q 1 0 = 0 Q 2 Λ 2 Q + b m vv 2 [ ] ([ ] ) [ ] Q1 0 Λ1 0 = + b m uu Q1 0, 0 Q 2 0 Λ 2 0 Q 2 其中 [ ] [ ] Q1 0 Q 1 的最后一列 u = v = 0 Q 2 Q. 2 的第一列 令 α = b m, D = diag(λ 1, Λ 2 ) = diag(d 1, d 2,..., d n ), 并假设 d 1 d 2 d n. 则 T 的特征值与 D + αuu 的特征值相同. 下面计算 D + αuu 的特征值. 设 λ 是 D + αuu 的一个特征值, 若 D λi 非奇异, 则 det(d + αuu λi) = det(d λi) det(i + α(d λi) 1 uu ). 故 det(i + α(d λi) 1 uu ) = 0. 又由引理 5.3 可知 det(i + α(d λi) 1 uu ) = 1 + αu (D λi) 1 u = 1 + α n i=1 u 2 i d i λ f(λ).

157 5.4 分而治之法 145 故求 A 的特征值等价于求特征方程 (secular equation) f(λ) = 0 的根. 由于 n f u 2 i (λ) = α (d i λ) 2, 当所有的 d i 都互不相同, 且所有的 u i 都不为零时, f(λ) 在 λ d i 处都是严格单调的 ( 见下图 ). i= ( 图 5.1. f(λ) = λ λ λ λ ) 的图像 所以 f(λ) 在每个区间 (d i+1, d i ) 内都有一个根, 共 n 1 个, 另一个根在 (d 1, ) ( 若 α > 0) 或 (, d n ) ( 若 α < 0) 中. 由于 f(λ) 在每个区间 (d i, d i+1 ) 内光滑且严格单调递增 (α > 0) 或递减 (α < 0), 所以在实际计算中, 可以使用对分法, 牛顿类方法, 或有理逼近等算法来求解. 通常都能很快收敛, 一般只需迭代几步即可. 因此, 计算一个特征值的运算量约为 O(n), 计算 D + αuu 的所有特征值的运算量约为 O(n 2 ). 当所有特征值计算出来后, 我们可以利用下面的引理来计算特征向量. 引理 5.4 设 D R n n 为对角矩阵, u R n, α R, 若 λ 是 D + αuu 的特征值, 则 (D λi) 1 u 是其对应的特征向量, 且运算量为 O(n). 证明. 由引理 5.3 可知 0 = det(d + αuu λi) = det(d λi) det ( I + α(d λi) 1 uu ) = det(d λi) (1 + αu (D λi) 1 u ), 故 1 + αu (D λi) 1 u = 0, 即 αu (D λi) 1 u = 1. 直接计算可得 (D + αuu ) ( (D λi) 1 u ) = (D λi + λi + αuu )(D λi) 1 u = u + λ(d λi) 1 u + ( αu (D λi) 1 u ) u = u + λ(d λi) 1 u u 即引理结论成立. = λ(d λi) 1 u,

158 146 第五讲对称特征值问题 利用公式 (D λi) 1 u 计算所有特征向量的运算量为 O(n 2 ). 但这样计算是数值不稳定的. 算法 5.5. 计算对称三对角矩阵的特征值和特征向量的分而治之法 ( 函数形式 ) 1: function [Q, Λ] = dc_eig(t ) % T = QΛQ 2: if T is of 1 1 then 3: Q = 1, Λ = T 4: return 5: end if [ ] T1 0 6: form T = + b m vv 0 T 2 7: [Q 1, Λ 1 ] = dc_eig(t 1 ) 8: [Q 2, Λ 2 ] = dc_eig(t 2 ) 9: form D + αuu from Λ 1, Λ 2, Q 1, Q 2 10: compute the eigenvalues Λ and eigenvectors [ ˆQ of D + ] αuu Q1 0 11: compute the eigenvectors of T with Q = ˆQ 0 Q 2 12: end 在分而治之法中, 计算特征值和特征值向量是同时进行的. 下面我们详细讨论分而治之算法的几个细节问题 : (1) 如何减小运算量 ; (2) 如何求解特征方程 f(λ) = 0; (3) 如何稳定地计算特征向量. (1) 如何减小运算量 收缩技巧 (deflation) 分而治之算法的计算复杂性分析如下 : 用 t(n) 表示对 n 阶矩阵调用函数 dc_eig 的运算量, 则 t(n) = 2 t(n/2) 递归调用 dc_eig 两次 + O(n 2 ) 计算 D + αuu 的特征值和特征向量 + c n 3 计算 Q. 如果计算 Q 时使用的是稠密矩阵乘法, 则 c = 2; 若不计 O(n 2 ) 项, 则由递归公式 t(n) = 2 t(n/2) + c n 3 可得 t(n) c 4n 3 /3. 但事实上, 由于收缩 (deflation) 现象的存在, 常数 c 通常比 1 小得多. 在前面的算法描述过程中, 我们假定 d i 互不相等且 u i 不能为零. 事实上, 容易证明当 d i = d i+1 或 u i = 0 时, d i 即为 D + αuu 的特征值, 这种现象我们称为收缩 (deflation). 在实际计算时, 当 d i d i+1 或 u i 小于一个给定的阈值时, 我们就近似认为 d i 为 D + αuu 的特征值, 即出现收缩现象.

159 5.4 分而治之法 147 在实际计算中, 收缩现象会经常发生, 而且非常频繁, 所以我们可以而且应该利用这种优点加快分而治之算法的速度 [21, 61]. 由于主要的计算量集中在计算 Q, 即算法最后一步的矩阵乘积. 如果 u i = 0, 则 d i 为特征值, 其对应的特征向量为 e i, 即 ˆQ 的第 i 列为 e i, 故计算 Q 的第 i 列时不需要做任何的计算. 当 d i = d i+1 时, 也存在一个类似的简化. (2) 特征方程求解通常我们可以使用牛顿法来计算特征方程 f(λ) = 0 的解. 当 d i d i+1 且 u i 0 时, 我们用牛顿法计算 f(λ) 在 (d i+1, d i ) 中的零点 λ i. 如果 u i 小于给定的阈值时, 我们可直接将 d i 作为特征值 λ i 的一个近似. 但当 u i 很小 ( 却大于给定的阈值 ) 时, 此时 f(λ) 在区间 [d i+1, d i ] 中的大部分处的斜率几乎为 0 ( 见图 5.2). 这时, 如果任取 [d i+1, d i ] 中的一个点作为迭代初始点, 经过一次牛顿迭代后, 迭代解可能会跑到区间 [d i+1, d i ] 的外面, 造成不收敛. ( 图 5.2. f(λ) = λ λ λ λ ) 的图像 这时需要采用修正的牛顿法. 假设我们已经计算出 λ i 的一个近似 λ, 下面我们需要从 λ 出发, 利 用牛顿迭代计算下一个近似, 直至收敛. 我们知道牛顿法的基本原理是使用 f(λ) 在点 λ 的切线来近似 f(λ), 并将切线的零点作为下一个近似, 即用切线来近似曲线 f(λ). 当 u i 很小时, 这种近似方法可能会出现问题. 这时, 我们需要寻求用其它简单函数 h(λ) ( 不一定是 直线 ) 来近似 f(λ), 然后用 h(λ) 的零点作为 f(λ) 零点的近似, 并不断迭代下去, 直至收敛. 关于 h(λ) 的选取, 通常需要满足以下几个要求 : (1) h(λ) 必须容易构造 ; (2) h(λ) 的零点容易计算 ; (3) h(λ) 尽可能地与 f(λ) 相近. 当然, 这样的 h(λ) 有多种不同的构造方法. 这里介绍其中的一种方法. 假定我们需要计算的是 f(λ) 在 (d i+1, d i ) 中的零点 λ i. 因为 d i 和 d i+1 是 f(λ) 的奇点, 所以我们令 h(λ) = c 1 d i λ + c 2 d i+1 λ + c 3,

160 148 第五讲对称特征值问题 其中 c 1, c 2, c 3 是待定的参数. 显然, h(λ) 的零点很容易计算, 只需求解一个一元二次方程即可, 运算量 与牛顿法相差无几. 选取参数 c 1, c 2, c 3 的基本原则是使得 h(λ) 在 λ 附近尽可能地接近 f(λ). 又 f(λ) 可写为 f(λ) = 1 + α n k=1 u 2 k d k λ = 1 + α ( i k=1 u 2 k d k λ + n k=i+1 u 2 k d k λ ) 1 + α ( Ψ 1 (λ) + Ψ 2 (λ) ). 当 λ (d i+1, d i ) 时, Ψ 1 (λ) 为所有正项的和, Ψ 2 (λ) 为所有负项的和, 因此它们都可以较精确地计算. 但 如果把它们加在一起时可能会引起对消, 从而可能失去相对精度. 因此我们将 h(λ) 相应地写成 h(λ) = 1 + α ( h 1 (λ) + h 2 (λ) ), 其中 满足 h 1 (λ) = c 1 d i λ + ĉ c 2 1, h 2 (λ) = d i+1 λ + ĉ 2 h 1 ( λ) = Ψ 1 ( λ), h 2 ( λ) = Ψ 2 ( λ), h 1( λ) = Ψ 1( λ), h 2( λ) = Ψ 2( λ). 即 h 1 (λ) 和 h 2 (λ) 分别是 Ψ 1 (λ) 和 Ψ 2 (λ) 的一次 Hermite 插值函数. 通过直接计算可得 c 1 = Ψ 1( λ)(d i λ) 2, ĉ 1 = Ψ 1 ( λ) Ψ 1( λ)(d i λ), c 2 = Ψ 2( λ)(d i+1 λ) 2, ĉ 2 = Ψ 2 ( λ) Ψ 2( λ)(d i+1 λ). (5.3) 所以 这就是迭代函数. ( ) c1 h(λ) = 1 + α(ĉ 1 + ĉ 2 ) + α d i λ + c 2. (5.4) d i+1 λ 算法 5.6. 修正的 Newton 算法 1: set k = 0 2: choose an initial guess λ 0 [d i+1, d i ] 3: while not convergence do 4: let λ = λ k and compute c 1, c 2, ĉ 1, ĉ 2 from (5.3) 5: set k = k + 1 6: compute the solution λ k of h(λ) defined by (5.4) 7: end while (3) 计算特征向量的稳定算法 设 λ i 是 D + αuu 的特征值, 则根据引理 5.4, 可利用公式 (D λ i I) 1 u 来计算其对应的特征向 量. 但遗憾的是, 当相邻的两个特征值非常接近时, 这个公式可能不稳定. 如果 λ i 与 λ i+1 非常接近, 则

161 5.4 分而治之法 149 它们都很接近 d i+1 ( 这里假定 λ i (d i+1, d i ), λ i+1 (d i+2, d i+1 )), 此时计算 d i+1 λ i 和 d i+1 λ i+1 可能会存在对消情形, 从而有可能会损失有效数字, 产生较大的相对误差. 这样就导致 (D λ i I) 1 u 与 (D λ i+1 I) 1 u 的计算精度下降, 从而使得特征向量之间的正交性也因此而失去. 下面的定理可以解决这个问题. 详情参见 [37, 84]. 定理 5.5 (Löwner) 设对角阵 D = diag(d 1, d 2,..., d n ) 满足 d 1 > d 2 > > d n. 若矩阵 ˆD = D + ûû 的特征值 λ 1, λ 2,..., λ n 满足交错性质 λ 1 > d 1 > λ 2 > d 2 > > λ n > d n, (5.5) 则向量 û 的分量满足 û i = ( n k=1 (λ k d i ) n k=1, k i (d k d i )) 1/2. (5.6) 证明. 由引理 5.3 可知 ˆD 的特征多项式为 ( 假设 λ d i, i = 1, 2,..., n) p(λ) = det( ˆD λi) = det(d λi + ûû ) = det(d λi) det(i + (D λi) 1 ûû ) = det(d λi) (1 + û (D λi) 1 û) ( n ) ( ) n û 2 i = (d k λ) 1 + d k=1 i=1 i λ n n n = (d k λ) + (d k λ)û 2 i. (5.7) k=1 i=1 k=1, k i 由于等式 (5.7) 两边都是关于 λ 的连续函数, 所以当 λ = d i 时, 等式 (5.7) 仍然成立. 又 λ 1, λ 2,..., λ n 是 ˆD 的特征值, 所以特征多项式也可以写成 p(λ) = n k=1 (λ k λ), 即 det( ˆD λi) = 取 λ = d i, 则由 det( ˆD λi) 的两个表达式可得 n k=1, k i n (λ k λ). k=1 (d k d i )û 2 i = n (λ k d i ), k=1 即 û 2 i = n k=1 (λ k d i ) n k=1, k i (d k d i ). 由交错性质可知, 上式右边是正的, 故定理结论成立. 设 λ 1, λ 2,..., λ n 是 D + αuu 的特征值, 且满足交错性质 (5.5). 假定 α > 0, 则根据定理 5.5 可知, 向量 αu 的分量满足 (5.6).

162 150 第五讲对称特征值问题 思考 : 如果 α < 0, 结论会是怎样? 因此, 我们可以采用公式 (5.6) 来计算特征向量. 这样就尽可能地避免了出现分母很小的情形. 下面是计算矩阵 D + uu 的特征值和特征向量的稳定算法. 算法 5.7. 计算矩阵 D + uu 的特征值和特征向量的稳定算法 1: Compute the eigenvalues λ 1, λ 2,..., λ n by solving f(λ) = 0 2: Compute û i by Löwner Theorem so that λ 1, λ 2,..., λ n are the exact eigenvalues of D + ûû 3: Compute the eigenvectors of D + ûû by Lemma 5.4. 通过分析可以说明上述算法计算出来的 D + ûû 的特征值和特征值向量是非常精确的, 这意味着 该算法是数值稳定的. 同时, D + ûû 与原矩阵 D + uu 具有相同的特征值和特征向量, 见习题 5.4. 箭型分而治之法分而治之算法于 1981 年被首次提出, 但直到 1995 年才由 Gu 和 Eisenstat 给出了一种快速稳定的实现方式, 称为箭型分而治之法 (Arrowhead Divide-and-Conquer, ADC). 他们做了大量的数值试验, 在试验中, 当矩阵规模不超过 6 时, 就采用对称 QR 迭代来计算特征值和特征向量. 在对特征方程求解时, 他们采用的是修正的有理逼近法. 数值结果表明, ADC 算法的计算精度可以与其他算法媲美, 而计算速度通常比对称 QR 迭代快 5 至 10 倍, 比 Cuppen 的分而治之法快 2 倍. 详细介绍见 [38, 39]. 5.5 对分法和逆迭代对分法 (Bisection) 的基本思想是利用惯性定理来计算所需的部分特征值. 定义 5.1 设 A 为对称矩阵, 则其惯性定义为 Inertia(A) = (ν, ζ, π) 其中 ν, ζ, π 分别表示 A 的负特征值, 零特征值和正特征值的个数. 定理 5.6 (Sylvester 惯性定理 ) 设 A R n n 是对称矩阵, X R n n 非奇异, 则 X AX 与 A 有相同的 惯性. 利用 LU 分解可得 A zi = LDL, 其中 L 为非奇异下三角矩阵, D 为对角阵, 则 Inertia(A zi) = Inertia(D). 由于 D 是对角矩阵, 所以 Inertia(D) 很容易计算. 设 α R, 记 Negcount(A, α) 为小于 α 的 A 的特征值的个数, 即 Negcount(A, α) = #(λ(a) < α).

163 5.5 对分法和逆迭代 151 设 α 1 < α 2, 则 A 在区间 [α 1, α 2 ) 中的特征值个数为 Negcount(A, α 2 ) Negcount(A, α 1 ). 如果 α 2 α 1 < tol ( 其中 tol 1 为事先给定的阈值 ), 且 A 在 [α 1, α 2 ) 中有特征值, 则我们可将 [α 1, α 2 ) 中的任意一个值作为 A 在该区间中的特征值的近似. 由此我们可以给出下面的对分法. 算法 5.8. 对分法 : 计算 A 在 [a, b) 中的所有特征值 1: Let tol be a given threshold 2: compute n a = Negcount(A, a) 3: compute n b = Negcount(A, b) 4: if n a = n b then 5: return % 此时 [a, b) 中没有 A 的特征值 6: end if 7: put (a, n a, b, n b ) onto worklist 8: % worklist 中的元素是 四元素对, 即由四个数组成的数对 9: while worklist not empty do 10: remove (low, n low, up, n up ) from the worklist 11: % (low, n low, up, n up ) 是 worklist 中的任意一个元素 12: if (up low) < tol then 13: print There are n up n low eigenvalues in [low, up) 14: else 15: compute mid = (low + up)/2 16: compute n mid = Negcount(A, mid) 17: if (n mid > n low ) then 18: put (low, n low, mid, n mid ) onto worklist 19: end if 20: if (n up > n mid ) then 21: put (mid, n mid, up, n up ) onto worklist 22: end if 23: end if 24: end while 显然, 对分法的主要运算量集中在计算 Negcount(A, z). 通常是事先将 A 转化成对称三对角矩阵, 这 样计算 A zi 的 LDL T 分解就非常简单 : a 1 z b 1. b A zi = bn 1 b n 1 a n z

164 152 第五讲对称特征值问题 1 d 1. l = l n 1 1 利用待定系数法, 可以得到下面的递推公式... d n 1 l LDL.... ln 1 1 d 1 = a 1 z, 用上面的公式计算 d i 的运算量约为 4n. d i = (a i z) b2 i 1 d i 1, i = 2, 3,..., n. (5.8) 注意这里没有选主元, 但针对对称三对角矩阵, 该算法是非常稳定的, 即使当 d i 有可能很小时, 算 法依然很稳定. 定理 5.7 利用公式 (5.8) 计算所得的 d i 与精确计算 Â 的 ˆdi 有相同的符号, 故有相同的惯性. 这里 Â 与 A 非常接近, 即 其中 ε i 2.5ε + O(ε 2 ), 这里的 ε 为机器精度. Â(i, i) = a i, Â(i, i + 1) = b i (1 + ε i ), 证明. 参见 [22]. 由于单独调用一次 Negcount 的运算量为 4n, 故计算 k 个特征值的总运算量约为 O(kn). 当特征值计算出来后, 我们可以使用带位移的逆迭代来计算对应的特征向量. 通常只需迭代 1 至 2 次即可, 由于 A 是三对角矩阵, 故计算每个特征向量的运算量为 O(n). 整个合起来就构成对分法和逆迭代. 当特征值紧靠在一起时, 计算出来的特征向量可能会失去正交性, 此时需要进行再正交化, 可通过 MGS 的 QR 分解来实现. 5.6 奇异值分解 奇异值分解 (SVD) 具有十分广泛的应用背景, 因此, 如何更好更快地计算一个给定矩阵的 SVD 是 科学与工程计算领域中的一个热门研究课题, 吸引了众多专家进行这方面的研究, 也涌现出了许多奇妙 的方法. 本章主要介绍计算 SVD 的常用算法. [ ] 0 A 对任意矩阵 A R m n, 其奇异值与对称矩阵 A A, AA 和的特征值是是密切相关的, A 0 故理论上计算对称特征值的算法都可以用于计算奇异值. 但在实际计算中, 我们通过可以利用 SVD 的 特殊结构使得算法更加有效和准确. 与计算对称矩阵的特征值类似, 计算一个矩阵 A 的奇异值分解的算法通常分为以下几个步骤 (Jacobi 算法除外 ): 1. 将 A 二对角化 : B = U 1 AV 1, 其中 B 为上二对角矩阵, U 1, V 1 为正交阵 ; 2. 计算 B 的 SVD: B = U 2 ΣV 2, 其中 Σ 为对角阵, U 2, V 2 为正交阵 ; 3. 合并得到 A 的 SVD: A = U 1 BV 1 = (U 1U 2 )B(V 1 V 2 ).

165 5.6 奇异值分解 二对角化我们知道, 对称矩阵可以通过一系列 Householder 变换转化为对称三对角矩阵. 对于一般矩阵 A R m n, 我们也可以通过 Householder 变换, 将其转化为二对角矩阵, 即计算正交矩阵 U 1 和 V 1 使得 U 1 AV 1 = B, (5.9) 其中 B 是一个实 ( 上 ) 二对角矩阵. 这个过程就称为二对角化. 需要注意的是, 与对称矩阵的对称三对角化不同, A 与 B 是不相似的. 设 A R m n, 二对角化过程大致如下 : (1) 首先确定一个 Household 矩阵 H 1 R m m, 使得 H 1 A 的第一列除第一个元素外, 其它分量都为 零, 即 0 H 1 A = (2) 再确定一个 Household 矩阵 H1 R (n 1) (n 1), 把 H 1 A 的第一行的第 3 至第 n 个元素化为零, 即 0 0 [ ] H 1 A = 0. 0 H (3) 重复上面的过程, 直到把 A 最终化为二对角矩阵. 有了分解 (5.9) 以后, 我们可得 0 A A = (U 1 BV 1 ) U 1 BV 1 = V 1B BV 1, 即 V 1 A AV 1 = B B. 由于 B B 是对称三对角的, 所以这就相当于将 A A 三对角化. 整个二对角化过程的运算量约为 4mn 2 + 4m 2 n 4n 3 /3, 若不需要计算 U 1 和 V 1, 则运算量约为 4mn 2 4n 3 /3. 二对角矩阵的奇异值分解设 B R n n 是一个二对角矩阵 a 1 b B =.,.. bn 1 则下面三种方法均可将计算 B 的 SVD 转化成计算对称三对角矩阵的特征分解 : a n

166 154 第五讲对称特征值问题 [ ] 0 B (1) 令 A =, 置换阵 P = [e 1, e n+1, e 2, e n+2,..., e n, e 2n ], 则 T ps = P AP 是对称三对角矩 B 0 阵, 且 T ps 的主对角线元素全为 0, 次对角线元素为 a 1, b 1, a 2, b 2,..., a n 1, b n 1, a n. 若 (λ i, x i ) 是 T ps 的一个特征对, 则 [ ] λ i = ±σ i, P x i = 1 vi, 2 ±u i 其中 σ i 为 B 一个奇异值, u i 和 v i 分别为对应的左和右奇异向量. (2) 令 T BB = BB, 则 a b 2 1 a 2 b 1. a 2 b T BB =.... a 2 n 1 + bn 1 2 a n b n 1 a n b n 1 a 2 n T BB 的特征值为 B 的奇异值的平方, 且 T BB 的特征向量为 B 的左奇异向量. (3) 令 T B B = B B, 则 a 2 1 a 1 b 1 a 1 b 1 a b T B B = an 1 b n 1 a n 1 b n 1 a 2 n + b 2 n 1 T B B 的特征值为 B 的奇异值的平方, 且 T B B 的特征向量为 B 的右奇异向量. 理论上, 我们可以直接使用 QR 迭代 分而治之法或带反迭代的对分法, 计算三对角矩阵 T ps, T BB 和 T B B 的特征值和特征向量. 但一般来说, 这种做法并不是最佳的, 原因如下 : (1) 对 T ps 做 QR 迭代并不划算, 因为 QR 迭代计算所有的特征值和特征向量, 而事实上只要计算正的特征值即可 ; (2) 直接构成 T BB 或 T B B 是数值不稳定的. 事实上, 这样做可能会使得 B 的小奇异值的精度丢失一半. 下面是一些计算奇异值分解的比较实用的算法. 1. Golub-Kahan SVD 算法 : 由 Golub 和 Kahan [32] 于 1965 年提出, 是一种十分稳定且高效的计算 SVD 的算法. 主要思想是将带位移的对称 QR 迭代算法隐式地用到 B B 上, 在该算法中, 并不需要显示地把 B B 计算出来. 该算法也通常就称为 SVD 算法, 是一个基本且实用的算法, 目前仍然是计算小规模矩阵奇异值分解的常用算法. 关于这个算法的详细描述, 可参见 [33]. 2. dqds 算法 : 由 Fernando 和 Parlett [28] 于 1994 年提出, 是计算二对角矩阵所有奇异值的最快算法, 而且能达到很高的相对精度, 包括奇异值很小的情形. 该算法主要基于对 B B 的 Cholesky 迭代, 可以看作是 LR 迭代算法的改进. 由于 LR 迭代算法在一定条件下与对称 QR 算法是等价的, 因此该算法也可以看作是 QR 迭代的变形. 3. 分而治之法 : 该算法是计算维数 n 25 的矩阵的所有奇异值和奇异向量的最快算法, 但不能保证小奇异值的相对精度, 即 σ i 的相对精度为 O(ε)σ 1, 而不是 O(ε)σ i.

167 5.6 奇异值分解 对分法和反迭代 : 主要用于计算某个区间内的奇异值及对应的奇异向量, 能保证较高的相对精度. 5. Jacobi 迭代 : 可隐式地对 AA 或 A A 实施对称 Jacobi 迭代, 能保证较高的相对精度. 最近, Z. Drmač 和 K. Veselić [24, 25] 改进了最初的 Jacobi 算法, 使其变成一个速度快 精度高的实用算法. 在这里, 我们介绍 Golub-Kahan SVD 算法, dqds 算法和 Jacobi 迭代 Golub-Kahan SVD 算法 出来. 该算法主要思想是将带位移的对称 QR 迭代算法隐式地用到 B B 上, 而无需将 B B 显式地计算 算法基本框架 Golub-Kahan SVD 算法有时也简称 SVD 算法, 其基本框架是 : 将矩阵 A 二对角化, 得到上二对角矩阵 B; 用隐式 QR 迭代计算 B B 的特征值分解, 即 B B = QΛQ, Λ = diag(σ1, 2 σ2, 2..., σn). 2 (5.10) 计算 BQ 的列主元 QR 分解, 即 (BQ)P = UR, (5.11) 其中 P 是置换矩阵, U 是正交矩阵, R 是上三角矩阵. 由 (5.10) 可知 (BQ) BQ = Λ, 因此 BQ 是列正交矩阵 ( 但不是单位列正交 ). 再由 (5.11) 可知 R = U (BQ)P 也是列正交矩阵. 又 R 是上三角矩阵, 所以 R 必定是对角矩阵. 令 V = QP, 则由 (5.11) 可知 U BV = R. 这就是二对角矩阵 B 的奇异值分解. 算法的具体实现 参见 [33, 90] dqds 算法 我们首先介绍针对实对称正定矩阵的 LR 算法, 该算法思想与 QR 迭代算法类似, 但提出时间更早. 算法 5.9. 带位移的 LR 算法 1: Let T 0 be a given real symmetric positive definite matrix 2: set i = 0 3: while not converge do

168 156 第五讲对称特征值问题 4: choose a shift τi 2 satisfying τ i 2 < min{λ(t i)} 5: compute B i such that T i τi 2I = B i B i % Cholesky factorization 6: T i+1 = B i B i + τ i 2I 7: i = i + 1 8: end while LR 迭代算法在形式上与 QR 迭代算法非常类似. 事实上, 对于不带位移的 LR 迭代算法, 我们可以 证明, 两步 LR 迭代等价于一步 QR 迭代. 引理 5.5 设 T 是不带位移的 LR 算法迭代两步后生成的矩阵, ˆT 是不带位移的 QR 算法迭代一步后生 成的矩阵, 则 T = ˆT. (1) LR 算法中要求 T 0 对称正定, 但并不一定是三对角矩阵 ; (2) 由该引理可知, QR 算法与 LR 算法有相同的收敛性. 下面我们介绍 dqds 算法. 该算法是针对三对角的对称正定矩阵 B B, 其中 B 是二对角矩阵. 在数学上, dqds 算法与 LR 算法是等价的, 但在该算法中, 我们是直接通过 B i 来计算 B i+1, 从而避免计算中间矩阵 T i+1, 这样也就尽可能地避免了由于计算 B i B i 而可能带来的数值不稳定性. 下面推导如何从 B i 直接计算 B i+1. 设 a 1 b 1. a.. 2 B i =., B i+1 =.. bn 1 ã 1 b1. ã bn 1 a n ã n 为了书写方便, 我们记 b 0 = b n = b 0 = b n = 0. 由 LR 算法 5.9 可知 B i+1 B i+1 + τi+1i 2 = B i B i + τ i 2 I. 比较等式两边矩阵的对角线和上对角线元素, 可得 ã 2 k + b 2 k 1 + τi+1 2 = a 2 k + b 2 k + τi 2, k = 1, 2,..., n ã k bk = a k+1 b k 或 ã 2 k b 2 k = a 2 k+1b 2 k, k = 1, 2,..., n 1. 记 δ = τi+1 2 τ i 2, p k = a 2 k, q k = b 2 k, p k = ã 2 k, q k = b 2 k, 则可得下面的 qds 算法. 算法 qds 算法的单步 (B i B i+1 ) 1: δ = τ 2 i+1 τ 2 i 2: for k = 1 to n 1 do 3: p k = p k + q k q k 1 δ 4: q k = q k (p k+1 / p k )

169 5.6 奇异值分解 157 5: end for 6: p n = p n q n 1 δ qds 算法中的每个循环仅需 5 个浮点运算, 所以运算量较少. 为了提高算法的精确性, 我们引入一个辅助变量 d k p k q k 1 δ, 则 于是就可得到 dqds 算法 : d k = p k q k 1 δ = p k q k 1p k p k 1 δ = p k p k 1 q k 1 δ p k 1 = p k pk 1 q k 2 δ p k 1 = p k p k 1 d k 1 δ. δ 算法 dqds 算法的单步 (B i B i+1 ) 1: δ = τ 2 i+1 τ 2 i 2: d 1 = p 1 δ 3: for k = 1 to n 1 do 4: p k = d k + q k 5: t = p k+1 / p k 6: q j = q k t 7: d k+1 = d k t δ 8: end for 9: p n = d n dqds 算法的运算量与 dqs 差不多, 但更精确. 这里我们只列出相应的结果. 引理 5.6 设二对角矩阵 B 的对角元和上对角元分别为 a 1, a 2,..., a n 和 b 1, b 2,..., b n 1, B 的对角元 和上对角元分别为 ã i = a i η i, b i = b i ξ i. 则 B = D1 BD 2, 其中 ( D 1 = diag η 1, η 2η 1, η ) 3η 2 η 1 η n η n 1 η 1,...,, ξ 1 ξ 2 ξ 1 ξ n 1 ξ n 2 ξ 1 ( D 2 = diag 1, ξ 1, ξ 2ξ 1,..., ξ ) n 1ξ n 2 ξ 1. η 1 η 2 η 1 η n 1 η n 2 η 1 定理 5.8 设 B 和 B 的定义如引理 5.6. 若存在 τ > 1 使得 τ 1 η i τ, τ 1 ξ i τ, 即 ε = τ 1 是 B 与 B 的相应元素之间的相对误差的一个上界. 设 B 与 B 的奇异值分别为 σ 1 σ 2... σ n

170 158 第五讲对称特征值问题 和 σ 1 σ 2... σ n, 则 σ i σ i (τ 4n 2 1)σ i. 若 σ i 0, ε = τ 1 1, 则上式可记为 σi σ i σ i τ 4n 2 1 = (4n 2)ε + O(ε 2 ). 下面的定理显示了 dqds 算法的高精度性质. 定理 5.9 以浮点运算对 B 应用 dqds 算法的单步, 得到矩阵 B, 该过程等价于 1. 对 B 的每个元素作一个小的相对扰动 ( 不超过 1.5ε), 得到 B; 2. 对 B 应用精确的 dqds 算法的单步, 得到 B; 3. 对 B 的每个元素作一个小的相对扰动 ( 不超过 ε), 得到 B. 由定理 5.8 可知, B 和 B 的奇异值满足高的相对精度. 关于 dqds 算法中位移的选取, 以及如何判断收敛性, 可以参见 [28] Jacobi 算法本节讨论对矩阵 M = A A 实施隐式的 Jacobi 算法来计算 A 的奇异值. 我们知道, Jaboci 算法的每一步就是对矩阵作 Jacobi 旋转, 即 A A J A AJ, 其中 J 的选取将某两个非对角元化为 0. 在实际计算中, 我们只需计算 AJ, 故该算法称为单边 Jacobi 旋转. 算法 单边 Jacobi 旋转的单步 % 对 M = A A 作 Jacobi 旋转, 将 M(i, j), M(j, i) 化为 0 1: Compute m ii = (A A) ii, m ij = (A A) ij, m jj = (A A) jj 2: if m ij is not small enough then 3: τ = (m ii m jj )/(2 m ij ) 4: t = sign(τ)/( τ τ 2 ) 5: c = 1/ 1 + t 2 6: s = c t 7: A = AG(i, j, θ) % G(i, j, θ) 为 Givens 变换 8: if eigenvectors are desired then 9: J = J G(i, j, θ) 10: end if 11: end if 在上面算法的基础上, 我们可以给出完整的单边 Jacobi 算法.

171 5.7 扰动分析 159 算法 单边 Jacobi: 计算 A = UΣV 1: while A A is not diagonal enough do 2: for i = 1 to n 1 do 3: for j = i + 1 to n do 4: 调用单边 Jacobi 旋转 5: end for 6: end for 7: end while 8: compute σ i = A(:, i) 2, i = 1, 2,... n 9: U = [u 1,..., u n ] with u i = A(:, i)/σ i 10: V = J Jacobi 算法的特点 : 不需要双对角化, 这样可以避免双对角化引入的误差 ; 可达到相对较高的计算精度 ; 速度较慢. ( 目前已有快速的改进算法, 参见 [24, 25]) 定理 5.10 设 A = DX R n n, 其中 D 为非奇异对角阵, X 非奇异. 设 Â 是按浮点运算单边 Jacobi 旋转 m 次后所得到的矩阵. 若 A 和 Â 的奇异值分别为 σ 1 σ 2... σ n 和 ˆσ 1 ˆσ 2... ˆσ n, 则 ˆσ i σ i O(mε)κ(X). 故 X 的条件数越小, 计算矩阵 A 的奇异值时相对误差越小. σ i 5.7 扰动分析 设 A R n n 是对称矩阵, 则有下面的谱分解. 定理 5.11 设 A R n n 是对称矩阵. 则存在一个正交矩阵 Q 使得 A = QΛQ 其中 Λ = diag(λ 1, λ 2,..., λ n ) 是一个实对角矩阵. 这里的 λ i 就是 A 的特征值, 我们假设 λ 1 λ 2 λ n. 令 Q = [q 1, q 2,..., q n ], 则 q i 就是 λ i 对应的单位正交特征向量. 关于对称矩阵特征值问题的扰动理论, 这里只做一些简单介绍, 若要深入了解这方面的信息, 可以参考 [43, 44, 68, 87] 特征值与 Rayleigh 商

172 160 第五讲对称特征值问题 定义 5.2 设 A R n n 是对称矩阵, 向量 x R n 非零, 则 x 关于 A 的 Rayleigh 商定义为 : 有时简记为 ρ(x). ρ(x, A) = x Ax x x. 下面是关于 Rayleigh 商的一些基本性质 : (1) ρ(αx) = ρ(x), α R, α 0; (2) ρ(q i ) = λ i, i = 1, 2,..., n; (3) 设 x = α 1 q 1 + α 2 q α n q n, 则 (4) λ n ρ(x) λ 1, ρ(x) A 2. ρ(x) = α2 1λ 1 + α2λ αnλ 2 n α1 2 + α ; α2 n 实对称矩阵的特征值与 Rayleigh 商之间的一个基本性质是 Courant-Fischer 极小极大定理. 定理 5.12 (Courant-Fischer) 设 A R n n 是对称矩阵, 其特征值为 λ 1 λ 2 λ n, 则有 λ k = max U S n k x Ax min x U, x 0 x x = min V S n n k+1 其中 S n i 表示 R n 中所有 i 维子空间构成的集合. 当 x Ax max x V, x 0 x x, 时, 上式中的等号成立. U = span{q 1,..., q k }, V = span{q k,..., q n }, x = q k 证明. 设 U S n k 和 V S n n k+1 分别为 R n 中任意的 k 和 n k + 1 维子空间. 由于 dim U + dim V = n + 1 > n, 可得 U V {0}. 故存在非零向量 x U V. 所以有 由 U 和 V 的任意性可知, min ρ(x) ρ( x) max ρ(x). x U, x 0 x V, x 0 max U S n k min ρ(x) x U, x 0 min V S n n k+1 max ρ(x). (5.12) x V, x 0 取 U = span{q 1,..., q k }, 则 U 中的任意向量都可写成 x = α 1 q α k q k, 此时 ρ(x) = x Ax x x = α2 1λ α 2 k λ k α α2 k k i=1 α2 i λ k = λ k, k i=1 α2 i

173 5.7 扰动分析 161 即 max U S n k min ρ(x) λ k. (5.13) x U, x 0 同理, 取 V = span{q k,..., q n }, 则 V 中的任意向量都可写成 x = α k q k + + α n q n, 此时 ρ(x) = x Ax x x = α2 k λ k + + α 2 nλ n α 2 k + + α2 n n i=k α2 i λ k n i=k α2 i = λ k, 即 min V S n n k+1 max ρ(x) λ k. (5.14) x V, x 0 由 (5.12), (5.13), (5.14) 可知, 定理结论成立. 当 k = 1 和 k = n 时, 就可以得到下面的定理. 定理 5.13 (Rayleigh-Ritz) 设 A R n n 是对称矩阵, 其特征值为 λ 1 λ 2 λ n, 则有 λ 1 = x Ax max x R n, x =0 x x, λ x Ax n = min x R n, x 0 x x. 由极小极大定理, 我们可以得到下面的特征值分隔定理. 定理 5.14 ( 分隔定理 ) 设 A R n n 是对称矩阵, B = Q AQ, 其中 Q R n (n 1) 满足 Q Q = I n 1. 再设 A 和 B 的特征值分别为 λ 1 λ 2 λ n 和 λ1 λ 2 λ n 1, 则有 λ 1 λ 1 λ 2 λ 2 λ n 1 λ n. 特别地, 在定理 5.14 中, 取 Q = [e 1,..., e i 1, e i+1,..., e n ], 则可以得到下面的结论. 推论 5.15 设 A R n n 是对称矩阵, Ã 是 A 的一个 n 1 阶主子矩阵, A 和 Ã 的特征值分别为 λ 1 λ 2 λ n 和 λ1 λ 2 λ n 1, 则有 λ 1 λ 1 λ 2 λ 2 λ n 1 λ n. 反复应用上面的推论, 即可得到下面的结论.

174 162 第五讲对称特征值问题 推论 5.16 设 A R n n 是对称矩阵, Ã 是 A 的一个 k 阶主子矩阵 (1 k n 1), A 和 Ã 的特征值分别为 λ 1 λ 2 λ n 和 λ1 λ 2 λ k, 则有 λ i λ i λ n k+i, i = 1, 2,..., k 对称矩阵特征值的扰动分析设 A R n n 是对称矩阵, 扰动矩阵 E R n n 也是对称矩阵, 下面讨论 A + E 的特征值与 A 的特征值之间的关系. 由极小极大定理, 我们可以证明下面的性质. 定理 5.17 设 A R n n 和 B = A + E R n n 都是对称矩阵, 其特征值分别为 λ 1 λ 2 λ n 和 λ1 λ 2 λ n. 假定 E 的最大和最小特征值分别为 µ 1 和 µ n, 则有 λ i + µ 1 λ i λ i + µ n, i = 1, 2,..., n. 证明. 由 Courant-Fischer 定理 5.12 和 Rayleigh-Ritz 定理 5.13 可知 λ i = min V S n n i+1 = min V S n n i+1 min V S n n i+1 = min V S n n i+1 = λ i + µ 1. max x V, x 0 max x V, x 0 max x V, x 0 x Bx x x ( x ) Ax x x + x Ex x x ( x ) Ax x x + µ 1 x Ax max x V, x 0 x x + µ 1 同理可得 λ i = max U S n i = max U S n i max U S n i = max U S n i min x U, x 0 min x U, x 0 min x U, x 0 min x U, x 0 x Bx x x ( x ) Ax x x + x Ex x x ( x ) Ax x x + µ n x Ax x x + µ n

175 5.7 扰动分析 163 = λ i + µ n. 所以定理结论成立. 根据这个定理, 我们立即可以得到下面的 Weyl 定理. 定理 5.18 (Weyl) 设 A R n n 和 B = A + E R n n 都是对称矩阵, 其特征值分别为 λ 1 λ 2 λ n 和 λ1 λ 2 λ n, 则 λ j λ j E 2, j = 1, 2,..., n. 该定理的结论可以推广到奇异值情形. 我们首先给出下面的引理. 引理 5.7 设 A R m n (m n) 的奇异值分解为 A = UΣV, 其中 U = [u 1,..., u n ] R m n 为列正交矩阵, V = [v 1,..., v n ] R n n 为正交矩阵, Σ = diag(σ 1,..., σ n ). 将 U 扩展成 n n 的正交矩阵 [U, Ũ] = [u 1,..., u n, ũ 1,..., ũ m n ], 令 [ ] 0 A H = R (m+n) (m+n), A 0 2 则 H 对称, 且特征值为 ±σ i 和 0 ( 其中 0 至少为 m n 重特征值 ), 对应的特征向量分别为 2 [ ] 0 i = 1, 2,..., n, 和, j = 1, 2,..., m n. ũ j [ vi ], ±u i 证明. 直接代入验证即可. 由上面的引理和 Weyl 定理 5.18 立即可得定理 5.19 设 A, B R m n (m n), 它们的奇异值分别为 σ 1 σ 2 σ n 和 σ 1 σ 2 σ n. 则 σ j σ j B A 2, j = 1, 2,..., n. 最后给出一个基于 F- 范数的扰动性质. 定理 5.20 设 A, E C n n 且 A 是 Hermite 的, A + E 是正规矩阵 并设 A 的特征值满足 λ 1 λ 2 λ n, A + E 的特征值 λ1, λ 2,..., λ n 满足 Re( λ 1 ) Re( λ 2 ) Re( λ n ).

176 164 第五讲对称特征值问题 则 n λ i λ i 2 E 2 F. i=1 证明. 参见 [43, page 370, Cor ] 对称矩阵特征向量的扰动 定义 5.3 设 A R n n 的特征值为 λ 1 λ 2 λ n, 则 λ i 与其余特征值之间的间隙 (gap) 定义为 有时简记为 gap(λ i ). gap(λ i, A) = min j i λ j λ i. 特征向量的敏感性依赖于其对应的特征值的 gap, 一般来说, gap 越小, 特征向量越敏感. 例 5.2 设 A = [ 1 + g ] [ ] 0 ε, E =, (0 < ε < g) 1 ε 0 则 A 的特征值为 λ 1 = 1 + g, λ 2 = 1, 对应的单位特征向量为 q 1 = e 1, q 2 = e 2. A + E 的特征值为 ˆλ 1,2 = 1 + (g ± g 2 + 4ε 2 )/2, 对应的单位特征向量为 1 1 ˆq 1 = β ε2 /g 2 1 = β 1 (1 + 2ε2 /g 2 ) 2 4(ε/g) 4 1 2ε/g 2ε/g 1 β 1 (1 + 2ε 2 /g 2 ) 1 2ε/g [ ] 1 1 =, 1 + ε2 /g 2 ε/g 1 [ ] ˆq 2 = β 2 1 ε/g 1 + 4ε 2 /g 2 1, 1 + ε2 /g 2 1 2ε/g 其中 β 1, β 2 为规范化因子. 故特征向量的扰动约为 ε/g, 与特征值的间隙 gap(λ i, A) = g 成反比. 定理 5.21 设 A = QΛQ 和 A + E = Q Λ Q 分别为对称矩阵 A R n n 和 A + E R n n 的特征值 分解, 其中 Q = [q 1, q 2,..., q n ] 和 Q = [ q1, q 2,..., q n ] 均为正交矩阵, 且 q i 为 q i 对应的扰动特征向量. 用 θ i 表示 q i 和 q i 之间的锐角, 则当 gap(λ i, A) > 0 时 1 2 sin 2θ i E 2 gap(λ i, A).

177 5.7 扰动分析 165 类似地, 当 gap( λ i, A + E) > 0 时 1 2 sin 2θ E 2 i gap( λ i, A + E). 证明. 如右图所示, 令 d = q i / cos θ i q i, 即 q i = (q i + d) cos θ i. 则 d q i = 0, tan θ i = d 2, sec θ i = q i + d 2. 令 η = λ i λ i, 由 (A + E) q i = λ i q i 可得 (A + E)(q i + d) = (η + λ i )(q i + d), 将 Aq i = λ i q i 代入后整理可得 (ηi E)(q i + d) = (A λ i I)d. 又 q i (A λ ii) = ( (A λ i I)q i ) = 0, 故用 q i 左乘上式两边可得 q i (ηi E)(q i + d) = q i (A λ ii)d = 0, (5.15) 即 (ηi E)(q i + d) span{q i } = span{q 1,..., q i 1, q i+1,..., q n }. 所以可设 (ηi E)(q i + d) = j i α jq j. 又 q i d = 0, 故可设 d = j i δ jq j. 所以 α j q j = (ηi E)(q i + d) = (A λ i I)d j i = (A λ i I) j i δ j q j = j i δ j (A λ i I)q j = j i δ j (λ j λ i )q j. 由于 q 1, q 2,..., q n 线性无关, 故可得 δ j (λ j λ i ) = α j. 又 gap(λ i, A) > 0, 即 j i 时 λ j λ i, 所以 δ i = αi λ j λ i, 因此 d = j i 注意到 q i d = 0 且 q i q i = 1, 所以由 (5.15) 可得 故 α j λ j λ i q j. η = q i E(q i + d). (ηi E)(q i + d) = (q i + d)η E(q i + d) 由习题 5.5 可知 (q i + d)q i I 2 = q i + d 2, 故 tan θ i = d 2 = 2 α j λ j λ i j i = (q i + d)q i E(q i + d) E(q i + d) = ( (q i + d)q i I) E(q i + d). 1/2

178 166 第五讲对称特征值问题 2 α j gap(λ i, A) j i 1 = α 2 j gap(λ i, A) j i 1 = gap(λ i, A) α j q j j i 1/2 1/2 2 1 = gap(λ i, A) (ηi E)(q i + d) 2 1 gap(λ i, A) (q i + d)q i I 2 E 2 (q i + d) 2 1 = gap(λ i, A) (q i + d) 2 2 E 2 1 = gap(λ i, A) 1 cos 2 E 2. θ i 即 1 2 sin 2θ i = sin θ i cos θ i = tan θ i cos θi 2 1 gap(λ i, A) E 2. 将 A + E 看作原矩阵, (A + E) E 看作是扰动矩阵, 则可证明第二个结论. 当 θ i 1 时, 1 2 sin 2θ i θ i sin θ i ; 当 E gap(λ i, A) 时, 定理中给出的上界就失去了实际意义 ; 在该定理中, 没有对特征值进行排序 ; 在实际计算中, 我们通常所知道的是 gap( λ i, A + E) Rayleigh 商逼近 定理 5.22 设对称矩阵 A R n n 的特征值为 λ 1, λ 2,..., λ n, (1) 若 x R n 是单位向量, β R, 则 min λ i β Ax βx 2 ; (5.16) 1 i n (2) 对于给定的非零向量 x R n, 当 β = ρ(x) 时, Ax βx 2 达到最小, 即 min Ax βx 2 = Ax ρ(x)x 2 ; (5.17) β R (3) 令 r = Ax ρ(x)x, 设 λ i 是距离 ρ(x) 最近的特征值, gap = min j i λ j ρ(x), θ 是 x 和 q i 之 间的锐角, 其中 q i 是 λ i 对应的单位特征向量, 则 sin θ r 2 gap 且 λ i ρ(x) r 2 2 gap. (5.18)

179 5.7 扰动分析 167 证明. (1) 若 β 是 A 的特征值, 则结论显然成立. 若 β 不是 A 的特征值, 则 A βi 非奇异, 故 1 = x 2 = (A βi) 1 (A βi)x 2 (A βi) 1 2 (A βi)x 2. (5.19) 由于 A βi 对称, 且特征值为 λ i β, 故 代入 (5.19) 即可知结论成立. (A βi) = min λ i β. 1 i n (2) 由于 即 x (Ax ρ(x)x). 所以 x ( Ax ρ(x)x ) = x Ax x Ax x x x x = 0, Ax βx 2 2 = ( A ρ(x) ) x + ( ρ(x) β ) x 2 2 = Ax ρ(x)x ( ρ(x) β ) x 2 2 Ax ρ(x)x 2 2, 所以当 β = ρ(x) 时, Ax βx 2 达到最小. (3) 略 由 (5.16) 可知, 在幂迭代和反迭代中可以使用残量 Ax λx 2 < tol 作为停机准则, 这里 λ 是迭代过程中计算得到的近似特征值. 等式 (5.17) 则解释了为什么用 Rayleigh 商来近似特征值. 不等式 (5.18) 表明 λ i ρ(x) 的值与残量范数 r 2 的平方成正比, 这个结论是 Rayleigh 商迭代 局部三次收敛的基础 相对扰动分析 这里主要讨论 A 和 X AX 的特征值和特征向量之间的扰动关系, 其中 X 非奇异且满足 X X I 2 = ε. 这是因为在计算特征向量时, 由于舍入误差的原因, 最后得到的正交矩阵 Q 会带有误差, 从而 失去正交性. 定理 5.23 ( 相对 Weyl 定理 ) 设对称矩阵 A 和 X AX 的特征值分别为 λ 1 λ 2 λ n 和 λ1 λ 2 λ n, 令 ε = X X I 2, 则 λ i λ i ε λ i 或 λ i λ i λ i ε (if λ i 0). 证明. 因为 A λ i I 的第 i 个特征值为 0, 故由 Sylvester 惯性定理 5.6 可知 X (A λ i I)X = (X AX λ i I) + λ i (I X X)

180 168 第五讲对称特征值问题 的第 i 个特征值也为 0. 由 Weyl 定理 5.18 可知 ( λ i λ i ) 0 λ i (I X X) 2 = ε λ i, 即定理结论成立 当 X 正交时, ε = 0, 故 X AX 与 A 有相同的特征值. 当 X 几乎正交时, ε 很小, 此时 X AX 与 A 的特征值几乎相同. 推论 5.24 设 G 和 Y GX 的奇异值分别为 σ 1 σ 2 σ n 和 σ 1 σ 2 σ n, 令 ε = max { X X I 2, Y Y I 2 }, 则 σ i σ i ε σ i 或 σ i σ i σ i ε (if σ i 0). 下面给出特征向量的相对扰动性质. 定义 5.4 设 A R n n 的特征值为 λ 1, λ 2,..., λ n, 若 λ i 0, 则 λ i 与其余特征值之间的相对间隙 (relative gap) 定义为 relgap(λ i, A) = min j i λ j λ i. λ i 定理 5.25 设 A R n n 和 X AX R n n 的特征值分解分别为 A = QΛQ 和 X AX = Q Λ Q, 其 中 Q = [q 1, q 2,..., q n ] 和 Q = [ q1, q 2,..., q n ] 均为正交矩阵, Λ = diag(λ 1, λ 2,..., λ n ), Λ = diag( λ 1, λ 2,..., λ n ) 且 λ 1 λ 2 λ n, λ 1 λ 2 λ n. 设 θ i 表示 q i 和 q i 之间的锐角, 令 ε 1 = I X T X 1 2, ε 2 = X I 2, 若 ε 1 < 1 且 relgap( λ i, X AX) > 0, 则 1 2 sin 2θ i ε ε 1 relgap( λ i, X AX) + ε 2. 证明. 设 η = λ i λ i, H = A λ i I, F = λ i (I X T X 1 ), 则 Hq i = Aq i λ i q i = ηq i, H + F = A λ i X T X 1 = X T (X AX λ i I)X 1. 故 (H + F )(X q i ) = 0. 即 X q i 是 H + F 的第 i 个特征值 λi = 0 的一个特征向量. 设 θ 1 是 q i 与 X q i 之 间的锐角, 由定理 5.21 可知 1 2 sin 2θ F 2 1 gap(λ i, H + F ) = ε 1 λ i gap(λ i, H + F ). (5.20) 由于 λi = 0, 故 gap(λ i, H +F ) 即为 H +F 的最小非零特征值的绝对值. 又 X (H +F )X = X AX λ i I 的特征值为 λj λ i, j = 1, 2,..., n, 且 λ 1 λ i λ 2 λ i λ n λ i,

181 5.8 课后习题 169 所以由相对 Weyl 定理 5.23 可知 ˆλ j ( λ j λ i ) ε 1 λ j λ i. 这里 ˆλj 表示 H + F 的第 j 个特征值 ( 按降序排列 ). 因此 ˆλ j (1 ε 1 ) λ j λ i, 故 代入 (5.20) 可得 1 2 sin 2θ 1 设 θ 2 是 X q i 与 q i 之间的锐角, 则由右图可知 又 θ i θ 1 + θ 2, 故 sin θ 2 = q i 2 sin θ 2 X q i q i 2 gap(ˆλ i, H + F ) (1 ε 1 )gap( λ i, X AX). ε 1 λ i (1 ε 1 )gap( λ i, X AX) = ε 1 1 ε 1 X I 2 q i 2 = ε sin 2θ i 1 2 sin 2θ sin 2θ 2 1 relgap( λ i, X AX). 即定理结论成立. 1 2 sin 2θ 1 + sin θ 2 ε ε 1 relgap( λ i, X AX) + ε 2, 5.8 课后习题 练习 5.1 设 λ R 是对称矩阵 A R n n 的一个特征值, 对应的特征向量为 x R n. 若 x R n 是 x 的 一个 O(ε) 近似, 即 x = x + O(ε), 证明 : 即 x 对应的 Rayleigh 商是 λ 的 O(ε 2 ) 逼近. x A x x x = λ + O(ε2 ), 练习 5.2 设 x, y R n, 试证明 : det(i + xy ) = 1 + y x. ( 注 : 在复数域也成立 ) 练习 5.3 设 A = D + uu, 其中 D = diag(d 1, d 2,..., d n ) 满足 d 1 d 2 d n, u = [u 1, u 2,..., u n ]. (1) 证明 : d i 是 A 的特征值的充要条件是 d i = d i+1 或 d i = d i 1 或 u i = 0; (2) 若 u i = 0, 则 e i 是与 d i 对应的特征向量 ; (3) 若 d i 1 < d i = d i+1 < d i+2 且 u i 0, 证明 : 对 应于 λ = d i 的特征向量 x 满足 x i u i + x i+1 u i+1 = 0. 思考 : 如果 d i 1 < d i = d i+1 = d i+2 < d i+3, 则结论如何? 练习 5.4 设 D = diag(d 1, d 2,..., d n ). 若矩阵 D + αuu 和 D + ûû 具有相同的特征值, 且满足交错性 质 λ 1 > d 1 > λ 2 > d 2 > > λ n > d n. 则它们具有相同的特征向量. 思考 : 如果没有交错性质, 则结论如何?

182 170 第五讲对称特征值问题 练习 5.5 设 q R n 满足 q 2 = 1. 对任意与 q 正交的向量 d R n, 试证明 : (q + d)q I 2 = q + d 2. 练习 5.6 设 A C n n 是 skew-hermitian 矩阵, 即 A = A. 证明 : (1) A 的非零特征值是纯虚数 ; (2) I + A 非奇异 ; (3) 矩阵 (I + A) 1 (I A) 是酉矩阵. ( 该矩阵称为 A 的 Cayley 变换 ) [ ] I B 练习 5.7 设 B R m n, m n 且 B 2 < 1. 若 A =, 证明 : B I κ 2 (A) = 1 + B 2 1 B 2. 思考题练习 5.8 设 x R n 是一个正向量, 即 x i > 0. 证明 : 由 x 定义的 Cauchy 矩阵 A 1 a ij = x i + x j 是对称半正定的. ( 参见詹兴致教授的 矩阵论 ) 进一步, 若 x i 互不相等, 则 A 对称正定 ; 练习 5.9 设 x, y R n, 若 y x 只有零特征值, 证明 : xy 也只有零特征值. 设 X, Y R n 2, 若 Y X 只有零特征值, 则 XY 是否也只有零特征值? 实践题练习 5.10 写出对称矩阵三对角化的完整算法. 练习 5.11 写出带 Wilkinson 位移的计算对称三对角矩阵的特征值和特征向量的完整 QR 算法, 并上机编程实现 (MATLAB).

183 第六讲线性方程组定常迭代方法 通常, 求解线性方程组的方法有 : 直接法 : PLU 分解, LDL T 分解, Cholesky 分解等 迭代法 : 定常 ( 经典, 不动点 ) 迭代法 : Jacobi/Gauss-Seidel, SOR, AOR 等 Krylov 子空间迭代法 : CG, MIRES, GMRES, BiCGStab 等 快速方法 : 基于各种快速变换, 如 FFT, DCT, DST 等 代数多重网格法 (Algebraic multigrid) 快速多极子算法 (Fast multipole) 有些方法可能只适用于某类特殊方程, 如快速方法. 在实际应用中, 这些方法可以结合使用, 如混合 (hybrid) 算法, 预处理算法 (preconditioning) 等. 本讲以 Poisson 方程为例, 主要介绍下面方法 : 定常迭代方法 : Jacobi, GS, SOR, AOR, SSOR Chebyshev 加速 离散 Poisson 快速方法 : 快速 Sine 变换关于 Krylov 子空间迭代方法 (CG, GMRES), 我们将在下一讲介绍. 更多迭代方法可参见 [7]. 6.1 离散 Poisson 方程 在本讲中, 我们以一个典型的线性方程组为例, 逐个介绍各种迭代方法, 并比较它们之间的性能. 这 个方程组就是二维 Poisson 方程经过五点差分离散后得到的线性方程组 一维 Poisson 方程 首先介绍一维 Poisson 方程的离散. 考虑如下带 Dirichlet 边界条件的一维 Poisson 方程 d2 u(x) dx 2 = f(x), 0 < x < 1, u(0) = a, u(1) = b, (6.1) 其中 f(x) 是给定的函数, u(x) 是需要计算的未知函数. 171

184 172 第六讲线性方程组定常迭代方法 差分离散 数, 可得 取步长 h = 1 n + 1, 节点设为 x i = ih, i = 0, 1, 2,..., n + 1. 我们采用二阶中心差分来近似二阶导 d2 u(x) dx 2 = 2u(x i) u(x i 1 ) u(x i+1 ) xi h 2 ( + O 将其代入 (6.1), 舍去高阶项后就可得到 Poisson 方程在 x i 点的近似离散方程 u i 1 + 2u i u i+1 = h 2 f i, h 2 d 4 ) u dx 4, i = 1, 2,..., n. 其中 f i = f(x i ), u i 为 u(x i ) 的近似. 令 i = 1, 2,..., n, 则可得 n 个线性方程. 写成矩阵形式为 T n u = f, (6.2) 其中 T n =.... tridiag( 1, 2, 1), u = u 1 u 2. u n 1 u n f 1 + u 0 f 2, f =.. (6.3) f n 1 f n + u n+1 系数矩阵 T n 的性质 易知, T n 是不可约弱对角占优的. 另外, T n 是对称矩阵, 因此其特征值都是实数. 事实上, 我们有下 面的结论. 引理 6.1 T n 的特征值和对应的特征向量分别为 kπ λ k = 2 2 cos n + 1, [ 2 z k = n + 1 sin kπ ] 2kπ nkπ, sin,..., sin, k = 1, 2,..., n, n + 1 n + 1 n + 1 即 T n = ZΛZ, 其中 Λ = diag(λ 1, λ 2,..., λ n ) 是对角矩阵, Z = [z 1, z 2,..., z n ] 是正交矩阵. 证明. 直接代入验证即可. 由此可知, T n 是对称正定的. 更一般地, 我们有下面的结论. 引理 6.2 设 T = tridiag(a, b, c) R n n, 则 T 的特征值为 λ k = b 2 ac cos 对应的特征向量为 z k, 其第 j 个分量为 z k (j) = kπ, k = 1, 2,..., n, n + 1 ( a c ) j 2 sin jkπ n + 1.

185 6.1 离散 Poisson 方程 173 特别地, 若 a = c = 1, 则对应的单位特征向量为 [ 2 z k = n + 1 sin kπ ] 2kπ nkπ, sin,..., sin. n + 1 n + 1 n + 1 证明. 留作练习, 自行验证. 由引理 6.1 可知, T n 的最大特征值为 ( ) nπ 2 1 cos = 4 sin 2 nπ n + 1 2(n + 1) 4, 最小特征值为 因此, 当 n 很大时, T n 的谱条件数约为 ( ) ( ) 2 π 2 1 cos = 4 sin 2 π π n + 1 2(n + 1). n + 1 κ 2 (T n ) 4(n + 1)2 π 2. 矩阵 T n 有时也称为二阶差分矩阵, 可以写成一阶差分矩阵的乘积, 即 T n = DD, 其中 D =.... R n (n+1) 其中 D 是一阶差分矩阵. 需要注意的是, D 不是方阵, 因此不能用这个分解来求解线性方程组 T n x = b 二维 Poisson 方程 现在考虑二维 Poisson 方程 u(x, y) = 2 u(x, y) x 2 2 u(x, y) y 2 = f(x, y), (x, y) Ω, u(x, y) = u 0 (x, y), (x, y) Ω, (6.4) 其中 Ω = [0, 1] [0, 1] 为求解区域, Ω 表示 Ω 的边界. 五点差分离散 为了简单起见, 我们在 x- 方向和 y- 方向取相同的步长 h = 1 n + 1, 节点设为 x i = ih, y j = jh, i, j = 0, 1, 2,..., n. 在 x- 方向和 y- 方向同时采用二阶中心差分近似, 可得 2 u(x, y) x 2 (xi,y j) 2u(x i, y j ) u(x i 1, y j ) u(x i+1, y j ) h 2,

186 174 第六讲线性方程组定常迭代方法 2 u(x, y) y 2 (xi,y j) 2u(x i, y j ) u(x i, y j 1 ) u(x i, y j+1 ) h 2. 代入 (6.4) 后, 就可以得到二维 Poisson 方程在 (x i, y j ) 点的近似离散方程 4u i,j u i 1,j u i+1,j u i,j 1 u i,j+1 = h 2 f i,j, 其中 f ij = f(x i, y j ), u i,j 为 u(x i, y j ) 的近似. 这个离散格式可以用下面的图来描述. (x i, y j+1 ) 1 (x i 1, y j ) 1 (x i, y j ) 4 (x i+1, y j ) 1 (x i, y j 1 ) 1 写成矩阵形式即为 T u = h 2 f, (6.5) 其中 T I T n + T n I, u = [u 1,1,..., u n,1, u 1,2,..., u n,2,..., u 1,n,..., u n,n ]. 这里 表示 Kronecker 乘积, T n 为一维 Poisson 方程离散后的系数矩阵, 即 (6.3). 需要注意的是, 系数矩阵与网格点的排序有关, 不同的排序方式对应不同的系数矩阵. 这里是按自然顺序排列的. 相类似地, 如果对三维 poisson 方程进行中心差分离散, 则对应的系数矩阵为 T n I I + I T n I + I I T n. 在后面介绍方法时, 我们都以二维离散 Poisson 方程 (6.5) 为例. 系数矩阵 T 的性质由于 T = I T n + T n I, 根据 Kronecker 乘积的性质, 可以立即得到下面的结论. 定理 6.1 设 T n = ZΛZ, 其中 Z = [z 1, z 2,..., z n ] 为正交阵, Λ = diag(λ 1, λ 2,..., λ n ) 为对角阵, 则 T 的特征值分解为 T = (Z Z)(I Λ + Λ I)(Z Z), 即 T 的特征值为 λ i + λ j, 对应的特征向量为 z i z j (i, j = 1, 2,..., n). 由于 T 对称正定, 其条件数为 nπ κ(t ) = λ max(t ) 1 cos sin 2 nπ λ min (T ) = n + 1 2(n + 1) π = 1 cos sin 2 π n + 1 2(n + 1) 4(n + 1)2 π 2.

187 6.2 定常迭代方法 175 故当 n 越来越大时, κ(t ), 即 T 越来越病态. 求解二维离散 Poisson 方程的常用方法 假定网格剖分为 n n, 并记 N = n 2. 方法 串行时间 存储空间 直接法 稠密 Cholesky 分解 O(N 3 ) O(N 2 ) 显式求逆 O(N 2 ) O(N 2 ) 带状 Cholesky 分解 O(N 2 ) O(N 3/2 ) 稀疏 Cholesky 分解 O(N 3/2 ) O(N log N) 基本迭代法 Jacobi O(N 2 ) O(N) Gauss-Seidel O(N 2 ) O(N) SOR O(N 3/2) O(N) 带 Chebyshev 加速的 SSOR O(N 5/4 ) O(N) Krylov 子空间迭代 CG ( 共轭梯度法 ) O(N 3/2 ) O(N) CG ( 带修正 IC 预处理 ) O(N 5/4 ) O(N) 快速方法 DST ( 快速 Sine 变换 ) O(N log N) O(N) 块循环约化 O(N log N) O(N) Multigrid O(N) O(N) 6.2 定常迭代方法 随着矩阵规模的增大, 直接法的运算量也随之快速增长. 对于大规模的线性方程组, 由于运算量太大, 直接法一般不再被采用, 取而代之的是迭代方法. 当直接求解 Ax = b 比较困难时, 我们可以求解一个近似等价方程组 Mx = b, 其中 M 可以看作是 A 在某种意义下的近似. 设 Mx = b 的解为 x (1). 易知它与原方程的解 x = A 1 b 之间的误差满足 A(x x (1) ) = b Ax (1). 如果 x (1) 已经满足精度要求, 即非常接近真解 x, 则可以停止计算, 否则需要修正. 设修正量为 x, 则 x 满足方程 A x = b Ax (1). 但由于直接求解该方程比较困难, 因此我们还是通过求解近似方程 M x = b Ax (1), 得到一个近似的修正量 x. 于是修正后的近似解为 x (2) = x (1) + x = x (1) + M 1 (b Ax (1) ). 如果 x (2) 已经满足精度要求, 则停止计算, 否则继续按以上的方式进行修正.

188 176 第六讲线性方程组定常迭代方法 不断重复以上步骤, 于是, 我们就得到一个序列 x (1), x (2),...,, x (k),.... 满足以下递推关系 x (k+1) = x (k) + M 1 (b Ax (k) ), k = 1, 2,.... 这就构成了一个迭代方法. 由于每次迭代的格式是一样的, 因此称为定常迭代. 通常, 构造一个好的定常迭代, 需要考虑以下两点 : (1) 以 M 为系数矩阵的线性方程组必须要比原线性方程组更容易求解 ; (2) M 应该是 A 的一个很好的近似, 且迭代序列 {x k } 要收敛. 常用的定常迭代方法是基于矩阵分裂的迭代方法, 主要包括 : Jacobi 方法 Gauss-Seidel (G-S) 方法 超松弛 (SOR, Successive Over-Relaxation) 方法 对称超松弛 (SSOR, Symmetric SOR) 方法 加速超松弛 (AOR, Accelerated Over-Relaxation) 方法 矩阵分裂迭代方法 首先给出矩阵分裂的定义. 定义 6.1 ( 矩阵分裂 Matrix Splitting) 设 A R n n 非奇异, 称 A = M N (6.6) 为 A 的一个矩阵分裂, 其中 M 非奇异. 考虑线性方程组 Ax = b, (6.7) 其中 A R n n 非奇异. 迭代方法的基本思想 : 给定一个迭代初始值 x (0), 通过一定的迭代格式生成一 个迭代序列 {x (k) } k=0, 使得 lim k x(k) = x A 1 b. 给定一个矩阵分裂 (6.6), 则原方程组 (6.7) 就等价于 Mx = Nx + b. 于是我们就可以构造出以下的迭代 格式 或 Mx (k+1) = Nx (k) + b, k = 0, 1,..., x (k+1) = M 1 Nx (k) + M 1 b Gx (k) + g, k = 0, 1,..., (6.8) 其中 G = M 1 N 称为迭代矩阵. 这就是基于矩阵分裂 (6.6) 的迭代方法. 易知, 选取不同的 M, 就可以 构造出不同的迭代方法.

189 6.2 定常迭代方法 Jacobi 迭代 将矩阵 A 分裂为 A = D L U, 其中 D 为 A 的对角线部分, L 和 U 分别为 A 的严格下三角和严格上三角部分. 在矩阵分裂 A = M N 中取 M = D, N = L + U, 则可得 Jacobi 迭代方法 : x (k+1) = D 1 (L + U)x (k) + D 1 b, k = 0, 1, 2,.... (6.9) 对应的迭代矩阵为 写成分量形式即为 x (k+1) i = 1 b i a ii G J = D 1 (L + U). n j=1,j i a ij x (k) j, i = 1, 2,..., n. 由于 Jacobi 迭代中 x (k+1) i 的更新顺序与 i 无关, 即可以按顺序 i = 1, 2,..., n 计算, 也可以按顺序 i = n, n 1,..., 2, 1 计算, 或者乱序计算. 因此 Jacobi 迭代非常适合并行计算. 算法 6.1. Jacobi 迭代 1: Given an initial guess x (0) 2: while not converge do 3: for i = 1 to n( do 4: x (k+1) i = 5: end for 6: end while b i n j=1,j i a ij x (k) j ) / a ii 我们有时也将 Jacobi 迭代格式写为 x (k+1) = x (k) + D 1 (b Ax (k) ) = x (k) + D 1 r k, k = 0, 1, 2,..., 其中 r k b Ax (k) 是 k 次迭代后的残量. 这表明, x (k+1) 是通过对 x (k) 做一个修正得到的. 下面给出求解二维离散 Poisson 方程 (6.5) 的 Jacobi 迭代方法. 算法 6.2. 求解二维离散 Poisson 方程的 Jacobi 迭代方法 1: Given an initial guess v (0) 2: while not converge do 3: for i = 1 to N do 4: for j = 1 to N do 5: u (k+1) i,j = 6: end for ( h 2 f i,j + u (k) i+1,j + u(k) i 1,j + u(k) i,j+1 + u(k) i,j 1 ) /4

190 178 第六讲线性方程组定常迭代方法 7: end for 8: end while Gauss-Seidel 迭代 在分裂 A = M N 中取 M = D L, N = U, 即可得 Gauss-Seidel (G-S) 迭代方法 : x (k+1) = (D L) 1 Ux (k) + (D L) 1 b. (6.10) 对应的迭代矩阵为 将 G-S 迭代改写为 G GS = (D L) 1 U. Dx (k+1) = Lx (k+1) + Ux (k) + b, 即可得分量形式 x (k+1) i = 1 b i a ii i 1 j=1 a ij x (k+1) j n j=i+1 a ij x (k) j, i = 1, 2,..., n. 算法 6.3. Gauss-Seidel 迭代 1: Given an initial guess x (0) 2: while not converge do 3: for i = 1 to n do ( 4: x (k+1) i = 1 b i i 1 5: end for 6: end while a ii j=1 a ij x (k+1) j n j=i+1 a ij x (k) j ) 与 Jacobi 迭代方法类似, 我们也可以给出求解问题 (6.5) 的 G-S 迭代方法. G-S 方法的主要优点是充分利用了已经获得的最新数据. 但在 G-S 方法中, 未知量的更新必须按自然顺序进行, 因此不适合并行计算. 下面我们介绍一种适合并行计算的更新顺序 : 红黑排序, 即将二维网格点依次做红黑记号, 如右图所示. 在计算过程中, 对未知量的值进行更新时, 我们可以先更新红色节点, 此时所使用的只是黑色节点的数据, 然后再更新黑色节点, 这时使用的是红色节点的数据. 于是我们得到下面红黑排序 G-S 迭代方法. 由于在更新红点时, 各个点之间是相互独立的, 因此可以并行计算. 同样, 在更新黑点时, 各个点之间也是相互独立的, 因此也可以并行计算.

191 6.2 定常迭代方法 179 算法 6.4. 求解二维离散 Poisson 方程的红黑排序 G-S 迭代方法 1: Given an initial guess v (0) 2: while not converge do 3: for (i, j) 为红色节点 do 4: u (k+1) i,j = 1 ( ) h 2 f i,j + u (k) i+1,j 4 + u(k) i 1,j + u(k) i,j+1 + u(k) i,j 1 5: end for 6: for (i, j) 为黑色节点 do 7: u (k+1) i,j = 1 ( ) h 2 f i,j + u (k+1) i+1,j 4 + u(k+1) i 1,j + u(k+1) i,j+1 + u(k+1) i,j 1 8: end for 9: end while SOR 迭代在 G-S 方法的基础上, 我们可以通过引入一个松弛参数 ω 来加快收敛速度. 这就是 SOR (Successive Overrelaxation) 方法 [78]. 该方法的基本思想是将 G-S 方法中的第 k + 1 步近似解与第 k 步近似解做一个加权平均, 从而给出一个新的近似解, 即 ( ) x (k+1) = (1 ω)x (k) + ωd 1 Lx (k+1) + Ux (k) + b. (6.11) 整理后即为 x (k+1) = (D ωl) 1 ((1 ω)d + ωu) x (k) + ω(d ωl) 1 b, (6.12) 其中 ω 称为松弛参数 (relaxation parameter). 当 ω = 1 时, SOR 即为 G-S 方法, 当 ω < 1 时, 称为低松弛 (under relaxation) 方法, 当 ω > 1 时, 称为超松弛 (over relaxation) 方法. 在大多数情况下, 当 ω > 1 时会取得比较好的收敛效果. SOR 方法曾经在很长一段时间内是科学计算中求解线性方程组的首选方法. SOR 的迭代矩阵为 G SOR = (D ωl) 1 ((1 ω)d + ωu), 对应的矩阵分裂为 由 (6.11) 可知 SOR 迭代的分量形式为 x (k+1) i = (1 ω)x (k) i = x (k) i M = 1 ω D L, + ω i 1 b i a ii + ω i 1 b i a ii j=1 N = 1 ω ω D + U. j=1 a ij x (k+1) j a ij x (k+1) j n j=i n j=i+1 a ij x (k) j a ij x (k) j

192 180 第六讲线性方程组定常迭代方法 算法 6.5. 求解线性方程组的 SOR 迭代方法 1: Given an initial guess x (0) and parameter ω 2: while not converge do 3: for i = 1 to n do 4: x (k+1) i 5: end for 6: end while = (1 ω)x (k) i + ω a ii ( b i i 1 j=1 a ij x (k+1) j n j=i+1 a ij x (k) j ) SOR 方法最大的优点是引入了松弛参数 ω: 通过选取适当的 ω 就可以大大提高方法的收敛速度. 但是 SOR 方法最大的难点就是如何选取最优的参数 SSOR 迭代方法将 SOR 方法中的 L 和 U 相互交换位置, 则可得迭代格式 x (k+1) = (D ωu) 1 ((1 ω)d + ωl) x (k) + ω(d ωu) 1 b. 将这个迭代格式与 SOR 相结合, 就可以得到下面的两步迭代方法 x (k+ 1 2 ) = (D ωl) 1[ (1 ω)d + ωu ] x (k) + ω(d ωl) 1 b, x (k+1) = (D ωu) 1[ (1 ω)d + ωl ] x (k+ 1 2 ) + ω(d ωu) 1 b. 这就是对称超松弛 (SSOR ) 迭代方法, 相当于将 L 与 U 同等看待, 交替做两次 SOR 迭代. 消去中间迭代向量 x (k+ 1 2 ), 可得 x (k+1) = G SSOR x (k) + g, 其中迭代矩阵 G SSOR = (D ωu) 1[ (1 ω)d + ωl ] (D ωl) 1[ (1 ω)d + ωu ]. 对应的矩阵分裂为 1 [ M = D ω(l + U) + ω 2 LD 1 U ] ω(2 ω) 1 = ω(2 ω) (D ωl)d 1 (D ωu), 1 [ ] N = (1 ω)d + ωl D 1 [ (1 ω)d + ωu ]. ω(2 ω) 对于某些特殊问题, SOR 方法不收敛, 但仍然可能构造出收敛的 SSOR 方法.

193 6.2 定常迭代方法 181 一般来说, SOR 方法的渐进收敛速度对参数 ω 比较敏感, 但 SSOR 的收敛速度对参数 ω 不太敏 感. 算法 6.6. SSOR 方法 1: Given an initial guess v (0) and parameter ω 2: while not converge do 3: for i = 1 to n do 4: x (k+ 1 2 ) i 5: end for = (1 ω)x (k) i + ω a ii ( b i i 1 j=1 6: for i = n to 1 do ( 7: x (k+1) i = (1 ω)x (k+ 1 2 ) i + ω b i i 1 a ii 8: end for 9: end while a ij x (k+ 1 2 ) j n j=1 j=i+1 a ij x (k+ 1 2 ) j n j=i+1 a ij x (k) j ) a ij x (k+1) j ) 例 6.1 已知二维 Poisson 方程 u(x, y) = 1, (x, y) Ω u(x, y) = x2 + y 2, 4 (x, y) Ω 其中 Ω = (0, 1) (0, 1). 该方程的解析解是 u(x, y) = x2 + y 2. 用五点差分格式离散后得到一个线性 4 方程组, 分别用 SOR 和 SSOR 方法求解方程, 观察参数对方法收敛的影响. 参见 MATLAB 程序 Poisson_SOR_omega.m 和 Poisson_SSOR_omega.m. 下图中画出了 N = 8 时, SOR 和 SSOR 收敛结果与参数 ω 取值之间的关系. 图 6.1. SOR 和 SSOR 的收敛结果与 ω 取值的关系.

194 182 第六讲线性方程组定常迭代方法 AOR 迭代 Hadjidimos 于 1978 年提出了加速超松弛 (AOR, Accelerated Over-Relaxation ) 方法, 迭代矩阵为 G AOR = (D γl) 1[ (1 ω)d + (ω γ)l + ωu ], 其中 γ 和 ω 为松弛参数. 对应的矩阵分解为 M = 1 (D γl), ω N = 1 [(1 ω)d + (ω γ)l + ωu]. ω 易知 : (1) 当 γ = ω 时, AOR 方法即为 SOR 方法 ; (2) 当 γ = ω = 1 时, AOR 方法即为 G-S 方法 ; (3) 当 γ = 0, ω = 1 时, AOR 方法即为 Jacobi 方法. AOR 方法中含有两个参数. 因此在理论上, 通过选取合适的参数, AOR 方法会收敛得更快. 但也是因为含有两个参数, 使得参数的选取变得更加困难, 因此较少使用. 与 SSOR 类似, 我们也可以定义 SAOR 方法 Richardson 方法 Richardson 方法是一类形式非常简单的算法, 其迭代格式为 x (k+1) = x (k) + ω(b Ax (k) ), k = 0, 1, 2,.... 它可以看作是基于以下矩阵分裂的迭代方法 : M = 1 ω I, N = 1 ω I A. 对应的迭代矩阵为 G R = I ωa. 定理 6.2 设 A R n n 是对称正定矩阵, λ 1 和 λ n 分别是 A 的最大和最小特征值, 则 Richardson 方法 收敛当且仅当 另外, Richardson 方法的最优参数为 0 < ω < 1 λ 1. 2 ω = arg min ρ(g R ) =, ω λ 1 + λ n 即当 ω = ω 时, 迭代矩阵的谱半径达到最小, 且有 1 ωλ n if ω ω λ 1 λ n ρ(g R ) = = κ(a) 1 if ω = ω λ 1 + λ n κ(a) + 1 ωλ 1 1 if ω ω.

195 6.3 收敛性分析 183 如果在每次迭代时取不同的参数, 即 x (k+1) = x (k) + ω k (b Ax (k) ), k = 0, 1, 2,..., 则每次迭代的格式就不一样了, 因此不再是定常迭代, 而是非定常 (Nonstationary ) 迭代. 此时称为非定常 Richardson 方法 分块迭代方法 前面介绍的迭代方法可以推广到分块情形. 将 A 写 成如下的分块形式 : A 11 A 12 A 1p A 21 A 22 A 2p A = A p1 A p2 A pp 设 A = D L U, 其中 D, L, U 分别是 A 的块 对角, 块严格下三角和块严格上三角矩阵. 则相应的分块 Jacobi, 分块 Gauss-Seidel 和分块 SOR 方法分别为 分块 Jacobi 迭代 : 分块 Gauss-seidel 迭代 : 分块 SOR 迭代 : A ii x (k+1) i x (k+1) i A ii x (k+1) i = b i i 1 = b i = (1 ω)x (k) i j=1 i = 1, 2,..., p. p j=1,j i A ij x (k+1) j + ωa 1 ii A ij x (k) j, i = 1, 2,..., p. p j=i+1 i 1 b i j=1 A ij x (k) j, i = 1, 2,..., p. A ij x (k+1) j p j=i+1 A ij x (k) j, 6.3 收敛性分析 定常迭代方法的收敛性

196 184 第六讲线性方程组定常迭代方法 定义 6.2 ( 迭代方法的收敛性 ) 如果对任意的初始向量 x (0), 都有 lim k x(k) x, 则称迭代格式 (6.8) 是收敛的, 否则就称其为发散的. 基于矩阵分裂的迭代方法, 其收敛性取决于迭代矩阵的谱半径. 矩阵谱半径 设 A R n n, 则称 ρ(a) max λ λ σ(a) 为 A 的谱半径, 其中 σ(a) 表示 A 的所有特征值组成的集合. 谱半径与矩阵范数之间有如下的关系. 引理 6.3 ( 谱半径与范数的关系 ) 设 G R n n, 则 (1) 对任意算子范数, 有 ρ(g) G ; (2) 反之, 对任意 ε > 0, 都存在一个算子范数 ε, 使得 G ε ρ(g) + ε, 其中范数 ε 依赖于 G 和 ε. 所以, 若 ρ(g) < 1, 则存在算子范数 ε, 使得 G ε < 1; 证明. (1) 设 λ 是 G 的一个特征值, 对应的特征向量为 x 0, 则由 Gx = λx 可得 λ x = λx = Gx G x. 故 λ G. 所以 ρ(g) = max λ G. λ σ(g) (2) 用构造法证明. 设 G 的 Jordan 标准型为 J, 即 S 1 GS = J. 令 D = diag(1, ε, ε 2,..., ε n 1 ), 则 λ 1 ε ε λ 1 λ 2 ε (SD) 1 G(SD) = D JD =.... ε λ

197 6.3 收敛性分析 185 定义 x ε (SD) 1 x. 可以证明 ε 构成一个向量范数. 由此可得诱导范数 Gx ε (SD) 1 Gx G ε max = max x 0 x ε x 0 (SD) 1 x (SD) 1 G(SD)y = max y 0 y = (SD) 1 G(SD) max { λ } + ε = ρ(g) + ε. λ σ(g) 事实上, 引理 6.3 中的结论 (1) 对任意矩阵范数都成立, 见习题 6.2. 由定理 1.14 和引理 6.3, 我们可以立即得到下面的结论. 定理 6.3 设矩阵 G R n n, 则 lim k Gk = 0 当且仅当 ρ(g) < 1. 下面的结论是谱半径与算子范数之间的一个非常重要的性质. 引理 6.4 设 G R n n, 则对任意算子范数, 有 ρ(g) = lim k Gk 1 k. 证明. 首先, 我们有 ρ(g) k = ρ(g k ) G k. 另一方面, 对任意 ε > 0, 记 G ε = G ρ(g) + ε. 则 ρ(g ε ) < 1, 故 lim k Gk ε = 0. 因此存在正整数 N, 使得当 k > N 时, 有 G k ε < 1, 即 所以 G k (ρ(g) + ε) k = G k (ρ(g) + ε) k < 1. ρ(g) G k 1 k ρ(g) + ε. 由 ε 的任意性可知, 当 k 时, 有 G k 1 k ρ(g). 事实上, 引理 6.4 中的结论对任意矩阵范数都成立. 迭代方法收敛性判断 下面考虑迭代方法 6.8 的收敛性. 首先给出一个迭代方法收敛的充分条件.

198 186 第六讲线性方程组定常迭代方法 引理 6.5 若存在算子范数, 使得 G < 1, 则迭代方法 6.8 收敛. 证明. 由 x (k+1) = Gx (k) + g 和 x = Gx + g 可得 ) x (k+1) x = G (x (k) x. 故 x (k+1) x G x (k) x. 依此类推, 可得 x (k+1) x G k+1 x (0) x. 由于 G < 1, 当 k 时, 上式右端 0, 即 x (k+1) x 0. 因此方法收敛. 我们记 e (k) x (k) x 为第 k 步迭代解 x (k) 的误差向量. 定理 6.4 ( 收敛性定理 ) 对任意迭代初始向量 x (0), 迭代方法 6.8 收敛的充要条件是 ρ(g) < 1. 证明. 必要性 : 用反证法, 假设 ρ(g) 1. 设 λ 为 G 的模最大的特征值, 即 λ = ρ(g) 1. 令 x 0 为其对应的特征向量. 取迭代初始向量 x (0) = x + x, 则 x (k) x = G(x (k 1) x ) = = G k (x (0) x ) = G k x = λ k x, 不可能收敛到 0, 即方法不收敛. 故假设不成立, 因此 ρ(g) < 1. 充分性 : 若 ρ(g) < 1, 则由引理 6.3 可知, 存在一个算子范数 ε, 使得 G ε < 1. 再由引理 6.5 可知, 方法收敛. 定义 6.3 设 G 是迭代矩阵, 则迭代方法 6.8 的平均收敛速度定义为 R k (G) ln G k 1 k, 渐进收敛速度定义为 R(G) lim k R k(g) = ln ρ(g). 平均收敛速度与迭代步数和所用的范数有关, 但渐进收敛速度只依赖于迭代矩阵的谱半径. 定理 6.5 考虑迭代方法 6.8. 如果存在某个算子范数 使得 G = q < 1, 则 (1) x (k) x q k x (0) x ; (2) x (k) x q 1 q x(k) x (k 1) ; (3) x (k) x qk 1 q x(1) x (0).

199 6.3 收敛性分析 187 证明. (1) 由 x (k+1) = Gx (k) + g 和 x = Gx + g 可得 x (k+1) x (k) = G (x (k) x (k 1)) 和 ) x (k+1) x = G (x (k) x. 因此有 和 x (k+1) x (k) q x (k) x (k 1), (6.13) x (k+1) x q x (k) x. (6.14) 反复利用结论 (6.14) 即可得 x (k) x q k x (0) x. (2) 由于 x (k+1) x (k) = x x (k) (x x (k+1) ) x x (k) x x (k+1) (1 q) x x (k). 结合 (6.20) 可得 x x (k) 1 1 q x(k+1) x (k) q 1 q x(k) x (k 1). (3) 反复利用 (6.20) 即可得 x (k+1) x (k) q k x (1) x (0). 所以 x x (k) 1 1 q x(k+1) x (k) qk 1 q x(1) x (0). 一般来说, 好的迭代方法应该满足 : (1) ρ(g) 很小 ; (2) 以 M 为系数矩阵的线性方程组比较容易求解 二维离散 Poisson 方程情形对于定常迭代方法, 其收敛的充要条件是迭代矩阵的谱半径小于 1. 当谱半径不可求时, 我们可以根据迭代矩阵的范数来判断, 即如果迭代矩阵的某个算子范数小于 1, 则方法也收敛. 本小节考虑求解二维离散 Poisson 方程的 Jacobi, G-S 和 SOR 方法的收敛性. 考虑这些方法的收敛性, 只需研究相应的迭代矩阵的谱半径即可. 对于二维离散 Poisson 方程, 系数矩阵为 A = T = I T n + T n I. 故 Jacobi 方法的迭代矩阵为 G J = D 1 (L + U) = (4I) 1 (4I T ) = I T /4. (6.15)

200 188 第六讲线性方程组定常迭代方法 由于 T 的特征值为 λ i + λ j = 2 所以 G J 的特征值为 故 即 Jacobi 方法是收敛的. ( 1 cos ) ( πi cos n (λ i + λ j )/4 = 1 2 ) ( πj = 4 2 cos n + 1 ( cos πi n cos ) πj. n + 1 πi n cos ρ(g J ) = 1 { } 2 max πi cos i,j n cos πj π n + 1 = cos n + 1 < 1, ) πj, n + 1 注意当 n 越来越大时, κ(t ), 即 T 越来越病态, 此时 ρ(g J ) 1, 即 Jacobi 方法收敛越来越慢. 通常, 问题越病态就越难求解. 关于 G-S 方法和 SOR 方法, 我们有下面的结论. 性质 6.1 设 G GS 和 G SOR 分别表示求解二维 Poisson 方程的红黑排序的 G-S 方法和 SOR 方法的迭代 矩阵, 则有 ρ(g GS ) = ρ(g J ) 2 = cos 2 ρ(g SOR ) = cos 2 π n + 1 π n + 1 ( 1 + sin π n + 1 < 1 (6.16) 2 ) 2 < 1, ω = 1 + sin π n + 1. (6.17) 大时, 有 在上述结论中, SOR 方法中的 ω 是最优参数, 即此时的 ρ(g SOR ) 最小. 由 Taylor 公式可知, 当 n 很 由于当 n 很大时有 ρ(g J ) = cos ρ(g SOR ) = π n π 2 cos 2 π n + 1 π n + 1 ( 1 + sin ( 1 2(n + 1) 2 = 1 O n 2 ) 2 1 2π n + 1 = 1 O ( 1 1 ) k 1 k n n = 1 kn ( n ) kn n 2, ), ( ) 1. n 即 SOR 方法迭代 k 步后误差的减小量与 Jacobi 方法迭代 kn 步后误差减小量差不多. 因此, 对于二维离 散 Poisson 方程, 当 SOR 方法取最优参数时, 收敛速度大约是 Jacobi 方法的 n 倍. 这里需要指出的是, 对于一般线性方程组, 上述结论不一定成立. 2 倍. 由于 ρ(g GS ) = ρ(g J ) 2, 因此, 对于二维离散 Poisson 方程, G-S 方法的收敛速度大约是 Jacobi 方法的

201 6.3 收敛性分析 189 事实上, 当 n 很大时, 这三个方法的收敛速度都很慢. 例 6.2 已知二维 Poisson 方程 u(x, y) = 1, (x, y) Ω u(x, y) = x2 + y 2, 4 (x, y) Ω 其中 Ω = (0, 1) (0, 1). 该方程的解析解是 u(x, y) = x2 + y 2. 用五点差分格式离散后得到一个线性 4 方程组, 分别用 Jacobi, G-S 和 SOR 方法计算这个方程组的解, 并比较收敛效果. 解. 参见 MATLAB 程序 Poisson_Jacobi_GS_SOR.m. 下图中画出了 N = 16, 32, 64, 128 时, 这三种方 法的相对误差下降情况. 图 6.2. Jacobi, G-S 和 SOR 方法的相对误差下降情况.

202 190 第六讲线性方程组定常迭代方法 不可约对角占优矩阵这里我们考虑 A 是严格对角占优或不可约弱对角占优情形. 由前面的结论可知, A 是非奇异的. 定理 6.6 设 A R n n, 若 A 严格对角占优, 则 Jacobi 方法和 G-S 方法都收敛, 且 G GS G J < 1. 证明. 首先证明 G J < 1. 由于 A 严格行对角占优, 故 a ij / a ii < 1. 所以 j i G J = D 1 a ij (L + U) = max 1 i n a ii < 1. j i 下面证明 G GS G J, 只需证明 G GS e G J e 即可, 其中 e = [1, 1,..., 1]. 于是 令 L = D 1 L 和 Ũ = D 1 U. 则 L 是严格下三角矩阵, 故 Ln = 0, 所以 (I L) 1 = I + L + L L n 1. G GS e = (D L) 1 U e = (I L) 1 Ũ e 由 A 的严格行对角占优性可知 1 j i = (I + L + L 2 n L )Ũ e ( I + L + L 2 n L ) Ũ e 1 = (I L ) Ũ e. (6.18) a ij a ii > 0, 即 (I L Ũ )e > 0. 两边同乘 L 0 可得 0 L (I L Ũ )e = ( L L 2 + Ũ L Ũ Ũ )e = ( (I L )( L + Ũ ) Ũ ) e, 即 Ũ e (I L )( L + Ũ )e. 两边同乘 (I L ) 1 0 可得 (I L ) 1 Ũ e ( L + Ũ )e. 又 L + Ũ = D 1 (L + U) = G J, 由 (6.18) 可知 G GS e G J e, 即定理结论成立. 当 A 是严格列对角占优时, 该结论也成立. 定理 6.7 设 A R n n, 若 A 是弱对角占优且不可约, 则 Jacobi 方法和 G-S 方法都收敛. 进一步, 若 A 是非负矩阵, 则 ρ(g GS ) < ρ(g J ) < 1. 证明. 略. ( 可参见 [77, page 76,79])

203 6.3 收敛性分析 191 二维离散 Poisson 方程是弱行对角占优且不可约, 故对 Jacobi 方法和 G-S 方法都收敛. 上述定理中的结论对一般矩阵并不成立 : 对某些矩阵, Jacobi 方法收敛, 但 G-S 方法却不一定收 敛. 关于 SOR 方法, 我们有下面的结论. 定理 6.8 设 A R n n, 若 A 严格对角占优且 0 < ω 1, 则 SOR 方法收敛. 证明. 反证法. 假设 ρ(g SOR ) 1. 不妨设 λ 是 G SOR 的特征值, 满足 λ 1. 因此 det(λi G SOR ) = 0. 又 det(i ω L) = 1, 所以 det(λ(i ω L) (1 ω)i ωũ) = 0. 由 0 < ω 1 和 λ 1 可知 λ + ω 1 0. 所以 det( G) = 0, 其中 G = I λω λ + ω 1 L ω λ + ω 1Ũ. 令 λ = a + bi, 其中 a, b R. 则根据 0 < ω 1 和 λ 1 可得 λ + ω 1 2 λω 2 = (a + ω + 1) 2 + b 2 ω 2 (a 2 + b 2 ) = (1 ω)[(a 1) 2 + ω(a 2 + b 2 1) + b 2 ] 0. 所以 ω λ + ω 1 λω λ + ω 1 1. 又 A 是严格对角占优的, 所以 G 也严格对角占优. 这意味着 det( G) 0, 矛盾. 定理 6.9 设 A R n n, 若 A 是弱对角占优且不可约, 且 0 < ω 1, 则 SOR 方法收敛 对称正定矩阵在给出收敛性结论之前, 也介绍两个需要用到的引理. 引理 6.6 设 A C n n Hermite 对称, 且 A = M N 是 A 的一个矩阵分裂, 则 M + N 也是 Hermite 对称, 且对任意 x C n 有 x Ax x A x = u (M + N)u, 其中 x = M 1 Nx, u = x x. 证明. 由于 A Hermite 对称, 所以 M + N = M + M A 也 Hermite 对称. 由于 x = M 1 Nx, 所以 M x = Nx, 因此 Mu = Mx M x = Mx Nx = Ax,

204 192 第六讲线性方程组定常迭代方法 Nu = Nx N x = M x N x = A x. 由 M + N 的对称性可知 M = M + N N. 又 (Nx) = (M x), 所以 x Ax x A x = x Mu x Nu = x (M + N N )u x Nu = x M u x N u + x Nu x Nu = x M u x M u + u Nu = u (M + N)u. 引理 6.7 设 A R n n 对称, 且 A = M N 是 A 的一个矩阵分裂. (1) 如果 A 和 M + N 都是正定矩阵, 则 M 非奇异且 ρ(m 1 N) < 1; (2) 如果 ρ(m 1 N) < 1 且 M + N 正定, 则 A 正定. 证明. (1) 首先证明 M 是非奇异的. 用反证法, 假设 M 奇异, 则存在非零向量 x 使得 Mx = 0, 故有 x M = (Mx) = 0. 又 A 对称正定, 所以 x (M + M A)x = x Ax < 0, 与 M + M A 对称正定矛盾, 故 M 非奇异. 下面证明 ρ(m 1 N) < 1. 设 λ C 是 M 1 N 的一个特征值, 对应的特征向量为 x 0, 即 M 1 Nx = λx. 我们首先说明 λ 1. 假设 λ = 1, 则可得 Mx = Nx, 即 Ax = 0. 由于 A 非奇异, 所以 x = 0, 矛盾. 令 x = M 1 Nx = λx, u = x x = (1 λ)x. 则由引理 6.6 可得 (1 λ 2 )x Ax = 1 λ 2 x (M + N)x. 由于 A 和 M + N 都是正定矩阵, 所以上式右端为正, 故 λ < 1. 因此 ρ(m 1 N) < 1. (2) 反证法. 假设 A 不是正定的. 由于 ρ(m 1 N) < 1, 所以 A = M(I M 1 N) 非奇异, 因此存在 x (0) R n, 使得 以 x (0) 为初始点, 构造迭代序列 η ( x (0)) Ax (0) < 0. x (k) = M 1 Nx (k 1), k = 1, 2,.... 由 ρ(m 1 N) < 1 可知 lim k x(k) = lim (M 1 N) k x (0) = 0. (6.19) k 令 u (k) = x (k 1) x (k), 则由引理 6.6 可得 ( x (k 1)) ( Ax (k 1) x (k)) ( Ax (k) = u (k)) (M + N)u (k).

205 6.3 收敛性分析 193 由于 M + N 对称正定, 上式右端非负, 所以 ( x (k)) ( Ax (k) x (k 1)) Ax (k 1). 依此类推, 可得 这与 (6.19) 矛盾. 因此 A 一定是正定的. ( x (k)) ( Ax (k) x (0)) Ax (0) = η < 0. 我们首先给出 SOR 迭代收敛的一个必要条件. 定理 6.10 对于 SOR 方法, 有 ρ(g SOR ) 1 ω, 故 SOR 方法收敛的必要条件是 0 < ω < 2. 证明. SOR 方法的迭代矩阵为 G SOR = (D ωl) 1 ((1 ω)d + ωu) = (I ω L) 1 ((1 ω)i + ωũ). 所以 G SOR 的行列式为 det ( ) ( G SOR = det (I ω 1 L) ) det((1 ω)i + ωũ) = ( det(i ω L) ) 1 (1 ω) n = (1 ω) n. 设 G SOR 的特征为 λ 1, λ 2,..., λ n, 则 λ 1 λ 2 λ n = det ( ) G SOR = (1 ω) n, 故至少有一个特征值的绝对值不小于 1 ω, 即 ρ(g SOR ) 1 ω. 若 SOR 收敛, 则 ρ(g SOR ) < 1, 因此 1 ω < 1, 即 0 < ω < 2. 定理 6.11 设 A R n n 对称正定. (1) 若 2D A 正定, 则 Jacobi 迭代收敛. (2) 若 0 < ω < 2, 则 SOR 和 SSOR 收敛. (3) G-S 迭代收敛. 证明. 留作练习 ( 利用引理 6.7). 若系数矩阵对称正定, 则 SOR 方法收敛的充要条件是 0 < ω < 2. 对于二维离散 Poisson 方程, 其系数矩阵是对称正定的, 故当 0 < ω < 2 时, SOR 方法收敛. 定理 6.12 设 A R n n 对称. (1) 若 2D A 正定且 Jacobi 迭代收敛, 则 A 正定 ; (2) 若 D 正定, 且存在 ω (0, 2) 使得 SOR ( 或 SSOR) 收敛, 则 A 正定 ;

206 194 第六讲线性方程组定常迭代方法 (3) 若 D 正定, 且 G-S 迭代收敛, 则 A 正定. 证明. 留作练习 ( 利用引理 6.7) 相容次序矩阵针对一类特殊的矩阵, 这三种迭代方法的特征值之间存在一种特殊关系, 特别是 Jacobi 迭代和 SOR 迭代. 定义 6.4 设 A R n n, 如果存在一个置换矩阵 P, 使得 [ ] P AP D1 F =, (6.20) E D 2 其中 D 1, D 2 为对角矩阵, 则称 A 具有性质 A. 例 6.3 对于二维离散 Poisson 方程, 系数矩阵 T N 2 具有性质 A. 事实上, 设 TN 2 为模型问题采用红黑排 序后的系数矩阵, 则 TN 2 具有 (6.20) 的结构. 引理 6.8 设 B R n n 具有下面的结构 [ ] 0 B12 B =, B 21 0 令 B L 和 B U 分别表示 B 的下三角和上三角部分, 则 (1) 若 µ 是 B 的特征值, 则 µ 也是 B 的特征值 ; (2) B(α) 的特征值与 α 无关, 其中 B(α) = αb L + 1 α B U, α 0. 证明. (1) 若 [x, y] 是 B 的对应于 µ 的特征向量, 则 [x, y] 是 B 对应于 µ 的特征向量. (2) 由于 α 0, 我们有 故引理结论成立. [ ] 1 [ ] [ ] [ I 0 I 0 I α B(α) = B ] [ ] [ ] 12 I 0 0 B αi 0 αi 0 α I =, αb αi B 21 0 由引理 6.8 中结论 (2) 可知, B(α) + βi 的特征值也与 α 无关, 其中 β 为任意常数. 设 A R n n 的对角线元素全不为零, 记 L = D 1 L, Ũ = D 1 U.

207 6.3 收敛性分析 195 定义 6.5 设 A R n n 的对角线元素全不为零, A = D(I L Ũ). 若矩阵 G(α) = α L + 1 αũ 的特征 值与 α 无关, 则称 A 具有相容次序. 设 A 的对角线元素全不为零, 若 A 具有性质 A, 则存在置换矩阵 P, 使得 P AP 具有相容次序. 该结论可以推广到块三对角形式. 例 6.4 设 D i 是非奇异的对角矩阵, 则任意块三对角矩阵 D 1 A 1. B AN 1 B N 1 D N 都有相容次序. 证明. 参见习题 6.7, 留作练习, 定理 6.13 设 A 具有相容次序且 ω 0, 则下列命题成立 (1) Jacobi 迭代矩阵 G J 的特征值正负成对出现 ; (2) 若 µ 是 G J 的特征值且 λ 满足 (λ + ω 1) 2 = λω 2 µ 2, (6.21) 则 λ 是 SOR 迭代矩阵 G SOR 的一个特征值 ; (3) 反之, 若 λ 0 是 G SOR 的一个特征值且 µ 满足 (6.21), 则 µ 是 G J 的一个特征值. 证明. (1) 易知 G J = G(1). 设 µ 是 G(1) 的特征值, 因为 G( 1) = G(1), 所以 µ 是 G( 1) 的特征值. 又 G(α) 的特征值与 α 无关, 故 µ 也是 G(1) 的特征值, 所以命题结论成立. (2) 若 λ = 0, 则由 (6.21) 可知 ω = 1, 此时 G SOR = (I L) 1 Ũ 为奇异矩阵, 故 λ = 0 是其特征值, 即命题结论成立. 若 λ 0, 则 G SOR 的特征多项式为 det(λi G SOR ) = det (λi (I ω L) 1( (1 ω)i + ωũ)) = det ((I ω L) 1) det ( λ(i ω L) (1 ω)i ωũ) = det ( (λ + ω 1)I λω L ( ωũ) λω (( ) = det 2 λ + ω 1 λω 2 = (λω 2 ) n/2 det (( λ + ω 1 λω 2 I λ L 1 λ Ũ ) I L Ũ )) ), (6.22)

208 196 第六讲线性方程组定常迭代方法 其中最后一个等式由引理 6.8 推得. 令 µ = λ + ω 1 λω 2 即 (λ + ω 1) 2 = λω 2 µ 2, 则由 (6.22) 和性质 (1) 可知 λ 是 G SOR 的特征值当且仅当 µ 是 G J = L + Ũ 的特征值, 即命题结论成立. (3) 已经由 (2) 证明. 推论 6.14 若 A 具有相容次序, 则 ρ(g GS ) = ρ(g J ) 2, 即当 Jacobi 方法收敛时, G-S 方法比 Jacobi 方法快一倍. 例 6.5 采用红黑排序的二维离散 Poisson 方程, 系数矩阵 TN 2 具有相容次序, 故有 ρ(g GS ) = ρ(g J ) 2. 下面是关于 SOR 方法的最优参数选取. 定理 6.15 设 A 具有相容次序, G J 的特征值全部为实数, 且 ρ J = ρ(g J ) < 1, 则 SOR 方法的最优参数 为 此时 2 ω opt = 1 +, 1 ρ 2 J ρ(g SOR ) = ω opt 1 = ρ 2 J ( 1 + ) 2. 1 ρ 2 J 进一步, 有 ω 1, ω opt ω 2 ρ(g SOR ) = 1 ω ω2 ρ 2 J + ωρ J 1 ω ω2 ρ 2 J, 0 < ω ω opt 证明. 直接求解等式 (6.21), 分情况讨论即可. 例 6.6 采用红黑排序的二维离散 Poisson 问题的系数矩阵 TN 2 具有相容次序, 且 G J 是对称的, 即 G J 的特征值都是实的. 又由系数矩阵的弱对角占优和不可约性质可知 ρ(g J ) < 1, 故上述定理的条件均满足. 6.4 加速方法 当迭代解 x (0), x (1), x (2),..., x (k) 已经计算出来后, 我们可以对其进行组合, 得到一个新的近似解, 这样就可以对原方法进行加速 外推技术 设原迭代格式为 x (k+1) = Gx (k) + b. (6.23)

209 6.4 加速方法 197 由 x (k) 和 x (k+1) 加权组合后可得新的近似解 x (k+1) = (1 ω)x (k) + ω(gx (k) + b), (6.24) 其中 ω 是参数. 这种加速方法就称为外推方法. 如果原迭代格式是 Gauss-Seidel 迭代, 虽然 SOR 与外推方法 (6.24) 都是通过加权进行加速, 但格式是不一样的 : 前者是在单个分量计算出来后就进行加权, 而后者则是当所有分量都计算出来后才加权. 为了使得迭代格式 (6.24) 尽可能快地收敛, 需要选择 ω 使得其迭代矩阵 G ω (1 ω)i + ωg 的谱 半径尽可能地小. 假设 G 的特征值都是实数, 且最大特征值和最小特征值分别为 λ 1 和 λ n. 于是 ρ(g ω ) = max (1 ω) + ωλ = max{ 1 ω + ωλ 1, 1 ω + ωλ n }. λ σ(g) 定理 6.16 设 G 的特征值都是实数, 其最大和最小特征值分别为 λ 1 和 λ n, 且 1 / [λ n, λ 1 ], 则 2 ω = arg min ρ(g ω ) = ω 2 (λ 1 + λ n ), 此时 ρ(g ω ) = 1 ω d, 其中 d 是 1 到 [λ n, λ 1 ] 的距离, 即当 λ n λ 1 < 1 时, d = 1 λ 1, 当 λ 1 λ n > 1 时, d = λ n 1. 证明. 易知 1 ω + ωλ 1 = 1 ω + ωλ n 当且仅当 λ 1 = λ n 或 ω = 0 或 ω = ω = 2 2 (λ 1+λ n). 若 λ 1 = λ n, 则当 ω = 1 1 λ 1 = ω 时 ρ(g ω ) 达到最小值 0. 下面假定 λ 1 λ n. 先考虑 λ 1 < 1 的情形. 此时有 max (1 ω) + ωλ = λ n λ λ 1 通过函数图像可知, 当 ω = ω 时取最小值. 此时 1 ω + λ n ω, ω 0; 1 ω + λ 1 ω, 0 < ω ω ; (1 ω + λ n ω), ω > ω. ρ(g ω ) = 1 (1 λ 1 )ω = 1 2(1 λ 1) 2 (λ 1 + λ n ) = λ 1 λ n 2 (λ 1 + λ n ). 对于 λ n > 1 的情形, 可以进行类似的讨论. 些. 由定理 6.16 可知, ρ(g ω ) = 1 ω d, 且当 ω 1 时, 外推迭代 (6.24) 比原迭代方法收敛要更快一 最优参数依赖于原迭代矩阵 G 的特征值, 因此实用性不强. 在实际应用时可以估计特征值所在的 区间 [a, b], 然后用 a, b 来代替 λ n 和 λ 1.

210 198 第六讲线性方程组定常迭代方法 JOR 方法对 Jacobi 迭代进行外推加速, 则可得 JOR (Jacobi over-relaxation) 方法 : x (k+1) = (1 ω)x (k) + ω(d 1 (L + U)x (k) + D 1 b) = x (k) + ωd 1 (b Ax (k) ), k = 0, 1, 2,.... 定理 6.17 设 A 对称正定. 若 则 JOR 方法收敛. 0 < ω < 2 ρ(d 1 A), Chebyshev 加速本节对外推技巧进行推广. 假定通过迭代格式 (6.23) 已经计算出 x (0), x (1),..., x (k), 下面考虑如何将这些近似解进行组合, 以便得到更精确的近似解. 记 ε k = x (k) x 为第 k 步迭代解的误差, 则有 ε k = Gε k 1 = G 2 ε k 2 = = G k ε 0. 设 x (k) 为 x (0), x (1),..., x (k) 的一个线性组合, 即 x (k) = α 0 x (0) + α 1 x (1) + + α k x (k), (6.25) 其中 α i 为待定系数, 且满足 k α i = 1. 于是 i=0 x (k) x = α 0 ε 0 + α 1 Gε α k G k ε 0 p k (G)ε 0, (6.26) 其中 p k (t) = k α i t i 为 k 次多项式, 且满足 p k (1) = 1. i=0 我们希望通过适当选取参数 α i, 使得 x (k) x 尽可能地小, 即使得 x (k) 收敛到 x 速度远远快于 x (k) 收敛到 x 速度. 这种加速方法就称为多项式加速或半迭代方法 (semi-iterative method). 例 6.7 设 p n (t) 为 G 的特征多项式, 则 p n (G) = 0, 所以选取 α i 为 p n 的系数, 则 x (n) x = 0. 但这种选取方法不实用, 原因是 : (1) p n (t) 的系数并不知道 ; (2) 我们通常希望收敛所需的迭代步数 n. 下面讨论参数 α i 的较实用的选取方法. 由 (6.26) 可知 因此我们需要求解下面的极小化问题 x (k) x 2 = p k (G)ε 0 2 p k (G) 2 ε 0 2. min p(g) 2, (6.27) p P k,p(1)=1

211 6.4 加速方法 199 其中 P k 表示所有次数不超过 k 的多项式组成的集合. 一般来说, 这个问题是非常困难的. 但在一些特 殊情况下, 我们可以给出其最优解. 假设迭代矩阵 G 是对称矩阵, 即 G 存在特征值分解 G = QΛQ, 其中 Λ 是对角矩阵, 且对角线元素都是实的, Q 是正交矩阵. 于是有 min p(g) 2 = min p(λ) 2 p P k,p(1)=1 p P k,p(1)=1 = min max p P k,p(1)=1 1 i n min max p P k,p(1)=1 λ [λ n,λ 1] { p(λi ) } { p(λ) }, (6.28) 其中 λ 1, λ n 分别表示 G 的最大和最小特征值. 这是带归一化条件的多项式最佳一致逼近问题 ( 与零的 偏差最小 ). 该问题的解与著名的 Chebyshev 多项式有关. 由于所有算子范数 p k (G) 的下确界是 ρ(p k (G)), 因此, 一种较实用的选取方法是使得 p k (G) 的 谱半径尽可能地小. Chebyshev 多项式 Chebyshev 多项式是一类很重要的正交多项式, 在函数逼近, 函数插值, 数值积分等方面都有着重要的应用. Chebyshev 多项式 T k (t) 可以通过下面的递归方式来定义 : T 0 (t) = 1, T 1 (t) = t, T k (t) = 2 t T k 1 (t) T k 2 (t), k = 2, 3,..., (6.29) 也可以直接由下面的式子定义 cos(k arccos t), t 1 T k (t) =, cosh(k arccosh t), t > 1 其中 cosh 为双曲余弦, 即 cosh(t) = et + e t. 2 引理 6.9 Chebyshev 多项式具有下面的性质 : (1) T k (1) = 1; (2) T k (t) 的首项系数为 2 k 1 ; (3) T k ( t) = ( 1) k T k (t), 即 T 2k (t) 只含偶次项, T 2k+1 (t) 只含奇次项 ; (4) 当 t 1 时 T k (t) 1; 当 t > 1 时 T k (t) > 1; (2i 1)π (5) T k (t) = 0 的解为 t i = cos, i = 1,..., k; 2k

212 200 第六讲线性方程组定常迭代方法 (6) T k (t) 有 n 1 个极值点 : t i = cos kπ, i = 1, 2,..., k 1; n 下面的结论表明, 在所有首项系数为 1 的 k 次多项式中, p k (t) = 1 2 k 1 T k(t) 在 [ 1, 1] 上与零的偏差是最小的 ( 在无穷范数意义下 ). 定理 6.18 设 p k (t) = 1 2 k 1 T k(t), 则 max p k(t) max p(t), p(t) P k, 1 t 1 1 t 1 其中 Pk 表示所有首项系数为 1 的 k 次多项式组成的集合, 即 p k (t) = min p(t). p(t) P k 这里的范数 是 C[ 1, 1] 上的无穷范数, 即 f = max f(x), f(x) C[ 1, 1]. x [ 1,1] 该性质可用于计算首项系数非零的 n 次多项式在 [ 1, 1] 上的 n 1 次最佳一致逼近多项式. 利用这个性质, 我们可以采用 Chebyshev 多项式的零点作为节点进行多项式插值, 以使得插值的总体误差达到最小化. Chebyshev 另外一个重要性质是下面的最小最大性质. 定理 6.19 设 η R 满足 η > 1, 则下面的最小最大问题 min max p(t) p(t) P k,p(η)=1 1 t 1 的唯一解为 T k (t) T k(t) T k (η). 通过简单的仿射变换, 该定理的结论可以推广到一般区间. 定理 6.20 设 α, β, η R 满足 α < β 且 η / [α, β]. 则下面的最小最大问题 的唯一解为 min p(t) P k,p(η)=1 ˆT k (t) max p(t) α x β ( ) 2t (β + α) T k β α ( ), 2η (β + α) T k β α 其中 P k 表示所有次数不超过 k 的实系数多项式组成的集合. Chebyshev 加速方法 考虑迭代格式 (6.23), 我们假定 :

213 6.4 加速方法 201 (1) 迭代矩阵 G 的特征值都是实数 ; (2) 迭代矩阵谱半径 ρ = ρ(g) < 1, 故 λ(g) [ ρ, ρ] ( 1, 1). 于是最小最大问题 (6.28) 就转化为 min max p P k,p(1)=1 λ [ ρ,ρ] 由于 1 [ ρ, ρ], 根据定理 6.20, 上述问题的解为 p k (t) = T k(t/ρ) T k (1/ρ). { p(λ) }. 下面考虑 x (k) 的计算. 我们无需先计算出 x (0), x (1),..., x (k), 然后再通过线性组合 (6.25) 来计算 x (k). 事实上, 我们可以通过 Chebyshev 多项式的三项递推公式 (6.29), 由 x (k 1) 和 x (k 2) 直接计算出 x (k). 这样做的另一个好处是无需存储所有的 x (i). 下面给出具体的推导公式. 1 令 µ k = T k (1/ρ), 即 T k (1/ρ) = 1. 由三项递推公式 (6.29) 可得 µ k 所以 1 = 2 µ k ρ 1 1. µ k 1 µ k 2 整理后可得 其中 x (k) x = p k (G) ε 0 = µ k T k (G/ρ) ε 0 [ ] 2G = µ k ρ T k 1(G/ρ) T k 2 (G/ρ) ε 0 [ 2G = µ k ρ 1 p k 1 (G/ρ)ε 0 1 ] p k 2 (G/ρ)ε 0 µ k 1 µ k 2 = µ k [ 2G ρ 1 µ k 1 ( x (k 1) x ) 1 µ k 2 ( x (k 2) x ) x (k) = 2µ k G µ k 1 ρ x(k 1) µ k x (k 2) + d k, µ k 2 d k = x 2µ k G µ k 1 ρ x + µ k x µ k 2 = x 2µ k x g µ k 1 ρ + µ k x µ k 2 = µ k ( 1 µ k 2 ρµ k µ k 2 = 2µ kg µ k 1 ρ. 由此, 我们可以得到迭代格式 (6.23) 的 Chebyshev 加速方法. ) x + 2µ kg µ k 1 ρ ].

214 202 第六讲线性方程组定常迭代方法 算法 6.7. Chebyshev 加速方法 1: Set µ 0 = 1, µ 1 = ρ = ρ(g), x (0) = x (0), k = 1 2: compute x (1) = Gx (0) + g 3: while not converge do 4: k = k ( : µ k = ρ 1 1 ) 1 µ k 1 µ k 2 6: x (k) = 2µ k G µ k 1 ρ x(k 1) µ k x (k 2) + 2µ k µ k 2 µ k 1 ρ g 7: end while 该方法的每步迭代中只有一次矩阵向量乘积, 故方法每个迭代步的整体运算量与原迭代格式的 每个迭代步的运算量基本相当. 设 λ(g) [α, β], 且 1 < α β < 1, 则我们也可以构造出相应的 Chebyshev 加速方法. 例 6.8 针对二维离散 Poisson 方程, 比较 Jacobi, JOR 和 Chebyshev 加速方法的收敛性质. ( 绘制收敛曲 线 ) SSOR 方法的 Chebyshev 加速 SSOR 迭代矩阵为 G SSOR = (D ωu) 1[ (1 ω)d + ωl ] (D ωl) 1[ (1 ω)d + ωu ]. 当 A 对称时, 有 L = U, 故 (D ωu)g SSOR (D ωu) 1 = [ (1 ω)d + ωl ] (D ωl) 1[ (1 ω)d + ωl ] (D ωl ) 1 = [ (2 ω)d(d ωl) 1 I ][ (2 ω)d(d ωl ) 1 I ] = I (2 ω)d [ (D ωl) 1 + (D ωl ) 1] + (2 ω) 2 D(D ωl) 1 D(I ωl ) 1. 假定 D 的对角线元素全是正的, 则 D 1/2 (D ωu)g SSOR (D ωu) 1 D 1/2 = I (2 ω)d 1/2[ (D ωl) 1 + (D ωl ) 1] D 1/2 + (2 ω) 2 D 1/2 (D ωl) 1 D(I ωl ) 1 D 1/2. 这是一个对称矩阵, 故 G SSOR 具有实特征值. 所以我们可以对其实行 Chebyshev 加速. 但我们需要估计 G SSOR 的谱半径.

215 6.5 交替方向与 HSS 方法 203 若存在矩阵 W 使得 W 1 AW 是对称矩阵, 则称 A 是可对称化的, 即 A 相似于一个对称矩阵. 6.5 交替方向与 HSS 方法 多步迭代法 设 A = M 1 N 1 = M 2 N 2 是 A 的两个矩阵分裂, 则可以构造迭代格式 M 1 x (k+ 1 2 ) = N 1 x (k) + b, k = 0, 1, 2,.... (6.30) M 2 x (k+1) = N 2 x (k+ 1 2 ) + b, 这就是两步迭代方法, 对应的分裂称为二重分裂. 易知, 两步迭代格式 (6.30) 的迭代矩阵为 因此, 其收敛的充要条件是 ρ(m 1 2 N 2M 1 1 N 1) < 1. G = M 1 2 N 2M 1 1 N 1. 类似地, 我们可以推广到多步迭代方法. 设 l 是一个正整数, 则 A 的 l 重分裂为 A = M 1 N 1 = M 2 N 2 = = M l N l, 相应的多步迭代方法为 M 1 x (k+ 1 l ) = N 1 x (k) + b, M 2 x (k+ 2 l ) = N 2 x (k+ 1 l ) + b, M l x (k+1) = N l x (k+ l 1 l ) + b, k = 0, 1, 2, 交替方向法 交替方向法 (alternating direction implicit, ADI ) 是由 Peaceman 和 Rachford [58] 于 1955 年提出, 用于计算偏微分方程的数值解, 因此也称为 PR 方法. 其本质上也可以看成是一个两步迭代方法. 设 A = A 1 + A 2, 则 ADI 迭代格式为 (αi + A 1 )x (k+ 1 2 ) = (αi A 2 )x (k) + b, k = 0, 1, 2,..., (6.31) (αi + A 2 )x (k+1) = (αi A 1 )x (k+ 1 2 ) + b, 其中 α R 是迭代参数. 易知 ADI 方法的迭代矩阵为 G ADI = (αi + A 2 ) 1 (αi A 1 )(αi + A 1 ) 1 (αi A 2 ). 它相似于 G (αi A 1 )(αi + A 1 ) 1 (αi A 2 )(αi + A 2 ) 1. 所以 ADI 迭代 (6.31) 收敛的充要条件是 ρ( G) < 1. 若 A 对称正定, 且 A 1 和 A 2 中有一个是对称正定, 另一个是对称半正定, 则有下面的收敛定理.

216 204 第六讲线性方程组定常迭代方法 定理 6.21 设 A R n n 对称正定, A = A 1 + A 2, 其中 A 1 和 A 2 中有一个是对称正定, 另一个是对称 半正定, 则对任意正数 α > 0, 有 ρ( G) < 1, 即 ADI 迭代方法 (6.31) 收敛. 证明. 不妨假设 A 1 对称正定, A 2 对称半正定. 则 (αi A 1 )(αi + A 1 ) 1 2 = (αi A 2 )(αi + A 2 ) 1 2 = max λ σ(a 1) max λ σ(a 2) α λ α + λ < 1, α λ α + λ 1. 所以, ρ( G) G 2 (αi A 1 )(αi + A 1 ) 1 2 (αi A 2 )(αi + A 2 ) 1 2 < HSS 方法 HSS 方法全称为 Hermitian and Skew-Hermitian Splitting method, 是由 Bai, Golub 和 Ng [5] 于 2003 年提出. 设 A = H + S, 其中 H 和 S 分别是 A 的对称与反对称 ( 斜对称, Skew-Hermitian) 部分, 即 该分裂就称为 HS 分裂, 即 HSS. H = A + A 2, S = A A. 2 任何一个矩阵都具有 HS 分裂. 如果 A C n n, 则取共轭转置. 类似于 ADI 方法, 我们可得下面的 HSS 方法 (αi + H)x (k+ 1 2 ) = (αi S)x (k) + b, (αi + S)x (k+1) = (αi H)x (k+ 1 2 ) + b, k = 0, 1, 2,.... (6.32) 易知, HSS 方法的迭代矩阵为 G HSS = (αi + S) 1 (αi H)(αI + H) 1 (αi S). 同样, 它相似于 G (αi H)(αI + H) 1 (αi S)(αI + S) 1. 我们首先考察矩阵 (αi S)(αI + S) 1. 事实上, 它是一个酉矩阵 ( 见习题 (5.6)). 因此 (αi S)(αI + S) 1 2 = 1. 由于 H 是对称矩阵, 因此 (αi H)(αI + H) 1 2 = max λ σ(h) α λ α + λ.

217 6.6 快速 Poisson 方法 205 定理 6.22 设 A R n n 正定, 则对任意正数 α > 0, 有 ρ( G) < 1, 即 HSS 迭代方法 (6.32) 收敛. 证明. 由于 A 正定, 即 H 对称正定, 故 (αi H)(αI + H) 1 2 = max λ σ(h) α λ α + λ < 1. 所以, 结论成立. 参数 α 的选取 为了达到最快收敛效果, 我们希望迭代矩阵的谱半径越小越好. 但是在一般情况下, 谱半径很难计 算或估计. 因此要极小化谱半径是非常困难的, 或者说是不可能的. 此时, 我们能做的往往是极小化它的 一个上界. 由前面的分析可知 ρ(g HSS ) = ρ( G) max λ σ(h) α λ α + λ σ(α). 下面考虑 σ(α) 的极小值点. 设 H 的最大和最小特征值分别为 λ max (H) 和 λ min (H), 则我们有下面的 结论. 定理 6.23 [5] 设 A R n n 正定, 则极小极大问题 min α>0 max λ min(h) λ λ max(h) α λ α + λ 的解为 此时 σ(α ) = α = λ max (H)λ min (H). λmax (H) λ min (H) λmax (H) + λ min (H) = κ(h) 1 κ(h) + 1. HSS 自从被提出来以后, 很多学者将其进行了推广, 如 PSS, NSS, AHSS 等, 感兴趣的读者可以参 考相关文献. 6.6 快速 Poisson 方法如果已经知道矩阵 A 的特征值分解 A = XΛX 1, 则 Ax = b 的解可表示为 x = A 1 b = XΛ 1 X 1 b. 如果 A 是正规矩阵, 即 X 是酉矩阵, 则 x = A 1 b = XΛ 1 X b.

218 206 第六讲线性方程组定常迭代方法 一般来说, 我们不会采用这种特征值分解的方法来解线性方程组, 因为计算特征值分解通常比解线性方程组更困难. 但在某些特殊情况下, 我们可以由此得到快速方法. 考虑二维离散 Poisson 方程 T u = h 2 f, (6.33) 其中 由定理 6.1 可知 T = I T n + T n I, T n = tridiag( 1, 2, 1) R n n. T = (Z Z)(I Λ + Λ I)(Z Z), 其中 Z = [z 1, z 2,..., z n ] 是正交矩阵. 这里 [ 2 z k = n + 1 sin kπ ] 2kπ nkπ, sin,..., sin, k = 1, 2,..., n. n + 1 n + 1 n + 1 所以, 方程 (6.33) 的解为 u = T 1 h 2 f = [(Z Z)(I Λ + Λ I) 1 (Z Z) ] h 2 f. 因此, 主要的运算是 Z Z 与向量的乘积, 以及 (Z Z) 与向量的乘积. 而这些乘积可以通过快速 Sine 变换来实现 FFT FFT ( 快速 Fourier 变换 ) 用来计算离散 Fourier 变换 (DFT) 矩阵与向量乘积的一种快速方法. 设 x = [x 0, x 1..., x n 1 ] C n, 其 DFT 定义为 y = DFT(x) = [y 0, y 1..., y n 1 ] C n, 其中 n 1 y k = ωn kj x j, k = 0, 1,..., n 1. j=0 这里 ω n = e 2πi n = cos(2π/n) i sin(2π/n) 是 1 的一个 n 次本原根 (primitive n-th root of unity), i 是虚部单位. 这里说 ω n 是 primitive n-th root of unity 是指 ω n n = 1 且 ω k n 1, k = 1, 2,..., n 1. 构造矩阵 F n = [f kj ] C n n, 其中 f kj = ω kj n = e 2kjπi n = cos(2kjπ/n) i sin(2kjπ/n), 即 ω n ωn 2 ω n 1 n F n = 1 ωn 2 ωn 4 ωn 2(n 1), ωn n 1 ωn 2(n 1) ω n (n 1)2

219 6.6 快速 Poisson 方法 207 则有 y = DFT(x) = F n x. 我们称矩阵 F n 为 DFT 矩阵. 易知 DFT 矩阵具有以下性质 : (1) F n 是对称矩阵 ( 但不是 Hermite 对称 ); (2) F nf n = ni, 所以 1 n F n 是酉矩阵. 相应的离散 Fourier 反变换定义为 x = IDFT(y), 其中 x j = 1 n n 1 ωn jk y k, j = 0, 1,..., n 1. k=0 写成矩阵形式为 x = 1 n F y. DFT 和 IDFT 满足下面的性质 : IDFT(DFT(x)) = x, DFT(IDFT(y)) = y. 在 MATLAB 中, 计算 DFT 和 IDFT 的函数分别为 fft 和 ifft, 即 : y=fft(x), x=ifft(y). ( 测 试代码见 FFT_test.m) 离散 Sine 变换 [60]. R n, 其中 离散 Sine 变换有多种定义, 我们这里只介绍与求解 Poission 方程有关的一种定义, 其它定义请参考 设 x = [x 1, x 2,..., x n ] R n, 其离散 Sine 变换 (DST) 定义为 y = DST(x) = [y 1, y 2,..., y n ] y k = n j=1 ( ) kjπ x j sin, k = 1, 2,..., n. n + 1 对应的离散 Sine 反变换记为 IDST, 即 x = IDST(y), 其中 DST 和 IDST 满足下面的性质 : x j = 2 n + 1 n k=1 ( ) jkπ y k sin, j = 1, 2,..., n. n + 1 IDST(DST(x)) = x, DST(IDST(y)) = y. 在 MATLAB 中, 计算 DST 和 IDST 的函数分别为 dst 和 idst, 即 : y=dst(x), x=idst(y). ( 测 试代码见 DST_test.m)

220 208 第六讲线性方程组定常迭代方法 可以通过公式 T n = ZΛZ T 来计算一维离散 Poisson 矩阵的特征值 : 记 [α 1, α 2,..., α n ] T 和 [β 1, β 2,..., β n ] T 分别为 Z T T n 和 Z T 的第一列, 则 T n 的特征值为 λ i = α i β i. 对应的 MATLAB 代码为 : Lam=idst([2,-1,zeros(1,n-2)]')./idst(eye(n,1)) Possion 方程与 DST 我们首先考虑矩阵 Z 与一个任意给定向量 b 的乘积. 设 y = Zb, 则 n 2 n ( ) kjπ 2 y k = Z(k, j)b j = b j sin = n + 1 n + 1 n + 1 DST(b). j=1 j=1 因此, 乘积 y = Zb 可以通过 DST 来实现. 类似地, 乘积 y = Z b = Z 1 b 可以通过离散 Sine 反变换 IDST 实现, 即 y = Z b = Z 1 b = 所以对于一维离散 Poisson 方程, 其解为 ( ) 1 2 IDST(b). n + 1 u = Tn 1 (h 2 f) = (ZΛ 1 Z )(h 2 f) = h 2 ZΛ 1 Z f = h 2 DST(Λ 1 IDST(b)). 而对于二维离散 Poisson 方程, 我们需要计算 (Z Z)b 和 (Z Z )b. 它们对应的是二维离散 Sine 变换 和二维离散 Sine 反变换. 设 b = [b 1, b 2,..., b n] R n2, 其中 b k R n n. 令 B = [b 1, b 2,..., b n ] R n n, 则由 Kronecker 乘 积的性质可知 (Z Z)b = (Z Z)vec(B) = vec(zbz ) = vec ((Z(ZB) ) ). 因此, 我们仍然可以使用 DST 来计算 (Z Z)b. 类似地, 我们可以使用 IDST 来计算 (Z Z )b. 算法 6.8. 二维离散 Poisson 方程的快速方法 1: 计算 b = h 2 f 2: B = reshape(b, n, n) 3: B 1 = (Z B) = (IDST(B)) 4: B 2 = (Z B 1 ) = (IDST(B 1 )) 5: b 1 = (I Λ + Λ I) 1 vec(b 2 ) 6: B 3 = reshape(b 1, n, n) 7: B 4 = (ZB 3 ) = (DST(B 3 )) 8: B 5 = (ZB 4 ) = (DST(B 4 )) 9: u = reshape(b 5, n 2, 1) MATLAB 程序见 Poisson_DST.m

221 6.7 课后习题 课后习题 练习 6.1 试给出 T n ( 见 (6.3)) 的 Cholesky 分解. 练习 6.2 设 A C n n. 试证明对任意矩阵范数都有 ρ(a) A. a 1 3 练习 6.3 已知 A = 1 a 2 R3 3, 且 Jacobi 方法收敛, 求 α 的取值范围. 3 2 a 练习 6.4 试给出红黑排序的模型问题的 SOR 方法的最优参数 ω opt. 练习 6.5 证明定理 6.11 ( 对称正定矩阵与定常迭代的收敛性 ): 设 A R n n 对称正定. (1) 若 2D A 正定, 则 Jacobi 迭代收敛 ; (2) 若 0 < ω < 2, 则 SOR 和 SSOR 收敛 ; (3) G-S 迭代收敛. 练习 6.6 证明定理 6.12 ( 定常迭代的收敛性与矩阵的对称正定性 ) 设 A R n n 对称. (1) 若 2D A 正定且 Jacobi 迭代收敛, 则 A 正定 ; (2) 若 D 正定, 且存在 ω (0, 2) 使得 SOR ( 或 SSOR) 收敛, 则 A 正定 ; (3) 若 D 正定, 且 G-S 迭代收敛, 则 A 正定. 练习 6.7 设矩阵 A C n n 是块三对角矩阵, 且主对角块为 0, 即 0 B 1 A 1 0 B 2 A =. A BN 1 A N 1 0 试证明 : 矩阵 A(α) αl + 1 α U 的特征值与 α 无关 (α C 且 α 0), 其中 L 和 U 分别是 A 的 下三角和上三角部分. 练习 6.8 若存在非奇异矩阵 W, 使得 W (I G)W 1 是对称正定矩阵, 则称迭代方法 x (k+1) = Gx (k) + g, k = 0, 1, 2,... 是可对称化的. 现假定上述迭代方法是可对称化的, 试证 (1) G 的特征值全部为实数, 且都小于 1; (2) 存在 γ, 使得下面的外推迭代方法收敛 x (k+1) = (1 γ)x (k) + γ(gx (k) + g), k = 0, 1, 2,... [ ] 2 0 练习 6.9 设 A =, 构造迭代方法 2 1 x (k+1) = x (k) + α(b Ax (k) ), k = 0, 1, 2,....

222 210 第六讲线性方程组定常迭代方法 问 : 当 α R 取何值时, 该迭代方法收敛, 什么时候收敛最快? 练习 6.10 设 A R n n. 证明 : ρ(a) < 1 的充要条件是 I A 非奇异, 且 (I A) 1 (I + A) 的特征值具有正实部. 练习 6.11 设矩阵 A, B 都是实对称矩阵. 试证明 : AB = BA 的充要条件是存在正交矩阵 Q 使得 QAQ = Λ A, QBQ = Λ B, 其中 Λ A 和 Λ B 分别表示由 A 和 B 的特征值构成的对角矩阵. 练习 6.12 设 A R n n 是对称三对角矩阵 a b A = b b b a 计算矩阵 A 的特征值和特征向量. 练习 6.13 设 A R n n 对称正定, B R n k 列满秩, 试证明 B AB 对称正定. 练习 6.14 设 A = D E E C n n, 其中 D 是 Hermite 正定的, 令 G ω = (D ωe) 1 [(1 ω)d + ωe ], 并设 ω 是实数, 证明 ρ(g ω ) < 1 当且仅当 (1) A 是正定的, 且 0 < ω < 2, 或者 (2) A 是负定的, 且 ω / [0, 2]. 思考题 练习 6.15 设 A R n n. 证明 : ρ(a) < 1 的充要条件是存在对称正定矩阵 P R n n 使得 P AP A 正定. 实践题 练习 6.16 写出 Poisson 方程红黑排序的 SOR 和 SSOR 方法的迭代格式, 并编程实现. ( 以例 6.2 中的 Poisson 方程为例 )

223 第七讲子空间迭代方法 子空间迭代算法的基本思想是在一个维数较低的子空间中寻找解析解的一个 最佳 近似. 子空间迭代方法的主要过程可以分解为下面三步 : (1) 寻找合适的子空间 ; (2) 在该子空间中求 最佳近似 解 ; (3) 若这个近似解满足精度要求, 则停止计算 ; 否则, 重新构造一个新的子空间, 并返回第 (2) 步. 这里主要涉及到的两个关键问题是 : (1) 如果选择和更新子空间 ; (2) 如何在给定的子空间中寻找 最佳近似 解. 关于第一个问题, 目前较成功的解决方案就是使用 Krylov 子空间. 7.1 Krylov 子空间 Arnoldi 过程与 Lanczos 过程设 A R n n, r R n, 则由 A 和 r 生成的 Krylov 子空间为 K m (A, r) = span{r, Ar, A 2 r,..., A m 1 r}, m n. 通常简记为 K m. 设解析解在 K m 中的 最佳近似 为 x (m). 我们假定 r, Ar, A 2 r,..., A m 1 r 线性无关, 则 dim K m = m. 令 v 1, v 2,..., v m 是 K m 的一组基, 则 K m 中的任意向量 x 均可表示为 x = y 1 v 1 + y 2 v y m v m = V m y, 其中 y = [y 1, y 2,..., y m ] 为线性表出系数, V m = [v 1, v 2,..., v m ]. 于是, 寻找 最佳近似 x (m) 就转化为 (1) 寻找一组合适的基 v 1, v 2,..., v m ; (2) 求出 x (m) 在这组基下面的线性表出系数 y (m). Arnoldi 过程首先考虑基的选取. 假定 r, Ar, A 2 r,..., A m 1 r 线性无关, 因此它们就自然地组成 K m 的一组基. 但为了确保算法的稳定性, 一般来说, 我们通常希望选取一组标准正交基. 这并不困难, 只需对向量组 {r, Ar, A 2 r,..., A m 1 r} 进行单位正交化即可. 对这个过程略加修改, 就就得到下面的 Arnoldi 过程. 211

224 212 第七讲子空间迭代方法 算法 7.1. Arnoldi 过程 (MGS) 1: v 1 = r/ r 2 2: for j = 1 to m 1 do 3: z = Av j 4: for i = 1 to j do % MGS 5: h i,j = (v i, z) 6: z = z h i,j v i 7: end for 8: h j+1,j = z 2 9: if h j+1,j = 0 then 10: break 11: end if 12: v j+1 = z/h j+1,j 13: end for 可以证明, Arnoldi 过程生成的向量 v 1, v 2,..., v m 构成 K m 的一组标准正交基. 引理 7.1 如果 Arnoldi 过程不中断, 则 K m = span{v 1, v 2,..., v m }. 证明. 只需证明 v k K m 即可. 事实上, 我们可以通过归纳法证明 v k K k, k = 1, 2,..., m. 具体证明过程留作练习. 记 V m = [v 1, v 2,..., v m ], h 1,1 h 1,2 h 1,3 h 1,m h 2,1 h 2,2 h 2,3 h 2,m h 3,2 h 3,3 h 3,m H m+1,m = h m,m 1 h m,m R (m+1) m, h m+1,m 则由 Arnoldi 过程可知 h j+1,j v j+1 = Av j h 1,j v 1 h 2,j v 2 h j,j v j,

225 7.1 Krylov 子空间 213 即 所以有 j+1 Av j = h i,j v i = V m+1 i=1 h 1,j. h j+1,j 0. 0 = V m+1 H m+1,m (:, j). AV m = V m+1 H m+1,m = V m H m + h m+1,m v m+1 e m, (7.1) 其中 H m 是由 H m+1,m 的前 m 行组成的矩阵, 即 H m = H m+1,m (1 : m, 1 : m), e m = [0,..., 0, 1] R m. 由于 V m 是列正交矩阵, 上式两边同乘 Vm 可得 VmAV m = H m. (7.2) 等式 (7.1) 和 (7.2) 是 Arnoldi 过程的两个重要性质. 这两个性质也可以通过下图来表示. H m = = A V m V m+1 H m+1,m V m + 由于 H m+1,m 是上 Hessenberg 矩阵, 因此 Arnoldi 过程也称为部分上 Hessenberg 化过程. 需要指出的是, 如果 r, Ar, A 2 r,..., A m 1 r 线性相关, 则 Arnoldi 过程就会提前中断. 此时, 我们会得到一个不变子空间. 定理 7.1 如果 Arnoldi 过程在第 k 步时中断, 即 h k+1,k = 0, 其中 k < m. 则有 AV k = V k H k, 即 K k 是 A 的一个不变子空间. 证明. 直接由等式 (7.1) 可知结论成立. Lanczos 过程如果 A 是对称矩阵, 则 H m 为对称三对角矩阵, 此时将其记为 T m, 即 α 1 β 1. β T m =..... (7.3).. βm 1 β m 1 α m 与 Arnoldi 过程类似, 我们有下面的性质 AV m = V m T m + β m v m+1 e m, (7.4)

226 214 第七讲子空间迭代方法 VmAV m = T m. (7.5) 考察关系式 (7.4) 两边的第 j 列可知 β j v j+1 = Av j α j v j β j 1 v j 1, j = 1, 2,..., 这里我们令 v 0 = 0 和 β 0 = 0. 根据这个三项递推公式, Arnoldi 过程可简化为下面的 Lanczos 过程. 算法 7.2. Lanczos 过程 1: Set v 0 = 0 and β 0 = 0 2: v 1 = r/ r 2 3: for j = 1 to m 1 do 4: z = Av j 5: α j = (v j, z) 6: z = z α j v j β j 1 v j 1 7: β j = z 2 8: if β j = 0 then 9: break 10: end if 11: v j+1 = z/β j 12: end for 可以证明, 由 Lanczos 过程得到的向量组 {v 1, v 2,..., v m } 是单位正交的. 定理 7.2 设 {v 1, v 2,..., v m } 是由 Lanczos 过程得到的向量组, 则 1, i = j, (v i, v j ) = δ ij = i, j = 1, 2,..., m. 0, i j, 证明. 留作练习 Krylov 子空间算法一般格式 Krylov 子空间迭代算法的一般过程为 : (1) 令 m = 1 (2) 定义 Krylov 子空间 K m ; (3) 找出仿射空间 x (0) + K m 中的 最佳近似 解 ; (4) 如果这个近似解满足精度要求, 则迭代结束 ; 否则令 m m + 1, 即将 Krylov 子空间的维数增加一维, 并返回第 (3) 步.

227 7.1 Krylov 子空间 215 算法 7.3. Krylov 子空间迭代算法 1: 选取初始向量 x (0) 2: 计算 r 0 = b Ax (0), v 1 = r 0 / r 0 2 3: 寻找 最佳近似 解 : x (1) x (0) + K 1 = x (0) + span{v 1 } 4: if x (1) 满足精度要求 then 5: 终止迭代 6: end if 7: for m = 2 to n do 8: 调用 Arnoldi 或 Lanczos 过程计算向量 v m 9: 寻找 最佳近似 解 : x (m) x (0) + K m = x (0) + span{v 1,..., v m } 10: if x (m) 满足精度要求 then 11: 终止迭代 12: end if 13: end for 子空间的选取和更新问题可以通过 Krylov 子空间来解决. 下面需要考虑如何寻找方程组在仿射空 间 x (0) + K m 中的 最佳近似 解 x (m). 首先, 我们必须给出 最佳 的定义, 即 x (m) 满足什么条件时才 是 最佳 的, 不同的定义会导出不同的算法. 我们很自然地想到用近似解与真解之间的距离来衡量 最佳, 即使得 x (m) x 在某种意义下最 小, 如 x (m) x 2 达到最小. 但是由于 x 不知道, 因此这种方式往往是不实用. 实用的 最佳 方式有 : (1) 使得 r m 2 = b Ax (m) 2 最小, 即极小化残量 r m = b Ax (m). 这种方式是可行的, 当 A 对称时, 相应的算法即为 MINRES 方法, 当 A 不对称时, 相应的算法即为 GMRES 方法 ; (2) 若 A 对称正定, 我们也可以极小化残量的能量范数 r m A 1, 相应的算法即为 CG 方法. 事实上, 我们有 r m A 1 ( rma 1 ) 1 ( ) 1 r 2 m = (b Ax (m) ) A 1 (b Ax (m) 2 ) ( ) 1 = (A 1 b x (m) ) A(A 1 b x (m) 2 ) ( ) 1 = (x x (m) ) A(x x (m) 2 ) = x x (m) A. 因此 CG 方法也可以看作是极小化 x (m) x 的能量范数 x x (m) A 的算法.

228 216 第七讲子空间迭代方法 7.2 GMRES 方法 算法描述 GMRES 方法是目前求解非对称线性方程组的最常用算法之一. 在该算法中, 最佳近似 解的判别 方法为 使得 r m 2 = b Ax (m) 2 最小, 即 下面我们就根据这个最优性条件来导出 GMRES 方法. x (m) = arg min b Ax 2. (7.6) x x (0) +K m 设迭代初始向量为 x (0), 则对任意向量 x x (0) + K m, 可设 x = x (0) + V m y, 其中 y R m. 于是有 这里 β = r 0 2. 由于 V m+1 列正交, 所以 于是最优性条件 (7.6) 就等价于 r = b Ax = b A(x (0) V m y) = r 0 AV m y = βv 1 V m+1 H m+1,m y = V m+1 (βe 1 H m+1,m y), r 2 = V m+1 (βe 1 H m+1,m y) 2 = βe 1 H m+1,m y 2. y (m) = arg min y R m βe 1 H m+1,m y 2. (7.7) 这是一个最小二乘问题. 由于 H m+1,m 是一个上 Hessenberg 矩阵, 且通常 m 不是很大, 所以我们可以用 基于 Givens 变换的 QR 分解来求解. 下面就是 GMRES 方法的基本框架. 算法 7.4. GMRES 方法基本框架 1: 选取初值 x (0), 停机标准 ε > 0, 以及最大迭代步数 IterMax 2: r 0 = b Ax (0), β = r 0 2 3: v 1 = r 0 /β 4: for j = 1 to IterMax do 5: w = Av j 6: for i = 1 to j do % Arnoldi 过程 7: h i,j = (v i, w) 8: w = w h i,j v i 9: end for 10: h j+1,j = w 2 11: if h j+1,j = 0 then 12: m = j, break 13: end if

229 7.2 GMRES 方法 : v j+1 = w/h j+1,j 15: relres = r j 2 /β % 相对残量 16: if relres< ε then % 检测是否收敛 17: m = j, break 18: end if 19: end for 20: 解最小二乘问题 (7.7), 得到 y (m) 21: x (m) = x (0) + V m y (m) 具体实施细节 需要解决的问题有 : (1) 如何计算残量 r m b Ax (m) 的范数? (2) 如何求解最小二乘问题 (7.7)? 这两个问题可以同时处理. 首先采用 QR 分解来求解最小二乘问题. 设 H m+1,m 的 QR 分解为 H m+1,m = Q m+1 R m+1,m, 其中 Q m+1 R (m+1) (m+1) 是正交矩阵, R m+1,m R (m+1) m 是上三角矩阵. 则 [ ] βe 1 H m+1,m y 2 = βq m+1 e 1 R m+1,m y 2 = βq Rm 1 y, 0 其中 R m R m m 是非奇异上三角矩阵 ( 这里假定 H m+1,m 不可约 ). 所以问题 (7.7) 的解为 且 y (m) = βr 1 m q 1 (1:m), r m 2 = b Ax (m) 2 = βe 1 H m+1,m y (m) 2 = β q 1 (m + 1), 其中 q 1 (m + 1) 表示 q 1 的第 m + 1 个分量. 2 H m+1,m 的 QR 分解的递推计算方法由于 H m+1,m 是上 Hessenberg 矩阵, 因此我们采用 Givens 变换. ] (1) 当 m = 1 时, H 21 = [ h11 h 21 G 1 H 21 = (2) 假定存在 G 1, G 2,..., G m 1, 使得, 构造 Givens 变换 G 1 使得 [ ] = R 21, 即 H 21 = G 1 0 R 21. (G m 1 G 2 G 1 )H m,m 1 = R m,m 1, 即 H m,m 1 = (G m 1 G 2 G 1 ) R m,m 1 Q mr m,m 1.

230 218 第七讲子空间迭代方法 为了书写方便, 这里假定 G i 的维数自动扩张, 以满足矩阵乘积的需要. (3) 考虑 H m+1,m 的 QR 分解. 易知 [ ] Hm,m 1 h m H m+1,m =, 其中 h m = [h 1m, h 2m,..., h mm ]. 0 h m+1,m 所以有 [ ] [ ] Qm 0 Rm,m 1 Q m h m H m+1,m = = h m+1,m R m 1 hm 1 0 ĥ mm 0 h m+1,m, 其中 hm 1 是 Q m h m 的前 m 1 个元素组成的向量, ĥmm 是 Q m h m 的最后一个元素. 构造 Givens 变换 G m : I m G m = 0 c m s m R(m+1) (m+1), 0 s m c m 其中 令 c m = ĥm,m h m,m, s m = h m+1,m, hm,m = ĥ2 m,m + h h 2 m+1,m. m,m [ ] Qm 0 Q m+1 = G m, 0 1 则 Q m+1 H m+1,m = G m R m 1 hm 1 0 ĥ j,j 0 h m+1,m = R m 1 hm 1 0 hj,j 0 0 R m+1,m. 所以可得 H m+1,m 的 QR 分解 H m+1,m = Q m+1 R m+1,m. 由 H m,m 1 的 QR 分解到 H m+1,m 的 QR 分解, 我们需要 (1) 计算 Q m h m, 即将之前的 m 1 个 Givens 变换作用到 H m+1,m 的最后一列的前 m 个元素 上, 所以我们需要保留所有的 Givens 变换 ; (2) 残量计算 : r m 2 = βq 1 (m + 1) = βq m+1 (m + 1, 1), 即 G m G m 1 G 2 G 1 (βe 1 ) 的最后一个分量的绝对值. 由于在计算 r m 1 时就已经计算出 G m 1 G 2 G 1 (βe 1 ), 因此 这里只需做一次 Givens 变换即可 ; (3) y (m) 的计算 : 当相对残量满足精度要求时, 需要计算 y (m) = R 1 m q 1 (1 : m), 而 q 1 即为 G m G m 1 G 2 G 1 (βe 1 ).

231 7.2 GMRES 方法 219 算法 7.5. 实用 GMRES 方法 1: 选取初值 x (0), 停机标准 ε > 0, 以及最大迭代步数 IterMax 2: r 0 = b Ax (0), β = r 0 2 3: if β < ε then 4: 停止计算, 输出近似解 x (0) 5: end if 6: v 1 = r 0 /β 7: ξ = βe 1 % 记录 q 1 8: for j = 1 to IterMax do 9: w = Av j 10: for i = 1 to j do % Arnoldi 过程 11: h i,j = (v i, w) 12: w = w h i,j v i 13: end for 14: h j+1,j = w 2 15: if h j+1,j = 0 then % 迭代中断 16: m = j, break 17: end if 18: v j+1 = w/h j+1,j 19: for i = 1 to j 1 do % 计算 G j 1 G 2 G 1 H j+1,j (1:j, j) [ ] [ ] [ ] hij ci s i hij 20: = h i+1,j s i c i h i+1,j 21: end for 22: if h jj > h j+1,j then % 构造 Givens 变换 G j 23: τ = h j+1,j /h jj, c j = 1/ 1 + τ 2, s j = c j τ 24: else 25: τ = h jj /h j+1,j, s j = 1/ 1 + τ 2, c j = s j τ 26: end if 27: h jj = c j h jj + s j h j+1,j % 计算 G j H j+1,j (1:j, j) 28: h j+1,j = 0 [ ] [ ] [ ] ξj cj s j ξj 29: = % 计算 G j (βg j 1 G 2 G 1 e 1 ) ξ j+1 s j c j 0 30: relres = ξ j+1 2 /β % 相对残量 31: if relres< ε then 32: m = j, break 33: end if 34: end for 35: m = j

232 220 第七讲子空间迭代方法 36: y (m) = H(1 : m, 1 : m)\ξ(1 : m) % 求最小二乘问题的解, 回代求解 37: x (m) = x (0) + V m y (m) 38: if relres< ε then 39: 输出近似解 x 及相关信息 40: else 41: 输出算法失败信息 42: end if GMRES 方法的中断在上面的 GMRES 方法中, 当执行到某一步时有 h j+1,j = 0, 则算法会中断 (breakdown). 如果出现这种中断, 则我们就可以找到精确解. 定理 7.3 设 A R n n 非奇异且 r 0 0. 若 h i+1,i 0, i = 1, 2,..., k 1, 则 h k+1,k = 0 当且仅当 x (k) 是方程的精确解. ( 不考虑舍入误差 ) 证明. 必要性. 设 h k+1,k = 0, 则有 AV k = V k H k, y (k) = H 1 k (βe 1). 所以 r k 2 = b Ax (k) 2 = b A(x (0) + V k y (k) ) 2 = r 0 V k H k y (k) 2 = βv 1 V k (βe 1 ) 2 = 0. 充分性. 设 x (k) 是精确解, 则 0 = b Ax (k) = r 0 V k+1 H k+1,k y (k) = V k+1 (βe 1 H k+1,k y (k) ). 反证法, 假设 h k+1,k 0, 则 v k+1 0. 因此 V k+1 单位列正交, 故列满秩, 所以由上式可知 βe 1 H k+1,k y (k) = 0. 由于 H k+1,k 是上 Hessenberg 矩阵, 且 h i+1,i 0, i = 1, 2,..., k. 通过向后回代求解可得 y (k) = 0, 于是 β = 0. 这与 r 0 0 矛盾. 所以 h k+1,k = 带重启的 GMRES 方法由于随着迭代步数的增加, GMRES 方法的每一步所需的运算量和存储量都会越来越大. 因此当迭代步数很大时, GMRES 方法就不太实用. 通常的解决方法就是重启, 即事先设定一个重启迭代步数 k, 如 k = 20 或 50 等等, 当 GMRES 达到这个迭代步数时仍不收敛, 则计算出方程组在 x (0) + K k 中的最佳近似解 x (k), 然后令 x (0) = x (k), 并重新开始新的 GMRES 迭代. 不断重复该过程, 直到收敛为止.

233 7.3 共轭梯度法 (CG) 221 算法 7.6. GMRES(k): 带重启的 GMRES 方法 1: 设定重启步数 k ( n) 2: 选取初值 x (0), 停机标准 ε > 0, 以及最大迭代步数 IterMax 3: r 0 = b Ax (0), β = r 0 2 4: if β < ε then 5: 停止计算, 输出近似解 x = x (0) 6: end if 7: for iter=1 to ceil(itermax/k) do % 外循环 8: v 1 = r 0 /β 9: ξ = βe 1 10: for j = 1 to k do 11: 调用 GMRES 循环 12: end for 13: m = j 14: y (m) = H(1 : m, 1 : m)\ξ(1 : m) 15: x (m) = x (0) + V m y (m) 16: if relres< ε then 17: break 18: end if 19: x (0) = x (m) % 重启 GMRES 20: r 0 = b Ax (0), β = r : end for 22: if relres< ε then 23: 输出近似解 x (m) 及相关信息 24: else 25: 输出算法失败信息 26: end if 带重启的 GMRES 方法需要注意的问题 : (1) 如何选取合适的重启步数 k? 一般只能依靠经验来选取 ; (2) 不带重启的 GMRES 方法能保证算法的收敛性, 但带重启的 GMRES 方法却无法保证, 有时可能出现停滞现象 (stagnation). 7.3 共轭梯度法 (CG) 共轭梯度法 (Conjugate Gradient, CG) 是当前求解对称正定线性方程组的首选方法. CG 算法可以从 优化角度得出, 也可以从代数角度推导. 我们这里就从代数角度来介绍 CG 算法.

234 222 第七讲子空间迭代方法 算法基本过程 我们首先给出 CG 算法的一个性质, 然后根据这个性质来推导 CG 算法. 定理 7.4 设 A 对称正定, 则 当且仅当 x (m) = arg min x x A (7.8) x x (0) +K m x (m) x (0) + K m 且 b Ax (m) K m. (7.9) 证明. 首先证明充分性. 设 x (m) 满足 (7.9). 记 x = x (m) x (0), 则 x K m 且 由正交投影的性质可知, x 是最佳逼近问题 的解, 即 所以, x (m) = x (0) + x 是最佳逼近问题 r 0 A x K m. min x K m x A 1 r 0 A x = arg min x K m x A 1 r (0) A = arg min x K m x A 1 (b Ax (0) ) A = arg min x K m (x (0) + x) x A. min x x (0) +K m x x A 的解, 即结论 (7.8) 成立. 必要性只需利用正交投影的性质即可, 见作业 7.2. 当 A 对称正定时, Arnoldi 过程就转化为 Lanczos 过程, 且 AV m = V m+1 T m+1,m = V m T m + β m v m+1 e m, VmAV m = T m, 其中 T m = tridiag(β i, α i+1, β i+1 ), 见 (7.3). 由定理 7.4 可知, 此时我们需要在 x (0) + K m 寻找最优近似解 x (m), 满足 b Ax (m) K m. (7.10) 根据这个性质, 我们就可以给出 CG 算法. 设 x (m) = x (0) + V m z (m), 其中 z (m) R m. 由 (7.10) 可知 0 = Vm(b Ax (m) ) = Vm(r 0 AV m z (m) ) = Vm(βv 1 ) VmAV m z (m) = βe 1 T m z (m).

235 7.3 共轭梯度法 (CG) 223 因此, 于是可得 z (m) = T 1 m (βe 1 ). x (m) = x (0) + V m z (m) = x (0) + V m T 1 m (βe 1 ). 如果 x (m) 满足精度要求, 则计算结束. 否则令 m m + 1, 继续下一步迭代 实用迭代格式 由于 A 是对称正定的, 因此我们可以借助三项递推公式来简化运算. 首先, 根据 T m 对称正定性, 我们知道 T m 存在 LDL T 分解, 即 T m = L m D m L m. 于是 x (m) = x (0) + V m z (m) = x (0) + V m Tm 1 (βe 1 ) = x (0) + (V m L T m )(βdm 1 L 1 m e 1 ). 如果 x (m) 满足精度要求, 则计算结束. 否则我们需要计算 x (m+1), 即 x (m+1) = x (0) + V m+1 T 1 m+1 (βe 1) = x (0) + (V m+1 L T m+1 )(βd 1 m+1 L 1 m+1 e 1). 这里假定 T m+1 的 LDL T 分解为 T m+1 = L m+1 D m+1 L m+1. 下面就考虑如何利用递推方式来计算 x (m+1). 记 我们首先证明下面的结论. 引理 7.2 下面的递推公式成立 : P m V m L T m = [ p 1, p 2,..., p m ] R n m, y m βd 1 m L 1 m e 1 = [η 1,..., η m ] R m. P m+1 V m+1 L T m+1 = [ P m, p m+1 ], y m+1 βd 1 m+1 L 1 m+1 e 1 = [y m, η m+1 ], m = 1, 2,.... 证明. 设 T m 的 LDL T 分解为 1 d 1 T m = L m D m L l 1 1 d 2 m = l m 1 1 由待定系数法可知 d 1 = α 1,... d m 1 l l m 1 1. l i = β i /d i, d i+1 = α i+1 l i β i, i = 1, 2,..., m 1. 记 γ = [0,..., 0, β m ] R m 则 [ ] Tm γ m T m+1 = = L γm m+1 D m+1 L m+1 α m+1

236 224 第七讲子空间迭代方法 1 d 1 l 1 1 d 2 = l m 1 1 l m 1... d m d m+1 1 l l m 1 1 l m 1, 其中 l m = β m /d m, d m+1 = α m+1 l m β m. 记 γ = [0,..., 0, l m ] R m, 则 [ ] [ ] Lm 0 L L m+1 = and L 1 1 γ m+1 1 = m 0. γ L 1 m 1 所以有 [ L P m+1 = V m+1 L T T m+1 = [V m m, v m+1 ] L T m 0 1 ] γ = [V m L T m, V m L T m γ + v m+1 ]. 又 V m L T m γ = P m [0,..., 0, l m ] = l m p m, 所以 Pm+1 = [ P m, p m+1 ], 其中 p m+1 = l m p m + v m+1. (7.11) 另外, [ ] [ D y m+1 = βdm L 1 m+1 e m 0 L 1 1 = β 0 d 1 m+1 γ L 1 [ ] βd 1 m L 1 m e m 1 = β γl 1 m e m 1 /d m+1 ] = [ ym η m+1. m 0 m 1 ] [ ] e1 0 所以结论成立. 有了上面的性质, 我们就可以得到从 x (m) 到 x (m+1) 的递推公式 ] x (m+1) = P m+1 y m+1 = [ P m, p m+1 ] [ ym η m+1 = x (m) + η m+1 p m+1. 为了判断近似解是否满足要求, 我们还需要计算残量. 易知, 残量满足下面的递推公式 : r m+1 = b Ax (m+1) = b A(x (m) + η m+1 p m+1 ) = r m η m+1 A p m+1. 另一方面, 我们有 r m = b Ax (m) = b A(x (0) + V m z (m) ) = r 0 AV m z (m)

237 7.3 共轭梯度法 (CG) 225 = βv 1 V m T m z (m) β m v m+1 e mz (m) = β m (e mz (m) )v m+1, 即 r m 与 v m+1 平行. 记 r m = τ m v m+1, m = 0, 1, 2,..., (7.12) 其中 τ 0 = β = r 0 2, τ m = β m (e mz (m) ), m = 1, 2,.... 引入变量 p m τ m 1 p m, m = 1, 2,.... 由 (7.11) 和 (7.12) 可知, {p m } 满足下面的递推公式 : p m+1 = τ m p m+1 = τ m (v m+1 l m p m ) = r m + µ m p m, (7.13) 其中 µ m = l mτ m τ m 1, m = 1, 2,.... 于是我们就得到下面的递推公式 (m = 1, 2,...) x (m+1) = x (m) + η m+1 p m+1 = x (m) + ξ m+1 p m+1, r m+1 = r m η m+1 A p m+1 = r m ξ m+1 Ap m+1, (7.14) (7.15) 其中 ξ m+1 = η m+1 τ m, m = 1, 2,.... 下面需要考虑系数 ξ m+1 和 µ m 的计算方法. 首先给出下面的性质. 引理 7.3 下面的结论成立 : (1) r 1, r 2,..., r m 相互正交 ; (2) p 1, p 2,..., p m 相互 A- 共轭 ( 或 A- 正交 ), 即当 i j 时有 p i Ap j = 0. 证明. (1) 由于 r k 与 v k+1 平行, 所以结论成立. (2) 只需证明 P map m 是对角矩阵即可, 即证 P m A P m 是对角矩阵. 通过直接计算可得 P ma P m = (V m L T m ) AV m L T m = L 1 m VmAV m L T m = L 1 m T m L T m = L 1 m (L m D m L m)l T m = D m.

238 226 第七讲子空间迭代方法 下面给出 ξ m+1 和 µ m 的计算公式. 在等式 (7.13) 两边同时左乘 p m+1 A 可得 p m+1 Ap m+1 = p m+1 Ar m + µ m p m+1 Ap m = rmap m+1. 再用 rm 左乘方程 (7.15) 可得 0 = rmr m+1 = rmr m ξ m+1 rmap m+1. 于是 ξ m+1 = r mr m r map m+1 = rmr m p m+1 Ap. (7.16) m+1 在等式 (7.13) 两边同时左乘 p ma 可得 于是 0 = p map m+1 = p mar m + µ m p map m. µ m = p mar m p map m = r map m p map m. (7.17) 为了进一步减少运算量, 我们还可以将上式进行简化. 用 r m+1 左乘方程 (7.15) 可得 r m+1 r m+1 = r m+1 r m ξ m+1 r m+1 Ap m+1 = ξ m+1 r m+1 Ap m+1. 于是 ξ m+1 = r m+1 r m+1 r m+1 Ap. m+1 所以 ξ m = r mr m r map m, 即 r map m = r mr m /ξ m, 代入 (7.17) 可得 µ m = r map m p map m = r mr m p map m 1 ξ m = r mr m p map m p map m r m 1 r = r mr m m 1 r m 1 r. (7.18) m 1 综上, 由 (7.18), (7.13), (7.16) 和 (7.14), (7.15) 就构成了 CG 算法的迭代过程, 即 p m+1 = r m + µ m p m, 其中 µ m = r mr m r m 1 r, m 1 x (m+1) = x (m) + ξ m+1 p m+1, r r m+1 = r m ξ m+1 Ap m+1, 其中 ξ m+1 = mr m p m+1 Ap. m+1 注意, 以上递推公式是从 m = 1 开始的. 因此 m = 0 时的计算公式需要另外推导. 首先, 由 p 1 的定义可知 p 1 = P 1 = V 1 L T 1 = v 1.

239 7.3 共轭梯度法 (CG) 227 因此 p 1 = τ 0 p 1 = βv 1 = r 0. 其次, 由 Lanczos 过程可知 T 1 = α 1 = v 1 Av 1. 注意到 β = r 0 r 0, 于是 x (1) = x (0) + V 1 T1 1 (βe 1 ) = x (0) + β v 1 Av v 1 = x (0) + r 0 r 0 1 p 1 Ap p 1. 1 令 ξ 1 = r 0 r 0 p 1 Ap ( 注 : 之前的 ξ m+1 计算公式 (7.16) 只对 m 1 有定义 ), 则当 m = 0 时关于 x (m+1) 的递 1 推公式仍然成立. 最后考虑残量. 易知 r 1 = b Ax (1) = b Ax (0) r 0 r 0 p 1 Ap Ap 1 = r 0 ξ 1 Ap 1, 1 即当 m = 0 时关于 r m+1 的递推公式也成立. 于是, 我们就可以给出下面的 CG 算法. 算法 7.7. 共轭梯度法 (CG) 1: 选取初值 x (0), 停机准则 ε > 0, 最大迭代步数 IterMax 2: r 0 = b Ax (0) 3: β = r 0 2 4: if β < ε then 5: 停止迭代, 输出近似解 x (0) 6: end if 7: for m = 1 to IterMax do 8: ρ = r m 1 r m 1 9: if m > 1 then 10: µ m 1 = ρ/ρ 0 11: p m = r m 1 + µ m 1 p m 1 12: else 13: p m = r 0 14: end if 15: q m = Ap m 16: ξ m = ρ/(p mq m ) 17: x (m) = x (m 1) + ξ m p m 18: r m = r m 1 ξ m q m 19: relres = r m 2 /β 20: if relres< ε then 21: 停止迭代, 输出近似解 x (m)

240 228 第七讲子空间迭代方法 22: end if 23: ρ 0 = ρ 24: end for 25: if relres< ε then 26: 输出近似解 x (m) 及相关信息 27: else 28: 输出算法失败信息 29: end if CG 算法的每个迭代步的主要运算为一个矩阵向量乘积和两个向量内积 ; 7.4 收敛性分析 CG 算法的收敛性 设 x 是解析解, x (m) x (0) + K m 是 CG 算法在 x (0) + K m 中找到的近似解, 即 x (m) = arg min x x A. x x (0) +K m 记 P k 为所有次数不超过 k 的多项式的集合. 对任意 x x (0) + K m, 存在 p(t) P m 1, 使得 于是有 x = x (0) + p(a)r 0. x x = ε 0 + p(a)(b Ax (0) ) = ε 0 + p(a)(ax Ax (0) ) = (I Ap(A))ε 0 q(a)ε 0, 其中 ε 0 = x (0) x, 多项式 q(t) = 1 tp(t) P m 且 q(0) = 1. 所以 x x 2 A = ε 0 q(a) Aq(A)ε 0. 设 A = QΛQ 是 A 的特征值分解, 其中 Q 是正交矩阵, Λ = diag(λ 1, λ 2,..., λ n ) 是对角阵, 且 λ i > 0. 记 y = [y 1, y 2,..., y n ] Q ε 0, 则 x (m) x 2 A = min x x (0) +K m x x 2 A = min q P m, q(0)=1 ε 0 q(a) Aq(A)ε 0 = min q P m, q(0)=1 ε 0 Qq(Λ) Λq(Λ)Q ε 0 = min q P m, q(0)=1 y q(λ) Λq(Λ)y = min q P m, q(0)=1 i=1 min q P m, q(0)=1 n yi 2 λ i q(λ i ) 2 n max {q(λ i) 2 } yi 2 λ i 1 i n i=1

241 7.4 收敛性分析 229 即 因此, 我们有下面的结论. x (m) x 2 A x (0) x 2 A = min q P m, q(0)=1 = min q P m, q(0)=1 = min q P m, q(0)=1 min q P m, q(0)=1 max {q(λ i) 2 } y Λy 1 i n max {q(λ i) 2 } ε 0 Aε 0 1 i n max {q(λ i) 2 } ε 0 2 A, 1 i n max {q(λ i) 2 }. 1 i n 引理 7.4 设 A R n n 对称正定, x (m) 是 CG 算法迭代 m 步后得到的近似解. 则 x (m) x A x (0) x A min q P m, q(0)=1 max q(λ i). (7.19) 1 i n 由于 A 的特征值通常是不知道的, 因此不等式 (7.19) 右端通常难以计算. 但在许多情况下, 我们可以通 过一些近似方法估计出 A 的最大特征值 λ 1 和最小特征值 λ n. 假设 λ 1 和 λ n 已知, 则不等式 (7.19) 右端 可以放缩为 min q P m, q(0)=1 max q(λ). (7.20) λ n λ λ 1 由 Chebyshev 多项式的最佳逼近性质 ( 定理 6.20) 可知, 最小最大问题 (7.20) 的解为 ( ) T 2t (λ1+λ n) m λ 1 λ n q(t) = ), T m ( λ1+λn λ 1 λ n 其中 T m 为 m 次 Chebyshev 多项式. 由于 T m (t) = ( 1) m T m (t), 且当 t 1 时有 T m (t) 1, 所以 又当 t > 1 时 T m (t) = q(t) ( ). λ T 1+λ n m λ 1 λ n [ ( t + m ( t 2 1) + t + ) ] m t ( t + m t 2 2 1), 所以 ( ) ( λ1 + λ n T m 1 λ 1 + λ n + λ 1 λ n 2 λ 1 λ n ( λ1 + λ n = 1 2 = 1 2 (λ 1 + λ n ) 2 (λ 1 λ n ) λ1 λ n λ 1 λ n λ 1 λ n ( λ1 + ) m λ n λ1 λ n ) m )m = 1 2 ( κ(a) + 1 κ(a) 1 ) m. 其中 κ(a) = λ 1 为 A 的条件数. 因此我们可以得到下面的收敛性定理. λ n

242 230 第七讲子空间迭代方法 定理 7.5 设 A R n n 对称正定, x (m) 是 CG 算法迭代 m 步后得到的近似解. 则 ( ) m x (m) x A κ(a) 1 2. (7.21) x (0) x A κ(a) CG 算法的超收敛性 如果我们能够获得 A 的更多的特征值信息, 则能得到更好的误差限 [4]. 定理 7.6 设 A 对称正定, 特征值为 0 < λ n λ n+1 i b 1 λ n i λ j+1 b 2 λ j λ 1. 则当 m i + j 时有 x (m) ( ) { m i j x A b 1 n ( ) j ( ) } λ λk λk λ 2 max, (7.22) x (0) x A b + 1 λ [b 1,b 2] λ k λ k k=n+1 i k=1 其中 b = ( b2 b 1 ) 由此可知, 当 b 1 与 b 2 非常接近时, 迭代 i + j 步后, CG 算法收敛会非常快. 推论 7.7 设 A 对称正定, 特征值为 0 < δ λ n λ n+1 i 1 ε λ n i λ j ε λ j λ 1. 则当 m i + j 时有 x (m) ( ) i x A 1 + ε 2 ε m i j. (7.23) x (0) x A δ GMRES 方法的收敛性 正规矩阵情形 设 A 是正规矩阵, 即 A = UΛU, 其中 Λ = diag(λ 1, λ 2,..., λ n ) 的对角线元素 λ 2 C 为 A 的特征值. 设 x x (0) + K k (A, r 0 ), 则存在多项式 p(t) P k 1 使得 x = x (0) + p(a)r 0. 于是 b Ax = b Ax (0) Ap(A)r 0 = (I Ap(A))r 0 q(a)r 0, (7.24)

243 7.4 收敛性分析 231 其中 q(t) = 1 tp(t) P k 满足 q(0) = 1. 直接计算可知 b Ax 2 = q(a)r 0 2 = Uq(Λ)U r 0 2 U 2 U 2 q(λ) 2 r 0 2 = q(λ) 2 r 0 2. 又 Λ 是对角矩阵, 所以 q(λ) 2 = max 1 i n q(λ i). 设 x (k) GMRES 方法得到的近似解. 由 GMRES 方法的最优性可知, x (k) 极小化残量的 2 范数. 因此, 于是, 我们有下面的结论. b Ax (k) 2 = min b Ax 2 x x (0) +K k (A,r 0) = min q P k, q(0)=1 q(a)r 0 2 min q P k, q(0)=1 q(λ) 2 r 0 2 = r 0 2 min q P k, q(0)=1 max q(λ i). 1 i n 定理 7.8 设 A R n n 是正规矩阵, x (k) 是 GMRES 方法得到的近似解, 则 b Ax (k) 2 r 0 2 min q P k, q(0)=1 max q(λ i). (7.25) 1 i n 需要指出的是, 上界 (7.28) 是紧凑的 [34, 46]. 与 CG 算法类似, 我们也可以选取一个包含 A 的所有 特征值的区域 Ω C, 然后将定理 7.8 中的上界缩放为 min max q(λ). (7.26) q P k, q(0)=1 λ Ω 通常 Ω 必须是连通的, 否则 (7.26) 的求解非常困难. 即使是两个区间的并都没法求解 [29]. 另外, Ω 不能 包含原点. 我们首先考虑一种最简单的情形, 即 Ω 是复平面上的一个圆盘, 圆心为 C(c, 0), 半径 r > 0. 这里假 定 r < c, 因此原点不在 Ω 内. 定义复系数多项式 q k (z) = ((c z)/c) k, 则 q k (z) P k 且 q k (0) = 1. 所以 min q P k, q(0)=1 max q(λ i) max q k(λ i ) = max 1 i n 1 i n 1 i n 由此可见, 当 r 越小或 c 越大时, 右式趋向于 0 的速度就越快. (c λ i ) k c k rk c k. 设 A 是正规矩阵, 其特征值包含在一个圆盘内, 则圆盘的半径越小或者圆心离原点越远, 则 GM- RES 收敛越快. 如果用椭圆来代替圆盘, 则可得出更紧凑的上界. 设 A 的特征值全部包含在椭圆 E(c, d, a) 内, 其中 d > 0 为焦距, a > 0 为半长轴长, C(c, 0) 为椭圆中心. 并且假定原点不在椭圆内. 如下图所示.

244 232 第七讲子空间迭代方法 Im(z) Im(z) a o a c d Re(z) o c Re(z) d 令 T k 为 k 次复 Chebyshev 多项式, 则多项式 T k (z) = T k( c z d ) T k ( c d ) 就是极小极大问题 的渐进最优解. 于是 min q P k, q(0)=1 max q(λ) (7.27) λ E(c,d,a) min q P k, q(0)=1 max q(λ i) 1 i n 由复 Chebyshev 多项式的性质可知 min q P k, q(0)=1 max q(λ) λ E(c,d,a) max T k (λ) = T k( a d ) λ E(c,d,a) T k ( c d ). max T k (λ). λ E(c,d,a) 因此 所以我们可得下面的结论. min q P k, q(0)=1 max q(λ i) T k( a d ) 1 i n T k ( c d ). 推论 7.9 设 A R n n 是正规矩阵, x (k) 是由 GMRES 得到的近似解, 则 b Ax (k) 2 T k( a d ) r 0 2 T k ( c (7.28) d ). 虽然 Tk (z) 通常不是极小极大问题 (7.27) 的解, 但上界 (7.28) 却往往能给出 GMRES 方法收敛速 度的一个很好的估计 [53]. 非正规情形 当 A 不是正规矩阵时, 在一般情况下, GMRES 方法的收敛性很难分析. 如果 A R n n 是可对角化的, 即 A = XΛX 1,

245 7.4 收敛性分析 233 其中 X C n n 非奇异, Λ = diag(λ 1, λ 2,..., λ n ) 的对角线元素 λ i C 为 A 的特征值, 则 b Ax (k) 2 = 相类似地, 我们可以得到下面的结论 [62]. min b Ax 2 = min q(a)r 0 2. (7.29) x x (0) +K k (A,r 0) q P k, q(0)=1 定理 7.10 设 A = XΛX 1, 其中 X C n n 非奇异, Λ 是对角矩阵, x (k) 是 GMRES 方法得到的近似 解, 则 其中 κ(x) 是 X 的谱条件数. b Ax (k) 2 r 0 2 X 2 X 1 2 min q P k, q(0)=1 = κ(x) min q P k, q(0)=1 max q(λ i) 1 i n max 1 i n q(λ i), (7.30) 如果 A 接近正规, 则 κ(x) 1. 此时上界 (7.30) 在一定程度上能描述 GMRES 的收敛速度. 当如果 X 远非正交, 则 κ(x) 会很大, 此时该上界就失去实际意义了. 需要指出的是, 上面的分析并不意味着非正规矩阵就一定比正规矩阵收敛慢. 事实上, 对任意一个非正规矩阵, 总存在一个相应的正规矩阵, 使得 GMRES 方法的收敛速度是一样的 ( 假定初始残量相同 ) [2, 35, 36, 52]. 虽然 GMRES 方法的收敛性与系数矩阵的特征值有关, 但显然并不仅仅取决于特征值的分布. 事实上, 我们有下面的结论. 定理 7.11 对于任意给定的特征值分布和一条不增的收敛曲线, 则总存在一个矩阵 A 和一个右端项 b, 使得 A 具有指定的特征值分布, 且 GMRES 方法的收敛曲线与给定的收敛曲线相同. 例 7.1 考虑线性方程组 Ax = b 其中 A = , b = e 1. a 0 a 1 a 2 a n 1 当 a 0 0 时, A 非奇异. 易知, A 的特征值多项式为 p(x) = λ n a n 1 λ n 1 a n 2 λ n 2 a 1 λ a 0. 方程组的精确解为 x = [ a 1 /a 0, 1, 0,..., 0]. 以零向量为迭代初值, 则 GMRES 迭代到第 n 步时才收敛. ( 前 n 1 步残量范数不变 ). MATLAB 程序参见 GMRES_example01.m

246 234 第七讲子空间迭代方法 如果 A 不可以对角化, 我们在分析 GMRES 方法的收敛性时, 通常会想办法用一个新的极小化问题 来近似原来的极小化问题 (7.29). 当然, 这个新的极小化问题应该是比较容易求解的. 事实上, 我们有 b Ax (k) min q(a)r q P k, q(0)=1 = r 0 2 r 0 2 max v 2=1 min q(a)v 2 (7.31) q P k, q(0)=1 min q(a) 2. (7.32) q P k, q(0)=1 不等式 (7.31) 右端代表的是在最坏情况下的 GMRES 收敛性, 而且是紧凑的, 即它是所能找到的不依赖 于 r 0 的最好上界. 但我们仍然不清楚, 到底是 A 的那些性质决定着这个上界 [27]. 可以证明, 当 A 是正规矩阵时, 上界 (7.31) 和 (7.32) 是相等的 [34, 46]. 但是, 对于大多数非正规矩 阵而言, 这两者是否相等或者非常接近, 迄今仍不太清楚. 最后需要指出的是, 算法的收敛性也依赖于迭代初值和右端项. 所以定理 7.5, 7.8 和 7.10 中的上界 描述的都是最坏情况下的收敛速度. 也就是说, 在实际计算中, 算法的收敛速度可能会比预想的要快得 多. 7.5 其它 Krylov 子空间迭代算法 Krylov 子空间算法一览表 : 对称 非对称 正规方程 CG (1952) 对称正定, 正交投影法 (Galerkin) MINRES (1975) 对称不定, 斜投影法 (Petrov-Galerkin) SYMMLQ (1975) 对称不定 SQMR (1994) 对称不定 FOM (1981) 正交投影法, Arnoldi GMRES (1984) 斜投影法 (Petrov-Galerkin), Arnoldi BiCG (1976) 双正交 (biorthogonalization) QMR (1991) 双正交 (biorthogonalization) CGS (1989) Transpose free BiCGStab (1992) Transpose free, smoother convergence than CGS TFQMR (1993) Transpose free, smoother convergence than CGS FGMRES (1993) Flexible GMARES CGLS (1982) 最小二乘 ( 法方程 ) LSQR (1982) 最小二乘 ( 法方程 ) 7.6 课后习题 练习 7.1 证明定理 7.2, 即由 Lanczos 过程生成的向量是相互正交的. 练习 7.2 证明定理 7.4 中的必要性.

247 7.6 课后习题 235 练习 7.3 设 p 1, p 2,..., p m 是 A- 共轭的, 即当 i j 时有 p i Ap j = 0. 试证明 : p 1, p 2,..., p m 线性无关. 实践题 练习 7.4 编程实现 GMRES 方法. 练习 7.5 编程实现 CG 算法.

248

249 第八讲预处理 Nothing will be more central to computational science in the next century than the art of transforming a problem that appears intractable into another whose solution can be approximated rapidly. For Krylov subspace matrix iterations, this is preconditioning. Trefethen & Bau[70], 为了改善 krylov 迭代方法的收敛性与可靠性, 我们通常需要运用预处理技术 (preconditioning). 通俗 地说, 预处理就是将原来难以求解的问题转化成一个等价的但比较容易求解的新问题. 预处理技术的研 究是目前科学计算领域中的重要研究课题之一. 8.1 预处理迭代方法 对于线性方程组而言, 预处理就是对系数矩阵进行适当的线性转换, 转换为一个新矩阵. 考虑线性方程组 Ax = b, A R n n 非奇异, b R n. (8.1) 如果在方程组的两边同时左乘一个非奇异矩阵 P R n n 的逆, 则可得 P 1 Ax = P 1 b. (8.2) 这个新方程组就是预处理后的方程组, P 就称为预处理子 (preconditioner ). 当 Krylov 子空间方法被用于求解 (8.2) 时, 就称为预处理 Krylov 子空间方法. 理论上讲, 任何一个非奇异矩阵都可以作为预处理子. 但一个好的预处理子 P 通常需满足下面两个要求 : (1) P 1 A 具有更好的特征值分布及 / 或更小的条件数 ; (2) P z = r 容易求解. 其中第一个要求是为了确保预处理后的线性方程组更容易求解, 也就是说, 选取的预处理方法是有效的. 第二要求是因为在用 Krylov 子空间方法求解预处理后的方程组 (8.2) 时, 每步迭代都需要求解一个以 P 为系数矩阵的线性方程组, 为了不增加太多额外的运算量, 必须很容易求解. 即 预处理方式 (8.2) 称为左预处理. 相应地, 我们可以在方程组两边同时右乘 P 1, 这就是右预处理, AP 1 u = b, x = P 1 u. (8.3) 237

250 238 第八讲预处理 另外, 我们也可以将 P 分解成两个矩阵的乘积, 即 P = LR. 于是我们可以用下面的方式对原方程组 (8.1) 进行预处理 L 1 AR 1 u = b, x = R 1 u. (8.4) 这就是两边预处理. 以上是三种常用的预处理方式. 这三种方式预处理后的系数矩阵分别为 P 1 A, AP 1 和 L 1 AR 1. 由于它们是相似的, 所以具有相同的特征值分布. 如果 A 是对称正定的, 则使用共轭梯度法求解时, 这三种方式的预处理效果基本上是一样的. 但对于非对称 ( 特别是非正规 ) 情形, 效果可能会相差很大. 在实际使用中, 该选取哪种预处理方式, 需要根据问题本身和所用的方法来确定. 如对于对称正定线性方程组的 CG 方法, 三种方式都可以, 而对于 GMRES 方法, 则选取右预处理比较合适. 一方面是实际使用时, 得到的残量范数与原方程组的残量范数是一样的, 另一方面是, 右预处理极小化的是原始残量范数, 而左预处理极小化的是预处理后的残量. 这里需要指出的是, 在实际求解预处理后的方程组时, 我们并不会显式地计算 P 1 ( 除非 P 1 非常容易计算 ), 更不会显式地计算 P 1 A 预处理 CG 方法设 A R n n 对称正定, 并假定预处理子 P 也是对称正定的. 为了保证预处理后的系数矩阵仍然是对称正定的, 我们考虑使用两边预处理方式. 设 P 的 Cholesky 分解为 P = LL. 于是我们得到下面的预处理方程组 L 1 A(L ) 1 u = L 1 b, x = (L ) 1 u. (8.5) 用 CG 方法求解上述方程组, 迭代 k 步后, 得到的近似解记为 u (k), 预处理残量记为 r k L 1 A(L ) 1 u (k). 于是, 求解预处理方程组 (8.5) 的 CG 方法可描述如下 : L 1 b 算法 8.1. 两边预处理 CG 方法 1: 给定初值 x (0) 2: 计算 r 0 = b Ax (0) 3: 令 r 0 = L 1 r 0, p 1 = r 0 4: for k = 1, 2,... do ( r k 1, r k 1 ) 5: ξ k = (L 1 A(L ) 1 p k, p k ) 6: u (k) = u (k 1) + ξ k p k 7: r k = r k 1 ξ k L 1 A(L ) 1 p k 8: µ k = ( r k, r k ) ( r k 1, r k 1 ) 9: p k+1 = r k + µ k p k

251 8.1 预处理迭代方法 : end for 由于算法 8.1 中得到的是预处理后的近似解 u (k) 和预处理残量 r k, 因此我们还需要考虑原方程的近似解和残量的计算. 我们对上述算法中的迭代公式进行适当的改写. 首先引入一个辅助变量 p k : p k (L ) 1 p k, k = 1, 2,.... 于是有 p k+1 = (L ) 1 p k+1 = (L ) 1 r k + µ k (L ) 1 p k = (L ) 1 r k + µ k p k. 又由 r k 的表达式可知, 原方程组的残量 r k = L r k. 因此可得到下面的递推公式 : 其中 r k = L r k = L( r k 1 ξ k L 1 A(L ) 1 p k ) = r k 1 ξ k Ap k, p k+1 = (L ) 1 r k + µ k p k = (L ) 1 L 1 r k + µ k p k = P 1 r k + µ k p k, x (k) = (L ) 1 u (k) = (L ) 1 (u (k 1) + ξ k p k ) = x (k 1) + ξ k p k, ξ k = (L 1 r k 1, L 1 r k 1 ) (L 1 A(L ) 1 p k, p k ) = (r k 1, (L ) 1 L 1 r k 1 ) (A(L ) 1 p k, (L ) 1 p k ) = (r k 1, P 1 r k 1 ), (Ap k, p k ) µ k = (L 1 r k, L 1 r k ) (L 1 r k 1, L 1 r k 1 ) = (r k, P 1 r k ) (r k 1, P 1 r k 1 ). 记 z k P 1 r k, 则可得下面的预处理 CG 方法. 算法 8.2. PCG: 预处理 CG 方法 1: 给定初值 x (0), ( 相对 ) 精度要求 ε > 0 和最大迭代步数 IterMax 2: 计算 r 0 = b Ax (0) 和 β = r 0 2 3: 令 z 0 = P 1 r 0, p 1 = z 0 4: 计算 ρ = r 0 z 0 5: for k = 1 to IterMax do 6: q k = Ap k 7: ξ k = ρ/(p k q k) 8: x (k) = x (k 1) + ξ k p k 9: r k = r k 1 ξ k q k 10: relres = r k 2 /β 11: if relres< ε then 12: break 13: end if 14: ρ 0 = ρ 15: z k = P 1 r k 16: ρ = r k z k 17: µ k = ρ/ρ 0

252 240 第八讲预处理 18: p k+1 = z k + µ k p k 19: end for 20: if relres< ε then 21: 输出近似解 x (k) 及相关信息 22: else 23: 输出算法失败信息 24: end if 我们注意到, 矩阵 L 并没有出现在算法中, 这意味着我们并不需要对 P 做 Cholesky 分解. 在算法 8.2 中, 每步迭代都需要计算 z k = P 1 r k. 一般情况下, 都是通过求解方程组 P z k = r k 来实现, 除非 P 1 非常容易得到, 或者是直接给出的. 事实上, PCG 方法 8.2 也可以从左预处理方式导出. 考虑左预处理方程组 P 1 Ax = P 1 b. (8.6) 易知 P 1 A 是正定的, 但通常不是对称的, 因此我们不能直接对 (8.6) 实施 CG 方法. 此时我们需要定义一个新的内积 : P - 内积, 即 (x, y) P (P x, y) = (x, P y). (8.7) 由于 P 是对称正定的, 所以这个定义是有效的. 在该内积下, 有 (P 1 Ax, y) P = (Ax, y) = (x, Ay) = (x, P (P 1 Ay)) = (x, P 1 Ay) P, 即 P 1 A 关于 P - 内积是自伴随的. 也就是说, 在 P - 内积意义下, P 1 A 是 对称 的. 这时我们就可以用 CG 方法来求解预处理方程组 (8.6), 但需要将欧拉内积改为 P - 内积. 引入辅助变量 z k P 1 r k, 则求解预处理方程组 (8.6) 的 CG 方法可描述如下 : 算法 8.3. 基于 P - 内积的 CG 方法 1: 给定初值 x (0), ( 相对 ) 精度要求 ε > 0 和最大迭代步数 IterMax 2: 计算 r 0 = b Ax (0) 和 β = r 0 2 3: 令 z 0 = P 1 r 0, p 1 = z 0 4: for k = 1 to IterMax do 5: ξ k = (z k 1, z k 1 ) P (P 1 = (r k 1, z k 1 ) Ap k, p k ) P (Ap k, p k ) 6: x (k) = x (k 1) + ξ k p k 7: r k = r k 1 ξ k Ap k 8: relres = r k 2 /β 9: if relres< ε then 10: break 11: end if

253 8.1 预处理迭代方法 : z k = z k 1 α k P 1 Ap k = P 1 r k 13: µ k = (z k, z k ) P = (r k, z k ) (z k 1, z k 1 ) P (r k 1, z k 1 ) 14: p k+1 = z k + µ k p k 15: end for 不难看出, 算法 8.3 和算法 8.2 是完全一样的. 类似地, 我们也可以从右预处理方式来推导 PCG 方法, 具体过程留作练习 预处理 GMRES 方法 对于非对称 Krylov 子空间方法, 也有三种预处理方式. 但与对称正定情形不同的是, 这三种方式并 不等价, 而且有时效果会相差很大. 左预处理方式首先考虑左预处理. 设 P R n n 是预处理子 ( 非奇异 ), 则左预处理方程组为 P 1 Ax = P 1 b. (8.8) 记 r k 为原线性方程组的残量, 即 r k = b Ax (k), 则预处理方程组 (8.8) 的残量为 r k = P 1 r k. 将 GMRES 方法用于求解方程组 (8.8), 即可得下面的左预处理 GMRES 方法. 算法 8.4. 左预处理 GMRES 方法 1: 给定初值 x (0) 和 ( 相对 ) 精度要求 ε > 0 2: 计算 r 0 = P 1 (b Ax (0) ) 和 β = r 0 2 3: 令 v 1 = r 0 /β, ξ = βe 1 4: for j = 1, 2,... do 5: w j = Av j 6: w j = P 1 w j % Apply preconditioning 7: for i = 1, 2,..., j do 8: h ij = (w j, v i ) 9: w j = w j h ij v i 10: end for 11: h j+1,j = w j 2 12: for i = 1, 2,..., j 1 do % Apply G j 1,..., G 1 to the last column of H j+1,j [ ] [ ] [ ] hi,j ci s i hi,j 13: = h i+1,j s i c i 14: end for 15: if h j+1,j = 0 then h i+1,j

254 242 第八讲预处理 16: set m = j and break 17: end if 18: v j+1 = w j /h j+1,j 19: if h j,j > h j+1,j then % Form the Givens rotation G j 20: c j = 1 1+τ 2, s j = c j τ where τ = hj+1,j h j,j 21: else 22: s j = 1 1+τ 2, c j = s j τ where τ = 23: end if hj,j h j+1,j 24: h j,j = c j h j,j + s j h j+1,j, h j+1,j = 0 % Apply G j to last column of H j+1,j [ ] [ ] [ ] ξj cj s j ξj 25: = % Apply G j to the right-hand side ξ j+1 s j c j 0 26: if ξ j+1 /β < ε then % Check convergence: r j 2 = ξ j+1 27: set m = j and break 28: end if 29: end for 30: 计算 y (m) = R 1 m ξ (m), 其中 R m = H(1 : m, 1 : m), ξ (m) = ξ(1 : m) 31: 计算近似解 x (m) = x (0) + V m y (m) 需要指出的是, 在左预处理 GMRES 方法中, 停机准则中的 ξ j+1 并不是原方程组残量 r k 的模, 而 是预处理残量 r k = P 1 (b Ax (k) ) 的模. 如果要计算真实残量, 除了显式计算外, 没有其它更好的办 法. 所以, 如果停机准则是基于真实残量的, 则需要额外去计算 r k, 这就会增加很多额外的运算量. 幸运 的是, 右预处理方式没有这个问题. 右预处理方式如果用 P 做右预处理, 则对应的预处理方程组为 AP 1 u = b, x = P 1 u. (8.9) 给定迭代初值 x (0), 则 u (0) = P x (0). 相应的预处理初始残量为 r 0 = b AP 1 u (0) = b Ax (0) = r (0), 即预处理残量与原方程组残量是一样的. 因此无需计算 u (0). 设 u (m) = u (0) + V m y m 是迭代 m 步后的 近似解, 则对应的原方程组近似解 x (m) 为 x (m) = P 1 u (m) = P 1 (u (0) + V m y m ) = x (0) + P 1 V m y m, 原方程组的残量为 r m = b Ax (m) = r 0 AP 1 V m y m = βv 1 V m+1 H m+1,m y m = V m+1 (βe 1 H m+1,m y m ). 由于 y m 是最小二乘问题 min y R m βe 1 H m+1,m y 2

255 8.1 预处理迭代方法 243 的解, 因此 r m 2 = βe 1 H m+1,m y m 2 = β q 1 (m + 1). 这与不带预处理的 GMRES 方法是一样的. 因此在实际求解过程中我们可以直接得到原方程组残量的 模, 而无需计算 u (m) 和 x (m). 这是右预处理方式与左预处理方式的主要区别. 右预处理 GMRES 方法具体描述如下 : 算法 8.5. 右预处理 GMRES 方法 1: 给定初值 x (0) 和 ( 相对 ) 精度要求 ε > 0 2: 计算 r 0 = b Ax (0) 和 β = r 0 2 3: 令 v 1 = r 0 /β, ξ = βe 1 4: for j = 1, 2,... do 5: w j = P 1 v j % Apply preconditioning 6: w j = A w j 7: for i = 1, 2,..., j do 8: h ij = (w j, v i ) 9: w j = w j h ij v i 10: end for 11: h j+1,j = w j 2 12: for i = 1, 2,..., j 1 do % Apply G j 1,..., G 1 to the last column of H j+1,j [ ] [ ] [ ] hi,j ci s i hi,j 13: = h i+1,j s i c i 14: end for 15: if h j+1,j = 0 then 16: set m = j and break 17: end if 18: v j+1 = w j /h j+1,j h i+1,j 19: if h j,j > h j+1,j then % Form the Givens rotation G j 20: c j = 1 1+τ 2, s j = c j τ where τ = hj+1,j h j,j 21: else 22: s j = 1 1+τ 2, c j = s j τ where τ = 23: end if hj,j h j+1,j 24: h j,j = c j h j,j + s j h j+1,j, h j+1,j = 0 % Apply G j to last column of H j+1,j [ ] [ ] [ ] ξj cj s j ξj 25: = % Apply G j to the right-hand side ξ j+1 s j c j 0 26: if ξ j+1 /β < ε then % Check convergence: r j 2 = ξ j+1 27: set m = j and break 28: end if 29: end for

256 244 第八讲预处理 30: 计算 y (m) = R 1 m ξ (m), 其中 R m = H(1 : m, 1 : m), ξ (m) = ξ(1 : m) 31: 计算近似解 x (m) = x (0) + P 1 V m y (m) 两边预处理方式 如果预处理子 P 是由乘积形式给出的, 即 则可以构造下面的两边预处理方程组 P 1 L 1 APR P = P L P R, u = P 1 1 L b, x = PR u. 将 GMRES 用于求解上述线性方程组, 则可得到两边预处理 GMRES 方法. 具体推导过程与前面类似, 留 作练习. 需要指出的是, 对于两边预处理 GMRES 方法, 其预处理后的残量为 r k = L 1 (b Ax (k) ). 由于左预处理方式和两边预处理方式所得到的残量并不是原方程组的残量, 因此它们都可能会 导致迭代提前终止或延迟终止., 特别是当预处理子 P 的条件数较大时. 因此, 通常情况下建议采 用右预处理方式 左 右预处理 GMRES 的最优性质 设 x (0) 是迭代初始值, 记 x (k) L 和 x (k) R 分别是左预处理 GMRES 方法和右预处理 GMRES 方法迭代 k 步后得到的近似解. 根据 GMRES 方法的最优性质可知, 对于左预处理 GMRES 方法, 有 而对于右预处理 GMRES, 我们有 x (k) R 通过变量代换 x = P 1 u, 可得 x (k) L = argmin P 1 (b Ax) 2. (8.10) x x (0) +K k (P 1 A,P 1 r 0) u (k) = = P 1 u (k), 其中 argmin b AP 1 u 2. u u (0) +K k (AP 1,r 0) 又 x (k) R = argmin b Ax 2. (8.11) x x (0) +P 1 K k (AP 1,r 0) P 1 K k (AP 1, r 0 ) = P 1 span{r 0, AP 1 r 0, (AP 1 ) 2 r 0,..., (AP 1 ) k 1 r 0 } 由 (8.10) 和 (8.11) 可知, x (k) L = span{p 1 r 0, P 1 AP 1 r 0, P 1 (AP 1 ) 2 r 0,..., P 1 (AP 1 ) k 1 r 0 } = span{p 1 r 0, (P 1 A)P 1 r 0, (P 1 A) 2 P 1 r 0,..., (P 1 A) k 1 P 1 r 0 } = K k (P 1 A, P 1 r 0 ), 和 x (k) R 属于同一个子空间中. 不同之处在于, x (k) L 量的范数, 即 P 1 (b Ax) 2, 而 x (k) R 极小化的是原方程组残量的范数, 即 b Ax 2. 极小化的是预处理后残

257 8.2 预处理技术 245 定理 8.1 设 x (k) L 和 x (k) R 分别是左预处理 GMRES 方法和右预处理 GMRES 方法迭代 k 步后得到的近 似解, 且迭代初始值均为 x (0). 则 x (k) L 是 P 1 (b Ax) 2 在 x (0) + K k (P 1 A, P 1 r 0 ) 的极小值点, 而 x (k) R 则是 b Ax 2 在同一个子空间中的极小值点. 8.2 预处理技术 Finding a good preconditioner to solve a given sparse linear system is often viewed as a combination of art and science. Theoretical results are rare and some methods work surprisingly well, often despite expectations. Saad [64], 预处理能否取得成功的关键是能否找到一个好的预处理子. 预处理子的构造与问题本身是密切相关的, 通用的 好预处理子 是不存在的. 关于预处理技术的理论分析很少, 大多数情况下只能根据经验来构造. 尽管如此, 在实际应用中, 这些根据经验构造出来的预处理子往往能取得好好的效果, 有时甚至会大大出乎人们的意外. 一般来说, 预处理子可以分为两大类 (a) 代数预处理子 (Algebraic Preconditioner), 即仅仅根据所给的矩阵来构造预处理子. (b) 专用预处理子 (Problem-Specific Preconditioner), 即根据问题的物理背景所构造的预处理子. 显然, 由于专用预处理子充分利用了问题的物理背景知识, 所以它们往往具有很好的数值表现, 如多重网格, 区域分解, 快速变换等等. 但它们严重依赖于原问题的物理背景, 因此不具有通用性. 我们这里只介绍代数预处理子, 即仅仅根据所给的系数矩阵来构造预处理方法. 这种预处理方法具有一定的通用性. 预处理子的选取通常与具体问题本身是密切有关的. 一般的选取方法有 设有矩阵分裂 A = M N, 则 M 可作为一个预处理子 ; 不完全 LU 分解 ; 近似逆, 即选取矩阵 P, 使得 P 1 A 1 ; 对角矩阵, 块对角矩阵, 三角矩阵, 块三角矩阵等等 矩阵分裂预处理子 考虑线性方程组 Ax = b, A R n n, 对 A 做如下的矩阵分裂 : 其中 M 非奇异, 则可以得到下面的迭代方法 x (k+1) = M 1 Nx (k) + M 1 b = x (k) + A = M N (8.12) ( M 1 b M 1 Ax (k)). k = 0, 1, 2,....

258 246 第八讲预处理 这等价于求解下面的方程组 M 1 Ax = M 1 b. (8.13) 这就是与矩阵分裂 (8.12) 相对应的预处理线性方程组. 将 Krylov 子空间方法用于求解方程组 (8.13), 就得到预处理 Krylov 子空间方法. 矩阵 M 就是由矩阵分裂 (8.12) 所定义的预处理子. 理论上讲, 任何一个矩阵分裂都可以定义一个预处理子. 但为了使得预处理子能有很好的预处理效果, 往往需要其在一定意义下与 A 充分接近. 设 A = D L U, 其中 D, L, U 分别是 A 的对角部分, 严格下三角部分和严格上三角部分, 并假定 D 非奇异. 则由我们之前讨论的定常迭代法, 可以立即得到下面的预处理子 : Jacobi 预处理子, 即取 A 的对角部分作为预处理子 : P J = D. G-S 预处理子, 即取 A 的下三角部分作为预处理子 : P GS = D L. SOR 预处理子, 即 P SOR = 1 (ωd L). ω SSOR 预处理子, 即 P SSOR = 1 [ ] (1 ω)d + ωl D 1 [ (1 ω)d + ωu ]. ω(2 ω) 由于 SSOR 对参数 ω 的取值不是很敏感, 因此我们通常令 ω = 1, 即 P SSOR = (D L)D 1 (D U) 不完全 LU 分解 One of the most popular preconditioners is the class of incomplete factorization preconditioners which are usually effective for large and sparse matrices. The incomplete factorization methods were first introduced by Buleev [13, 14] in the late 1950s, and independently by Varga [77]; see also [45]. However, a major breakthrough took place in 1977, by Meijerink and van der Vorst [54] where the incomplete Cholesky-conjugate gradient (ICCG) algorithm was proposed. Since then, a number of improvements and extensions have been made, including level of fill and drop tolerance-based incomplete factorizations, and so on. When the LU decomposition of a sparse matrix A is carried out through Gaussian elimination, fill-in usually takes place. This means that the triangular factors L and U are considerably less sparse than A. However, by dropping part of the fill-in in the processing of the factorization, we can obtain a simple but useful preconditioner of the form P = LU, where L and U are the incomplete LU factors. In general, the incomplete LU factorization (ILU ) is a process that computes a sparse unit lower-triangular matrix L and a sparse upper-triangular matrix U such that A = LU R,

259 8.2 预处理技术 247 where R R n n is the error matrix. The algorithms of incomplete factorization differ in the rules which govern the dropping of fill-in in the factorization process. Fill-in can be discarded based on several different criteria, such as position, value, or a combination of them. For each incomplete factorization algorithm, we should choose a zero pattern in advance. Let Z n be the index set {1, 2, 3,..., n}. Then the zero pattern P is defined as a subset of Z n Z n, that is, P {(i, j) : i Z n, j Z n }. We allow fill-in only in positions which are not in P, that is, we will set the entries whose indices are in P to zero. The ILU factorization based on a given zero pattern P can be described as follows. 算法 8.6. General ILU Factorization Algorithm Given a sparse matrix A, compute its ILU factorization with zero pattern P 1: For (i, j) P, set a ij = 0 % Apply P on A 2: for k = 1, 2,..., n 1 do 3: for i = k + 1,..., n and (i, k) / P do 4: a ik = a ik /a kk 5: end for 6: for j = k + 1,..., n and (i, j) / P do 7: a ij = a ij a ik a kj 8: end for 9: end for Theoretically, we can choose P arbitrarily. However, it is always suggested to exclude the diagonal entries and the nonzero entries of A. One simple choice is taking P to be exactly the zero pattern of A, i.e., P = {(i, j) : i j and a ij = 0}. (8.14) Then we obtain the no fill ILU factorization which is denoted by ILU(0). In practice, Algorithm 8.6 is not recommended because, at the k-th step, all rows from k + 1 to n are being modified, which will make the algorithm less efficient. For a row-contiguous data structure, the following IKJ version is the most popular variant. 算法 8.7. ILU Factorization of IKJ version 1: For (i, j) P, set a ij = 0 2: for i = 2, 3,..., n do 3: for k = 1, 2,..., i 1 and (i, k) / P do 4: a ik = a ik /a kk 5: for j = k + 1,..., n and (i, j) / P do 6: a ij = a ij a ik a kj

260 248 第八讲预处理 7: end for 8: end for 9: end for It is easy to check that Algorithm 8.7 is equivalent to Algorithm 8.6. If the zero pattern P is included in the zero pattern of A, then step 1 can be skipped. Let L = [l ij ] and U = [u ij ] be the unit lower-triangular matrix and the upper-triangular matrix obtained by Algorithm 8.7. Then we have A = LU R, where R = [r ij ] is the error matrix. From Algorithm 8.7, we know i a ij = l ik u kj r ij, k=1 where 0, (i, j) / P, r ij = i l ik u kj, (i, j) P. k=1 Therefore, ILU(0) factorization can be defined in general terms: Any pair of matrices L (unit lower-triangular) and U (upper-triangular) so that the entries of LU A are zero in the locations (i, j) in which a ij 0. Clearly, this does not define the ILU(0) uniquely. However, the standard ILU(0) is defined constructively using Algorithm 8.7 with zero pattern (8.14). If A is symmetric and positive definite, then the same technique can be applied to the Cholesky factorization, which leads to the no fill incomplete Cholesky factorization, denoted by IC(0). Both ILU(0) and IC(0) are very simple to construct and very cheap to implement as well. Also, they are quite effective for some problems, especially for the low-order discretizations of scalar elliptic PDEs which lead to M- matrices and diagonally dominant matrices. Indeed, these are the types of problems for which ILU(0) and IC(0) are originally proposed [54]. For certain matrices with special structure (e.g., five-point matrices), CG with IC(0) preconditioner can be implemented at nearly the same cost as CG with no preconditioning [26]. 8.3 课后习题 练习 8.1 用右预处理方式推导 PCG 算法.

261 第九讲特征值问题的迭代解法 当矩阵规模很大时, 计算其所有的特征值和特征向量是非常困难的. 而在实际应用中, 我们通常也只对其中的某些特征值和 ( 或 ) 特征向量感兴趣, 因此也没有必要计算所有的特征值和特征向量. 本讲主要介绍计算部分特征值和 ( 或 ) 特征值向量的迭代解法. 这些算法的存储量要远小于 O(n 2 ), 运算量也远小于 O(n 3 ). 关于大规模矩阵特征值问题的参考资料有 : B. N. Parlett, The Symmetric Eigenvalue Problem, Prentice Hall, Englewood Cliffs, NJ, (Republished by SIAM, Philadelphia, 1998.) Z. Bai, J. Demmel, J. Dongarra, A. Ruhe, and H. van der Vorst, Templates for the Solution of Algebraic Eigenvalue Problems: A Practical Guide, SIAM, Philadelphia, Y. Saad, Numerical Methods for Large Eigenvalue Problems, 2nd revised edition. SIAM, Philadelphia, G. H. Golub and Ch. van Loan, Matrix Computations, 4th edition, Johns Hopkins University Press, Baltimore, Z. Bai, R. C. Li, and Y. F. Su, Lecture notes on Matrix Eigenvalue Computations, 课程 : Prof. Bai, Large Scale Scientific Computing, 课程 : Prof. Dr. Peter Arbenz, Numerical Methods for Solving Large Scale Eigenvalue Problems, 软件 : ARPACK collection of Fortran subroutines designed to compute a few eigenvalues and eigenvectors of large scale sparse matrices and pencils 投影算法 最简单的特征值问题就是仅仅计算一个特征值, 如计算模最大的特征值. 这时我们可以使用幂迭代 方法, 这在前面章节已经介绍. 为了后面讨论方便, 我们仍将该算法描述出来. 算法 9.1. 幂迭代 : 计算最大特征值 1: Given x (0) 2: for i = 1, 2,..., until converge do 3: y (i) = Ax (i 1) 4: x (i) = y (i) / y (i) 2 5: end for 249

262 250 第九讲特征值问题的迭代解法 幂迭代所产生的迭代向量 x (0), x (1),..., x (m 1) 生成一个 Krylov 子空间 { K m (A, x (0) ) = span x (0), Ax (0),..., A m 1 x (0)} { = span x (0), x (1),..., x (m 1)}. 在幂迭代中, 我们取 x (m 1) 为近似特征向量. 显然, 如果我们在 K m (A, x (0) ) 中找出 最佳 的近似特征 向量, 则收敛速度就可能会大大加快. 下面我们讨论如何在 K m = K m (A, x (0) ) 中寻找 最佳 的近似特征向量. 设 A R n n, 并设 K m 和 L m 是 R n 的两个 m 维子空间. 投影算法就是寻找 A 的近似特征对 ( λ, x), 满足下面的 Petrov-Galerkin 条件 find λ C and x K m such that A x λ x L m. (9.1) 这样的算法我们称为斜投影算法. 如果我们取 L m = K m, 则上面的算法就是一个正交投影算法, 此时条 件 (9.1) 称为 Galerkin 条件. 设 v 0, v 1,..., v m 1 和 w 0, w 1,..., w m 1 分别是 K m 和 L m 的一组标准正交基. 令 V m = [v 0, v 1,..., v m 1 ], W m = [w 0, w 1,..., w m 1 ]. 则对任意 x K m, 存在向量 y R n 使得 x = V m y, 即 x 可以由 v 0, v 1,..., v m 1 线性表出. 根据条件 (9.1), 我们可得 (AV m y λv m y, w i ) = 0, i = 1, 2,..., m, 即 W mav m y = λw mv m y. (9.2) 这是一个广义特征值问题. 如果我们取 L m = K m, 并令 W m = V m, 则 (9.2) 就转化为 T m y = λy, (9.3) 其中 T m = V mav m R m m. 这意味着 ( λ, y) 是矩阵 T m 的一个特征对. 由于 m 通常比较小, 因此我 们可以使用先前讨论的方法 ( 如 QR 迭代 ) 来计算 ( λ, y). 这样我们就可以计算出 A 的一个近似特征对 ( λ, x), 其中 x = V m y. 9.2 Rayleigh-Ritz 方法 事实上, 我们可以在 K m (A, x (0) ) 中找出 m 个最佳近似特征向量及相应的最佳近似特征值. 这些近似特征值和近似特征向量就称为 Ritz 值和 Ritz 向量. 定义 9.1 设 K m 是 R n n 的一个 m 维子空间, 它的一组标准正交基为 v 0, v 1,..., v m 1, 并令 V m = [v 0, v 1,..., v m 1 ]. 记 T m = VmAV m, 设 ( λ, y) 是 T m 的一组特征对, 即 T m y = λy 且 y 2 = 1. 则称 λ 是 A 的一个 Ritz 值, x = V m y 是 A 的一个 Ritz 向量. Rayleigh-Ritz 方法就是用 Ritz 值和 Ritz 向量来近似 A 的特征值与特征向量.

263 9.2 Rayleigh-Ritz 方法 251 算法 9.2. Rayleigh Ritz 算法 1: 计算 K m 的一组单位正交基 : V m = [v 0, v 1,..., v m 1 ]. 2: 计算矩阵 T m = VmAV m 的特征值 ( 即 A 的 Ritz 值 ) 3: 选取其中的 k 个想要的特征值 : λ 1, λ 2,..., λ k, 其中 k m. 4: 计算对应的特征向量 : y 1, y 2,..., y k, 即 T m y i = λ i y i 5: 计算 A 的 Ritz 向量 : x i = V m y i, i = 1, 2,..., k. 下面我们讨论 A 是对称矩阵时, Rayleigh Ritz 方法的性质. 设 V u R n n m 是一个列正交矩阵, 且使得 V = [V m, V u ] R n n 是一个正交矩阵. 于是我们有 [ ] V V AV = [V m, V u ] A[V m, V u ] = m AV m VmAV u. Vu AV m Vu AV u 由于 A 对称的, 故 T m = VmAV m R m m 也是对称的. 此时, Ritz 值和 Ritz 向量具有下面的最优性质. 定理 9.1 设 A R n n 对称, 则对任意的对称矩阵 R R m m, 有 AV m V m R 2 AV m V m T m 2, 即 AV m V m R 2 在 R = T m 处取最小值, 此时 AV m V m R 2 = Vu AV m 2. 证明. 令 R = T m + Z, 其中 Z R m m 是任意一个对称矩阵. 由于 A 和 T m 都是对称矩阵, 且 T m = V mav m, 因此由 AV m V m R 2 2 = (AV m V m R) (AV m V m R) = ( AV m V m (T m + Z) ) ( AVm V m (T m + Z) ) 所以当 Z = 0 时 AV m V m R 2 2 达到最小, 且 = AV m V m T m 2 2 V mav m Z + T m V mv m Z ZV mav m + ZV mv m T m + Z V mv m Z = AV m V m T m Z 2 2. AV m V m T m 2 = V V AV m V m T m 2 [ ] V = (V m, V u ) m AV m V Vu m T m AV m 2 = V u (Vu AV m ) 2 = Vu AV m 2.

264 252 第九讲特征值问题的迭代解法 定理 9.1 中的 2- 范数可以改成任意的酉不变范数, 如 F - 范数. 定理 9.2 设 A R n n 对称, 并设 T m = UΛU 是 T m = V mav m 的特征值分解. 设 Q R n m 是满 足 span(q) = K 的任意单位列正交矩阵, D R m m 是任意对角矩阵. 我们有 AQ QD 2 AV m V m T m 2, 且当 Q = V m U, D = Λ 时等式成立. 证明. 由于 span(q) = K = span(v m ), 所以存在矩阵 W R m m 使得 Q = V m W. 又 Q 是单位列正交的, 因此 I = Q Q = (V m W ) V m W = W VmV m W = W W. 这表明 W 是正交矩阵. 设 W DW = T m + Z, 则 AQ QD 2 2 = AV m W V m W D 2 2 = AV m V m W DW 2 2 = AV m V m T m Z 2 2 AV m V m T m 2 2. 如果取 W = U 和 D = Λ, 则 Z = W DW T m = UΛU T m = 0. 此时上式中的等号成立. 定理 9.2 表明, 在所有满足 span(q) = K 单位列正交矩阵 Q R n m 和任意的对角矩阵 D R m 中, 当 Q = V m U 和 D = Λ 时, AQ QD 2 取到极小值. 定理 9.1 和定理 9.2 表明, 在 AQ QD 2 极小的意义下, Ritz 值是特征值的 最佳 近似. 所以我们用 Ritz 值作为特征值的近似是有道理的. 9.3 Lanczos 方法 设 A R n n 是对称矩阵. Lanczos 方法就是利用 Lanczos 过程来计算 K m 的基和 T m = V mav m, 然 后计算 A 的 Ritz 值和 Ritz 向量. 算法 9.3. Lanczos 算法 1: Choose a vector v 0 such that v 0 = 1, and set β 0 = 0 2: for j = 0, 1,... do 3: Compute w = Av j β j v j 1 4: α j+1 = (w, v j ) 5: w = w α j+1 v j 6: β j+1 = w 2 7: if β j+1 = 0 then 8: stop

265 9.3 Lanczos 方法 253 9: end if 10: v j+1 = w/β j+1 11: Compute the eigenvalues and eigenvectors of T j 12: Check the convergence 13: end for 在 Lanczos 算法 9.3 中, 迭代 m 步后, 向量 v 0, v 1,..., v m 1 构成子空间 K m (A, v 0 ) = span { v 0, Av 0,..., A m 1 } v 0, 的一组基, 并且有 AV m = V m T m + β m v m e m, 其中 e m = [0, 0,..., 0, 1] R m, α 1 β 1. T m = VmAV β m = βm 1 β m 1 α m 设 ( λ, y) 是 T m 的一个特征对, 则有 A(V m y) = V m T m y + β m v m e my = λv m y + β m (e my)v m. 于是 即 Ax λx = β m (e my)v m, Ax λx 2 = β m (e my), 其中 x = V m y. 如果 β m (e my) 很小, 则我们就认为 λ 是 A 的某个特征值的很好的近似. 事实上, 关于 Ritz 值 λ, 我们有下面的性质. 引理 9.1 设 A R n n 是对称矩阵, 设 r = Ax λx, 其中 x 0. 则 其中 σ(a) 表示 A 的谱, 即所有特征值组成的集合. min λ λ r 2, λ σ(a) x 2 证明. 设 A = UΛU 是矩阵 A 的特征值分解. 则 r = (A λi)x = U(Λ λi)u x. 记 Λ = diag(λ 1, λ 2,..., λ n ). 对任意向量 z = [z 1, z 2,..., z n ] R n, 有 (Λ λi)z n 2 2 = (λ i λ) 2 zi 2 i=1

266 254 第九讲特征值问题的迭代解法 所以 n min λ λ 2 zi 2 λ σ(a) i=1 = z 2 2 min λ σ(a) λ λ 2. r 2 = U r 2 = (Λ λi)u x 2 U x 2 min λ λ = x 2 λ σ(a) 由引理 9.1 可知, 存在 A 的某个特征值 λ, 使得 min λ σ(a) λ λ. λ λ β m(e my)v m 2 V m y 2 = β m e my y 2 = β m e my. (9.4) 在前面的讨论中, 我们并没有考虑实际计算时可能的舍入误差. 在实际计算中, 由于浮点运算的舍入误差, 即使 m 很小 ( 如 m = 10 或 m = 20), 也可能会导致向量 {v i } 失去正交性. 这时我们必须采取一些补救措施, 最简单的方法就是对它们重新来一次正交化, 即在算法 9.3 的第 5 步后加上一条语句 j w = w (w, v i )v i. 这个过程就称为带全正交过程的 Lanczos 算法. 显然, 这个过程是非常费时的. 另外一个可行的方法就是选择性正交. i=1 9.4 Arnoldi 方法这里考虑非对称情形, 即计算非对称矩阵 A 的特征值. 与 Lanczos 算法相类似, 我们可以通过 Arnoldi 过程来计算 K m 的标准正交基 v 0, v 1,..., v m 1 和上 Hessenberg 矩阵 H m = VmAV m, 使得 AV m = V m H m + h m+1,m v m e m and VmAV m = H m. 但此时 H m 只是上 Hessenberg, 而不是对称三对角. 但我们同样可以通过计算 H m 的特征值和特征向量来得到 A 的 Ritz 值的 Ritz 向量, 并用它们来近似 A 的特征值和特征向量. 设 ( λ, y) 是 H m 的一个特征对, 其中 y 2 = 1, 则 A(V m y) = V m H m y + h m+1,m v m e my = λv m y + h m+1,m (e my)v m, 所以 Ax λx 2 = h m+1,m (e my)v m 2 = h m+1,m e my, 其中 x = V m y. 若 h m+1,m e my 足够小, 我就认为 ( λ, x) 是 A 的某个特征对的近似.

267 9.5 非对称 Lanczos 方法 255 算法 9.4. Arnoldi 算法 1: Choose a vector v 0 such that v 0 2 = 1 2: for j = 0, 1,... do 3: Compute w j+1 = Av j 4: for i = 0, 1,..., j do 5: h ij = (w j+1, v i ) 6: w j+1 = w j+1 h ij v i 7: end for 8: h j+1,j = w j+1 2 9: if h j+1,j = 0 then 10: stop 11: end if 12: v j+1 = w j+1 /h j+1,j 13: Compute the eigenvalues and eigenvectors of T j 14: Check the convergence 15: end for 由于 A 是非对称的, 其特征值可能是复的, 或者是坏条件的, 此时 Lanczos 方法的一些最优性质就不 再成立. 尽快如此, 目前还是存在一些有效 Arnoldi 方法的实现方式, 可参见 [50, 63, 65]. 9.5 非对称 Lanczos 方法 非对称 Lanczos 方法就是 Lanczos 方法在非对称矩阵上的推广, 它是基于 Lanczos 双正交化过程. 设 v 0 和 w 0 是任意的非零向量, 并设 K m (A, v 0 ) = span{v 0, Av 0,..., A m 1 v 0 } 和 K m (A, w 0 ) = span{w 0, A w 0,..., (A ) m 1 w 0 }. Lanczos 双正交化过程就是计算 K m (A, v 0 ) 和 K m (A, w 0 ) 的基 {v i } 和 {w i }, 满足 {v i } 和 {w i } 相互正交, 即 0, i j (v i, w j ) =. 1, i = j 所以 W mv m = I, 其中 V m = [v 0, v 1,..., v m 1 ], W m = [w 0, w 1,..., w m 1 ]. 注意, 通常 {v i } m i=0 或 {w j } m j=0 本身并不一定正交, 故 V m 和 W m 通常并不列正交.

268 256 第九讲特征值问题的迭代解法 根据 Lanczos 双正交化过程, 我们可得 AV m = V m T m + γ m v m e m, A W m = W m T m + β m w m e m, 其中 e m = [0,..., 0, 1] R m, α 1 β 1. γ T m = βm 1 γ m 1 α m 所以 W mav m = W mv m T m + γ m (W mv m )e m = T m. 设 λ 是 T m 的特征值, 其对应的右特征向量和左特征向量分别为 y 和 z, 且 y 2 = z 2 = 1, 即 T m y = λy and z T m = λz. 于是有 AV m y = V m T m y + γ m v m e my = λv m y + γ m e myv m, (W m z) A = (A W m z) = (W m Tmz) + β m e mzwm = λ(w m z) + β m emzw m. 若 γ m (e my) 和 β m (e mz) 足够小, 我们就认为 λ 是 A 的某个特征值的近似, 而 V m y 和 W m z 就是相应的右特征向量和左特征向量的近似. 算法 9.5. 非对称 Lanczos 算法 1: Choose two vectors v 0 and w 0 such that (v 0, w 0 ) = 1 2: Set β 0 = 0 and γ 0 = 0 3: for j = 0, 1,... do 4: Compute α j+1 = (Av j, w j ) 5: ṽ j+1 = Av j α j+1 v j β j v j 1 6: w j+1 = A w j α j+1 w j γ j w j 1 7: γ j+1 = (ṽ j+1, w j+1 ) 1/2 8: if γ j+1 = 0 then 9: stop 10: end if 11: β j+1 = (ṽ j+1, w j+1 )/γ j+1 12: v j+1 = ṽ j+1 /γ j+1 13: w j+1 = w j+1 /β j+1 14: Compute the eigenvalues and eigenvectors of T j

269 9.5 非对称 Lanczos 方法 : Check the convergence 16: end for 非对称 Lanczos 算法的显著优点就是节省运算量, 缺点是更容易被中断.

270

271 附录 A IEEE 浮点运算标准 数通常以浮点格式表示和参与运算的 ( 整数除外 ), 浮点格式是一种数据结构, 用于指定包含浮点数的字段 这些字段的布局及其算术解释. 浮点存储格式指定如何将浮点格式存储在内存中. 自计算机发明以来, 曾出现许多中不同的浮点数表示方式, 但目前最通用的是 IEEE 二进制浮点数算术标准 (IEEE Standard for Binary Floating-Point Arithmetic, 简称 IEEE 754 标准 ). IEEE 754 标准的主要起草者是加州大学伯克利分校数学系的 William Kahan 教授, 他帮助 Intel 公司设计了 8087 浮点处理器, 并以此为基础形成了 IEEE 754 标准, Kahan 教授也因此获得了 1987 年的图灵奖. A.1 IEEE 中的浮点数的表示方法 通常一个浮点数由符号 尾数 基和指数组成, 如 : , 这里要求小数点前面为零, 小数点后面的数称为尾数. 若尾数的首位数字不为 0 时, 我们称其为正规数 ( 或规范化数 ), 否则称为次正规数 ( 或非规范化数 ). 如 是正规数, 而 是次正规数. 正规化表示方法可以使得每个浮点数的表示方式唯一, 而且可以空出一个位置, 使得表示精度更高. IEEE 754 标准中定义了表示浮点数的四种格式 : - 两种基本的浮点数 : 单精度 (32 位字长 ) 和双精度 (64 位字长 ). 其中单精度格式具有 24 位有效数字 ( 二进制 ), 而双精度格式具有 53 位有效数字 ( 二进制 ), 相对于十进制来说, 分别是 7 位 ( ) 和 16 位 ( ) 有效数字. - 两种扩展的浮点数 : 单精度扩展和双精度扩展. IEEE 754 标准中并未规定扩展格式的精度和大小, 但它指定了最小精度和字长 : 单精度扩展需 43 位字长以上, 双精确度扩展需 79 位字长以上 (64 位有效数字 ). 单精度扩展很少使用, 而对于双精确度扩展, 不同的机器架构中有着不同的规定, 有的为 80 位字长 ( 如 X86), 有的为 128 位字长 ( 如 SPARC). 一般来说, 描述一个浮点数的三个基本要素为 : - 基 : 计算机一般都以 2 为基 ; - 尾数的位数 : 确定有效数字的位数, 即精度 ; - 指数的位数 : 确定所能表示的数的范围. 在 IEEE 754 标准中, 浮点数是用二进制表示的, 由三部分组成 : 符号 (s), 指数 (e) 和尾数 (f), 见图 A.1. 单精度格式 : 用 8 位字长的二进制数来表示指数, 因此 e 的取值范围为 [0, 255]. 当 0 e < 255 时, 按单精度格式存储的数, 其对应的值是使用以下方法得到的 : 259

272 260 附录 A IEEE 浮点运算标准 图 A.1. IEEE 754 中单精度格式与双精度格式的位模式 将二进制基数点 ( 小数点 ) 插入到尾数 f 最高有效位的左侧, 并将一个隐含位插入到二进制基数 点的左侧, 从而得到的是一个二进制带分数 ( 整数加小数 ). 由此构成的带分数就是单精度格式有效数字. 隐含位的值并不是显式指定的 ( 即不存储 ), 而是通过 指数 e 的值来隐式指定 : 当 0 < e < 255 时, 表示该数为二进制正规数, 此时隐含位设为 1. 当 e = 0 时, 表示该数为二进制次正规数, 隐含位设为 0. 由于引入了隐含位 ( 为了尽可能地增加所能表示的数的精度 ), 这里的正规数概念与前面的 定义有点区别, 因此我们加上 二进制 三个字. 单精度格式位模式中的尾数只有 23 位, 但由于使用了隐含位, 所以能提供 24 位有效数字 ( 二进制 ). 因此, 在 IEEE 中, 单精度数的表示方法为 ( 1) s 1.f 2 e 127 ( 二进制正规数 ) ( 1) s 0.f ( 二进制次正规数 ) 完整的对应关系是 单精度格式位模式 值 0 < e < 255 ( 1) s 1.f 2 e 127 ( 二进制正规数 ) e = 0, f 0 ( 1) s 0.f ( 二进制次正规数 ) e = 0, f = 0 ( 1) s 0.0 ( 有符号的零 ) e = 255, f = 0, s = 0 +inf ( 正无穷大 ) e = 255, f = 0, s = 1 -inf ( 负无穷大 ) e = 255, f 0 NaN ( 非数 非确定值 ) 其中 127 是单精度格式的指数偏移值 (exponent bias), 在 IEEE 标准中, 这个值定义为 2 ( 指数位长 1) 1. 所以对于单精度格式, 指数偏移值就是 = 127, 而对于双精度格式, 这个值为 = 双精度格式 : 与单精度格式类似, 完整的对应关系是

273 A.1 IEEE 中的浮点数的表示方法 261 双精度格式位模式 值 0 < e < 2047 ( 1) s 1.f 2 e 1023 ( 二进制正规数 ) e = 0, f 0 ( 1) s 0.f ( 二进制次正规数 ) e = 0, f = 0 ( 1) s 0.0 ( 有符号的零 ) e = 2047, f = 0, s = 0 +inf ( 正无穷大 ) e = 2047, f = 0, s = 1 -inf ( 负无穷大 ) e = 2047, f 0 NaN ( 非数 非确定值 ) 例 A.1 单精度格式所能表示的十进制数范围. 最大二进制正规数为 7F7FFFFF 16 = 最小 ( 正的 ) 二进制正规数为 = 最大二进制次正规数为 007FFFFF 16 = 最小 ( 正的 ) 二进制次正规数为 = 例 A.2 双精度格式所能表示的十进制数范围. 最大二进制正规数为 7FEFFFFF FFFFFFFF 16 = 最小 ( 正的 ) 二进制正规数为 = 最大二进制次正规数为 000FFFFF FFFFFFFF 16 = 最小 ( 正的 ) 二进制次正规数为 = FF = 1 ( 补码 ) 在 MATLAB 中, hex2num 可以将一个由 16 个 16 进制数组成的字符串转化为其所对应的浮点数 ( 根据 IEEE 标准 ), 类似的命令有 hex2dec, bin2dec, base2dec, num2hex, dec2bin,... 例 A.3 把二进制数 ( ) 2 转换成十进制数. ( ) 2 = = 例 A.4 把十进制数 转换成二进制数. 整数部分 : = ( 辗转相除法 ) 小数部分 : = 0.25, 整数位是 0.0; = 0.5, 整数位是 0.00; = 1, 整数位是 1.001; ( 小数部分已变为 0, 运算结束 )

274 262 附录 A IEEE 浮点运算标准 所以 = 一个十进制数能否用二进制浮点数精确表示, 关键在于小数部分. 例 A.5 十进制数 能否用二进制数精确表示? = 0.2, 整数位是 0.0; = 0.4, 整数位是 0.00; = 0.8, 整数位是 0.000; = 1.6, 整数位是 ; = 1.2, 整数位是 ; = 0.4, 整数位是 ; 得到一个无限循环的二进制小数, 显然用有限位字长是无法表示的, 因此 无法用 IEEE 754 浮点数精确表示. 同理可知 0.2, 0.4, 0.6, 0.8, 0.3, 0.7, 0.9 也是无法精确表示的. 故 0.1 至 0.9 的 9 个小数中, 只有 0.5 可以精确表示. 例 A.6 能用二进制数精确表示的十进制小数. 易知 = = = = = = = = = = = = = = = = 由此可知, 一个十进制小数要能用浮点数精确表示, 最后一位必须是 5. 当然这是必要条件, 并非充分 条件. 如 0.35 就无法精确表示. 例 A.7 N 位二进制小数能精确表示的非零十进制小数总共有多少个? 1 位二进制小数能精确表示的有 2 0 = 1 个 (0.1 2 = ); 2 位二进制小数能精确表示的有 2 1 = 2 个 ( = , = ); 3 位二进制小数能精确表示的有 2 2 = 4 个 N 位二进制小数能精确表示的有 2 N 1 个

275 A.2 IEEE 中的浮点数运算 263 所以 N 位二进制小数能精确表示的十进制小数总共有 2 N 1 个. A.2 IEEE 中的浮点数运算 IEEE 754 标准也定义了浮点数的运算规则 : - 加 减 乘 除 平方根 余数 将浮点格式的数舍入为整数值 在不同浮点格式之间转换 在浮点和整数格式之间转换以及比较 : IEEE 对以上浮点运算的准确度作了规定 : 求余和比较运算必须精确无误. 其他运算必须向其目标提供精确的结果, 除非没有此类结果, 或者该结果不满足目标格式, 此时运算必须按照下面介绍的舍入模式对精确结果进行最低限度的修改, 并将经过修改的结果提供给运算的目标. - 在十进制字符串和两种基本浮点格式之一的二进制浮点数之间进行转换的准确度 单一性和一致性要求 : 对于在指定范围内的操作数, 这些转换必须生成精确的结果 ( 如果可能的话 ), 或者按照规定的舍入模式, 对此类精确结果进行最低限度的修改. 对于不在指定范围内的操作数, 这些转换生成的结果与精确结果之间的差值不得超过取决于舍入模式的指定误差. - 五种类型的 IEEE 浮点异常 : 无效运算 ( 如 0/0, / 等 ), 被零除, 上溢, 下溢和不精确, 以及用于向用户指示发生这些类型异常的条件. - 四种舍入模式 : 设 x 是所要表示的数, (1) 就近舍入 : 用最接近 x 的可表示的值来代替, 类似于整数的四舍五入. 如果 x 正好在两个相邻的可表示值的中间, 则首选二进制 偶数 ( 二进制最后一位为 0); (2) 向下舍入 : 用不大于 x 的可表示的值来代替 ( 向负无穷大方向截断 ); (3) 向上舍入 : 用不小于 x 的可表示的值来代替 ( 向正无穷大方向截断 ); (4) 向 0 舍入 : 当 x > 0 时采用向下舍入, 当 x < 0 时采用向上舍入. 我们将后面三种舍入模式统称为截断. 不同编译器对舍入可能有不同的处理方式. 下溢 当运算结果非常小时, 就会发生下溢. 下表是下溢阈值. 目标的精度 下溢阈值 单精度 最小正规数 最大次正规数 双精度 最小正规数 最大次正规数 IEEE 算法处理下溢的方式是渐进下溢 : 当生成的正确结果的数量级低于最小正正规数时, 就会生 成次正规数, 而不是返回零. 机器精度 : 将 1.0 与大于 1.0 的最小浮点数之间的距离记为 ε m. 它的一半称为 unit roundoff, 记为 ε u, 它是计算机表示一个浮点数时的相对误差界, fl(x) = x(1 + δ) 或 fl(x) = x 1 + δ, δ ε u.

276 264 附录 A IEEE 浮点运算标准 这里 fl(x) 表示 x 在计算机中实际存储的 IEEE 浮点数. 在 IEEE 标准下, 单精度和双精度浮点运算的最大相对误差 ε u 分别为 精度 单精度 双精度 最大相对误差 如果采用的不是就近舍入模式, 而是其他三种舍入模式 ( 即截断 ), 则最大相对误差为 ε m. 有的文献中称 ε u 为机器精度 (machine epsilon, machine precision, or macheps ), 如 Demmel [22], LAPACK, Scilab, Wikipedia. 也有的文献称 ε m 为机器精度, 如 Higham [41], MATLAB, Mathematica. 我们采用前面一种方式, 即 机器精度 指的是 ε u. 例 A.8 假定要使用只有三个精度位的二进制算法. 那么, 最大相对误差为 2 3. 在任意两个 2 的 幂之间, 只有 = 7 个可表示数字, 如下图所示. 数轴显示了数字之间的差距是随着指数增加而加倍增加的. 在 IEEE 单精度格式中, 两个最小正次正规数之间的差大约是 10 45, 而两个最大有限数之间的数量级差大约是 10 31! 精确是偶然的, 误差是必然的. 做数值算法, 惟一能做的就是尽量使误差的传播和累积能够得到有效的控制. A.3 浮点运算舍入误差分析 由于计算机无法精确表示所有的浮点数, 在做浮点运算时, 如果计算结果无法精确表示, 此时就会产生的误差, 这就是浮点运算的舍入误差. 根据 IEEE 浮点运算标准, 如果 a b 的结果无法精确表示, 则用一个最接近的浮点数来代替 ( 浮点运算时一般采用就近舍入模式 ), 记为 fl(a b). 这里的 表示加 减 乘 除四种运算符. 在不考虑溢出的情况下, 我们有 fl(a b) = (a b)(1 + δ) 或 fl(a b) = a b 1 + δ, (A.1)

277 A.3 浮点运算舍入误差分析 265 其中 δ 表示浮点运算的相对误差, 满足 δ ε u. 公式 (A.1) 是分析浮点运算舍入误差的基础 ( 标准模型 ) [41, page 40]. IEEE 浮点运算标准同时也指出, 对于开根号运算, 产生的误差同样也满足 (A.1). 一个比较有趣的问题是何时两个浮点数能进行精确的相减运算. 定理 A.1 (Ferguson, 1995) [41] 设浮点数 x 和 y 满足 e(x y) min{e(x), e(y)} (A.2) 其中 e( ) 表示一个正规浮点数的指数. 则 fl(x y) = x y. ( 假定 x y 不会下溢 ) 这里只考虑浮点运算误差, 所以假定 x, y 都是计算机可以精确表示的. 事实上, 由 (A.2) 可知, x 和 y 的指数至多差 1. 上面的定理对任何基都成立. 如果基是 2, 则有下面的结论. 推论 A.2 (Sterbenz, 1974) 设浮点数 x 和 y 满足 y/2 x 2y, 则 fl(x y) = x y. ( 假定 x y 不会下溢 ) 下面的结论对估计浮点运算的舍入误差非常有用 [41, page 63]. 引理 A.1 设 δ i ε u 且 nε u < 1, 则 其中 ρ i = ±1. n (1 + δ i ) ρi = 1 + θ n, θ n γ n nε u, 1 nε u i=1 例 A.9 ( 多项式运算的舍入误差分析 ) : 已知多项式 p(x) = 值时的舍入误差. n k=0 a k x k. 对于给定的 x, 分析计算 p(x) 的 解. 在对多项式 p(x) = a n x n + a n 1 x n 1 + a 1 x + a 0 求值时, 我们通常采用 Horner 法则. 算法 A.1. Horner 法则 1: p = a n 2: for i = n 1 : 1 : 0 do 3: p = x p + a i 4: end for 先看一个具体的例子. 设 p(x) = (x 2) 9, 观测 x = 2 附近的舍入误差. 我们通过画图来显示误差 情况 ( 见图 A.2). 观察发现, 用 Horner 法则求值时会在 x = 2 附近会出现 噪声带.

278 266 附录 A IEEE 浮点运算标准 图 A.2. 分别利用 Horner 法则 ( 左图 ) 和 y = (x 2) 9 ( 右图 ) 在区间 [1.92, 2.08] 上的 8000 个等分点上求值的结果 可写为 下面我们基于舍入误差分析模型 (A.1) 来分析多项式求值的误差情况. 带舍入误差的 Horner 算法 算法 A.2. 带舍入误差的 Horner 法则 1: p = a n 2: for i = n 1 : 1 : 0 do 3: p = ((x p)(1 + δ i ) + a i )(1 + δ i ) % δ i ε u, δ i ε u 4: end for 所以得到的最终计算结果为 n 1 fl(p(x)) = (1 + δ i 1 i ) (1 + δ j )(1 + δ n 1 j ) a i x i + (1 + δ j )(1 + δ j ) a n x n. i=0 j=0 j=0 (A.3) 假定 j ε u 1, 则有 于是 (A.3) 可改写为 fl(p(x)) = (1 + δ 1 ) (1 + δ j ) (1 + ε u ) j 1 + j ε u, (1 + δ 1 ) (1 + δ j ) (1 ε u ) j 1 j ε u. n i=0 (1 + ˆδ i ) a i x i n ã i x i, 其中 ˆδ i 2n ε u. (A.4) i=0 所以 fl(p(x)) 可看作是另一个多项式的精确值, 且这个多项式的系数是原多项式系数的一个小的扰动. 这说明多项式计算的 Horner 算法是向后稳定的, 且系数的向后相对误差不超过 2n ε u. 因此, 绝对误差 为 n fl(p(x)) p(x) = ã i x i i=0 n a i x i i=0

279 A.4 课后习题 267 相对误差为 n = ˆδ i a i x i i=0 fl(p(x)) p(x) p(x) n ˆδ i a i x i 2n εu i=0 n a i x i i=0 2n ε u n. a i x i i=0 n i=0 a i x i. A.4 课后习题 练习 1.1 考虑抽样数据 x 1, x 2,..., x n, 其均值为 x = 1 n 试证明 : σ 2 = 1 n 1 σ 2 = 1 n 1 n x i, 样本方差为 ( 无偏估计 ) i=1 n (x i x) 2. i=1 n (x 2 i n x 2 ). i=1 对于数值计算, 上述两种计算方法哪一个更可靠, 为什么? 练习 1.2 根据浮点运算的舍入误差模型 (A.1), 在不考虑溢出的情况下, 证明 [41] ( n ) n fl x i y i = x i y i (1 + θ i ), 其中 θ i γ i iε u, i = 1, 2,..., n. 1 iε u i=1 i=1

280 268 附录 A IEEE 浮点运算标准

281 附录 B 数值计算中的误差 数值方法的特点之一就是所求得的解是近似解, 总是存在一定的误差. 因此, 误差分析是数值分析中一个很重要的课题. 误差是人们用来描述数值计算中近似解的精确程度, 是科学计算中的一个十分重要的概念. 误差大致可分为以下几种类型 : 模型误差 : 数学模型是对实际问题的数学描述, 它往往是抓住问题的主要因素而略去次要因素, 因此, 它是实际问题的一个近似. 观测误差 : 在数学模型中通常包含一些参量 ( 数据 ), 这些参量的值一般都是通过测量或实验的方法所得到的, 因此也存在误差. 截断误差 : 也称方法误差, 在对数学模型进行数值求解时, 需要做一些近似, 如对导数离散时可用差商代替. 舍入误差 : 由于机器字长有限, 由于机器字长有限, 计算机对浮点数的表示和算术运算都存在一定的误差. 在数值分析中, 我们总是假定数学模型和所给的数据都是准确的, 因而不考虑模型误差和观测误差, 主要研究截断误差和舍入误差对计算结果的影响. 例 B.1 近似计算 1 0 e x2 dx 的值. 解. 这里我们采用 Taylor 展开, 即 1 0 e x2 dx = 1 0 ) (x x 2 + x4 2! x6 3! + x8 4! = ! ! ! 1 9 S 4 + R 4 其中 S 4 为前四项的部分和, R 4 为剩余部分. 如果我们以 S 4 作为定积分的近似值, 则 R 4 就是由此产生的误差, 这种误差就称为截断误差. 在计算 S 4 的值, 假定我们保留小数点后 4 位有效数字, 则 S 4 = = 这就是我们最后得到的近似值. 这里, 在计算 S 4 时所产生的误差就是舍入误差. B.1 误差与有效数字 269

282 270 附录 B 数值计算中的误差 定义 B.1 设 x 是精确值, x 是其近似值, 则绝对误差 e 和相对误差 e r 分别定义为 e = x x 和 e r = x x x. 若存在 ε > 0 满足 e = x x ε, 则称 ε 为绝对误差限, 简称误差限. 类似地, 若存在 ε r > 0 满足 e r ε r, 则称 ε r 为相对误差限. 几点说明 : 绝对误差可能为正, 也可能为负 ; 绝对误差越小越具有参考价, 但绝对误差却不能很好地表示近似值的精确程度 ; 近似值的精确程度取决于相对误差的大小 ; 实际计算中我们所能估计的通常是误差限或相对误差限 ; 由于真值难以求出, 通常也使用下面的定义作为相对误差限 e r = x x. x 工程中通常用下面的表达式来刻画近似值的精度 : x = x ± ε, 表示精确值在区间 [x ε, x + ε] 中. 定义 B.2 若近似值 x 的误差限是某一位的半个单位, 且该位到 x 的第一位非零数字共有 n 位, 则称 x 有 n 位有效数字. 关于有效数字的判断, 我们可以使用下面的方法. 性质 B.1 设 x 是 x 的近似值, 若 x 可表示为 x = ±0.a 1 a 2... a n m, 其中 a i 是 0 到 9 中的数字, 且 a 1 0. 若 x x m n, 则 x 至少有 n 位有效数字. 换而言之, 若 x x k, 则 x 至少有 m k 位有效数字. 例 B.2 设 x 1 = 和 x 2 = 是 π = 的近似值, 则 x 1 有 4 位有效数字, 而 x 2 有 5 位有效数字.

283 B.1 误差与有效数字 271 例 B.3 根据四舍五入原则, 写出下列各数的具有 5 位有效数字的近似值 : , , 解. 这三个数的具有 5 位有效数字的近似值分别为 : , , 有两点需要注意的是 : 按四舍五入原则得到的数字是有效数字 ; 一个数末尾的 0 不可以随意添加或省略. 定理 B.1 ( 有效数字与相对误差限 ) 设 x 是 x 的近似值, 若 x 可表示为 x = ±0.a 1 a 2... a n m, 其中 a i 是 0 到 9 中的数字, 且 a 1 0. 若 x 具有 n 位有效数字, 则其相对误差限满足 ε r 1 2a 1 10 n+1. 反之, 若 x 的相对误差限满足 则 x 至少有 n 位有效数字. ε r 1 2(a 1 + 1) 10 n+1. 证明. 由 x 的表达式可知 a 1 10 m 1 x (a 1 + 1) 10 m 1. 若 x 具有 n 位有效数字, 则 ε r = x x x 反之, 若 ε r 1 2(a 1+1) 10 n+1, 则 m n a 1 10 m 1 = 1 10 n+1. 2a 1 x x = x ε r m n. 故 x 至少有 n 位有效数字. 从这个定理可以看出, 有效数字与相对误差是紧密相关的 : 有效数字越多, 相对误差就越小 ; 反之, 相对误差越小, 有效数字就越多. B.1.1 基本算术运算的误差估计 误差估计主要是指如何估计误差限或相对误差限. 我们用 ε(x) 表示 x 的误差限, 则有 ε(x 1 ± x 2 ) ε(x 1 ) + ε(x 2 ), ε(x 1 x 2 ) x 2 ε(x 1 ) + x 1 ε(x 2 ), ( ) x1 ε x 1 ε(x 1 ) + x 1 ε(x 2 ) x 2 2. x 2

284 272 附录 B 数值计算中的误差 B.1.2 函数求值的误差估计 所以有 一般地, 设 f(x) 是可微函数, x 为 x 的近似值, 则由 Taylor 公式可知, 存在 ξ 使得 f(x) f(x ) = f (x )(x x ) f (ξ)(x x ) 2. ε(f(x)) f (x ) ε(x) + f (ξ) ε 2 (x). 2 当 f (ξ) 与 f (x ) 的比值不是很大时, 我们可以舍去二次项, 从而得到 ε(f(x)) f (x ) ε(x). 由于 x 通常是不知道的, 所以我们也用 f (x) 来近似 f (x ), 即 ε(f(x)) f (x) ε(x). 关于相对误差限, 我们有如下的估计 : ε r (f(x)) = f(x) f(x ) f(x ) f (x )(x x ) f(x ) = x f (x ) f(x ) x x x = C pε r (x), 其中 C p = x f (x ) f(x ) 称为 f(x) 的条件数. 对于多元可微函数 f(x 1, x 2,..., x n ), 设 x = (x 1, x 2,..., x n ) 是 x = (x 1, x 2,..., x n) 的近似值, 则 有 B.2 误差分析 数值计算中的误差分析很重要, 但也很复杂 ; 在计算过程中, 误差会传播 积累 对消 ; n ε(f(x)) f(x) x ε(x k). k k=1 实际计算中的运算次数通常都在千万次以上, 因此对每一步运算都做误差分析比较不切实际. 误差分析一般可分为定量分析和定性分析. B.2.1 定量分析 主要方法有 : 向前误差分析法, 向后误差分析法, 区间误差分析法, 概率分析法等. 向前误差分析 : 用输入数据的误差和数值方法本身的误差来分析计算结果的误差. 向后误差分析 : 用某个算法计算 f(x), 得到的近似解为 f, 假定 f 是 f(x) 对应于某个数据 x 的精确解, 即 f = f( x), 分析 x x 的大小就是向后误差分析. 向后误差分析法 (backward error analysis) 由著名数值分析专家 J. H. Wilkinson 于 1960 年提出, 这是误差理论中最基本的误差分析方法之一. 向后误差分析是一种先验误差估计方法, 不仅可以用来讨论算法的稳定性, 还可以用于讨论算法的收敛性. 后验误差估计则是利用得到的数值结果来估计近似解的误差, 如在解方程组时, 可以利用残量来估计解的误差.

285 B.3 数值稳定性 273 B.2.2 定性分析 目前在数值计算中更关注的是误差的定性分析 ; 定性分析包括研究数学问题的适定性, 数学问题与原问题的相容性, 数值算法的稳定性, 避免扩大误差的准则等 ; 定性分析的核心是原始数据的误差和计算过程中产生的误差对最终计算结果的影响. 算法有 优劣 之分, 问题有 好坏 之别, 即使不能定量地估计出最终误差, 但是若能确保计算过程中误差不会被任意放大, 那就能放心地实施计算, 这就是研究定性分析的初衷. B.3 数值稳定性 数值计算中的稳定性包括数学问题的稳定性和数值算法的稳定性. B.3.1 数学问题的稳定性 如果数学问题满足 (1) 对任意满足一定条件的输入数据, 存在一个解, (2) 对任意满足一定条件的输入数据, 解是唯一的, (3) 问题的解关于输入数据是连续的, 则称该数学问题是适定的 (well-posed), 否则就称为不适定的 (ill-posed). 如果输入数据的微小扰动会引起输出数据 ( 即计算结果 ) 的很大变化 ( 误差 ), 则称该数值问题是病态的. x + αy = 1 例 B.4 解线性方程组 αx + y = 0 解. 易知当 α = 1 时, 方程组无解. 当 α 1 时, 解为 x = 1 1 α 2, y = α 1 α 2. 当 α 1 时, 解的误差可能会很大. 比如当 α = 时, x 假定输入数据 α 带有 的误 差, 即输入数据为 α = , 则此时有 x , 解的误差约为 55.56, 是输入数据误差的五十多万倍, 因此该问题的病态的. B.3.2 病态问题与条件数 设 f(x) 可导, 则其条件数定义为 C p = xf (x) f(x). 一般情况下, 条件数大于 10 时, 就认为问题是病态的 ;

286 274 附录 B 数值计算中的误差 条件数越大问题病态就越严重 ; 病态是问题本身固有的性质, 与数值算法无关 ; 对于病态问题, 选择数值算法时需要谨慎. B.3.3 算法的稳定性 例 B.5 近似计算 S n = 1 0 x n dx, n = 1, 2,..., 8. x + 5 解. 通过观察可知 因此, S n + 5S n 1 = 1 0 x n + 5x n 1 dx = x + 5 S n = 1 n 5S n x n 1 = 1 n, (B.1) 易知 S 0 = ln 6 ln ( 保留三位有效数字 ), 利用上面的递推公式可得 ( 保留三位有效数字 ) 另一方面, 我们有 S 1 = , S 2 = , S 3 = , S 4 = 0.166, S 5 = 1.03, S 6 = 4.98, S 7 = 25.0, S 8 = (n + 1) = x n dx x n 1 0 x + 5 dx x n 0 5 dx = 1 5(n + 1). (B.2) 因此, 上面计算的 S 4,..., S 8 显然是不对的. 原因是什么呢? 误差! 设 Sn 是 S n 的近似值, 则 ( ) ( ) 1 1 e(sn) = Sn S n = n 5S n 1 n 5S n 1 = 5(Sn 1 S n 1 ) = 5e(Sn 1). 即误差是以 5 倍速度增长, 这说明计算过程是不稳定的, 因此我们不能使用该算法. 事实上, 递推公式 (B.1) 可以改写为 S n 1 = 1 5n 1 5 S n. 因此, 我们可以先估计 S 8 的值, 然后通过反向递推, 得到其它值. 于是 我们可以根据 (B.2) 对 S 8 做简单的估计, 即 S 8 1 ( 1 x n dx + x n ) 0 5 dx S 7 = , S 6 = , S 5 = , S 4 = , S 3 = , S 2 = , S 1 = , S 0 =

287 B.3 数值稳定性 275 对比精确值 S n 可知, 此时计算出来的 S n 精度要好很多. 通过误差分析可知, 误差是以 1 5 的速度减小, 因此计算过程是稳定的. 算法的稳定性 : 通俗地讲, 对于某个给定的算法, 如果输入数据的误差在运算过程不断增长而得不 到控制, 那么我们就说该算法是数值不稳定的, 否则就是数值稳定的. 假设输入数据的误差为 e 0, 经 n 次运算后的计算结果的误差为 e n. 如果 e n c 1 ne 0, 其中 c 1 是与 n 无关的常数, 则称误差是线性增长的. 如果 e n c 2 k n e 0, 其中 c 2, k 是与 n 无关的常数且 k > 1, 则称 误差是指数增长的. 如果算法的误差增长是线性的, 则该算法是数值稳定的, 如果算法的误差是指数增 长的, 则该算法是数值不稳定的. 显然误差的线性增长是不可避免的, 而指数增长是必须避免的. 在数值计算中, 误差不可避免, 因 此算法的稳定性是一个非常重要的性质. 在数值计算中, 不要采用不稳定的算法! 定义 B.3 ( 算法的向后稳定性 ) 设用某个算法来计算 f(x), 得到的近似值为 f(x). 若对任意的 x, 都存 在一个 小 的 δx, 使得 f(x + δx) = f(x), 则称该算法是向后稳定的, 其中 δx 称为向后误差. 这种误 差分析方法就是向后误差分析. 若一个算法是向后稳定的, 则有 f(x) f(x) = f(x + δx) f(x) f (x) δx. 由于 δx 很小, 所以当 f (x) 不是很大时, 误差总是很小. 因此向后稳定是一个好的算法的基本性质. 向后误差分析将舍入误差归入到截断误差中, 使得误差分析相对简单化. B.3.4 数值计算注意事项 在用计算机进行数值计算时, 舍入误差不可避免, 但我们要尽可能地减小舍入误差对计算结果的影 响. 在计算过程中, 我们应注意以下几点. (1) 避免相近的数相减. 如果两个相近的数相减, 则会损失有效数字, 如 = , 操作数有 5 位有效数字, 但结果却只有 1 为有效数字. 下面给出几个避免相近的数相减的方法 : ε x + ε ε = x + ε + x ( ln(x + ε) ln(x) = ln 1 + ε ) x 1 cos(x) = 2 sin 2 x 2, x 1 ( e x 1 = x x + 1 ) 6 x2 +, x 1 (2) 避免数量级相差很大的数相除. 可能会产生溢出, 即超出计算机所能表示的数的范围. (3) 避免大数吃小数. 如直接计算 ( )/10 9 时, 结果可能为 0. 另外, 在对一组数求和时, 应按绝对值从小到大求和.

288 276 附录 B 数值计算中的误差 (4) 简化计算. 尽量减少运算次数, 避免误差积累. (5) 选用稳定的算法. 尽可能避免由于算法本身导致的误差增大. B.4 课后习题 实践题 练习 2.1 数值计算中的误差. 已知 sin(x) 的幂级数展开为 sin(x) = x x3 3! + x5 5! x7 7! +... 试利用该公式编程计算 sin(π/2) 和 sin(33π/2) 的值, 并与实际值做比较, 误差分别多大? 分析原 因.

289 附录 C 高性能计算 科学计算软件介绍 C.1 科学计算发展 本节内容摘自 Predictions for scientific computing 50 years from now, by N. Trefethen in Before 1940 Newton s method Gaussian elimination Gauss quadrature Least-squares fitting Adams and Runge-Kutta formulas Richardson extrapolation Floating point arithmetic Fortran Finite differences Finite elements Simplex algorithm Monte Carlo Orthogonal linear algebra Splines FFT Quasi-Newton iterations Adaptivity Stiff ODE solvers Software libraries MATLAB Multigrid Sparse and iterative linear algebra Spectral methods Interior point method Wavelets

290 278 附录 C 高性能计算 科学计算软件介绍 Multipole methods Breakthroughs in preconditioners, spectral methods, time stepping for PDE C.1.1 数值分析经典论文 这里是 Trefethen 建议的 13 篇论文阅读列表 : ( 见 Classic Papers in Numerical Analysis, by N. Trefethen, 1993) (1) Cooley & Tukey (1965) the Fast Fourier Transform James W. Cooley and John W. Tukey, An algorithm for the machine calculation of complex Fourier series, Mathematics of Computation, 19 (1965), (2) Courant, Friedrichs & Lewy (1928) finite difference methods for PDE R. Courant, K. O. Friedrichs and H. Lewy, Ueber die partiellen Differenzengleichungen der mathematischen Physik, Mathematische Annalen, 100 (1928), Translated as: On the partial difference equations of mathematical physics, IBM Journal of Resarch and Development, 11 (1967), (3) Householder (1958) QR factorization of matrices A. S. Householder, Unitary triangularization of a nonsymmetric matrix, Journal of the Association of Computing Machinery, 5 (1958), (4) Curtiss & Hirschfelder (1952) stiffness of ODEs; BD formulas C. F. Curtiss and J. O. Hirschfelder, Integration of stiff equations, Proceedings of the National Academy of Sciences, 38 (1952), (5) de Boor (1972) calculations with B-splines C. de Boor, On calculating with B-splines, Journal of Approximation Theory, 6 (1972), (6) Courant (1943) finite element methods for PDE R. Courant, Variational methods for the solution of problems of equilibrium and vibrations, Bulletin of the American Mathematical Society, 49 (1943), (7) Golub & Kahan (1965) the singular value decomposition G. Golub and W. Kahan, Calculating the singular values and pseudo-inverse of a matrix, SIAM Journal on Numerical Analysis, 2 (1965), (8) Brandt (1977) multigrid algorithms A. Brandt, Multi-level adaptive solutions to boundary-value problems, Mathematics of Computation, 31 (1977), (9) Hestenes & Stiefel (1952) the conjugate gradient iteration Magnus R. Hestenes and Eduard Stiefel, Methods of conjugate gradients for solving linear systems, Journal of Research of the National Bureau of Standards, 49 (1952), (10) Fletcher & Powell (1963) optimization via quasi-newton updates R. Fletcher and M. J. D. Powell, A rapidly convergent descent method for minimization, Computer Journal, 6 (1963), (11) Wanner, Hairer & Norsett (1978) order stars and applications to ODE G. Wanner, E. Hairer and S. P. Norsett, Order stars and stability theorems, BIT, 18 (1974),

291 C.1 科学计算发展 279 (12) Karmarkar (1984) interior point methods for linear programming N. Karmarkar, A new polynomial-time algorithm for linear programming, Combinatorica, 4 (1984), (13) Greengard & Rokhlin (1987) multipole methods for particles L. Greengard and V. Rokhlin, A fast algorithm for particle simulations, Journal of Computational Physics, 72 (1987), C.1.2 Longer list of papers 一个更长的阅读论文列表 (N. Trefethen, 1993) LINEAR ALGEBRA SYSTEMS OF EQUATIONS AND LEAST-SQUARES Frankel (1950) optimal omega for SOR iteration Hestenes & Stiefel (1952) the conjugate gradient iteration Young (1954) theory of classical iterative methods Householder (1958) QR decomposition Wilkinson (1961) error analysis for systems of eqs. Golub (1965) least-squares problems Strassen (1969) Gaussian elimination is not optimal George (1973) nested dissection Gill, Golub, Murray & Saunders (1974) updating matrix factorizations Concus, Golub & O Leary (1976) preconditioned conjugate gradients Meijerink & van der Vorst (1977) incomplete LU preconditioning Skeel (1980) iterative refinement and stability Saad & Schultz (1986) GMRES for nonsymmetric systems LINEAR ALGEBRA - EIGENVALUES AND SVD Jacobi (1846) Jacobi s method for matrix eigenvalues Henrici (1958) convergence of the Jacobi method Rutishauser (1958) the LR algorithm Kublanovskaya (1961) the QR algorithm Francis (1961) the QR algorithm Golub & Kahan (1965) computation of the SVD Moler & Stewart (1973) QZ algorithm for gen d eigenvalues Cuppen (1981) divide and conquer for eigenvalues OPTIMIZATION Dantzig (1951) simplex method for linear programming Davidon (1959) variable metric methods Fletcher & Powell (1963) DFP quasi-newton update formula Broyden, Fletcher, Goldfarb & Shanno (1970) BFGS quasi-newton update formula Karmarkar (1984) interior pt methods for linear prog.

292 280 附录 C 高性能计算 科学计算软件介绍 INTEGRATION Golub & Welsch (1969) Gauss quadrature rules de Boor (1971) adaptive quadrature algorithms APPROXIMATION Remes (1934) Remes algorithm for Chebyshev approx. Schoenberg (1946) splines Powell (1967) near-optimality of Chebyshev interp. Reinsch (1967) smoothing with splines Cox (1972) calculation with B-splines de Boor (1972) calculation with B-splines OTHER Aitken (1932) Aitken extrapolation Cooley & Tukey (1965) the fast Fourier transform Greengard & Rokhlin (1987) fast multipole methods ODEs Curtiss & Hirschfelder (1952) stiffness and BD formulas Dahlquist (1956) stability and convergence Dahlquist (1963) A-stability Butcher (1965) Runge-Kutta methods Gear (1969) stiff ODEs Wanner, Hairer & Norsett (1978) order stars and stability theorems ELLIPTIC PDEs Peaceman & Rachford (1955) ADI Douglas (1955) ADI Strang (1971 or 1973) finite elements and approx. theory Buzbee, Golub & Nielsen (1970) fast Poisson via cyclic reduction Hockney (1965) fast Poisson via FFT Fedorenko (1961) multigrid methods Brandt (1977) multigrid methods PARABOLIC AND HYPERBOLIC PDEs Courant, Friedrichs & Lewy (1928) the CFL condition Crank & Nicolson (1947) finite differences for parabolic PDE O Brien, Hyman & Kaplan (1951) Von Neumann stability analysis Lax & Richtmyer (1956) general stability theory Lax & Wendroff (1960,1962,1964) methods for solving conservation laws Kreiss (1962) more general stability theory Orszag (1971) spectral methods Kreiss & Oliger (1972) spectral methods

293 C.2 矩阵运算的复杂度 281 Gustafsson, Kreiss & Sundstrom (1972) stability of boundary conditions Chorin (1973) vortex methods for CFD Engquist & Majda (1977) absorbing boundary conditions C.2 矩阵运算的复杂度 算法的执行效率依赖于算法中所涉及的运算类型和运算次数. 一般来说, 数值算法所涉及的运算主 要是加减乘除, 以及开根号运算. 开根号运算依赖于具体的实现算法, 一般最终也可以归结为加减乘除 运算, 而且开根号运算次数往往比加减乘除运算具有更低的数量级. 因此, 评价算法的一个重要标准就 是加减乘除运算的次数. 一般情况下, 加减运算次数与乘法运算次数具有相同的数量级, 而除法运算次数往往比乘法运算具 有更低的数量级. 常见数值运算的计算量 : O(n) 量级 O(n 2 ) 量级 O(n 3 ) 量级 x αx x Ax B αab y y + αx y αax + βy C αab + βc s y x ( 内积 ) x A 1 x (A 三角矩阵 ) s x 2 A A + αxy ( 秩 1 修正 ) s x 1 A A + αxy + αyx ( 对称秩 2 修正 ) 向量的交换, 复制, 比较 为了提高程序执行效率, 节约程序开发成本, 建议尽可能地使用现有的高性能优秀程序库, 如 BLAS, LAPACK 等. C.3 数值线性代数程序库 BLAS, LAPACK, ARPACK 是当前数值计算中优秀程序库的典型代表, 许多科学计算软件都是基于 这些程序库, 如著名的 MATLAB. C.3.1 BLAS BLAS (Basic Linear Algebra Subprograms) 是一组高质量的子程序, 用于实现基本的向量和矩阵运算, 最初发布于 1979 年. 在 BLAS 中, 所有的子程序都经过精心的优化以确保其高效性, 同时, 程序的书写和语句的选择都很规范, 以便于移植. 长期以来, 专家们一直呼吁使用 BLAS 来建立和开发自己的线性代数软件包. 这样做, 不仅可以缩短开发周期, 而且便于形成统一的调用接口. 在高性能计算领域, BLAS 被广泛使用. 合理的调用 BLAS 子程序, 可以大大提高程序的性能. 目前 BLAS 库有多种不同的优化实现, 如 BLAS, Goto BLAS, ATLAS 等. 为提高性能, 各软硬件厂商都会对其产品的 BLAS 接口实现进行高度优化.

294 282 附录 C 高性能计算 科学计算软件介绍 在 BLAS 中, 向量和矩阵运算被分为三个层次. 第一层次 (Level 1) BLAS 是指标量与向量, 向量与向量之间的运算. 第二层次 (Level 2) BLAS 是指矩阵与向量的运算. 而第三层次 (Level 3) BLAS 是指矩阵与矩阵之间的运算. BLAS 主页为 C.3.2 LAPACK LAPACK (Linear Algebra PACKage) 是由美国 Tennessee 大学, 加州大学 Berkeley 分校, 科罗拉多大学丹佛分校和 NAG (Numerical Algorithms Group) 公司联合开发的线性代数子程序库. 用于在不同高性能计算环境上高效求解数值线性代数问题, 包含了求解科学与工程计算中最常见的数值线性代数的计算问题, 如线性方程组, 线性最小二乘问题, 特征值问题, 奇异值问题等. LAPACK 主页为 C.3.3 ARPACK ARPACK (Arnoldi PACKage) 是由 Rice 大学开发, 用于求解大规模特征值问题. 该软件包基于 Implicitly Restarted Arnoldi 算法, 非常适合求解大型稀疏或结构化矩阵的特征值问题. ARPACK 主页为 C.3.4 其它 C++ 符号计算库 GiNaC : C++ 线性代数库 Eigen : C++ 线性代数库 Armadillo : 多精度整数和有理数 MPIR (Multiple Precision Integers and Rationals): C.4 交互式数学软件 本小节介绍几个优秀的交互式数学软件 : MATLAB, Maple, Mathematica, Sage. 其中 MATLAB 是数值计算功能最强的, 而 Maple 和 Mathematica 则是符号计算软件中的佼佼者. 这三个都是商业软件, 而且价格不菲. Sage 则是 2005 年新开发出来的开源免费数学软件, 其目标就是创建一个有活力的自由开源软件以替代 MATLAB, Maple 和 Mathematica. 关于这四个软件的更多介绍, 可以参考其使用手册, 或其它相关资料, 如 [42].

295 C.4 交互式数学软件 283 C.4.1 MATLAB MATLAB 是由美国 Mathworks 公司开发的科学计算软件, 集数值计算, 数据可视化和交互式程序设计于一身, 为科学研究和工程设计的众多科学领域提供了一种全面的解决方案, 并在很大程度上摆脱了传统非交互式程序设计语言 ( 如 C Fortran) 的编辑模式, 代表了当今国际科学计算软件的先进水平. MATLAB 起源于 20 世纪七十年代末. 时任新墨西哥大学计算机科学系主任的 Cleve Moler 教授, 在给学生开设线性代数课程时, 为了给学生上机提供方便, 减轻学生编程负担, 编写了一组 LINPACK 和 EISPACK 程序库的 通俗易用 的程序接口, 并取名为 MATLAB, 即 MATrix LABoratory. 几年后, 工程师 John Little 与 Moler, Steve Bangert 一起开发了第二代 MATLAB, 所有内核改用 C 语言编写, 除原有的数值计算功能外, 还新增了数据可视化功能, 并于 1984 年成立 Mathworks 公司, 推出第一个商业版 MATLAB. MATLAB 以出现后的短短几年, 就以其良好的开放性和运行的可靠性, 非常受欢迎. 到了 20 世纪九十年代, 在国际上数学类科技应用软件中, MATLAB 在数值计算方面独占鳌头. 在欧美大学里, 诸如应用代数, 数理统计, 自动控制, 数字信号处理, 模拟与数字通信, 时间序列分析, 动态系统仿真等课程的教科书都把 MATLAB 作为内容. 这几乎成了九十年代教科书与旧版书籍的区别性标志. 在那里, MATLAB 是攻读学位的大学生, 硕士生, 博士生必须掌握的基本工具. 现在的 MATLAB 软件主要包括 MATLAB 和 Simulink 两大部分, 以及各种工具箱. 每年更新两次, 并以年份作为版本号. 最新版本中的矩阵计算主要是基于 LAPACK 程序库. MATLAB 的主要优势 : (1) 友好的工作平台和编程环境 ; (2) 简单易用的程序语言 ; (3) 强大的科学计算和数据处理能力 ; (4) 出色的绘图功能, 以及 (5) 实用的程序接口和发布平台. 因而深受广大科技工作者的欢迎. MATLAB 官方主页为 C.4.2 Mathematica Mathematica 是一款符号计算软件, 美国 Wolfram Research 公司开发, 很好地结合了符号计算, 数值计算, 图形系统, 编程语言, 文本系统等. 很多功能在相应领域内处于世界领先地位, 是使用最广泛的数学软件之一, 与 MATLAB 和 Maple 并称三大数学软件. Mathematica 自 1988 发布以来, 已经对如何在科技和其它领域运用计算机产生了深刻的影响. 人们常说, Mathematica 的发布标志着现代科技计算的开始. Mathematica 的基本概念是用一个连贯和统一的方法创造一个能适用于科技计算各个领域的软件系统. 实现这一点的关键之处是发明了一种新的计算机符号语言, 这种语言能仅仅用很少量的基本元素制造出广泛的物体, 满足科技计算的广泛性. 这在人类历史上还是第一次. 当 Mathematica 刚发布时, 纽约时代报写道 : 这个软件的重要性不可忽视. 紧跟着, 商业周刊又将 Mathematica 评为当年十大最重要产品. 在科技界, Mathematica 被形容为智能和实践的革命.

296 284 附录 C 高性能计算 科学计算软件介绍 Mathematica 分为两部分: 内核和前端. 内核负责对代码进行解释, 并且返回结果. 前端提供了一个 GUI, 使得用户可以创建并且编辑一个 笔记本文档. 该笔记本文档可以包含程序代码和其它格式化的 文本, 如公式, 图像, 表格, 声音等, 并且支持标准文字处理功能. 所有的内容和格式都可以通过算法生成 或者通过交互式方法进行编辑 文档可以使用层次式单元进行结构化处理, 这样便于对文档划分章节. 文档也可以表示为幻灯片形 式, 便于进行演讲. 笔记本与其内容均以 Mathematica 表达式的形式存储, 并且可用使用 Mathematica 程 序进行创建, 编辑和修改, 而且还可以转化为其它格式, 比如 LATEX 或者 XML. 前端还包括其它一些功能, 如程序调试, 输入自动补全, 自动语法着色等. 默认情况下, Mathematica 使用一个标准前端, 但也有其它前端可供选择. 此外, Mathematica 还包括一个命令行前端 (Mathematica Kernel). Mathematica 的官方主页为 C.4.3 Maple Maple 是目前世界上最为通用的数学和工程计算软件之一, 在 数学和科学领域享有盛誉, 以符号运算为主, 有 数学家的软件 之 称. Maple 被广泛地应用于科学, 工程和教育等领域. Maple 系统包 括强大的符号计算, 无限精度数值计算, 创新的互联网连接等. 其数 学和分析功能几乎覆盖所有的数学分支, 如微积分, 微分方程, 特殊 函数, 线性代数, 图像声音处理, 统计, 动力系统等. Maple 最初由加拿大滑铁卢大学的 Symbolic Computation Group 于 1980 年开发 年成立 Waterloo Maple 公司, 负责 Maple 的商业运营. Maple 不仅仅是编程工具, 更能提供数学知识. 用户通过 Maple 可以在单一的环境中完成多领域建 模和仿真, 符号计算, 数值计算, 程序设计, 报告演示, 算法开发, 外部程序连接等功能, 满足各个层次用 户的需要. Maple 的官方主页为 C.4.4 Sage Sage (也称为 SageMath) 是一个基于 GPL 协议的开源数学软件. 它使用 Python 作为通用接口, 将现有的许多开源软件包整合在一起, 构建一个统一的计算平台. Sage 的第一个版本发布于 2005 年, 由华盛顿大学 William Stein 教授领导开发. 其使命是 Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab. Sage 有 Linux 和 MacOS 版本, 在 Windows 下可以通过虚拟 Linux 环境来实现. 不过用户也可以通过 浏览器直接在线使用. Sage 的官方主页为 有中文版的入门手册,

1 线性空间 基 维数和坐标 3 子空间 4 线性空间的同构 5 线性映射 6 线性映射的像与核 7 线性变换 8 不变子空间 厦门大学数学科学学院网址 :gdjpkc.xmu.edu.c; IP://

1 线性空间 基 维数和坐标 3 子空间 4 线性空间的同构 5 线性映射 6 线性映射的像与核 7 线性变换 8 不变子空间 厦门大学数学科学学院网址 :gdjpkc.xmu.edu.c; IP:// 线性空间与线性映射 知识回顾 1 线性空间 基 维数和坐标 3 子空间 4 线性空间的同构 5 线性映射 6 线性映射的像与核 7 线性变换 8 不变子空间 厦门大学数学科学学院网址 :gdjpkc.xmu.edu.c; IP://11.19.180.133 1 线性空间 厦门大学数学科学学院网址 :gdjpkc.xmu.edu.c; IP://11.19.180.133 定义称 V 是数域 F 上的线性空间,

More information

<4D F736F F D20B5DACAAED5C220CBABCFDFD0D4BAAFCAFDA3A8BDB2D2E5A3A92E646F63>

<4D F736F F D20B5DACAAED5C220CBABCFDFD0D4BAAFCAFDA3A8BDB2D2E5A3A92E646F63> 高等代数第十章双线性函数 第十章双线性函数 10.1 线性函数 1. 设 V 是数域 F 上的一个线性空间, f 是 V 到 F 的一个映射, 若 f 满足 : (1) f( α + β) = f( α) + f( β); (2) f( kα) = kf( α), 式中 α, β 是 V 中任意元素, k 是 F 中任意数, 则称 f 为 V 上的一个线性函数. 2. 简单性质 : 设 f 是 V

More information

6.3 正定二次型

6.3 正定二次型 6.3 正定二次型 一个实二次型, 既可以通过正交变换化为标准形, 也可以通过拉格朗日配方法化为标准形, 显然, 其标准形一般来说是不惟一的, 但标准形中所含有的项数是确定的, 项数等于二次型的秩 当变换为实变换时, 标准形中正系数和负系数的个数均是不变的 定理 ( 惯性定理 ) 设有二次型 f =x T Ax, 它的秩为 r, 如果有两个实的可逆变换 x=c y 及 x=c z 分别使 f =k

More information

1989-2004数学三、四考研试题(线性代数部分3)

1989-2004数学三、四考研试题(线性代数部分3) 989- 数学三 四考研试题 线性代数部分 ) 三 计算证明题. 已知 XXB 其中 求矩阵 X. B - 5 989 年数学三 四 ). 设 ) ) t) ) 问当 t 何值时 向量组 线性无关? ) 问当 t 何值时 向量组 线性相关? ) 当向量组 线性相关时 将 表示为 的线性组合. 设 ) 试求矩阵 的特征值 - - 989 年数学三 ) ) 利用 ) 小题的结果 求矩阵 E 的特征值 其中

More information

4 A C n n, AA = A A, A,,, Hermite, Hermite,, A, A A, A, A 4 (, 4,, A A, ( A C n n, A A n, 4 A = (a ij n n, λ, λ,, λ n A n n ( (Schur λ i n

4 A C n n, AA = A A, A,,, Hermite, Hermite,, A, A A, A, A 4 (, 4,, A A, ( A C n n, A A n, 4 A = (a ij n n, λ, λ,, λ n A n n ( (Schur λ i n ,?,,, A, A ( Gauss m n A B P Q ( Ir B = P AQ r(a = r, A Ax = b P Ax = P b, x = Qy, ( Ir y = P b (4 (4, A A = ( P Ir Q,,, Schur, Cholesky LU, ( QR,, Schur,, (,,, 4 A AA = A A Schur, U U AU = T AA = A A

More information

Microsoft Word - ex06.doc

Microsoft Word - ex06.doc 第六章线性空间与线性变换 一 内容提要 6. 线性空间与简单性质. 定义设 V 是一个非空集合,K 是一个数域在 V 上定义了一种加法运算 +, 即对 V 中任 意的两个元素 α 与 β, 总存在 V 中唯一的元素 γ 与之对应, 记为 γ = α + β ; 在数域 K 和 V 的元素之间定义了一种运算, 称为数乘, 即对 K 中的任意数 k 与 V 中任意一个元素 α, 在 V 中存在唯一的一个元素

More information

试卷

试卷 竞赛试卷 ( 数学专业 参考答案 一 (5 分 在仿射坐标系中 求过点 M ( 与平面 :3x y + z 平行 且与 x y 3 z 直线 l : 相交的直线 l 的方程 4 解法一 : 先求 l 的一个方向向量 X Y Z 因为 l 过点 M 且 l 与 l 相交 所以有 4 X 3 - Y ( Z..4 分 即 X + Y Z...3 分 又因为 l 与 平行 所以有 联立上述两个方程解得 :

More information

2/63 1 非负矩阵 1.1 非负矩阵基本性质 1.2 正矩阵 1.3 非负矩阵的更多性质

2/63 1 非负矩阵 1.1 非负矩阵基本性质 1.2 正矩阵 1.3 非负矩阵的更多性质 第二讲 非负矩阵与 M 矩阵 非负矩阵 不可约非负矩阵 M- 矩阵与单调矩阵 对角占优 M- 矩阵 注记 非负矩阵在很多领域都有重要应用, 如数理经济, 运筹, 图像处理等. 同样, 它在矩阵理论与数值代数中也扮演着很重要的角色. 若无特别注明, 本讲内容都是在实数域中讨论. 2/63 1 非负矩阵 1.1 非负矩阵基本性质 1.2 正矩阵 1.3 非负矩阵的更多性质 3/63 非负矩阵, 正矩阵

More information

Microsoft PowerPoint - Eng-math-lecture14.ppt [Compatibility Mode]

Microsoft PowerPoint - Eng-math-lecture14.ppt [Compatibility Mode] -- 第 讲 一 特征值与特征向量的概念定义 设 是 阶矩阵 如果数 和 维非零列向量 x 使关系式 x x 成立 那末 这样的数 称为方阵 的特征值 非零向量 x称为 的对应于特征值 的特征向量 说明 特征向量 x 特征值问题是对方阵而言的 阶方阵 的特征值 就是使齐次线性方程组 ( E x 有非零解的 值 即满足方程 E 的 都是矩阵 的特征值 // // E a a a a a a a a a

More information

2/78 非对称矩阵特征值 / 特征向量的计算 基本约定 1: A R n n 非对称 稠密 基本约定 2: λ 1 λ 2 λ n 0 本讲主要讨论如何计算 A 的全部特征值和 / 或特征向量. 主要介绍以下方法 : 幂迭代方法 反迭代方法 ( 位移策略,Rayleigh 商迭代 ) 正交迭代方法

2/78 非对称矩阵特征值 / 特征向量的计算 基本约定 1: A R n n 非对称 稠密 基本约定 2: λ 1 λ 2 λ n 0 本讲主要讨论如何计算 A 的全部特征值和 / 或特征向量. 主要介绍以下方法 : 幂迭代方法 反迭代方法 ( 位移策略,Rayleigh 商迭代 ) 正交迭代方法 第四讲 非对称特征值问题 1 幂迭代 2 反迭代 3 正交迭代 4 QR 迭代 5 带位移的隐式 QR 迭代 6 特征向量的计算 7 广义特征值问题 8 应用 : 多项式求根 2/78 非对称矩阵特征值 / 特征向量的计算 基本约定 1: A R n n 非对称 稠密 基本约定 2: λ 1 λ 2 λ n 0 本讲主要讨论如何计算 A 的全部特征值和 / 或特征向量. 主要介绍以下方法 : 幂迭代方法

More information

AU = U λ c 2 c 3 c n C C n,, n U 2 U2 C U 2 = B = b 22 b 23 b 2n b 33 b 3n b nn U = U ( U 2, U AU = = = ( ( U 2 U 2 U AU ( U2 λ λ d 2 d 3 d n b 22 b 2

AU = U λ c 2 c 3 c n C C n,, n U 2 U2 C U 2 = B = b 22 b 23 b 2n b 33 b 3n b nn U = U ( U 2, U AU = = = ( ( U 2 U 2 U AU ( U2 λ λ d 2 d 3 d n b 22 b 2 Jordan, A m? (264(, A A m, A (, P P AP = D, A m = P D m P, P AP 837, Jacobi (, ( Jacobi,, Schur 24 Cayley-Hamilton 25,, A m Schur Jordan 26 Schur : 3 (Schur ( A C n n, U U AU = B, (3 B A n n =, n, n λ

More information

矩阵函数

矩阵函数 矩阵函数 矩阵分析 - 研究生课程 矩阵的多项式表示与矩阵的极小多项式 定义 1: 已知 和关于变量 的多项 式 那么我们称 为 的矩阵多项式 n x n 1 n 1 1 0 f( x) a x + a x + L + a x+ a n n n 1 n 1 1 0 f( ) a + a + L + a + a I n n n C 设为一个阶矩阵, 为其 Jordan 标准形, 则 n J 于是有 1

More information

슬라이드 1

슬라이드 1 08-09 年度第一学期 0050 00503 计算方法 (B) 童伟华管理科研楼 05 室 E-mail: togwh@ustc.edu.c 中国科学技术大学数学科学学院 http://math.ustc.edu.c/ 第七章计算矩阵的特征值与 特征向量 特征值与特征向量 在实际工程计算中, 经常会遇到特征值和特征向量的计算, 如 : 机械 结构或电磁振动中的固有值问题 ; 物理学中的各种临界值等

More information

学习指导(四):欧氏空间

学习指导(四):欧氏空间 一 内容提要 第五章向量空间 本章首先从 R 中向量的线性关系出发 建立起线性空间的初步概念 ; 然后定义若干基本度量 建立起度量空间的初步概念 从而构成初步的欧氏空间 本章的讨论仅限于 R 及其子集 所有概念均是狭义的 初步的 一个较为一般的定义可参见文献上一章我们讨论过向量组的结构 : 极大无关组 秩 线性表示等等 但一般的向量组不一定是完备的 即本组内的向量经过线性运算后未必还在这个向量组内

More information

Remark:随机变量不只离散和连续两种类型

Remark:随机变量不只离散和连续两种类型 Remar: 随机变量不只离散和连续两种类型 当题目要求证明随机变量的某些共同性质时 很多同学只对连续和离散两种类型进行讨论 这是比较典型的错误 练习 4. () P( = ) = P( = ) = P( = ) = P( ) = = = = = = () 由 E < 且 lm a =+ 不妨设 a > 其中 j = f{ : a a j} ap ( a) = a p ap ap j j j a :

More information

,

, zwp@ustc.edu.cn Office: 1006 Phone: 63600565 http://staff.ustc.edu.cn/~zwp/ http://fisher.stat.ustc.edu.cn 1.1................. 2 1.2,........... 9 1.3................. 13 1.4.................... 16 1.5..................

More information

矩阵论 第三章:矩阵分析

矩阵论 第三章:矩阵分析 矩阵论 第三章 : 矩阵分析 马锦华 数据科学与计算机学院 中山大学 第三章 : 矩阵分析 3.1 矩阵序列 3.2 矩阵级数 3.3 矩阵函数 3.4 矩阵的微分与积分 3.5 矩阵分析应用举例 2 矩阵序列 定义 3.1: 设有中的矩阵序列 其中 若 m n C lim a a i 1, 2,, m; j 1, 2,, n, ij ij, 收敛于 记为 或 a ij mn 不收敛的矩阵序列称为发散.,

More information

扩充矩阵 给定矩阵 A 和向量 b a 11 a 12 a 13 b 1 A = a 21 a 22 a 23 b = b 2 a 31 a 32 a 33 b 3 定义扩充矩阵 ( A b ) = a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 b 1 b

扩充矩阵 给定矩阵 A 和向量 b a 11 a 12 a 13 b 1 A = a 21 a 22 a 23 b = b 2 a 31 a 32 a 33 b 3 定义扩充矩阵 ( A b ) = a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 b 1 b 数值代数 夏银华 中国科学技术大学 扩充矩阵 给定矩阵 A 和向量 b a 11 a 12 a 13 b 1 A = a 21 a 22 a 23 b = b 2 a 31 a 32 a 33 b 3 定义扩充矩阵 ( A b ) = a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 b 1 b 2 b 3 初等变换矩阵 放缩 (scaling): 第 i 个方程

More information

复习 : 线性变换与矩阵 _1 设 V 是数域 K 上 n 维向量空间, ξ1, ξ2... ξ n 是 V 的一组基, 则存在线性空间同构 1 η : V K n a 1 n a 2 α = a iξ i i = 1 a n 线性空间同构保持线性关系, 保持直和分解.

复习 : 线性变换与矩阵 _1 设 V 是数域 K 上 n 维向量空间, ξ1, ξ2... ξ n 是 V 的一组基, 则存在线性空间同构 1 η : V K n a 1 n a 2 α = a iξ i i = 1 a n 线性空间同构保持线性关系, 保持直和分解. 第六章特征值 Eigenvalue 复习 : 线性变换与矩阵 _1 设 V 是数域 K 上 n 维向量空间, ξ1, ξ2... ξ n 是 V 的一组基, 则存在线性空间同构 1 η : V K n a 1 n a 2 α = a iξ i i = 1 a n 线性空间同构保持线性关系, 保持直和分解. 复习 : 线性变换与矩阵 _2 线性变换的表示矩阵设 ϕ 是 V V 的线性变换, 取 V 的一组基

More information

线性变换的特征值与特征向量 线性变换的特征值与特征向量 本节内容参见蓝以中 特征值与特征向量的计算法 设 V 是数域 K 上的 n 维线性空间,A 是 V 内一个线性变换 我们需要解决下面两个问题 : 决定 K 内所有 A 的特征值 λ 对于属于特征值 λ 的特征子空间 V λ, 找出它的一组基 我

线性变换的特征值与特征向量 线性变换的特征值与特征向量 本节内容参见蓝以中 特征值与特征向量的计算法 设 V 是数域 K 上的 n 维线性空间,A 是 V 内一个线性变换 我们需要解决下面两个问题 : 决定 K 内所有 A 的特征值 λ 对于属于特征值 λ 的特征子空间 V λ, 找出它的一组基 我 矩阵对角化和 标准形 曾焰 版本, 最后修改于 摘要 蓝以中 关于矩阵对角化和 标准形的相关内容的摘要笔记 目录 线性变换的特征值与特征向量 特征值与特征向量的计算法 具有对角形矩阵的线性变换 不变子空间 实对称矩阵的对角化 矩阵的 标准形 幂零线性变换的 标准形 一般线性变换的 标准形 最小多项式 线性变换的特征值与特征向量 线性变换的特征值与特征向量 本节内容参见蓝以中 特征值与特征向量的计算法

More information

iv 2 6 [1] [2] [1] A.. [ ], [ ]. 3 [M]. :, 2008 [2] R. [ ], [ ]. [M]. :, 2013 [3]. [M]. :, [4]. 2 [M]. :, [5]. 2 [M]. :, [6]

iv 2 6 [1] [2] [1] A.. [ ], [ ]. 3 [M]. :, 2008 [2] R. [ ], [ ]. [M]. :, 2013 [3]. [M]. :, [4]. 2 [M]. :, [5]. 2 [M]. :, [6] iv 2 6 [1] [2] 2015 11 [1] A.. [ ], [ ]. 3 [M]. :, 2008 [2] R. [ ], [ ]. [M]. :, 2013 [3]. [M]. :, 2005. [4]. 2 [M]. :, 2002. [5]. 2 [M]. :, 2003. [6],,. [M]. :, 2000. 3 a b c d e a c vi b 1 1 2 1 P 10

More information

习题一

习题一 . 计算下列二阶行列式 :. 解 :) (-) 5-(-) - b a a b ) log log ) x ( x+ y)( x y) y 4)(t+)(t -t+)-t 习题一 (A).. 解 :) (-)+ (-)+(-) -(-) (-)- -(-) - ) 5 (-)+ 6 +(-) (-) -(-) 5-6 -(-) (-)9 ) b c ac+ ( a) b c+ abc 4) + abc

More information

幻灯片 1

幻灯片 1 线性代数方程组 浙江大学控制系 本章内容 高斯消去法 LU 分解 特殊矩阵和矩阵求逆 误差分析 条件数 迭代方法 205/6/2 数值计算方法 2 误差分析和方程组条件数 利用逆矩阵确定方程组是否病态的方法 缩放系数矩阵 A, 使其每一行的最大元素为 计算缩放后的逆矩阵, 如果 A - 中有元素的值大于 几倍, 则方程组是病态的 将逆矩阵与原矩阵相乘, 检查结果是否接近单位阵 如果不接近单位阵, 则方程组是病态的

More information

标题

标题 第 37 卷第 6 期西南大学学报 ( 自然科学版 ) 2015 年 6 月 Vol 37 No 6 JournalofSouthwestUniversity (NaturalScienceEdition) Jun 2015 DOI:10 13718/j cnki xdzk 2015 06 013 求解奇异鞍点问题的 GPHSSGGSOR 1 迭代法的半收敛性 曾闽丽, 林则安, 林智期 莆田学院数学学院,

More information

,,,,,,., Penrose i,, i j X A {i,, i j }-, X A {, 3}-, A,3 ; A Moore- Penrose A = A,2,3,4., A 5,, Moore-Penrose A {}- A, A. m n Moore-Penrose A, {}- A,

,,,,,,., Penrose i,, i j X A {i,, i j }-, X A {, 3}-, A,3 ; A Moore- Penrose A = A,2,3,4., A 5,, Moore-Penrose A {}- A, A. m n Moore-Penrose A, {}- A, , Ax = b A m n m = n, x = A b., A, A A = UR : x = R U b 6.. A Ax = A b, A A. A = R U, A A = I n,, A, A A. n < m, AA = In m m 6..2 A n < m, AA = I m,, A = R U A. A? A, B, AB BA,., A m n F n F m. A A F m

More information

目录 三种迭代格式 Jacobi 迭代法 Gauss-Seidel 迭代 超松弛迭代法 Jacobi 与 G-S 迭代的收敛性分析 收敛的充分必要条件 收敛的充分条件及误差估计 收敛速度 平均

目录 三种迭代格式 Jacobi 迭代法 Gauss-Seidel 迭代 超松弛迭代法 Jacobi 与 G-S 迭代的收敛性分析 收敛的充分必要条件 收敛的充分条件及误差估计 收敛速度 平均 线性方程组的古典迭代解法 目录 1 3.1 三种迭代格式 3.1.1 Jacobi 迭代法 3.1.2 Gauss-Seidel 迭代 3.1.3 超松弛迭代法 2 3.2 Jacobi 与 G-S 迭代的收敛性分析 3.2.1 收敛的充分必要条件 3.2.2 收敛的充分条件及误差估计 3 3.3 收敛速度 3.3.1 平均收敛速度和渐近收敛速度 3.3.2 模型问题 3.3.3 Jacobi 和

More information

<4F3A5CBED8D5F3C2DB5CB5DA3130BDB220BED8D5F3BAAFCAFDBCB0C6E4CEA2BBFDB7D62E707074>

<4F3A5CBED8D5F3C2DB5CB5DA3130BDB220BED8D5F3BAAFCAFDBCB0C6E4CEA2BBFDB7D62E707074> 矩阵论 主讲教师 : 徐乐 204 年 2 月 0 日星期三 上讲回顾 第 9 讲矩阵函数的求解 矩阵函数的计算 利用 Jordan 标准形求矩阵函数 矩阵论 2 矩阵函数的计算 Hamilton-Cayley 定理 n 阶矩阵 A 是其特征多项式的零点 即令 则有 零化多项式 n ( ) det( I A) c c c n n 对于多项式 f (z), 若 f (A)=0 则称 f (z) 为 A

More information

2003年

2003年 00 年数学考研试卷 - 线性代数部分试卷一 一 填空题 ( 每小题 4 分 ) () 曲面 z x y 与平面 x 4y z 0 平行的切平面的方程是 解 : x 4y z 5 设 ( x0, y0, z 0) 为与平面 x 4y z 0 平行的切平面的切点坐标, 则过 ( x0, y0, z 0) 的法向量为 { x0, y0, } 于是过 ( x0, y0, z 0) 的切平面方程为 x0 (

More information

Microsoft Word doc

Microsoft Word doc 设 X 是 Baach 空间 X 是 X 的闭子空间 映射 : X X / X 定义为 : [ ] X 其中 [ ] 表 示含 的商类 求证 是开映 射 证法 用开映射定理 只需证明 满射 事实上 [ ] X X 任取 [ ] 则有 X [ ] 证法 不用开映射定理 教材 9 定理 8 的证明中的 () 为了证 T 是开映射 必须且仅 须 > st TB( ) U ( ) 取 并设 B X 中的开单位球

More information

目录 2. 高斯消去法 2.. 顺序消去法 2..2 列主元消去法 2..3 全主元消去法 2..4 选主元消去法的应用 三角形方程组和三角分解 2.2. 三角方程组的解法 Gauss 变换 Doolittle 分解 选主元三角分解 平方根

目录 2. 高斯消去法 2.. 顺序消去法 2..2 列主元消去法 2..3 全主元消去法 2..4 选主元消去法的应用 三角形方程组和三角分解 2.2. 三角方程组的解法 Gauss 变换 Doolittle 分解 选主元三角分解 平方根 线性方程组的直接解法 目录 2. 高斯消去法 2.. 顺序消去法 2..2 列主元消去法 2..3 全主元消去法 2..4 选主元消去法的应用 2 2.2 三角形方程组和三角分解 2.2. 三角方程组的解法 2.2.2 Gauss 变换 2.2.3 Doolittle 分解 3 2.3 选主元三角分解 4 2.4 平方根法及改进的平方根法 2.4. 平方根法 2.4.2 改进的平方根法 5 2.5

More information

数学分析(I)短课程 [Part 2] 4mm 自然数、整数和有理数

数学分析(I)短课程 [Part 2]   4mm 自然数、整数和有理数 .. 数学分析 (I) 短课程 [Part 2] 自然数 整数和有理数 孙伟 华东师范大学数学系算子代数中心 Week 2 to 18. Fall 2014 孙伟 ( 数学系算子代数中心 ) 数学分析 (I) 短课程 Week 2 to 18. Fall 2014 1 / 78 3. 自然数理论初步 孙伟 ( 数学系算子代数中心 ) 数学分析 (I) 短课程 Week 2 to 18. Fall 2014

More information

( ) Wuhan University

( ) Wuhan University Email: huangzh@whueducn, 47 Wuhan Univesity i L A TEX,, : http://affwhueducn/huangzh/ 8 4 49 7 ii : : 4 ; 8 a b c ; a b c 4 4 8 a b c b c a ; c a b x y x + y y x + y x x + y x y 4 + + 8 8 4 4 + 8 + 6 4

More information

目 录 引言 可交换的线性变换的相关习题及结论 可交换的线性变换的一些讨论 参考文献

目 录 引言 可交换的线性变换的相关习题及结论 可交换的线性变换的一些讨论 参考文献 杨忠鹏 1 王海明 1 张金辉 1 吴秀清 1,2 1. 莆田学院数学系 2. 中南大学数学院 2009 年 5 月 16 日 目 录 引言 可交换的线性变换的相关习题及结论 可交换的线性变换的一些讨论 参考文献 一 引言 V P 为数域 P 上的线性空间, 而 L( V ( P)) { σ σ V } 设 ( ) 为恒等变换 = 为上的线性变换,ε 现行的教材上线性空间求其上的线性变换的定义是对一般空间给出

More information

四 教学内容及安排 第 1 章 行列式 了解行列式的定义和性质, 掌握 2 3 阶行列式的计算, 会计算较简单的 n 阶 行列式, 掌握 Cramer 法则 章节数 授课 实验 上机 讨论 作业 自学 综合 大作业 第 2 章 矩阵 理解矩阵的概念, 掌握矩阵的运

四 教学内容及安排 第 1 章 行列式 了解行列式的定义和性质, 掌握 2 3 阶行列式的计算, 会计算较简单的 n 阶 行列式, 掌握 Cramer 法则 章节数 授课 实验 上机 讨论 作业 自学 综合 大作业 第 2 章 矩阵 理解矩阵的概念, 掌握矩阵的运 线性代数与空间解析几何 I 课程教学大纲 英文名称 :Linear Algebra and GeometryI 课程编号 :MATH 1037 课内学时 :66( 理论学时 :62, 上机学时 :4) 学分 :4 适用对象 : 电气 电信 软件 理学 钱学森班等专业 先修课程 : 高等数学 使用教材及参考书 : (1) 魏战线 李继成编, 线性代数与解析几何 二版, 高等教育出版社, 2010 年

More information

第七讲 子空间迭代方法 1 Krylov 子空间 2 GMRES 算法 3 共轭梯度法 (CG) 4 收敛性分析 5 其它 Krylov 子空间迭代算法

第七讲 子空间迭代方法 1 Krylov 子空间 2 GMRES 算法 3 共轭梯度法 (CG) 4 收敛性分析 5 其它 Krylov 子空间迭代算法 第七讲 子空间迭代方法 1 Krylov 子空间 2 GMRES 算法 3 共轭梯度法 (CG) 4 收敛性分析 5 其它 Krylov 子空间迭代算法 2/55 基本思想 在一个维数较低的子空间中寻找解析解的一个最佳近似. 子空间迭代算法的主要过程可以分解为下面三步 : (1) 寻找合适的子空间 ; (2) 在该子空间中求 最佳近似 ; (3) 若这个近似解满足精度要求, 则停止计算 ; 否则,

More information

图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, ( 图灵程序设计丛书 ) ISBN Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算

图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, ( 图灵程序设计丛书 ) ISBN Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算 图灵程序设计丛书 程序员的数学 3: 线性代数 [ 日 ] 平冈和幸堀玄著 卢晓南译 图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, 2016.3 ( 图灵程序设计丛书 ) ISBN 978-7-115-41774-9 Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算机 数学基础 2

More information

EC(2013-1 4)13 第 2 頁 (b) 把 總 目 100 在 2013-14 年 度 常 額 編 制 內 所 有 非 首 長 級 職 位 按 薪 級 中 點 估 計 的 年 薪 總 值 上 限 提 高 12,480,540 元, 即 由 461,070,000 元 增 至 473,550

EC(2013-1 4)13 第 2 頁 (b) 把 總 目 100 在 2013-14 年 度 常 額 編 制 內 所 有 非 首 長 級 職 位 按 薪 級 中 點 估 計 的 年 薪 總 值 上 限 提 高 12,480,540 元, 即 由 461,070,000 元 增 至 473,550 EC(2013-1 4)13 財 務 委 員 會 人 事 編 制 小 組 委 員 會 討 論 文 件 2014 年 1 月 8 日 總 目 100- 海 事 處 分 目 000 運 作 開 支 總 目 92- 律 政 司 分 目 000 運 作 開 支 總 目 158- 政 府 總 部 : 運 輸 及 房 屋 局 ( 運 輸 科 ) 分 目 000 運 作 開 支 請 各 委 員 向 財 務 委 員

More information

-i-

-i- -i- -ii- -iii- -iv- -v- -vi- -vii- -viii- -ix- -x- -xi- -xii- 1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-9 1-10 1-11 1-12 1-13 1-14 1-15 1-16 1-17 1-18 1-19 1-20 1-21 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 2-11

More information

Microsoft Word - 强迫性活动一览表.docx

Microsoft Word - 强迫性活动一览表.docx 1 1 - / 2 - / 3 - / 4 - / 5 - I. 1. / 2. / 3. 4. 5. 6. 7. 8. 9 10 11. 12. 2 13. 14. 15. 16. 17. 18. 19. 20 21. 22 23. 24. / / 25. 26. 27. 28. 29. 30. 31. II. 1. 2 3. 4 3 5. 6 7 8. 9 10 11 12 13 14. 15.

More information

式与重根的联系, 掌握复系数与实系数的标准分解式 3. 教学重点和难点教学重点是两个多项式作为形式多项式相等和作为多项式函数相等的定义及两者的等价 ; 最大公因式和互素, 因式分解定理和标准分解式, 有理数域上的多项式 教学难点是多项式代数和多项式函数两个不同角度研究多项式的方法和联系, 最大公因式

式与重根的联系, 掌握复系数与实系数的标准分解式 3. 教学重点和难点教学重点是两个多项式作为形式多项式相等和作为多项式函数相等的定义及两者的等价 ; 最大公因式和互素, 因式分解定理和标准分解式, 有理数域上的多项式 教学难点是多项式代数和多项式函数两个不同角度研究多项式的方法和联系, 最大公因式 高等代数选讲 教学大纲 课程编码 :1511105003 课程名称 : 高等代数选讲学时 / 学分 :54/3 先修课程 : 数学分析 高等代数 近世代数 适用专业 : 数学与应用数学开课教研室 : 代数与几何教研室 一 课程性质与任务 1. 课程性质 : 数学与应用数学专业的一门选修课程, 是在学生学完高等代数等专业基础课程, 已具备一定的代数知识基础之后开设的高等代数提高课程 2. 课程任务 :

More information

第二节 向量组的线性相关性

第二节     向量组的线性相关性 第二节 向量组的线性相关性 一 维向量组的线性相关性若干个同维数的向量所组成的集合称为向量组. 定义. 设有 维向量组 m 若存在不全为零的数 c c c m 使得 c c c m m 0 则称向量组 m 线性相关 否则称向量组 m 线性无关. 当向量组线性无关时 也称这个向量组是线性无关 ( 向量 ) 组. 由定义. 可知 m 线性无关的充分必要条件是 : 成立当 且仅当 c=c= =cm=0 c

More information

<4D F736F F D20CFB0CCE2BCAFA3A8D7DCA3A92E646F63>

<4D F736F F D20CFB0CCE2BCAFA3A8D7DCA3A92E646F63> 数域定义 第一章多项式一 内容提要. 数域 设 F 是由一些复数组成的集合, 其中包括 和. 如果 F 中任意两数 ( 这两个数可以相同 ) 的和 差 积 商 ( 除数不为零 ) 仍然是 F 中的数, 那么 F 就称为一个数域.. 一元多项式定义设 是一非负整数. 形式表达式 其中. 一元多项式,,,, 属于数域 F, 称为数域 F 上的一元多项式.. 多项式的运算 () 加法设 = = f ( )

More information

第五讲 对称特征值问题 1 Jacobi 迭代 2 Rayleigh 商迭代 3 对称 QR 迭代 4 分而治之法 5 对分法和逆迭代 6 奇异值分解 7 扰动分析

第五讲 对称特征值问题 1 Jacobi 迭代 2 Rayleigh 商迭代 3 对称 QR 迭代 4 分而治之法 5 对分法和逆迭代 6 奇异值分解 7 扰动分析 第五讲 对称特征值问题 1 Jacobi 迭代 2 Rayleigh 商迭代 3 对称 QR 迭代 4 分而治之法 5 对分法和逆迭代 6 奇异值分解 7 扰动分析 2/93 关于对称特征值问题的常用算法有 ( 直接法 ): Jacobi 迭代 : 最古老, 收敛速度较慢, 但精度较高, 且很适合并行计算. Rayleigh 商迭代 : 一般具有三次收敛性, 但需要解方程组. 对称 QR 迭代 :

More information

2015年廉政公署民意調查

2015年廉政公署民意調查 報 告 摘 要 2015 年 廉 政 公 署 周 年 民 意 調 查 背 景 1.1 為 了 掌 握 香 港 市 民 對 貪 污 問 題 和 廉 政 公 署 工 作 的 看 法, 廉 政 公 署 在 1992 至 2009 年 期 間, 每 年 均 透 過 電 話 訪 問 進 行 公 眾 民 意 調 查 為 更 深 入 了 解 公 眾 對 貪 污 問 題 的 看 法 及 關 注, 以 制 訂 適 切

More information

2/115 大规模稀疏线性方程组 Ax = b, A R n n, b R n. Krylov 子空间方法是子空间方法的成功代表 首选方法 Krylov 子空间方法. 基本思想 在一个维数较小的子空间 K R n 中寻找近似解. 这类方法也被看作是一种 投影方法, 即寻找真解在某个子空间中 的投影

2/115 大规模稀疏线性方程组 Ax = b, A R n n, b R n. Krylov 子空间方法是子空间方法的成功代表 首选方法 Krylov 子空间方法. 基本思想 在一个维数较小的子空间 K R n 中寻找近似解. 这类方法也被看作是一种 投影方法, 即寻找真解在某个子空间中 的投影 第四讲 Krylov 子空间方法 投影方法 Krylov 子空间与 Arnoldi 过程 一般线性方程组的 Krylov 子空间方法 对称线性方程的 Krylov 子空间方法 收敛性分析 基于双正交化过程的迭代方法 免转置迭代方法 正规方程的迭代方法 2/115 大规模稀疏线性方程组 Ax = b, A R n n, b R n. Krylov 子空间方法是子空间方法的成功代表 首选方法 Krylov

More information

x x x x y i j x x x x4 y x x x x4 y ( )( )( )( ) ( j i ) D = x x x x y = y x y x y x y x Π x x () 4 而 D = A5 + ya5 + y A5 + y A45 + y

x x x x y i j x x x x4 y x x x x4 y ( )( )( )( ) ( j i ) D = x x x x y = y x y x y x y x Π x x () 4 而 D = A5 + ya5 + y A5 + y A45 + y 线性代数练习册 复习题和自测题解答 三 求解下列各题 : 0 计算 0 4 99 第一章 复习题 0 0 0 0 5 5 解 : 原式 = 0 = 0 = 0 = 0 4 99 6 0 0 5 00 0 5 00 = 55 5 x 0 解方程 x 7 6 = 0 7 x 4 解 : 计算左边的行列式, 按第一列展开得 :9x 6 = 0, x = 4 ax + x + x = 0 确定 a 的值,

More information

1 线性空间 1.1 线性空间的定义及例子概念的源起 向量在加法运算 数乘运算所满足的运算规律, 例如 加法交换律 : x + y = y + x, 加法结合律 : (x + y) + z = x + (y + z), 数乘分配律 : (λ + µ)x = λx + µx; 矩阵 多项式 连续函数等

1 线性空间 1.1 线性空间的定义及例子概念的源起 向量在加法运算 数乘运算所满足的运算规律, 例如 加法交换律 : x + y = y + x, 加法结合律 : (x + y) + z = x + (y + z), 数乘分配律 : (λ + µ)x = λx + µx; 矩阵 多项式 连续函数等 Chapter 2 线性代数基础 Matrix Theory November 27, 2014 黄正华, 数学与统计学院, 武汉大学 2.1 Contents 1 线性空间 2 1.1 线性空间的定义及例子......................... 2 1.2 子空间的概念.............................. 6 1.3 基底和维数...............................

More information

「香港中學文言文課程的設計與教學」單元設計範本

「香港中學文言文課程的設計與教學」單元設計範本 1. 2. 3. (1) (6) ( 21-52 ) (7) (12) (13) (16) (17) (20) (21) (24) (25) (31) (32) (58) 1 2 2007-2018 7 () 3 (1070) (1019-1086) 4 () () () () 5 () () 6 21 1. 2. 3. 1. 2. 3. 4. 5. 6. 7. 8. 9. ( ) 7 1. 2.

More information

全唐诗28

全唐诗28 ... 1... 1... 1... 2... 2... 2... 3... 3... 4... 4... 4... 5... 5... 5... 5... 6... 6... 6... 6... 7... 7... 7... 7... 8... 8 I II... 8... 9... 9... 9...10...10...10...11...11...11...11...12...12...12...13...13...13...14...14...14...15...15...15...16...16...16...17...17

More information

<4D F736F F D20B5DAD2BBD5C2D0D0C1D0CABD2E646F63>

<4D F736F F D20B5DAD2BBD5C2D0D0C1D0CABD2E646F63> 线性代数 课教案 学 期 :6 7 学年第一学期 学时 : 45 学时 系 ( 部 ): 基础部 教研室 : 理科教研室 授课教师 : 张焕玮 授课班级所 授课班级 授课班级 授课班级 在系 所在系 管理工程系管理工程系 6 物流管理 班 6 物流管理 4 班 第 次课教案 6 年 9 月 7 日星期三 章 节 : 第一章行列式 教学任务 :. 阶行列式的定义 使学生了解 阶行列式的定义, 会计算二阶和三阶行列式

More information

第三章自考线性代数精讲

第三章自考线性代数精讲 第一节 n 维向量 l n 维向量的概念 l n 维向量的表示方法 l l 小结 思考题 6// 一 n 维向量的概念 定义 n 个有次序的数 n 所组成的数组称为 n维向量 这 n个数称为该向量的 n个分量 第 i个数 i 称为第 i个分量 分量全为实数的向量称为实向量 分量全为复数的向量称为复向量 6// 例如 n n 维实向量 i i n n i n 维复向量 第 个分量 第 个分量 第 n

More information

Microsoft PowerPoint - new第七讲.ppt [兼容模式]

Microsoft PowerPoint - new第七讲.ppt [兼容模式] 高等数值算法与应用 ( 七 ) Advanced Nuerical Algoriths & Applications 计算机科学与技术系喻文健 内容概要 线性方程组的迭代解法 概述与经典迭代解法回顾 变分原理导出的非经典迭代解法 最速下降法 共扼梯度 (CG) 算法及预条件技术 f ( x ) = in f ( x ) e = in k span( p...p ) Krylov 子空间迭代法 投影方法的原理

More information

幻灯片 1

幻灯片 1 第一类换元法 ( 凑微分法 ) 学习指导 复习 : 凑微分 部分常用的凑微分 : () n d d( (4) d d( ); (5) d d(ln ); n n (6) e d d( e ); () d d( b); ); () d d( ); (7) sin d d (cos ) 常见凑微分公式 ); ( ) ( ) ( b d b f d b f ); ( ) ( ) ( n n n n d f

More information

n 维实向量空间 R n 3 维欧 空间 R 3 n 维欧 空间 R n 线性空间 前 我们建 了 n 维实向量空间 R n 的概念, 但它还不是三维欧 空间的推, 因为它还缺少向量的长度 夹 垂直等 何概念 ( 何建立的早期目的就是讨论长度 夹角等度量性质 ) 长度 夹 这 个概念都可以由内积导出

n 维实向量空间 R n 3 维欧 空间 R 3 n 维欧 空间 R n 线性空间 前 我们建 了 n 维实向量空间 R n 的概念, 但它还不是三维欧 空间的推, 因为它还缺少向量的长度 夹 垂直等 何概念 ( 何建立的早期目的就是讨论长度 夹角等度量性质 ) 长度 夹 这 个概念都可以由内积导出 Chapter 4 向量空间与线性变换 Linear Algebra November 24, 207 黄正华, 数学与统计学院, 武汉大学 4 目录 R n 的基与向量关于基的坐标 2 2 R n 中向量的内积 标准正交基和正交矩阵 6 2 n 维实向量的内积, 欧 空间 6 22 标准正交基 8 23 施密特正交化 法 8 24 正交矩阵及其性质 2 3 线性空间的定义及简单性质 4 4 线性子空间

More information

Microsoft Word - 1神奇的矩阵2.doc

Microsoft Word - 1神奇的矩阵2.doc 题 目 : 神 奇 的 矩 阵 第 二 季 ( 修 改 版 2.1) 学 校 : 哈 尔 滨 工 程 大 学 姓 名 : 黎 文 科 联 系 方 式 : QQ 群 :53937814 联 系 方 式 : 190356321@qq.com Contents CONTENTS... 2 前 言... 3 绪 论... 4 1 从 坐 标 系 谈 起... 8 2 内 积 与 范 数 的 深 入 理 解...

More information

untitled

untitled 19.01 19.02 19.03 [ 2009 1 1 ] 19.04 (1) 19.29 19.73 19.72 (c) (d) 200% (e) 1/13 19 1 (i) 20.06(3) 19.04(8) 20.06(17) (ii) (iii) 19.04(8) 20.06(17) (A) (aa) 1 (bb) (B) (f) (i) 19.04(1)(g) (ii) (iii) (A)

More information

cos si A ; A si cos 解 由于对任意点 有 y y y y 确定的变换将任意一个点 变成它关于 轴对称 的点 见图.. 图.. 由于对任意点 有 y y y = y y 确定的变换将任意一个点 变成它关于直线 y 对称的点 见图.. 图.. 由于对任意点 有 y y y y 确定的

cos si A ; A si cos 解 由于对任意点 有 y y y y 确定的变换将任意一个点 变成它关于 轴对称 的点 见图.. 图.. 由于对任意点 有 y y y = y y 确定的变换将任意一个点 变成它关于直线 y 对称的点 见图.. 图.. 由于对任意点 有 y y y y 确定的 教案 线形变换及其矩阵表示 教学内容线形变换是几何空间和函数空间中最简单的变换 它有着深刻的几何学和物理学背景 是一个经常使用的数学工具 在数学理论研究和实际应用中起着重要作用 在这节中主要讲解以下几方面的内容 : 线性变换的概念 乘积变换和可逆变换的概念 ; 线性变换的矩阵表示 ; 在不同基下的表示矩阵之间的关系 ; 在线性变换下坐标的变化情况 教学思路和要求 线性空间与线性变换这部分内容 由于其抽象性较强

More information

幻灯片 1

幻灯片 1 向量组的线性相关性 线性关系若干性质问题思考 授课教师 : 刘三阳 向量是数学中的一个重要概念, 也是线性代数中常用的一个基本概念. 向量的线性关系, 也就是向量组的线性相关和线性无关性, 是建立向量空间结构和线性方程组理论的重要基础. 这一节课我们要温故知新, 回顾 总结 学新知. 第 2 页 1 所谓向量, 就是一个有序数组, 其中各个数被称作向量的 分量, 分量的个数被称为向量的维数. 一个

More information

首届中国大学生数学竞赛赛区赛试卷解答 ( 数学类,2009) 考试形式 : 闭卷考试时间 : 120 分钟满分 : 100 分. 题号一二三四五六七总分 专业 : 线满分 得分 注意 :1 所有答题都须写在此试卷纸密封线右边, 写在其它纸上一律无效.

首届中国大学生数学竞赛赛区赛试卷解答 ( 数学类,2009) 考试形式 : 闭卷考试时间 : 120 分钟满分 : 100 分. 题号一二三四五六七总分 专业 : 线满分 得分 注意 :1 所有答题都须写在此试卷纸密封线右边, 写在其它纸上一律无效. 首届中国大学生数学竞赛赛区赛试卷解答 ( 数学类,9) 考试形式 : 闭卷考试时间 : 分钟满分 : 分. 题号一二三四五六七总分 专业 : 线满分 5 5 5 5 注意 : 所有答题都须写在此试卷纸密封线右边, 写在其它纸上一律无效. 密封线左边请勿答题, 密封线外不得有姓名及相关标记. 一 (5 分 ) 求经过三平行直线 L : x= y = z, 年级 : 封 L : x = y = z+,

More information

2016自然科学版第3期

2016自然科学版第3期 兰州大学学报 : 自然科学版, 016, 5(3) / 6 月 Journal of Lanzhou University:Natural Sciences,016,5(3) / June 几类特殊矩阵及性质 雍龙泉 1, 刘三阳, 史加荣 3, 熊文涛 4 5, 封全喜 1 陕西理工大学数学与计算机科学学院, 陕西汉中 73001 西安电子科技大学数学与统计学院, 西安 710071 3 西安建筑科技大学理学院,

More information

智力测试故事

智力测试故事 II 980.00 ... 1... 1... 1... 2... 2... 2... 3... 3... 3... 3... 4... 4... 5... 5... 6... 6... 7... 7... 8... 8... 8... 9... 9...10...10...10 I II...11...11...11...12...13...13...13...14...14...14...15...15...15...16...16...17...17...18...18...19...19...19...19...20...20...21...21...21

More information

课程教学大纲 (course syllabus) practice link in the reform since 2000, this changes the traditional study mode and make the teaching method becomes vivid an

课程教学大纲 (course syllabus) practice link in the reform since 2000, this changes the traditional study mode and make the teaching method becomes vivid an 线性代数 (B 类 ) 课程教学大纲 课程基本信息 (Course Information) 课程代码 (Course Code) MA0014/MA077 * 学时 (Credit Hours) 48 * 学分 (Credits) * 课程名称 ( 中文 ) 线性代数 (B 类 ) (Course Name) ( 英文 )Linear Algebra (B class) 课程性质 (Course

More information

II II

II II I I II II III 1. 2. 3. III 4. IV 5. 6. 8. 9. 10. 12. IV V V VI VI VII VII VIII VIII IX IX X X XI XI XII XII 1 1 2 2 3 3 4 33 35 4 5 5 6 6 7 ( ) 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17

More information

Microsoft PowerPoint - new第四讲.ppt [兼容模式]

Microsoft PowerPoint - new第四讲.ppt [兼容模式] 高等数值算法与应用 ( 四 ) Advanced Numerical Algorithms & Applications 计算机科学与技术系喻文健 内容概要 矩阵分解及其应用 六大分解简介 矩阵与线性方程组求解基本理论 LU 分解, Cholesky 分解及其应用 QR Q 分解与线性最小二乘问题 特征值分解 奇异值分解 (SVD) 及其应用 稀疏矩阵的直接解法 Spectrum Decomposition

More information

没有幻灯片标题

没有幻灯片标题 第九章常微分方程数值解法 Euler 方法 Ruge-Kutta 法 3 单步法的绝对稳定性 4 线性多步法 5 一阶方程组与高阶方程的初值问题 -- 常微分方程数值解法 必要性在工程和科学技术的实际问题中, 常需要求解微分方程 只有简单的和典型的微分方程可以求出解析解, 而在实际问题中的微分方程往往无法求出解析解 y xy 如微分方程初值问题 y(0 0, 其解析解 ( 精确解 为 : x t y(

More information

奇闻怪录

奇闻怪录 ... 1... 1... 2... 3... 3... 4... 4... 5... 5... 6... 8... 9... 10... 10... 11... 11... 13... 13... 14... 14... 15... 16... 17... 21 I ... 22... 23... 23... 24... 25... 25... 26... 27... 28... 29 UFO...

More information

(b) 3 (a) (b) 7 (a) (i) (ii) (iii) (iv) (v) (vi) (vii) 57

(b) 3 (a) (b) 7 (a) (i) (ii) (iii) (iv) (v) (vi) (vii) 57 (i) (ii) (iii) A. 123 2 3(1) (2) (i) 41 (ii) (iii) 121 4(3) (i) (ii) (iii) 123A 3 (a) 56 (b) 3 (a) (b) 7 (a) (i) (ii) (iii) (iv) (v) (vi) (vii) 57 (viii) (ix) (x) 4B(2)(d) (e) (f) (xi) (xii) (b) (a) (i)

More information

高等数学A

高等数学A 高等数学 A March 3, 2019 () 高等数学 A March 3, 2019 1 / 55 目录 1 函数 三要素 图像 2 导数 导数的定义 基本导数表 求导公式 Taylor 展开 3 积分 Newton-Leibniz 公式 () 高等数学 A March 3, 2019 2 / 55 函数 y = f(x) 函数三要素 1 定义域 2 值域 3 对应关系 () 高等数学 A March

More information

PowerPoint Presentation

PowerPoint Presentation . 高斯消元法. 矩阵的秩. 线性方程组解的判定 第二章 线性方程组 线性方程组的解取决于 n n nn n n n n n n b b b L LLLLLLLLLLLL L L ( ),,,,, n j i ij L 系数 ( ),n,, i b i L 常数项回顾 : 根据克拉默法则 线性方程组的一般形式 L nn b L nn b LLLLLLLLLLLL m m L mnn bm,, L,

More information

一、

一、 ... 1...24...58 - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - i. ii. iii. iv. i. ii. iii. iv. v. vi. vii. viii. ix. x. - 9 - xi. - 10 - - 11 - -12- -13- -14- -15- C. @ -16- @ -17- -18- -19- -20- -21- -22-

More information

标题

标题 第 35 卷第 期西南大学学报 ( 自然科学版 ) 3 年 月 Vol.35 No. JouralofSouthwestUiversity (NaturalScieceEditio) Feb. 3 文章编号 :673 9868(3) 69 4 一类积分型 Meyer-KiḡZeler-Bzier 算子的点态逼近 赵晓娣, 孙渭滨 宁夏大学数学计算机学院, 银川 75 摘要 : 应用一阶 DitziaṉTotik

More information

509 (ii) (iii) (iv) (v) 200, , , , C 57

509 (ii) (iii) (iv) (v) 200, , , , C 57 59 (ii) (iii) (iv) (v) 500,000 500,000 59I 18 (ii) (iii) (iv) 200,000 56 509 (ii) (iii) (iv) (v) 200,000 200,000 200,000 500,000 57 43C 57 (ii) 60 90 14 5 50,000 43F 43C (ii) 282 24 40(1B) 24 40(1) 58

More information

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc 人 力 資 源 推 算 報 告 香 港 特 別 行 政 區 政 府 二 零 一 二 年 四 月 此 頁 刻 意 留 空 - 2 - 目 錄 頁 前 言 詞 彙 縮 寫 及 注 意 事 項 摘 要 第 一 章 : 第 二 章 : 第 三 章 : 第 四 章 : 附 件 一 : 附 件 二 : 附 件 三 : 附 件 四 : 附 件 五 : 附 件 六 : 附 件 七 : 引 言 及 技 術 大 綱 人

More information

南華大學數位論文

南華大學數位論文 1 i -------------------------------------------------- ii iii iv v vi vii 36~39 108 viii 15 108 ix 1 2 3 30 1 ~43 2 3 ~16 1 2 4 4 5 3 6 8 6 4 4 7 15 8 ----- 5 94 4 5 6 43 10 78 9 7 10 11 12 10 11 12 9137

More information

李天命的思考藝術

李天命的思考藝術 ii iii iv v vi vii viii ix x 3 1 2 3 4 4 5 6 7 8 9 5 10 1 2 11 6 12 13 7 8 14 15 16 17 18 9 19 20 21 22 10 23 24 23 11 25 26 7 27 28 12 13 29 30 31 28 32 14 33 34 35 36 5 15 3 1 2 3 4 5 6 7 8 9 10 11

More information

皮肤病防治.doc

皮肤病防治.doc ...1...1...2...3...4...5...6...7...7...9...10... 11...12...14...15...16...18...19...21 I ...22...22...24...25...26...27...27...29...30...31...32...33...34...34...36...36...37...38...40...41...41...42 II

More information

性病防治

性病防治 ...1...2...3...4...5...5...6...7...7...7...8...8...9...9...10...10... 11... 11 I ...12...12...12...13...14...14...15...17...20...20...21...22...23...23...25...27...33...34...34...35...35 II ...36...38...39...40...41...44...49...49...53...56...57...57...58...58...59...60...60...63...63...65...66

More information

中国南北特色风味名菜 _一)

中国南北特色风味名菜 _一) ...1...1...2...3...3...4...5...6...7...7...8...9... 10... 11... 13... 13... 14... 16... 17 I ... 18... 19... 20... 21... 22... 23... 24... 25... 27... 28... 29... 30... 32... 33... 34... 35... 36... 37...

More information

全唐诗24

全唐诗24 ... 1... 1... 2... 2... 3... 3... 4... 4... 5... 5... 6... 6... 7... 7... 8... 8... 9... 9...10...10...10...11...12...12...12...13...13 I II...14...14...14...15...15...15...16...16...16...17...17...18...18...18...19...19...19...20...20...20...21...21...22...22...23...23...23...24

More information

江苏宁沪高速公路股份有限公司.PDF

江苏宁沪高速公路股份有限公司.PDF - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - 33.33% ( ) ( ) ( ) 33.33% ( ) ( ) ( ) 1 1 1992 8 3200001100976 1997 6 27 H 12.22 2001 1 16 A 1.5 2001 12 3 503,774.75 14,914,399,845.00 13,445,370,274.00

More information

1 2 6 8 15 36 48 55 58 65 67 74 76 150 152 1 3 1 2 4 2 2001 2000 1999 12 31 12 31 12 31 304,347 322,932 231,047 14,018 16,154 5,665 (i) 0.162 0.193 0.082 (ii) 0.165 0.227 0.082 (iii) 10.08 13.37 6.47 0.688

More information

30,000,000 75,000,000 75,000, (i) (ii) (iii) (iv)

30,000,000 75,000,000 75,000, (i) (ii) (iii) (iv) 30,000,000 75,000,000 75,000,000 24 (i) (ii) (iii) (iv) # * 1,800,000 1,800,000 15% 3,400,000 3,400,000 15% 4,200,000 4,200,000 10% 8,600,000 8,600,000 10% 12,600,000 12,600,000 88% 10% 16,000,000 16,000,000

More information

西安美术学院福建公安高等专科.doc

西安美术学院福建公安高等专科.doc ...1...1 ( )...6... 11...13...14...16...21...22...36...37...38...39...43...44...46...48...48...51 I ( )...53...56...59...62...62...80...82...86...87 ( )...90...93...97 ( )...99... 106... 107... 118 ( )...

More information

I. 1-2 II. 3 III. 4 IV. 5 V. 5 VI. 5 VII. 5 VIII. 6-9 IX. 9 X XI XII. 12 XIII. 13 XIV XV XVI. 16

I. 1-2 II. 3 III. 4 IV. 5 V. 5 VI. 5 VII. 5 VIII. 6-9 IX. 9 X XI XII. 12 XIII. 13 XIV XV XVI. 16 125-0834I/1405/GH I. 1-2 II. 3 III. 4 IV. 5 V. 5 VI. 5 VII. 5 VIII. 6-9 IX. 9 X. 10-11 XI. 11-12 XII. 12 XIII. 13 XIV. 14-15 XV. 15-16 XVI. 16 I. * ++p ++ p ++ ++ * ++p ++ ++ ++p 1 2 ++ ++ ++ ++ ++ I.

More information

第一章 线性代数基础

第一章 线性代数基础 第一章线性代数方法矩阵是人们用数学方法解决实际问题的重要工具, 也是线性代数中一个基本概念 矩阵常用大写英文字母表示 一个 n 阶矩阵 A 是如下 行 n 列的数表 n n n A 在计算机程序设计中, 矩阵被称为二维数组, 向量被称为一维数组 矩阵的每一行元素组成一个行向量, 所以矩阵是有限个同维行向量的排列 本章结合数学软件 MATAB 的计算机操作, 介绍线性代数中的矩阵行变换 线性方程组解结构

More information

Microsoft Word - FM{new}.doc

Microsoft Word - FM{new}.doc Lanczos 方法 Louis Komzsik 著张伟廖本善译 演变与应用 清华大学出版社 北京 内容简介 Lanczos 方法是 20 世纪计算数学方向最有影响的方法之一, 并且已经在工程中得到了广泛应用. 本书兼顾了 Lanczos 方法的理论演变和工程中的实际应用, 其内容分为两部分 : 第一部分阐述了方法的演变, 并提供了具体算法 ; 第二部分讨论了工业中的实际应用, 包括常用的模态分析

More information

新东方在线 [www.koolear.co ] 考研数学网络课堂电子教材系列 第一讲 行列式 考试内容 行列式按行 ( 列 ) 展开定理 考试要求. 了解行列式的概念, 掌握行列式的性质.. 会应用行列式的性质和行列式按行 ( 列 ) 展开定理计算行列式. 基本概念 公式与方法精讲 一 行列式的概念

新东方在线 [www.koolear.co ] 考研数学网络课堂电子教材系列 第一讲 行列式 考试内容 行列式按行 ( 列 ) 展开定理 考试要求. 了解行列式的概念, 掌握行列式的性质.. 会应用行列式的性质和行列式按行 ( 列 ) 展开定理计算行列式. 基本概念 公式与方法精讲 一 行列式的概念 新东方在线 [www.koolear.co ] 考研数学网络课堂电子教材系列 考研数学 - 讲义 主讲 : 朱长龙 欢迎使用新东方在线电子教材 目 录 第一讲行列式... 第二讲矩阵... 9 第三讲向量... 第四讲线性方程组... 3 第五讲特征值和特征向量... 38 第六讲二次型... 43 新东方在线 [www.koolear.co ] 考研数学网络课堂电子教材系列 第一讲 行列式 考试内容

More information

2. 我 沒 有 說 實 話, 因 為 我 的 鞋 子 其 實 是 [ 黑 色 / 藍 色 / 其 他 顏 色.]. 如 果 我 說 我 現 在 是 坐 著 的, 我 說 的 是 實 話 嗎? [ 我 說 的 對 還 是 不 對 ]? [ 等 對 方 回 答 ] 3. 這 是 [ 實 話 / 對 的

2. 我 沒 有 說 實 話, 因 為 我 的 鞋 子 其 實 是 [ 黑 色 / 藍 色 / 其 他 顏 色.]. 如 果 我 說 我 現 在 是 坐 著 的, 我 說 的 是 實 話 嗎? [ 我 說 的 對 還 是 不 對 ]? [ 等 對 方 回 答 ] 3. 這 是 [ 實 話 / 對 的 附 錄 美 國 國 家 兒 童 健 康 與 人 類 發 展 中 心 (NICHD) 偵 訊 指 導 手 冊 I. 開 場 白 1. 你 好, 我 的 名 字 是, 我 是 警 察 [ 介 紹 房 間 內 的 其 他 人, 不 過, 在 理 想 狀 態 下, 房 間 裡 不 該 有 其 他 人 ] 今 天 是 ( 年 月 日 ), 現 在 是 ( 幾 點 幾 分 ) 我 是 在 ( 地 點 ) 問 你

More information

数值代数 夏银华 中国科学技术大学

数值代数 夏银华 中国科学技术大学 数值代数 夏银华 中国科学技术大学 课程介绍 时间, 地点周二 :6,7 节, 周四 :1,2 节,(1-15 周 ) 地点 :3A211 教材 D. Kincaid and W. Cheney, Numerical Analysis:Mathematics of Scientific Computing, American Mathematical Soc., 2002 参考教材 L.N. Trefethen

More information

求出所有的正整数 n 使得 20n + 2 能整除 2003n n 20n n n 20n n 求所有的正整数对 (x, y), 满足 x y = y x y (x, y) x y = y x y. (x, y) x y =

求出所有的正整数 n 使得 20n + 2 能整除 2003n n 20n n n 20n n 求所有的正整数对 (x, y), 满足 x y = y x y (x, y) x y = y x y. (x, y) x y = 求出所有的正整数 n 使得 20n + 2 能整除 2003n + 2002 n 20n + 2 2003n + 2002 n 20n + 2 2003n + 2002 求所有的正整数对 (x, y), 满足 x y = y x y (x, y) x y = y x y. (x, y) x y = y x y 对于任意正整数 n, 记 n 的所有正约数组成的集合为 S n 证明 : S n 中至多有一半元素的个位数为

More information

( CIP).:,3.7 ISBN TB CIP (3) ( ) ISBN O78 : 3.

( CIP).:,3.7 ISBN TB CIP (3) ( ) ISBN O78 : 3. ( CIP).:,3.7 ISBN 7 568 383 3.......... TB CIP (3) 334 3 37 ( ) 64536 www.hdlgpress.com.c 7879 6 9.75 479 3 7 3 7 45 ISBN 7 568 383 3O78 : 3. 995,.,.,.,. :,,,,.. :,,,,,,.,,,,.,,. ,,.,,,.,,,.,,,,.,.,,,

More information

_Chi.ps, page Preflight ( _Chi.indd )

_Chi.ps, page Preflight ( _Chi.indd ) on conviction3 5 1. / 2. 14 3. 2 2 3 4. 372 12 5. 6. 1 7. 1 2 i ii iii iv 8. 9. 1 12 2 2 i ii iii i ii iii 3 iv http://www.pcpd.org.hk v i ii iii 4 i ii i / ii 5 1. 2. 3. i ii iii iv v vi 4. 5. 6 6. 7.

More information

cumcm0206.PDF

cumcm0206.PDF 6 : 00 attract sgod attract 9 4 3 9 60 7 6+ 60 7 60 7 60 7 6 0 6+ 0 9 6 0 4 33 7 0~33 33 7 6 0~33 7 36 6+ 0~36 36 6 30 0~36 7 50% 60 500 [( ) - ] 3 3 6 K F F µ ( = LK ) R ( = L ) r ( = L ) P P w W ( =

More information

2006ÄêÈ«¹ú˶ʿÑо¿ÉúÈëѧͳһ¿¼ÊÔÊýѧ¶þÊÔÌâ

2006ÄêÈ«¹ú˶ʿÑо¿ÉúÈëѧͳһ¿¼ÊÔÊýѧ¶þÊÔÌâ 考研资料下载中心 hp://download.kaoan.com 6 年全国硕士研究生入学考试数学 ( 二 ) 一 填空题 + 4sin () 曲线 = 的水平渐近线方程为. 5 cos sin d,, () 设函数 f ( ) = 在 = 处连续, 则 a =. a, = + d () 广义积分 =. ( + ) ( ) (4) 微分方程 = 的通解是. d (5) 设函数 = ( ) 由方程 =

More information

Microsoft Word - ex01.doc

Microsoft Word - ex01.doc 数域定义 第一章多项式一 内容提要 1.1 数域 设 F 是由一些复数组成的集合, 其中包括 和 1. 如果 F 中任意两数 ( 这两个数可以相同 ) 的和 差 积 商 ( 除数不为零 ) 仍然是 F 中的数, 那么 F 就称为一个数域. 1. 一元多项式定义设 是一非负整数. 形式表达式 其中 1 1.2 一元多项式 1 ax + a 1x + + a L, a, a, L, a 属于数域 F,

More information

这里考查三个物体偏离平衡位置的位移, 分别记为 y (t), y 2 (t), y 3 (t). 因为物体在平衡状态 所受的重力已经和弹簧伸长的弹力平衡, 所以物体的加速度只和 偏离平衡位置引起的弹簧伸长相关. 根据牛顿第二定律以及胡 克定律 ( 即弹簧的弹力与拉伸长度成正比 ) 可列出如下微分方程

这里考查三个物体偏离平衡位置的位移, 分别记为 y (t), y 2 (t), y 3 (t). 因为物体在平衡状态 所受的重力已经和弹簧伸长的弹力平衡, 所以物体的加速度只和 偏离平衡位置引起的弹簧伸长相关. 根据牛顿第二定律以及胡 克定律 ( 即弹簧的弹力与拉伸长度成正比 ) 可列出如下微分方程 第五章矩阵特征值计算 与线性方程组的求解问题一样, 矩阵特征值与特征向量的计算也是数值线性代数的重要内容. 在理论上, 矩阵的特征值是特征多项式方程的根, 因此特征值的计算可转化为单个多项式方程的求解. 然而对于高阶矩阵, 这种转化并不能使问题得到简化, 而且在实际应用中还会引入严重的数值误差. 因此, 正如第二章指出的, 我们一般将多项式方程求解转化为矩阵特征值计算问题, 而不是反过来. 本章介绍有关矩阵特征值计算问题的基本理论和算法.

More information

线性代数与解析几何 第一章向量与复数 11 向量的线性运算 12 坐标系 13 向量的数量积 14 向量的向量积 15 向量的混合积 16 高维数组向量 17 复数 18 数域 19 求和符号 什么是代数学? Ẹ Artin: 研究代数系统的结构与表示理论 例如 : 自然数 有理数 无理数 实数 复

线性代数与解析几何 第一章向量与复数 11 向量的线性运算 12 坐标系 13 向量的数量积 14 向量的向量积 15 向量的混合积 16 高维数组向量 17 复数 18 数域 19 求和符号 什么是代数学? Ẹ Artin: 研究代数系统的结构与表示理论 例如 : 自然数 有理数 无理数 实数 复 第一章向量与 复数 管理科研楼 1205 室 1 E-mail: tongwh@ustceducn 1 数学科学学院中国科学技术大学 2017-2018 学年第二学期 00151914 线性代数与解析几何 第一章向量与复数 11 向量的线性运算 12 坐标系 13 向量的数量积 14 向量的向量积 15 向量的混合积 16 高维数组向量 17 复数 18 数域 19 求和符号 什么是代数学? Ẹ Artin:

More information

Microsoft Word - Entry-Level Occupational Competencies for TCM in Canada200910_ch _2_.doc

Microsoft Word - Entry-Level Occupational Competencies for TCM in Canada200910_ch _2_.doc 草 稿 致 省 級 管 理 單 位 之 推 薦 書 二 零 零 九 年 十 月 十 七 日 加 拿 大 中 醫 管 理 局 聯 盟 All rights reserved 序 言 加 拿 大 中 醫 管 理 局 聯 盟, 於 二 零 零 八 年 一 月 至 二 零 零 九 年 十 月 間, 擬 定 傳 統 中 醫 執 業 之 基 礎 文 件 由 臨 床 經 驗 豐 富 之 中 醫 師 教 育 者 及

More information

<4D6963726F736F667420576F7264202D203938BEC7A67EABD7B942B0CAC15AC075B3E6BF57A9DBA5CDC2B2B3B92DA5BFBD542E646F63>

<4D6963726F736F667420576F7264202D203938BEC7A67EABD7B942B0CAC15AC075B3E6BF57A9DBA5CDC2B2B3B92DA5BFBD542E646F63> 98 年 3 月 11 日 依 本 校 98 學 年 度 招 生 委 員 會 第 1 次 會 議 核 定 大 同 技 術 學 院 98 學 年 度 重 點 運 動 項 目 績 優 學 生 單 獨 招 生 簡 章 大 同 技 術 學 院 招 生 委 員 會 編 印 校 址 :600 嘉 義 市 彌 陀 路 253 號 電 話 :(05)2223124 轉 203 教 務 處 招 生 專 線 :(05)2223124

More information

香 港 舞 蹈 總 會    北 京 舞 蹈 學 院

香 港 舞 蹈 總 會    北 京 舞 蹈 學 院 報 名 規 則 : I. 保 送 教 師 資 格 : 香 港 舞 蹈 總 會 主 辦 二 零 一 六 年 秋 季 趣 學 堂 幼 兒 舞 蹈 課 程 評 核 報 名 及 規 則 ( 請 於 報 名 前 詳 細 閱 讀 整 份 文 件 ) 學 生 必 須 由 認 可 教 師 保 送 參 加 評 核, 而 以 下 為 認 可 教 師 的 資 格 : i. 持 有 由 香 港 舞 蹈 總 會 頒 發 之

More information