本篇文章适合个人复习翻阅,不建议新手入门使用
本专栏:数值分析复习 的前置知识主要有:数学分析、高等代数、泛函分析
线性方程组的直接解法
Gauss(高斯)消元法
设有线性方程组
{ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n = b 2 ⋮ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n \begin{cases} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1\\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=b_2\\ \vdots\\ a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n\\ \end{cases} ⎩
⎨
⎧a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋮an1x1+an2x2+⋯+annxn=bn
或写为矩阵形式
( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ a n 1 a n 2 ⋯ a n n ) ( x 1 x 2 ⋮ x n ) = ( b 1 b 2 ⋮ b n ) \begin{pmatrix} a_{11}&a_{12}&\cdots&a_{1n}\\ a_{21}&a_{22}&\cdots&a_{2n}\\ \vdots\\ a_{n1}&a_{n2}&\cdots&a_{nn}\\ \end{pmatrix}\begin{pmatrix} x_1\\x_2\\\vdots\\x_n \end{pmatrix}=\begin{pmatrix} b_1\\b_2\\\vdots\\b_n \end{pmatrix}
a11a21⋮an1a12a22an2⋯⋯⋯a1na2nann
x1x2⋮xn
=
b1b2⋮bn
简记为 A x = b Ax=b Ax=b
解线性方程组的经典算法是以下所称的“Guass消元法”
定义:Guass(高斯)消元法
从第一列开始,依次将系数矩阵 A A A 每列对角线以下的元素变为零,得到一个上三角阵;方法是用该列对角线元素所在的行乘以相应倍数消去下面几行;
方程组化为
( a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) a 22 ( 2 ) ⋯ a 2 n ( 2 ) ⋱ a n n ( n ) ) ( x 1 x 2 ⋮ x n ) = ( b 1 ( 1 ) b 2 ( 2 ) ⋮ b n ( n ) ) \begin{pmatrix} a_{11}^{(1)}&a_{12}^{(1)}&\cdots&a_{1n}^{(1)}\\ &a_{22}^{(2)}&\cdots&a_{2n}^{(2)}\\ &&\ddots&\\ &&&a_{nn}^{(n)}\\ \end{pmatrix}\begin{pmatrix} x_1\\x_2\\\vdots\\x_n \end{pmatrix}=\begin{pmatrix} b_1^{(1)}\\b_2^{(2)}\\\vdots\\b_n^{(n)} \end{pmatrix}
a11(1)a12(1)a22(2)⋯⋯⋱a1n(1)a2n(2)ann(n)
x1x2⋮xn
=
b1(1)b2(2)⋮bn(n)
这一步称为消元
然后依次计算 x n , x n − 1 , … , x 1 x_n,x_{n-1},\dots,x_1 xn,xn−1,…,x1,得到求解公式
{ x n = b n ( n ) a n n ( n ) x k = ( b k ( k ) − ∑ j = k + 1 n a k j ( k ) x j ) / a k k ( k ) , k = n − 1 , n − 2 , … , 1 \begin{cases} x_n=\frac{b_n^{(n)}}{a_{nn}^{(n)}}\\ x_k=(b_k^{(k)}-\sum\limits_{j=k+1}^na_{kj}^{(k)}x_j)/a_{kk}^{(k)},k=n-1,n-2,\dots,1 \end{cases} ⎩
⎨
⎧xn=ann(n)bn(n)xk=(bk(k)−j=k+1∑nakj(k)xj)/akk(k),k=n−1,n−2,…,1
这一步称为回代
Guass消元法的改进:选(列)主元的高斯消元法
一般的Guass消元法的缺点是:无法处理对角线元素为零的矩阵,原因是零无法做分母;并且如果对角线上的元素绝对值较小,可能会产生数量级较大的数,计算结果可能不稳定,从而造成较大误差;因此采用如下称为选主元的高斯消元法,其在原先方法的基础上,在对第 k k k 列进行消元时,考虑第 k k k 列的从第 k k k 行到最后一行的元素,选出绝对值最大的元素,将该元素所在的行与第 k k k 行交换,再进行消元
高斯消元法与矩阵的LU分解
高斯消元法的矩阵表示
高斯消元法的消元过程相当于对 A A A 依次左乘 n − 1 {n-1} n−1 个下三角阵 L 1 , … , L n − 1 L_1,\dots,L_{n-1} L1,…,Ln−1,使其成为上三角阵U,记 L − 1 = L n − 1 ⋯ L 1 L^{-1}=L_{n-1}\cdots L_1 L−1=Ln−1⋯L1
L 1 = ( 1 ∗ 1 ∗ 1 ⋮ ⋱ ∗ 1 ) , L 2 = ( 1 1 ∗ 1 ⋮ ⋱ ∗ 1 ) , … , L n − 1 = ( 1 1 ⋱ 1 ∗ 1 ) L_1=\begin{pmatrix} 1&&&&\\ *&1&&&\\ *&&1&&\\ \vdots&&&\ddots&\\ *&&&&1\\ \end{pmatrix},L_2=\begin{pmatrix} 1&&&&\\ &1&&&\\ &*&1&&\\ &\vdots&&\ddots&\\ &*&&&1\\ \end{pmatrix},\dots,L_{n-1}=\begin{pmatrix} 1&&&&\\ &1&&&\\ &&\ddots&&\\ &&&1&\\ &&&*&1\\ \end{pmatrix} L1=
1∗∗⋮∗11⋱1
,L2=
11∗⋮∗1⋱