\qquad 高斯消去法实质是产生了一个将 A A A分解为两个三角形矩阵相乘的因式分解,即矩阵的因式 L U LU LU分解,如果矩阵 A A A的顺序主子式 D i ≠ 0 ( i = 1 , 2 , ⋯   , n − 1 ) D_{i}\neq0(i=1,2,\cdots,n-1) Di̸=0(i=1,2,⋯,n−1),则 A A A可以分解为一个单位下三角形矩阵 L L L和一个上三角形矩阵 U U U的乘积,矩阵的分解是唯一的。
\qquad 考虑线性方程组
A x = b Ax=b Ax=b \qquad 其中, A A A为非奇异矩阵, x x x为方程组的精确解。由于 A A A和 b b b中的元素由测量得到的,因此矩阵中会带有观测误差,实际处理的矩阵为 A + δ A A+\delta A A+δA或 b + δ b b+\delta b b+δb,微小误差对解的影响使用如下方法表示:
\qquad 当矩阵 A A A或常数项 b b b的微小变化,引起线性方程组 A x = b Ax=b Ax=b解的巨大变化,则称此线性方程组为"病态"方程组,矩阵 A A A为“病态”方程组,反之为“良态”方程组。
\qquad 假设 A A A是精确的, b b b是有误差的 δ b \delta b δb,解为 x + δ x x+\delta x x+δx,则
A ( x + δ x ) = b + δ b , δ b = A − 1 δ b , ∣ ∣ δ b ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ b ∣ ∣ A(x+\delta x)=b+\delta b,\ \delta b=A^{-1}\delta b,\ ||\delta b||\leq||A^{-1}||\ ||\delta b|| A(x+δx)=b+δb, δb=A−1δb, ∣∣δb∣∣≤∣∣A−1∣∣ ∣∣δb∣∣ \qquad 由线性方程组有
∣ ∣ b ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ x ∣ ∣ , 1 ∣ ∣ x ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ b ∣ ∣ ( b ≠ 0 ) ||b||\leq ||A||\ ||x||,\ \frac{1}{||x||}\leq\frac{||A||}{||b||}\ (b\neq 0) ∣∣b∣∣≤∣∣A∣∣ ∣∣x∣∣, ∣∣x∣∣1≤∣∣b∣∣∣∣A∣∣ (b̸=0) \qquad 则
∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||\delta x||}{||x||}\leq||A^{-1}||\ ||A||\ \frac{||\delta b||}{||b||} ∣∣x∣∣∣∣δx∣∣≤∣∣A−1∣∣ ∣∣A∣∣ ∣∣b∣∣∣∣δb∣∣ \qquad 上式给出解的相对误差的上界,常数项 b b b的相对误差在解中可能放大了 ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ||A^{-1}||\ ||A|| ∣∣A−1∣∣ ∣∣A∣∣倍。
∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||\delta x||}{||x||}\leq \frac{||A^{-1}||\ ||A^{}||\ \frac{||\delta A||}{||A||}}{1-||A^{-1}||\ ||A^{}||\ \frac{||\delta A||}{||A||}} ∣∣x∣∣∣∣δx∣∣≤1−∣∣A−1∣∣ ∣∣A∣∣ ∣∣A∣∣∣∣δA∣∣∣∣A−1∣∣ ∣∣A∣∣ ∣∣A∣∣∣∣δA∣∣ \qquad 说明矩阵 A A A的相对误差在 ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||\delta A||}{||A||} ∣∣A∣∣∣∣δA∣∣在解中可能放大 ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ||A^{-1}||\ ||A|| ∣∣A−1∣∣ ∣∣A∣∣倍。 ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ||A^{-1}||\ ||A|| ∣∣A−1∣∣ ∣∣A∣∣实际刻画了解对原始数据变化的灵敏程度。条件数定义为 c o n d ( A ) v = ∣ ∣ A ∣ ∣ v ∣ ∣ A − 1 ∣ ∣ v ( v = 1 , 2 , ∞ ) cond (A)_{v}=||A||_{v}\ ||A^{-1}||_{v}(v=1,2,\infty) cond(A)v=∣∣A∣∣v ∣∣A−1∣∣v(v=1,2,∞)。条件数越大,方程组越病态。常见的条件数:
( 1 ) c o n d ( A ) ∞ = ∣ ∣ A − 1 ∣ ∣ ∞ ∣ ∣ A ∣ ∣ ∞ ( 2 ) c o n d ( A ) 2 = ∣ ∣ A ∣ ∣ 2 ∣ ∣ A − 1 ∣ ∣ 2 = λ m a x ( A T A ) λ m i n ( A A T ) (1)\ cond(A)_{\infty}=||A^{-1}||_{\infty}||A||_{\infty}\\ (2)\ cond(A)_{2}= ||A||_{2}||A^{-1}||_{2}=\sqrt{\frac{\lambda_{max}(A^{T}A)}{\lambda_{min}(AA^{T})}} (1) cond(A)∞=∣∣A−1∣∣∞∣∣A∣∣∞(2) cond(A)2=∣∣A∣∣2∣∣A−1∣∣2=λmin(AAT)λmax(ATA) \qquad 条件数的性质:
(1) 条件数 c o n d ( A ) v ≥ 1 cond(A)_{v}\ge 1 cond(A)v≥1
(2) c o n d ( c A ) v = c o n d ( A ) v cond(cA)_{v}=cond(A)_{v} cond(cA)v=cond(A)v
(3)如果 A A A是正交矩阵,则 c o n d ( A ) 2 = 1 cond(A)_{2}=1 cond(A)2=1,如果 R R R是正交矩阵则 c o n d ( R A ) 2 = c o n d ( A R ) 2 = c o n d ( A ) 2 cond(RA)_{2}=cond(AR)_{2}=cond(A)_{2} cond(RA)2=cond(AR)2=cond(A)2
\qquad 实际计算中发现病态关系:
(1) A A A的三角约化时出现小主元
(2) 行列式值相对很小
(3) 元素件数量级相差很大
\qquad 改善方法可以采用高精度的算术运算或者采用预处理方法。迭代改善法是用 x 1 x_{1} x1的剩余向量提高 x 1 x_{1} x1的精度。 A x = b Ax=b Ax=b为病态方程组并不过分病态。
1. 选 用 主 元 三 角 分 解 实 行 分 解 计 算 P A = ˙ L U , 计 算 解 x 1 1. 选用主元三角分解实行分解计算 PA\dot{=}LU,计算解x_{1} 1.选用主元三角分解实行分解计算PA=˙LU,计算解x1
2. 对 于 k = 1 , 2 , ⋯   , N 0 2. 对于k=1,2,\cdots,N_{0} 2.对于k=1,2,⋯,N0
( 1 ) 计 算 r k = b − A x k ( 使 用 原 始 A 及 双 精 度 计 算 ) (1) 计算r_{k}=b-Ax_{k}(使用原始A及双精度计算) (1)计算rk=b−Axk(使用原始A及双精度计算)
( 2 ) 求 解 L U d k = P r k , 即 L y = P r k , U d k = y (2) 求解LUd_{k}=Pr_{k},即Ly=Pr_{k},Ud_{k}=y (2)求解LUdk=Prk,即Ly=Prk,Udk=y
( 3 ) 如 果 ∣ ∣ d k ∣ ∣ ∞ / ∣ ∣ x k ∣ ∣ ∞ ≤ 1 0 − t , 输 出 k , x k , r k , 停 机 (3) 如果||d_{k}||_{\infty}/||x_{k}||_{\infty}\leq 10^{-t},输出k,x_{k},r_{k},停机 (3)如果∣∣dk∣∣∞/∣∣xk∣∣∞≤10−t,输出k,xk,rk,停机
( 4 ) 改 善 x k + 1 = x k + d k (4) 改善x_{k+1}=x_{k}+d_{k} (4)改善xk+1=xk+dk
\qquad 当系数矩阵不是过分病态时,迭代改善发可以提高近似解精度。当其非常病态时, x k x_{k} xk可能不收敛。