Chap3 线性代数方程组 ¶
系数矩阵类型 ¶
- 低阶稠密矩阵
- 大型稀疏矩阵(矩阵中 0 元素较多)
- 三对角矩阵(非 0 元素集中于主对角线及相邻两对角线上)
数值解法 ¶
Note
- 经过有限步算数运算,可求得方程组的精确解的方法(若在计算过程无舍入误差)
- 可预先估算使用机器时间,计算量小,但要占用较多内存,程序复杂
- 适用于方程组的系数矩阵阶数不太高的问题
Note
- 用某种极限过程去逐步逼近线性方程组精确解的方法
- 迭代法具有占存储单元少、程序设计简单、原始系数矩阵在迭代过程中不变等优点
- 计算工作量有时较大,适宜计算系数矩阵为稀疏矩阵
- 存在收敛性和收敛速度等问题,对方程组的系数矩阵有一定要求,才能保证迭代方程的收敛
直接法 ¶
消去法 ¶
Note
在《数值计算方法》和《计算方法》中,对于 Gauss 消去法的定义有所不同。在《数值计算方法》中,Gauss 消去法包括顺序消去法、全主元法、列主元法。在《计算方法》中,Gauss 消去法特指原始的顺序消去法,全主元法和列主元法被称为主元素法作为 Gauss 消去法的改进版本列出。
Gauss 消去法 ¶
Note
- 消元:将方程组逐列逐行消去变量,转化为等价的上三角形方程组
- 回代:依方程组相反顺序求解上三角形方程组
Note
- 乘法次数:\(\sum_{k=1}^{n-1} (n-k)(n-k+1)=\frac{n}{3}(n^2-1)\)
- 除法次数:\(\sum_{k=1}^{n-1} (n-k)=\frac{n}{2}(n-1)\)
- 乘除总运算量:\(N=\frac{n^3}{3}+n^2-\frac{n}{3}\)
Note
- 被 0 除
- 消去和回代都存在此问题
- 舍入误差
- 大规模问题中,每一个计算结果都依赖于前面的结果
- 结果代回原方程组检验
- 病态方程组
- 奇异方程组
- 两个方程组完全相等时,n 个未知数而只有 n-1 个方程
- 对大规模方程组,不容易发现这种奇异性
- 利用奇异方程组的行列式为 0 进行判断
Hint
- 行列式的值
- 矩阵求逆
- 缩放系数矩阵,使每一行最大元素为 1,缩放后的逆矩阵元素值大于 1 数倍则为病态
- 将逆矩阵与原矩阵相乘,结果不接近单位阵则为病态
- 求逆矩阵的逆矩阵,与原系数矩阵对比,不相等则为病态
- 系数微小改变再求解
主元消去法 ¶
Gauss 消去法要求主元 \(a_{kk}^{(k)}\) 均不为零;但若 |a_{kk}^{(k)}| 较小,用其作除数,使得
$$$$
解求精技术 ¶
- 使用扩展精度
- 选主元 列主元消去法或者全主元消去法
- 缩放 缩放之后的系数用来确定是否需要交换主元,但实际消去和回代中仍使用原系数值
消去法 ¶
- 顺序消去法条件苛刻,且数值不稳定
- 全主元消去法工作量偏大,需要比较的元素及行列交换工作较多,算法复杂
- 高斯约当消去法形式上简单,且无回代求解,但计算量大
- 从算法优化的角度考虑,列主元消去法较好
function X=Gauss(A,B) %采用高斯消去法 n=length(B); for i=1:n-1 %寻找该列绝对值最大的元素 max=abs(A(i,i)); mark=i; for j=i+1:n if (abs(A(i,j)) > max) max=abs(A(i,j)); mark=j; end end %交换行 l=A(i,:); A(i,:)=A(mark,:); A(mark,:)=l; c=B(i); B(i)=B(mark); B(mark)=c; %顺序消元 %消去 for j=i+1:n %对第j行进行操作 factor=A(j,i)/A(i,i); for k=i+1:n %对第k个进行操作 A(j,k)=A(j,k)-factor*A(i,k); end B(j)=B(j)-factor*B(i); end end %回代 X(n)=B(n)/A(n,n) for i=n-1:-1:1 sum=B(i); for j=i+1:n sum=sum-A(i,j)*X(j); end X(i)=sum/A(i,i); end end
三角分解 (LU 分解 ) ¶
LU 分解矩阵求逆可减少计算量
Doolittle 分解 ¶
- L 为单位下三角矩阵,U 为上三角矩阵
Crout 分解 ¶
- L 为下三角矩阵,U 为单位上三角矩阵
三角分解和高斯消去的比较 ¶
- 计算量相当
- 三角分解不必计算中间结果,不需要提前知道右端项
- 解相同系数矩阵方程相当方便
Cholesky 分解 ¶
对称正定矩阵的平方根法
- 由 Doolittle 分解,A 有唯一分解 \(A=LU\)
- LDR 分解:(L、R 分别为下、上三角矩阵,D 为对角矩阵 )
- 三角分解:\(A=LDL^T\)
- 优势:存储量小,计算量小,数值稳定
- 缺点:存在开方运算,可能会出现根号下复数
带状方程组 ¶
- 高斯消去或 LU 分解效率低
- 元素满足对角占优条件,可以证明 A 非奇异,且各阶顺序主子式都采用三对角方程组的追赶法 (Thomas 算法 )
Thomas 算法 ¶
- 分解计算公式:\(A=LU\)
- 求解方程组 \(Ly=f\) 的递推算式
- 求解方程组 \(Ux=y\) 的递推算式
function X=Thomas(A,B) %采用三对角方程组的追赶法 n=length(B); %crout分解 L=eye(n); U=zeros(n); for i=1:n %计算U矩阵的第i行 U(i,i:n)=A(i,i:n)-L(i, 1:i-1)*U(1:i-1,i:n); %计算L矩阵的第i+1列到第n列 for j=i+1:n L(j,i)=(A(j,i)-L(j,1:i-1)*U(1:i-1,i))/U(i,i); end end %求解方程组Ly=f Y=zeros(1,n); Y(1)=B(1)/A(1,1); for i=2:n Y(i)=(B(i)-A(i,i-1)*Y(i-1))/(A(i,i)-A(i,i-1)*U(i,i-1)); end %求解方程组Ux=y X(n)=Y(n); for i=n-1:-1:1 X(i)=Y(i)-X(i+1)*U(i,i+1); end end
误差分析、条件数 ¶
向量范数 ¶
满足条件:正定,齐次,三角不等式 + "2"范数(欧几里得范数) $$ ||x||2=(\sum\limits{n}x_i $$ + "1"范数 $$ ||x||})^{½1=\sum\limits|x_i| $$ + "∞"范数(极大值范数或一致向量范数) $$ ||x||}^{n∞=\mathop{\max $$ + "p"范数 $$ ||x||}\leq{n}}^{}}{|x_i|p=(\sum\limits{n}|x_i| $$})^{1/p
矩阵范数 ¶
满足条件:正定,齐次,三角不等式,矩阵乘法不等式 ( 相容性条件 ) + "2"范数(谱范数) $$ ||A||2=[\lambdaATA] $$ + "1"范数(列和范数) $$ ||A||1=\max\limits| $$ + "∞"范数(行和范数) $$ ||A||}\leq{n}}\sum\limits_{i=1}^{n}|a_{ij∞=\max| $$}\leq{n}}\sum_{j=1}^n|a_{ij
谱半径 ¶
- A 的所有特征值的集合称为谱
- 称 \(\rho(A)=\max\limits_{1\leq{i}\leq{n}}|\lambda_i|\)
- \(||A||\) 为 \(A\) 的任意一种范数,有 \(\rho{(A)}\leq{||A||}\)
病态方程组和矩阵条件数 ¶
相对误差直接与 A 的条件数相关

迭代方法 ¶
迭代法 ¶

雅可比迭代法 ( 同步迭代法 ) ¶

高斯 - 赛德尔方法 ( 异步迭代法 ) ¶

收敛性 ¶

逐次超松弛迭代法 (SOR) ¶

评论区
如果有什么问题或想法,欢迎大家在下方留言~