文章目录
线性方程组的解法
高斯消元法与选主元技巧
基本思想:通过初等行变换,将一个方程乘以某个常数,一个方程加上另一个方程的常数倍等,减少方程中的未知数数目,最后化成三角形方程组,从而得到所需要的解。
三角形方程组及其解法
上三角形方程组:
{
a
11
x
1
+
a
12
x
2
+
⋯
+
a
1
n
x
n
=
b
1
a
22
x
2
+
⋯
+
a
2
n
x
n
=
b
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_{22}x_2+\cdots+a_{2n}x_n=b_2\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \cdots \ \ \cdots\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ a_{nn}x_n=b_n\end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧a11x1+a12x2+⋯+a1nxn=b1 a22x2+⋯+a2nxn=b2 ⋯ ⋯ annxn=bn
用回代的方法求解:先从第n个方程求出
x
n
x_n
xn,代入第n-1个方程求出
x
n
−
1
x_{n-1}
xn−1,依次类推,可求出所有的
x
i
x_i
xi:
{
x
n
=
b
n
a
n
n
x
i
=
b
i
−
∑
j
=
i
+
1
n
a
i
j
x
j
a
i
i
要
求
a
i
i
(
i
)
≠
0
\begin{cases}x_n=\frac{b_n}{a_{nn}}\\x_i=\frac{b_i-\sum_{j=i+1}^na_{ij}x_j}{a_{ii}}\end{cases}\\要求a^{(i)}_{ii}\neq0
{xn=annbnxi=aiibi−∑j=i+1naijxj要求aii(i)=0
类似的,下三角形方程组:
{
a
11
x
1
=
b
1
a
21
x
1
+
a
22
x
2
=
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 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =b_1\\a_{21}x_1+a_{22}x_2 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =b_2\\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \cdots \ \ \cdots \\a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n\end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧a11x1 =b1a21x1+a22x2 =b2 ⋯ ⋯an1x1+an2x2+⋯+annxn=bn
用前代的方法求解:先从第1个方程求出
x
1
x_1
x1,代入第2个方程求出
x
2
x_2
x2,依次类推,可求出所有的
x
i
x_i
xi:
{
x
1
=
b
1
a
11
x
i
=
b
i
−
∑
j
=
1
i
−
1
a
i
j
x
j
a
i
i
\begin{cases}x_1=\frac{b_1}{a_{11}}\\x_i=\frac{b_i-\sum_{j=1}^{i-1}a_{ij}x_j}{a_{ii}}\end{cases}
{x1=a11b1xi=aiibi−∑j=1i−1aijxj
回代法和前代法的计算量都是
1
2
n
(
n
+
1
)
\frac{1}{2}n(n+1)
21n(n+1) 次乘除运算。
高斯消元法
高斯消元法分为两大步:消元和回代
(1)将系数矩阵A经过一系列的初等行变换变成右上三角矩阵,其常向量b也同时作相应变换,即
[
a
11
a
12
⋯
a
1
n
b
1
a
21
a
22
⋯
a
2
n
b
2
⋮
⋮
⋮
a
n
1
a
n
2
⋯
a
n
n
b
n
]
=
[
a
11
(
1
)
a
12
(
1
)
⋯
a
1
n
(
1
)
b
1
(
1
)
a
21
(
1
)
a
22
(
1
)
⋯
a
2
n
(
1
)
b
2
(
1
)
⋮
⋮
⋮
a
n
1
(
1
)
a
n
2
(
1
)
⋯
a
n
n
(
1
)
b
n
(
1
)
]
→
[
a
11
(
1
)
a
12
(
1
)
⋯
a
1
n
(
1
)
b
1
(
1
)
0
a
22
(
2
)
⋯
a
2
n
(
2
)
b
2
(
2
)
⋮
⋮
⋮
0
a
n
2
(
2
)
⋯
a
n
n
(
2
)
b
n
(
2
)
]
=
[
A
(
2
)
b
(
2
)
]
\left[\begin{matrix}a_{11}& a_{12} & \cdots&a_{1n}&b_1\\a_{21}& a_{22} & \cdots&a_{2n}&b_2\\\vdots&\vdots&&\vdots\\a_{n1}& a_{n2} & \cdots&a_{nn}&b_n\end{matrix}\right]=\left[\begin{matrix}a_{11}^{(1)}& a_{12} ^{(1)}& \cdots&a_{1n}^{(1)}&b_1^{(1)}\\a_{21}^{(1)}& a_{22}^{(1)} & \cdots&a_{2n}^{(1)}&b_2^{(1)}\\\vdots&\vdots&&\vdots\\a_{n1}^{(1)}& a_{n2}^{(1)} & \cdots&a_{nn}^{(1)}&b_n^{(1)}\end{matrix}\right]\rightarrow\left[\begin{matrix}a_{11}^{(1)}& a_{12} ^{(1)}& \cdots&a_{1n}^{(1)}&b_1^{(1)}\\0& a_{22}^{(2)} & \cdots&a_{2n}^{(2)}&b_2^{(2)}\\\vdots&\vdots&&\vdots\\0& a_{n2}^{(2)} & \cdots&a_{nn}^{(2)}&b_n^{(2)}\end{matrix}\right]=\left[\begin{matrix}A^{(2)}&b^{(2)}\end{matrix}\right]
⎣⎢⎢⎢⎡a11a21⋮an1a12a22⋮an2⋯⋯⋯a1na2n⋮annb1b2bn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡a11(1)a21(1)⋮an1(1)a12(1)a22(1)⋮an2(1)⋯⋯⋯a1n(1)a2n(1)⋮ann(1)b1(1)b2(1)bn(1)⎦⎥⎥⎥⎥⎤→⎣⎢⎢⎢⎢⎡a11(1)0⋮0a12(1)a22(2)⋮an2(2)⋯⋯⋯a1n(1)a2n(2)⋮ann(2)b1(1)b2(2)bn(2)⎦⎥⎥⎥⎥⎤=[A(2)b(2)]
其中第i行加上第1行的
−
m
i
1
-m_{i1}
−mi1 倍
m
i
1
=
a
i
1
(
1
)
a
11
(
1
)
a
i
j
(
2
)
=
a
i
j
(
1
)
−
m
i
1
a
1
j
(
1
)
b
i
(
2
)
=
b
i
(
1
)
−
m
i
1
b
1
(
1
)
m_{i1}=\frac{a_{i1}^{(1)}}{a_{11}^{(1)}}\\a_{ij}^{(2)}=a_{ij}^{(1)}-m_{i1}a_{1j}^{(1)}\\b_{i}^{(2)}=b_{i}^{(1)}-m_{i1}b_1^{(1)}
mi1=a11(1)ai1(1)aij(2)=aij(1)−mi1a1j(1)bi(2)=bi(1)−mi1b1(1)
对
A
(
2
)
x
=
b
(
2
)
A^{(2)}x=b^{(2)}
A(2)x=b(2) 再进行消元可得
[
A
(
3
)
b
(
3
)
]
=
[
a
11
(
1
)
a
12
(
1
)
a
13
(
1
)
⋯
a
1
n
(
1
)
b
1
(
1
)
0
a
22
(
2
)
a
23
(
2
)
⋯
a
2
n
(
2
)
b
2
(
2
)
0
0
a
33
(
3
)
⋯
a
3
n
(
3
)
b
3
(
3
)
⋮
⋮
⋮
⋮
⋮
0
0
a
n
3
(
3
)
⋯
a
n
n
(
3
)
b
n
(
3
)
]
\left[\begin{matrix}A^{(3)}&b^{(3)}\end{matrix}\right]=\left[\begin{matrix}a_{11}^{(1)}& a_{12} ^{(1)}& a_{13} ^{(1)}&\cdots&a_{1n}^{(1)}&b_1^{(1)}\\0& a_{22}^{(2)} &a_{23} ^{(2)}& \cdots&a_{2n}^{(2)}&b_2^{(2)}\\0&0&a_{33}^{(3)}&\cdots&a_{3n}^{(3)}&b_3^{(3)}\\\vdots&\vdots&\vdots&&\vdots&\vdots\\0&0&a_{n3}^{(3)}&\cdots&a_{nn}^{(3)}&b_n^{(3)}\end{matrix}\right]
[A(3)b(3)]=⎣⎢⎢⎢⎢⎢⎢⎡a11(1)00⋮0a12(1)a22(2)0⋮0a13(1)a23(2)a33(3)⋮an3(3)⋯⋯⋯⋯a1n(1)a2n(2)a3n(3)⋮ann(3)b1(1)b2(2)b3(3)⋮bn(3)⎦⎥⎥⎥⎥⎥⎥⎤
其中第i行加上第2行的
−
m
i
2
-m_{i2}
−mi2 倍
m
i
2
=
a
i
2
(
2
)
a
22
(
2
)
a
i
j
(
3
)
=
a
i
j
(
2
)
−
m
i
2
a
2
j
(
2
)
b
i
(
3
)
=
b
i
(
2
)
−
m
i
2
b
2
(
2
)
m_{i2}=\frac{a_{i2}^{(2)}}{a_{22}^{(2)}}\\a_{ij}^{(3)}=a_{ij}^{(2)}-m_{i2}a_{2j}^{(2)}\\b_{i}^{(3)}=b_{i}^{(2)}-m_{i2}b_2^{(2)}
mi2=a22(2)ai2(2)aij(3)=aij(2)−mi2a2j(2)bi(3)=bi(2)−mi2b2(2)
重复上述过程,第k次消元时:
m
i
k
=
a
i
k
(
k
)
a
k
k
(
k
)
a
i
j
(
k
+
1
)
=
a
i
j
(
k
)
−
m
i
k
a
k
j
(
k
)
b
i
(
k
+
1
)
=
b
i
(
k
)
−
m
i
k
b
k
(
k
)
m_{ik}=\frac{a_{ik}^{(k)}}{a_{kk}^{(k)}}\\a_{ij}^{(k+1)}=a_{ij}^{(k)}-m_{ik}a_{kj}^{(k)}\\b_{i}^{(k+1)}=b_{i}^{(k)}-m_{ik}b_k^{(k)}
mik=akk(k)aik(k)aij(k+1)=aij(k)−mikakj(k)bi(k+1)=bi(k)−mikbk(k)
得到与
A
x
=
b
Ax=b
Ax=b 同解的方程组:
A
(
k
+
1
)
x
=
b
(
k
+
1
)
,
k
=
1
,
2
,
⋯
,
n
−
1
A^{(k+1)}x=b^{(k+1)},k=1,2,\cdots,n-1
A(k+1)x=b(k+1),k=1,2,⋯,n−1
保证高斯消元法顺利进行的条件:各次主元素 a i i ( i ) ≠ 0 a_{ii}^{(i)}\neq0 aii(i)=0,主元 a i i ( i ) ≠ 0 a_{ii}^{(i)}\neq0 aii(i)=0 的充要条件是主子矩阵 A i ≠ 0 A_i\neq0 Ai=0 非奇异。
定理1:设 A = [ a i j ( k ) ] ∈ R n × n , b = ( b 1 ( 1 ) , b 2 ( 1 ) , ⋯ , b n ( 1 ) ) ∈ R A=[a_{ij}^{(k)}]\in R^{n\times n},b=(b_1^{(1)},b_2^{(1)},\cdots,b_n^{(1)})\in R A=[aij(k)]∈Rn×n,b=(b1(1),b2(1),⋯,bn(1))∈R。若约化主元 a k k ( k ) ≠ 0 a_{kk}^{(k)}\neq0 akk(k)=0,则可通过高斯消元法将方程组 A x = b Ax=b Ax=b 约化求解,计算公式如下:
(1)消元计算
m i k = a i k ( k ) a k k ( k ) a i j ( k + 1 ) = a i j ( k ) − m i k a k j ( k ) b i ( k + 1 ) = b i ( k ) − m i k b k ( k ) m_{ik}=\frac{a_{ik}^{(k)}}{a_{kk}^{(k)}}\\a_{ij}^{(k+1)}=a_{ij}^{(k)}-m_{ik}a_{kj}^{(k)}\\b_{i}^{(k+1)}=b_{i}^{(k)}-m_{ik}b_k^{(k)} mik=akk(k)aik(k)aij(k+1)=aij(k)−mikakj(k)bi(k+1)=bi(k)−mikbk(k)
(2)回代求解
{ x n = b n ( n ) / a n n ( n ) x i = ( b i ( i ) − ∑ j = i + 1 n a i j ( i ) x j ) / a i i ( i ) \begin{cases}x_n={b_n^{(n)}}/{a_{nn}^{(n)}}\\x_i=({b_i^{(i)}-\sum_{j=i+1}^na_{ij}^{(i)}x_j})/{a_{ii}^{(i)}}\end{cases} {xn=bn(n)/ann(n)xi=(bi(i)−∑j=i+1naij(i)xj)/aii(i)
高斯消元法算法分析:
(1)算法的时间复杂度:共需乘除法运算的总数为
S
=
1
3
n
3
+
n
2
−
1
3
n
=
O
(
n
3
)
S=\frac{1}{3}n^3+n^2-\frac{1}{3}n=O(n^3)
S=31n3+n2−31n=O(n3)
(2)算法的空间复杂度:符合原地工作的原则。
(3)数值计算的稳定性:当 ∣ a k k ( k ) ∣ = 0 |a_{kk}^{(k)}|=0 ∣akk(k)∣=0 ,运算会中断,即使不等于0,但当 ∣ a k k ( k ) ∣ |a_{kk}^{(k)}| ∣akk(k)∣ 很小时,一方面会损失精度,另一方面还可能导致商太大使计算产生溢出。所以,高斯消元法对数值计算是不稳定的。
列主元消元法
列主元的思想是: 当变换到第k步时,从第k列 a k k ( k ) a_{kk}^{(k)} akk(k) 及以下的各元素中选取绝对值最大者,然后通过行变换将它交换到主元素 a k k ( k ) a_{kk}^{(k)} akk(k) 的位置(k,k)上。即选取 a i k k ( k ) a_{i_kk}^{(k)} aikk(k),满足: ∣ a i k k ( k ) ∣ = m a x k ≤ i ≤ n ∣ a i k ( k ) ∣ |a_{i_kk}^{(k)}|=max_{k\leq i\leq n}|a_{ik}^{(k)}| ∣aikk(k)∣=maxk≤i≤n∣aik(k)∣,进行 k k k 行与 i k i_k ik 行互换。
采用列主元的高斯消元法是不影响求解结果的。
但列主元不能保证当前的主元素是同一行(即第k行)中的绝对值最大者,其计算过程还是不稳定的,不适于求解大规模的线性方程组。
全选主元(简称全主元) :基本思想是当变换到第k步时,从系数矩阵右下角(n-k-1)阶矩阵中选取绝对值最大的元素,通过行、列变换将它交换到主元素 a k k ( k ) a_{kk}^{(k)} akk(k) 的位置(k,k)上。
虽然行交换不影响最后求解的结果,但列交换将会导致最后结果(即解向量)中对应未知数的次序混乱。 必须在选主元过程中记住所进行的一切列交换,以便对最后结果进行恢复。
三角分解法
基本思想:将
A
A
A 分解成两个三角形矩阵
L
、
U
L、U
L、U 的乘积
A
=
L
U
A=LU
A=LU ,线性方程组
A
x
=
b
Ax=b
Ax=b 归结为
{
L
y
=
b
U
x
=
y
\begin{cases}Ly=b\\Ux=y\end{cases}
{Ly=bUx=y
这两个方程可以通过前代法和回代法求解。
矩阵的三角分解
常用的矩阵三角分解形式: A = L U A=LU A=LU,称为矩阵 A A A 的 L U LU LU 分解。若 L L L 是单位下三角阵, U U U 是上三角阵,称为杜利特尔分解;若 L L L 是下三角阵, U U U 是单位上三角阵,则称为克劳特分解。
从高斯消元法过程可知,高斯消元法就是对系数矩阵
A
A
A 左乘n-1个初等单位下三角矩阵:
A
(
k
+
1
)
=
L
k
A
(
k
)
,
k
=
1
,
2
,
⋯
,
n
−
1
A^{(k+1)}=L_kA^{(k)},k=1,2,\cdots,n-1
A(k+1)=LkA(k),k=1,2,⋯,n−1,
m
i
k
=
a
i
k
(
k
)
a
k
k
(
k
)
,
a
k
k
(
k
)
≠
0
,
i
=
k
+
1
,
k
+
2
,
⋯
,
n
m_{ik}=\frac{a_{ik}^{(k)}}{a_{kk}^{(k)}},a_{kk}^{(k)}\neq 0,i=k+1,k+2,\cdots,n
mik=akk(k)aik(k),akk(k)=0,i=k+1,k+2,⋯,n。
L
k
=
[
1
⋱
1
−
m
k
+
1
,
k
1
⋮
⋱
−
m
n
k
1
]
k
=
1
,
2
,
⋯
,
n
−
1
L_k=\left[\begin{matrix}1&&&&&\\&\ddots\\&&1\\&&-m_{k+1,k}&1\\&&\vdots&&\ddots\\&&-m_{nk}&&&1\\\end{matrix}\right]\ \ \ \ \ k=1,2,\cdots,n-1
Lk=⎣⎢⎢⎢⎢⎢⎢⎢⎡1⋱1−mk+1,k⋮−mnk1⋱1⎦⎥⎥⎥⎥⎥⎥⎥⎤ k=1,2,⋯,n−1
得:
A
(
n
)
=
L
n
−
1
L
n
−
2
⋯
L
1
A
b
(
n
)
=
L
n
−
1
L
n
−
2
⋯
L
1
b
A
=
(
L
1
−
1
L
2
−
1
⋯
L
n
−
1
−
1
)
A
(
n
)
=
L
U
A^{(n)}=L_{n-1}L_{n-2}\cdots L_1A\\b^{(n)}=L_{n-1}L_{n-2}\cdots L_1b\\A=(L_1^{-1}L_2^{-1}\cdots L_{n-1}^{-1})A^{(n)}=LU
A(n)=Ln−1Ln−2⋯L1Ab(n)=Ln−1Ln−2⋯L1bA=(L1−1L2−1⋯Ln−1−1)A(n)=LU
其中
{
L
=
L
1
−
1
L
2
−
1
⋯
L
n
−
1
−
1
U
=
A
(
n
)
L
k
−
1
=
[
1
⋱
1
m
k
+
1
,
k
1
⋮
⋱
m
n
k
1
]
L
=
[
1
m
21
1
m
31
m
32
⋱
⋮
⋮
⋱
1
m
n
1
m
n
2
m
n
,
n
−
1
1
]
U
=
A
(
n
)
=
[
a
11
(
1
)
a
12
(
1
)
⋯
a
1
n
(
1
)
0
a
22
(
2
)
⋯
a
2
n
(
2
)
⋮
⋮
⋮
0
0
⋯
a
n
n
(
n
)
]
\begin{cases}L=L_1^{-1}L_2^{-1}\cdots L_{n-1}^{-1}\\U=A^{(n)}\end{cases}\\L_k^{-1}=\left[\begin{matrix}1&&&&&\\&\ddots\\&&1\\&&m_{k+1,k}&1\\&&\vdots&&\ddots\\&&m_{nk}&&&1\\\end{matrix}\right]\\L=\left[\begin{matrix}1&&&&&\\m_{21}&1&&&\\m_{31}&m_{32}&\ddots&&\\\vdots&\vdots&\ddots&1&&\\m_{n1}&m_{n2}&&m_{n,n-1}&1\end{matrix}\right]\\U=A^{(n)}=\left[\begin{matrix}a_{11}^{(1)}& a_{12} ^{(1)}& \cdots&a_{1n}^{(1)}\\0& a_{22}^{(2)}& \cdots&a_{2n}^{(2)}\\\vdots&\vdots&&\vdots\\0&0&\cdots&a_{nn}^{(n)}\end{matrix}\right]
{L=L1−1L2−1⋯Ln−1−1U=A(n)Lk−1=⎣⎢⎢⎢⎢⎢⎢⎢⎡1⋱1mk+1,k⋮mnk1⋱1⎦⎥⎥⎥⎥⎥⎥⎥⎤L=⎣⎢⎢⎢⎢⎢⎡1m21m31⋮mn11m32⋮mn2⋱⋱1mn,n−11⎦⎥⎥⎥⎥⎥⎤U=A(n)=⎣⎢⎢⎢⎢⎡a11(1)0⋮0a12(1)a22(2)⋮0⋯⋯⋯a1n(1)a2n(2)⋮ann(n)⎦⎥⎥⎥⎥⎤
上述的LU分解,被称为杜利特尔(Doolittle)分解。
定理2(矩阵三角分解基本定理):设 A ∈ R n × n A\in R^{n\times n} A∈Rn×n,若 A A A 的顺序主子式 d e t ( A k ) ≠ 0 det(A_k)\neq0 det(Ak)=0,则存在唯一的杜利特尔分解: A = L U A=LU A=LU,其中 L L L 为单位下三角形矩阵, U U U 为非奇异的上三角形矩阵。
证明:由定理1和:
d e t ( A k ) = ∣ a 11 a 12 ⋯ a 1 k a 21 a 22 ⋯ a 2 k ⋮ ⋮ ⋮ a k 1 a k 2 ⋯ a k k ∣ = a 11 ( 1 ) a 22 ( 2 ) ⋯ a k k ( k ) , a k k ( k ) ≠ 0 det(A_k)=\left|\begin{matrix}a_{11}& a_{12} & \cdots&a_{1k}\\a_{21}& a_{22} & \cdots&a_{2k}\\\vdots&\vdots&&\vdots\\a_{k1}& a_{k2} & \cdots&a_{kk}\end{matrix}\right|=a_{11}^{(1)}a_{22}^{(2)}\cdots a_{kk}^{(k)},a_{kk}^{(k)}\neq 0 det(Ak)=∣∣∣∣∣∣∣∣∣a11a21⋮ak1a12a22⋮ak2⋯⋯⋯a1ka2k⋮akk∣∣∣∣∣∣∣∣∣=a11(1)a22(2)⋯akk(k),akk(k)=0
可知杜利特尔分解的存在性。唯一性: 若 A A A 存在两个杜利特尔分解: A = L 1 U 1 , A = L 2 U 2 A=L_1U_1,A=L_2U_2 A=L1U1,A=L2U2,则 L 1 U 1 = L 2 U 2 , L 2 − 1 L 1 = U 2 U 1 − 1 L_1U_1=L_2U_2,L_2^{-1}L_1=U_2U_1^{-1} L1U1=L2U2,L2−1L1=U2U1−1,由于 L 2 − 1 L 1 L_2^{-1}L_1 L2−1L1 是单位上三角形矩阵,可知
L 2 − 1 L 1 = U 2 U 1 − 1 = I L_2^{-1}L_1=U_2U_1^{-1}=I L2−1L1=U2U1−1=I
所以, L 1 = L 2 , U 1 = U 2 L_1=L_2,U_1=U_2 L1=L2,U1=U2,得唯一性。
(矩阵形式)杜利特尔分解法
设实矩阵 A A A 的各阶主子式 d e t ( A j ) ≠ 0 det(A_j)\neq0 det(Aj)=0,则由定理2知,存在唯一的杜利特尔分解: A = L U A=LU A=LU
其中
L
=
[
1
l
21
1
l
31
l
32
1
⋮
⋮
⋱
⋱
l
n
1
l
n
2
⋯
l
n
,
n
−
1
1
]
,
U
=
[
u
11
u
12
u
13
⋯
u
1
n
u
22
u
23
⋯
u
2
n
u
33
⋯
u
3
n
⋱
⋮
u
n
n
]
L=\left[\begin{matrix}1&&&&\\l_{21}&1&&&\\l_{31}&l_{32}&1&&\\\vdots&\vdots&\ddots&\ddots&\\l_{n1}&l_{n2}&\cdots&l_{n,n-1}&1\end{matrix}\right]\ \ ,U=\left[\begin{matrix}u_{11}&u_{12}&u_{13}&\cdots&u_{1n}\\&u_{22}&u_{23}&\cdots&u_{2n}\\&&u_{33}&\cdots&u_{3n}\\&&&\ddots&\vdots\\&&&&u_{nn}\end{matrix}\right]
L=⎣⎢⎢⎢⎢⎢⎡1l21l31⋮ln11l32⋮ln21⋱⋯⋱ln,n−11⎦⎥⎥⎥⎥⎥⎤ ,U=⎣⎢⎢⎢⎢⎢⎡u11u12u22u13u23u33⋯⋯⋯⋱u1nu2nu3n⋮unn⎦⎥⎥⎥⎥⎥⎤
由矩阵相等的条件可得:
(1)由 a 1 i = u 1 i a_{1i}=u_{1i} a1i=u1i,得: u 1 i = a 1 i ( i = 1 , 2 , ⋯ , n ) u_{1i}=a_{1i}\ (i=1,2,\cdots,n) u1i=a1i (i=1,2,⋯,n)。由 a i 1 = l i 1 u 11 a_{i1}=l_{i1}u_{11} ai1=li1u11,得: l i 1 = a i 1 / u 11 ( i = 2 , 3 , ⋯ , n ) l_{i1}=a_{i1}/u_{11}\ (i=2,3,\cdots,n) li1=ai1/u11 (i=2,3,⋯,n)。
(2)由 a 2 i = l 21 u 1 i + u 2 i a_{2i}=l_{21}u_{1i}+u_{2i} a2i=l21u1i+u2i,得: u 2 i = a 2 i − l 21 u 1 i ( 1 = 2 , 3 , ⋯ , n ) u_{2i}=a_{2i}-l_{21}u_{1i}(1=2,3,\cdots,n) u2i=a2i−l21u1i(1=2,3,⋯,n)。由 a i 2 = l i 1 u 12 + l i 2 u 22 a_{i2}=l_{i1}u_{12}+l_{i2}u_{22} ai2=li1u12+li2u22,得: l i 2 = ( a i 2 − l i 1 u 12 ) / u 22 ( i = 3 , 4 , ⋯ , n ) l_{i2}=(a_{i2}-l_{i1}u_{12})/u_{22}(i=3,4,\cdots,n) li2=(ai2−li1u12)/u22(i=3,4,⋯,n)。
(3)在求出
U
U
U 的前k-1行与
L
L
L 的前k-1列后,
U
U
U 的k行、
L
L
L 的k列元为:
u
k
i
=
a
k
i
−
∑
j
=
1
k
−
1
l
k
j
u
j
i
(
i
=
k
,
k
+
1
,
⋯
,
n
)
l
i
k
=
(
a
i
k
−
∑
j
=
1
k
−
1
l
i
j
u
j
k
)
/
u
k
k
(
i
=
k
+
1
,
k
+
2
,
⋯
,
n
)
u_{ki}=a_{ki}-\sum_{j=1}^{k-1}l_{kj}u_{ji}(i=k,k+1,\cdots,n)\\l_{ik}=(a_{ik}-\sum_{j=1}^{k-1}l_{ij}u_{jk})/u_{kk}(i=k+1,k+2,\cdots,n)
uki=aki−j=1∑k−1lkjuji(i=k,k+1,⋯,n)lik=(aik−j=1∑k−1lijujk)/ukk(i=k+1,k+2,⋯,n)
杜利特尔分解的紧凑格式:定义Q:
Q
=
L
+
U
−
I
=
[
u
11
u
12
⋯
u
1
k
⋯
u
1
n
l
21
u
22
⋯
u
2
k
⋯
u
2
n
⋮
⋮
⋮
⋮
l
k
1
l
k
2
⋯
u
k
k
⋯
u
k
n
⋮
⋮
⋮
⋮
l
n
1
l
n
2
⋯
l
n
k
⋯
n
n
n
]
Q=L+U-I=\left[\begin{matrix}u_{11}&u_{12}&\cdots&u_{1k}&\cdots&u_{1n}\\l_{21}&u_{22}&\cdots&u_{2k}&\cdots&u_{2n}\\\vdots&\vdots&&\vdots&&\vdots\\l_{k1}&l_{k2}&\cdots&u_{kk}&\cdots&u_{kn}\\\vdots&\vdots&&\vdots&&\vdots\\l_{n1}&l_{n2}&\cdots&l_{nk}&\cdots&n_{nn}\end{matrix}\right]
Q=L+U−I=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡u11l21⋮lk1⋮ln1u12u22⋮lk2⋮ln2⋯⋯⋯⋯u1ku2k⋮ukk⋮lnk⋯⋯⋯⋯u1nu2n⋮ukn⋮nnn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
只要求出Q矩阵,便可得到矩阵
A
A
A 的三角分解
L
U
LU
LU。
步骤(重要): a i k / a k k → a i k , i = k + 1 , k + 2 , ⋯ , n , a i j − a i k a k j → a i j , i = k + 1 , ⋯ , n , j = k + 1 , ⋯ , n a_{ik}/a_{kk}\rightarrow a_{ik},i=k+1,k+2,\cdots,n,a_{ij}-a_{ik}a_{kj}\rightarrow a_{ij},i=k+1,\cdots,n,j=k+1,\cdots,n aik/akk→aik,i=k+1,k+2,⋯,n,aij−aikakj→aij,i=k+1,⋯,n,j=k+1,⋯,n
之后用: L Y = b , U X = Y LY=b,UX=Y LY=b,UX=Y,解方程组。
解三对角线方程组的追赶法
A = [ a 11 a 12 a 21 a 22 a 23 0 a 32 a 33 a 34 ⋱ ⋱ ⋱ 0 a n − 1 , n − 2 a n − 1 , n − 1 a n − 1 , n a n , n − 1 a n n ] A=\left[\begin{matrix}a_{11}&a_{12}&&&&\\a_{21}&a_{22}&a_{23}&&0&&\\&a_{32}&a_{33}&a_{34}&&\\&&\ddots&\ddots&\ddots&&\\&&0&a_{n-1,n-2}&a_{n-1,n-1}&a_{n-1,n}\\&&&&a_{n,n-1}&a_{nn}\end{matrix}\right] A=⎣⎢⎢⎢⎢⎢⎢⎡a11a21a12a22a32a23a33⋱0a34⋱an−1,n−20⋱an−1,n−1an,n−1an−1,nann⎦⎥⎥⎥⎥⎥⎥⎤
称线性方程组 A x = b Ax=b Ax=b 为三对角线方程组。
若
A
A
A 满足:
{
∣
a
11
∣
>
∣
a
12
∣
>
0
∣
a
i
i
∣
≥
∣
a
i
,
i
−
1
∣
+
∣
a
i
,
i
+
1
∣
>
0
,
i
=
2
,
3
,
⋯
,
n
−
1
∣
a
n
n
∣
>
∣
a
n
,
n
−
1
∣
>
0
\begin{cases}|a_{11}|>|a_{12}|>0\\|a_{ii}|\geq|a_{i,i-1}|+|a_{i,i+1}|>0,i=2,3,\cdots,n-1\\|a_{nn}|>|a_{n,n-1}|>0\end{cases}
⎩⎪⎨⎪⎧∣a11∣>∣a12∣>0∣aii∣≥∣ai,i−1∣+∣ai,i+1∣>0,i=2,3,⋯,n−1∣ann∣>∣an,n−1∣>0
则称 A x = b Ax=b Ax=b 为对角占优的三对角线方程组。
设
A
x
=
b
Ax=b
Ax=b 进行LU分解:
A
=
L
U
A=LU
A=LU:
L
=
[
1
l
21
1
0
l
32
1
⋮
⋱
⋱
⋱
0
⋯
0
l
n
,
n
−
1
1
]
,
U
=
[
u
11
a
12
0
⋯
0
u
22
a
23
⋯
0
⋱
⋱
u
n
−
1
,
n
−
1
a
n
−
1
,
n
u
n
n
]
L=\left[\begin{matrix}1&&&&\\l_{21}&1&&&\\0&l_{32}&1&&\\\vdots&\ddots&\ddots&\ddots&\\0&\cdots&0&l_{n,n-1}&1\end{matrix}\right]\ \ ,U=\left[\begin{matrix}u_{11}&a_{12}&0&\cdots&0\\&u_{22}&a_{23}&\cdots&0\\&&\ddots&\ddots\\&&&u_{n-1,n-1}&a_{n-1,n}\\&&&&u_{nn}\end{matrix}\right]
L=⎣⎢⎢⎢⎢⎢⎡1l210⋮01l32⋱⋯1⋱0⋱ln,n−11⎦⎥⎥⎥⎥⎥⎤ ,U=⎣⎢⎢⎢⎢⎡u11a12u220a23⋱⋯⋯⋱un−1,n−100an−1,nunn⎦⎥⎥⎥⎥⎤
由矩阵乘法和矩阵相等得
{
u
11
=
a
11
l
i
,
i
−
1
=
a
i
,
i
−
1
/
u
i
−
1
,
i
−
1
u
i
i
=
a
i
i
−
l
i
,
i
−
1
a
i
−
1
,
i
(
i
=
2
,
3
,
⋯
,
n
)
\begin{cases}u_{11}=a_{11}\\l_{i,i-1}=a_{i,i-1}/u_{i-1,i-1}\\u_{ii}=a_{ii}-l_{i,i-1}a_{i-1,i}\end{cases}\ \ \ \ \ \ (i=2,3,\cdots,n)
⎩⎪⎨⎪⎧u11=a11li,i−1=ai,i−1/ui−1,i−1uii=aii−li,i−1ai−1,i (i=2,3,⋯,n)
得到LU分解之后,就可通过方程组
L
y
=
b
U
x
=
y
Ly=b\\Ux=y
Ly=bUx=y
得到线性方程组的解
{
y
1
=
b
1
y
i
=
b
i
−
l
i
,
i
−
1
y
i
−
1
i
=
2
,
3
,
⋯
,
n
{
x
n
=
y
n
/
u
n
n
x
i
=
(
y
i
−
a
i
,
i
+
1
∗
x
i
+
1
)
/
u
i
i
i
=
n
−
1
,
n
−
2
,
⋯
,
1
\begin{cases}y_1=b_1\\y_i=b_i-l_{i,i-1}y_{i-1}\\i=2,3,\cdots,n\end{cases}\ \ \ \ \ \begin{cases}x_n=y_n/u_{nn}\\x_i=({y_i-a_{i,i+1}*x_{i+1}})/{u_{ii}}\ \ \ \ \ i=n-1,n-2,\cdots,1\end{cases}
⎩⎪⎨⎪⎧y1=b1yi=bi−li,i−1yi−1i=2,3,⋯,n {xn=yn/unnxi=(yi−ai,i+1∗xi+1)/uii i=n−1,n−2,⋯,1
上述方法通常称为 “追赶法”。“追”的过程要做4(n-1)次乘除法,“赶”的过程需要做n次乘除法,总计算量:5n-4。
追赶法本质上是没有选主元的高斯消元法,对一般的三对角方程组来说“追赶法”的计算过程是不稳定的。但当三对角方程组中的系数矩阵满足严格对角占优时,“追赶法”不会出现中间结果数量级的巨大增长和舍入误差的严重积累。
解对称正定矩阵方程组的平方根法
平方根法又称楚列斯基(Cholesky)分解法。
定理3:设 A ∈ R n × n A\in R^{n\times n} A∈Rn×n 是对称正定矩阵,则存在唯一分解(称为楚列斯基分解):
A = L ~ L ~ T A=\tilde{L}\tilde{L}^T A=L~L~T
其中 L ~ \tilde{L} L~ 是对角元为正的下三角阵:
L ~ = [ l 11 l 21 l 22 ⋮ ⋮ ⋱ l n 1 l n 2 ⋯ l n n ] \tilde{L}=\left[\begin{matrix}l_{11}&&&\\l_{21}&l_{22}&&\\\vdots&\vdots&\ddots&\\l_{n1}&l_{n2}&\cdots&l_{nn}\end{matrix}\right] L~=⎣⎢⎢⎢⎡l11l21⋮ln1l22⋮ln2⋱⋯lnn⎦⎥⎥⎥⎤
用待定系数法确定 l i j : a i j = ∑ p = 1 j l i p l j p , 1 ≤ j ≤ i ≤ n l_{ij}:a_{ij}=\sum_{p=1}^jl_{ip}l_{jp},1\leq j\leq i\leq n lij:aij=∑p=1jlipljp,1≤j≤i≤n
由 a 11 = l 11 2 a_{11}=l_{11}^2 a11=l112,得 l 11 = a 11 l_{11}=\sqrt{a_{11}} l11=a11
由 a i 1 = l 11 l i 1 a_{i1}=l_{11}l_{i1} ai1=l11li1,得 l i 1 = a i 1 / l 11 , i = 1 , 2 , ⋯ , n l_{i1}=a_{i1}/l_{11},i=1,2,\cdots,n li1=ai1/l11,i=1,2,⋯,n
假设已算出 L L L 的前j-1列元素,由 a j j = ∑ k = 1 j l j k 2 a_{jj}=\sum_{k=1}^jl_{jk}^2 ajj=∑k=1jljk2
得 l j j = ( a j j − ∑ k = 1 j − 1 l j k 2 ) 1 / 2 l_{jj}=(a_{jj}-\sum_{k=1}^{j-1}l_{jk}^2)^{1/2} ljj=(ajj−∑k=1j−1ljk2)1/2
再由 a i j = ∑ k = 1 j − 1 l i k l j k + l i j l j j a_{ij}=\sum_{k=1}^{j-1}l_{ik}l_{jk}+l_{ij}l_{jj} aij=∑k=1j−1likljk+lijljj
得 l i j = ( a i j − ∑ k = 1 j − 1 l i k l j k ) / l j j , i = j + 1 , ⋯ , n ; j ≠ n l_{ij}=(a_{ij}-\sum_{k=1}^{j-1}l_{ik}l_{jk})/l_{jj},i=j+1,\cdots,n;j\neq n lij=(aij−∑k=1j−1likljk)/ljj,i=j+1,⋯,n;j=n
可求出所有的 l i j l_{ij} lij。
向量和矩阵的范数
向量的范数
范数是对函数、向量和矩阵定义的一种度量形式,任何对象的范数值都是一个非负整数。向量范数是度量向量长度的一种定义形式。
定义1:对任一向量 x ∈ C n x\in C^n x∈Cn,称实数 N ( x ) = ∣ ∣ x ∣ ∣ N(x)=||x|| N(x)=∣∣x∣∣ 为向量 x x x 的范数。||·||满足下列关系式:
- 正定性(非负性): ∀ x ∈ C n , ∣ ∣ x ∣ ∣ ≥ 0 , 且 ∣ ∣ x ∣ ∣ = 0 ⇐ ⇒ x = 0 \forall x\in C^n,||x||\geq0,且||x||=0\Leftarrow\Rightarrow x=0 ∀x∈Cn,∣∣x∣∣≥0,且∣∣x∣∣=0⇐⇒x=0
- 齐次性: ∀ x ∈ C n 和 α ∈ C , 有 ∣ ∣ α x ∣ ∣ = ∣ α ∣ ⋅ ∣ ∣ x ∣ ∣ \forall x\in C^n和\alpha\in C,有||\alpha x||=|\alpha|·||x|| ∀x∈Cn和α∈C,有∣∣αx∣∣=∣α∣⋅∣∣x∣∣
- 三角不等式: ∀ x , y ∈ C n , ∣ ∣ x + y ∣ ∣ ≤ ∣ ∣ x ∣ ∣ + ∣ ∣ y ∣ ∣ \forall x,y\in C^n,||x+y||\leq||x||+||y|| ∀x,y∈Cn,∣∣x+y∣∣≤∣∣x∣∣+∣∣y∣∣
几个常用的向量范数:
- ∣ ∣ x ∣ ∣ 1 = ∑ j = 1 n ∣ x j ∣ ||x||_1=\sum_{j=1}^n|x_j| ∣∣x∣∣1=∑j=1n∣xj∣
- ∣ ∣ x ∣ ∣ 2 = ( ∑ j = 1 n ∣ x j ∣ 2 ) 1 2 ||x||_2=(\sum_{j=1}^n|x_j|^2)^{\frac{1}{2}} ∣∣x∣∣2=(∑j=1n∣xj∣2)21
- ∣ ∣ x ∣ ∣ ∞ = m a x 1 ≤ j ≤ n ∣ x j ∣ ||x||_\infin=max_{1\leq j\leq n}|x_j| ∣∣x∣∣∞=max1≤j≤n∣xj∣
分别称为向量 x x x 的1范数、2范数和 ∞ \infin ∞ 范数,更一般的,称: ∣ ∣ x ∣ ∣ p = ( ∑ j = 1 n ∣ x j ∣ p ) 1 p ||x||_p=(\sum_{j=1}^n|x_j|^p)^{\frac{1}{p}} ∣∣x∣∣p=(∑j=1n∣xj∣p)p1 为p范数。
矩阵的范数
定义2:对任一矩阵 A ∈ C n × n A\in C^{n\times n} A∈Cn×n,称实数 N ( A ) = ∣ ∣ A ∣ ∣ N(A)=||A|| N(A)=∣∣A∣∣ 为矩阵 A A A 的范数。||·||满足下列关系式:
- 正定性(非负性): ∀ A ∈ C n × n , ∣ ∣ A ∣ ∣ ≥ 0 , 且 ∣ ∣ A ∣ ∣ = 0 ⇐ ⇒ A = 0 \forall A\in C^{n\times n},||A||\geq0,且||A||=0\Leftarrow\Rightarrow A=0 ∀A∈Cn×n,∣∣A∣∣≥0,且∣∣A∣∣=0⇐⇒A=0
- 齐次性: ∀ A ∈ C n × n 和 α ∈ C , 有 ∣ ∣ α A ∣ ∣ = ∣ α ∣ ⋅ ∣ ∣ A ∣ ∣ \forall A\in C^{n\times n}和\alpha\in C,有||\alpha A||=|\alpha|·||A|| ∀A∈Cn×n和α∈C,有∣∣αA∣∣=∣α∣⋅∣∣A∣∣
- 三角不等式: ∀ A , B ∈ C n × n , ∣ ∣ A + B ∣ ∣ ≤ ∣ ∣ A ∣ ∣ + ∣ ∣ B ∣ ∣ \forall A,B\in C^{n\times n},||A+ B||\leq||A||+||B|| ∀A,B∈Cn×n,∣∣A+B∣∣≤∣∣A∣∣+∣∣B∣∣
- 矩阵乘法不等式: ∀ A , B ∈ C n × n , ∣ ∣ A B ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ B ∣ ∣ \forall A,B\in C^{n\times n},||A B||\leq||A||·||B|| ∀A,B∈Cn×n,∣∣AB∣∣≤∣∣A∣∣⋅∣∣B∣∣
矩阵、向量乘法的相容性: ∣ ∣ A x ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ ||Ax||\leq ||A||·||x|| ∣∣Ax∣∣≤∣∣A∣∣⋅∣∣x∣∣
称 ∣ ∣ A ∣ ∣ r = m a x x ≠ 0 ∣ ∣ A x ∣ ∣ r ∣ ∣ x ∣ ∣ r ||A||_r=max_{x\neq0}\frac{||Ax||_r}{||x||_r} ∣∣A∣∣r=maxx=0∣∣x∣∣r∣∣Ax∣∣r 为从属于向量的范数,或称为由向量范数导出的范数,满足矩阵、向量乘法的相容性: ∣ ∣ A x ∣ ∣ r ≤ ∣ ∣ A ∣ ∣ r ⋅ ∣ ∣ x ∣ ∣ r ||Ax||_r\leq ||A||_r·||x||_r ∣∣Ax∣∣r≤∣∣A∣∣r⋅∣∣x∣∣r
几个常用的矩阵范数:
- ∣ ∣ A ∣ ∣ 1 = m a x 1 ≤ j ≤ n ∑ i = 1 n ∣ a i j ∣ ||A||_1=max_{1\leq j\leq n}\sum_{i=1}^n|a_{ij}| ∣∣A∣∣1=max1≤j≤n∑i=1n∣aij∣
- ∣ ∣ A ∣ ∣ 2 = [ λ m a x ( A T A ) ] 1 / 2 ||A||_2=[\lambda_{max}(A^TA)]^{1/2} ∣∣A∣∣2=[λmax(ATA)]1/2, λ m a x ( ⋅ ) \lambda_{max}(·) λmax(⋅) 是矩阵的最大特征值
- ∣ ∣ A ∣ ∣ ∞ = m a x 1 ≤ i ≤ n ∑ j = 1 n ∣ a i j ∣ ||A||_{\infin}=max_{1\leq i\leq n}\sum_{j=1}^n|a_{ij}| ∣∣A∣∣∞=max1≤i≤n∑j=1n∣aij∣
- ∣ ∣ A ∣ ∣ F = ( ∑ i = 1 n ∑ j = 1 n ∣ a i j ∣ 2 ) 1 / 2 ||A||_F=(\sum_{i=1}^n\sum_{j=1}^n|a_{ij}|^2)^{1/2} ∣∣A∣∣F=(∑i=1n∑j=1n∣aij∣2)1/2
分别称为矩阵A的1范数(列模)、2范数(谱模)、 ∞ \infin ∞范数(行模)和F范数。
迭代法
求解线性方程组: A x = b Ax=b Ax=b,其中A为非奇异矩阵,b为n元非零向量,将其等价地转化为方程组 x = B x + f x=Bx+f x=Bx+f。
选取初始向量
x
(
0
)
=
(
x
1
(
0
)
,
x
2
(
0
)
,
⋯
,
x
n
(
0
)
)
T
x^{(0)}=(x_1^{(0)},x_2^{(0)},\cdots,x_n^{(0)})^T
x(0)=(x1(0),x2(0),⋯,xn(0))T,则可构造迭代法:
x
(
k
+
1
)
=
B
x
(
k
)
+
f
x^{(k+1)}=Bx^{(k)}+f
x(k+1)=Bx(k)+f
得到迭代向量序列
{
x
(
k
)
}
\{x^{(k)}\}
{x(k)},其中
x
(
k
)
=
(
x
1
(
k
)
,
x
2
(
k
)
,
⋯
,
x
n
(
k
)
)
T
x^{(k)}=(x_1^{(k)},x_2^{(k)},\cdots,x_n^{(k)})^T
x(k)=(x1(k),x2(k),⋯,xn(k))T。若
x
(
k
)
x^{(k)}
x(k) 收敛于
x
∗
x^*
x∗,则:
x
∗
=
B
x
∗
+
f
x^*=Bx^*+f
x∗=Bx∗+f。
x
∗
x^*
x∗就是方程组的解,称B为迭代矩阵。若迭代序列收敛,则称迭代法收敛,否则发散。
雅可比迭代法
将A分解为:
A
=
D
−
L
−
U
A=D-L-U
A=D−L−U
其中:
D
=
d
i
a
g
(
a
11
,
a
22
,
⋯
,
a
n
n
)
D=diag(a_{11},a_{22},\cdots,a_{nn})
D=diag(a11,a22,⋯,ann),
L
=
[
0
−
a
21
0
−
a
31
−
a
32
0
⋮
⋮
⋱
−
a
n
1
−
a
n
2
⋯
a
n
,
n
−
1
0
]
U
=
[
0
−
a
12
−
a
13
⋯
−
a
1
n
0
−
a
23
⋯
−
a
2
n
⋱
⋱
⋮
0
−
a
n
−
1
,
n
0
]
L=\left[\begin{matrix}0&&&&\\-a_{21}&0&&&\\-a_{31}&-a_{32}&0&&\\\vdots&\vdots&\ddots&\\-a_{n1}&-a_{n2}&\cdots&a_{n,n-1}&0\end{matrix}\right]\ \ \ U=\left[\begin{matrix}0&-a_{12}&-a_{13}&\cdots&-a_{1n}\\&0&-a_{23}&\cdots&-a_{2n}\\&&\ddots&\ddots&\vdots\\&&&0&-a_{n-1,n}\\&&&&0\end{matrix}\right]
L=⎣⎢⎢⎢⎢⎢⎡0−a21−a31⋮−an10−a32⋮−an20⋱⋯an,n−10⎦⎥⎥⎥⎥⎥⎤ U=⎣⎢⎢⎢⎢⎢⎡0−a120−a13−a23⋱⋯⋯⋱0−a1n−a2n⋮−an−1,n0⎦⎥⎥⎥⎥⎥⎤
A
x
=
b
→
(
D
−
L
−
U
)
x
=
b
→
D
x
=
(
L
+
U
)
x
+
b
Ax=b\rightarrow(D-L-U)x=b\rightarrow Dx=(L+U)x+b
Ax=b→(D−L−U)x=b→Dx=(L+U)x+b,可得雅可比迭代公式:
x
(
k
+
1
)
=
B
J
x
(
k
)
+
f
J
,
k
=
0
,
1
,
2
,
⋯
x^{(k+1)}=B_Jx^{(k)}+f_J,k=0,1,2,\cdots
x(k+1)=BJx(k)+fJ,k=0,1,2,⋯
其中雅可比迭代矩阵
B
J
=
D
−
1
(
L
+
U
)
,
f
J
=
D
−
1
b
B_J=D^{-1}(L+U),f_J=D^{-1}b
BJ=D−1(L+U),fJ=D−1b
雅可比迭代公式的分量形式:
x
i
(
k
+
1
)
=
1
a
i
i
(
b
i
−
∑
j
=
1
,
j
≠
i
n
a
i
j
x
j
(
k
)
)
x_i^{(k+1)}=\frac{1}{a_{ii}}(b_i-\sum_{j=1,j\neq i}^na_{ij}x_j^{(k)})
xi(k+1)=aii1(bi−j=1,j=i∑naijxj(k))
高斯-赛德尔迭代法
由
(
D
−
L
)
x
=
U
x
+
b
(D-L)x=Ux+b
(D−L)x=Ux+b,可得高斯-赛德尔(Gauss-Seidel)迭代公式:
x
(
k
+
1
)
=
B
G
x
(
k
)
+
f
G
,
k
=
0
,
1
,
2
,
⋯
x^{(k+1)}=B_Gx^{(k)}+f_G,k=0,1,2,\cdots
x(k+1)=BGx(k)+fG,k=0,1,2,⋯
其中高斯-赛德尔矩阵
B
G
=
(
D
−
L
)
−
1
U
,
f
G
=
(
D
−
L
)
−
1
b
B_G=(D-L)^{-1}U,f_G=(D-L)^{-1}b
BG=(D−L)−1U,fG=(D−L)−1b
高斯-赛德尔迭代公式的分量形式:
x
i
(
k
+
1
)
=
1
a
i
i
(
b
i
−
∑
j
=
1
i
−
1
a
i
j
x
j
(
k
+
1
)
−
∑
j
=
i
+
1
n
a
i
j
x
j
(
k
)
)
x_i^{(k+1)}=\frac{1}{a_{ii}}(b_i-\sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}-\sum_{j=i+1}^na_{ij}x_j^{(k)})
xi(k+1)=aii1(bi−j=1∑i−1aijxj(k+1)−j=i+1∑naijxj(k))
J迭代法与G-S迭代法的收敛范围并不重合,只是部分相交。 也就是说,可能有J迭代法收敛而G-S迭代法发散的情形发生,G-S迭代法并不是总比J迭代法收敛。在都收敛的情况下,也不能保证G-S迭代法比J迭代法收敛快。
迭代收敛条件与误差估计
定义3:设矩阵 A ∈ C n × n A\in C^{n\times n} A∈Cn×n 的特征值为 λ 1 , λ 2 , ⋯ , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,⋯,λn,称
ρ ( A ) = m a x 1 ≤ j ≤ n ∣ λ j ∣ \rho(A)=max_{1\leq j\leq n}|\lambda_j| ρ(A)=max1≤j≤n∣λj∣
为 A A A 的谱半径。
定理4:矩阵 A A A 的谱半径不大于矩阵 A A A 的任一算子范数 ∣ ∣ A ∣ ∣ r ||A||_r ∣∣A∣∣r 。
证明:若 λ \lambda λ 是矩阵 A A A 的特征值(即存在非零向量 x x x 使得: A x = λ x Ax=\lambda x Ax=λx),则
∣ λ ∣ ⋅ ∣ ∣ x ∣ ∣ r = ∣ ∣ λ x ∣ ∣ r = ∣ ∣ A x ∣ ∣ r ≤ ∣ ∣ A ∣ ∣ r ⋅ ∣ ∣ x ∣ ∣ r ∣ λ ∣ ≤ ∣ ∣ A ∣ ∣ r 所 以 , ρ ( A ) ≤ ∣ ∣ A ∣ ∣ r |\lambda|·||x||_r=||\lambda x||_r=||Ax||_r\leq ||A||_r·||x||_r\\|\lambda|\leq ||A||_r\\所以,\rho(A)\leq ||A||_r ∣λ∣⋅∣∣x∣∣r=∣∣λx∣∣r=∣∣Ax∣∣r≤∣∣A∣∣r⋅∣∣x∣∣r∣λ∣≤∣∣A∣∣r所以,ρ(A)≤∣∣A∣∣r
由于矩阵范数计算要比矩阵谱半径计算简单得多,所以常用矩阵范数来估计矩阵特征值的上界。
迭代公式收敛的充要条件:
定理8:迭代公式 x ( k + 1 ) = B x ( k ) + f x^{(k+1)}=Bx^{(k)}+f x(k+1)=Bx(k)+f 对任何初始向量 x ( 0 ) x^{(0)} x(0) 都收敛的充要条件是 ρ ( B ) < 1 \rho(B)<1 ρ(B)<1;收敛时, ρ ( B ) \rho(B) ρ(B) 越小,则收敛速度越快。
证明: x ∗ x^* x∗ 为方程的解, x ∗ = B x ∗ + f x^*=Bx^*+f x∗=Bx∗+f,有 x ( k ) − x ∗ = B ( x ( k − 1 ) − x ∗ ) = B k ( x ( 0 ) − x ∗ ) , k = 1 , 2 , ⋯ x^{(k)}-x^*=B(x^{(k-1)}-x^*)=B^k(x^{(0)}-x^*),k=1,2,\cdots x(k)−x∗=B(x(k−1)−x∗)=Bk(x(0)−x∗),k=1,2,⋯。所以,迭代公式对任何初始向量 x ( 0 ) x^{(0)} x(0) 都收敛的充要条件是 B k → 0 , k → ∞ B^k\rightarrow0,k\rightarrow\infin Bk→0,k→∞,即 ρ ( B ) < 1 \rho(B)<1 ρ(B)<1。
若存在矩阵范数 ∣ ∣ ⋅ ∣ ∣ r ||·||_r ∣∣⋅∣∣r,使得 ∣ ∣ B ∣ ∣ r < 1 ||B||_r<1 ∣∣B∣∣r<1则由 ρ ( B ) ≤ ∣ ∣ B ∣ ∣ r \rho(B) ≤||B||_r ρ(B)≤∣∣B∣∣r知,迭代法收敛。
迭代法收敛的充分条件:
定理5:若迭代过程 x ( k + 1 ) = B x ( k ) + f x^{(k+1)}=Bx^{(k)}+f x(k+1)=Bx(k)+f 中迭代矩阵 B B B 满足 ∣ ∣ B ∣ ∣ r = q < 1 ||B||_r=q<1 ∣∣B∣∣r=q<1,则
- 对任意初始向量 x ( 0 ) x^{(0)} x(0),该迭代过程均收敛于方程 x = B x + f x=Bx+f x=Bx+f 的唯一解 x ∗ x^* x∗
- ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ 1 1 − q ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{1}{1-q}||x^{(k+1)}-x^{(k)}||_r ∣∣x∗−x(k)∣∣r≤1−q1∣∣x(k+1)−x(k)∣∣r
- ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ q k 1 − q ∣ ∣ x ( 1 ) − x ( 0 ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{q^k}{1-q}||x^{(1)}-x^{(0)}||_r ∣∣x∗−x(k)∣∣r≤1−qqk∣∣x(1)−x(0)∣∣r
证明:1.:由 ∣ λ ∣ ≤ ρ ( B ) ≤ ∣ ∣ B ∣ ∣ r = q < 1 |\lambda|\leq\rho(B)\leq||B||_r=q<1 ∣λ∣≤ρ(B)≤∣∣B∣∣r=q<1,得 d e t ( I − B ) ≠ 0 det(I-B)\neq0 det(I−B)=0,故方程 ( I − B ) x = f (I-B)x=f (I−B)x=f 有唯一解 x ∗ x^* x∗。
又 x ∗ − x ( k + 1 ) = ( B x ∗ + f ) − ( B x ( k ) + f ) = B ( x ∗ − x ( k ) ) x^*-x^{(k+1)}=(Bx^*+f)-(Bx^{(k)}+f)=B(x^*-x^{(k)}) x∗−x(k+1)=(Bx∗+f)−(Bx(k)+f)=B(x∗−x(k)),得
∣ ∣ x ∗ − x ( k + 1 ) ∣ ∣ r ≤ ∣ ∣ B ∣ ∣ r ∣ ∣ x ∗ − x ( k ) ∣ ∣ r = q ∣ ∣ x ∗ − x ( k ) ∣ ∣ r 0 ≤ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ q k ∣ ∣ x ∗ − x ( 0 ) ∣ ∣ r 得 l i m k → ∞ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r = 0 从 而 , l i m k → ∞ x ( k ) = x ∗ ||x^*-x^{(k+1)}||_r\leq||B||_r||x^*-x^{(k)}||_r=q||x^*-x^{(k)}||_r\\0\leq||x^*-x^{(k)}||_r\leq q^k||x^*-x^{(0)}||_r\\得\ lim_{k\rightarrow\infin}||x^*-x^{(k)}||_r=0\\从而,lim_{k\rightarrow\infin}x^{(k)}=x^* ∣∣x∗−x(k+1)∣∣r≤∣∣B∣∣r∣∣x∗−x(k)∣∣r=q∣∣x∗−x(k)∣∣r0≤∣∣x∗−x(k)∣∣r≤qk∣∣x∗−x(0)∣∣r得 limk→∞∣∣x∗−x(k)∣∣r=0从而,limk→∞x(k)=x∗
2.: ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r = ∣ ∣ ( x ∗ − x ( k ) ) − ( x ∗ − x ( k + 1 ) ) ∣ ∣ r ≥ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r − ∣ ∣ x ∗ − x ( k + 1 ) ∣ ∣ r ≥ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r − q ∣ ∣ x ∗ − x ( k ) ∣ ∣ r = ( 1 − q ) ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ||x^{(k+1)}-x^{(k)}||_r=||(x^*-x^{(k)})-(x^*-x^{(k+1)})||_r\geq||x^*-x^{(k)}||_r-||x^*-x^{(k+1)}||_r\geq||x^*-x^{(k)}||_r-q||x^*-x^{(k)}||_r=(1-q)||x^*-x^{(k)}||_r ∣∣x(k+1)−x(k)∣∣r=∣∣(x∗−x(k))−(x∗−x(k+1))∣∣r≥∣∣x∗−x(k)∣∣r−∣∣x∗−x(k+1)∣∣r≥∣∣x∗−x(k)∣∣r−q∣∣x∗−x(k)∣∣r=(1−q)∣∣x∗−x(k)∣∣r即得:
∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ 1 1 − q ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{1}{1-q}||x^{(k+1)}-x^{(k)}||_r ∣∣x∗−x(k)∣∣r≤1−q1∣∣x(k+1)−x(k)∣∣r
3.: ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r = ∣ ∣ B x ( k ) + f − B x ( k − 1 ) − f ∣ ∣ r = ∣ ∣ B x ( k ) − B x ( k − 1 ) ∣ ∣ r = q ∣ ∣ x ( k ) − x ( k − 1 ) ∣ ∣ r = q k ∣ ∣ x ( 1 ) − x ( 0 ) ∣ ∣ r ||x^{(k+1)}-x^{(k)}||_r=||Bx^{(k)}+f-Bx^{(k-1)}-f||_r=||Bx^{(k)}-Bx^{(k-1)}||_r=q||x^{(k)}-x^{(k-1)}||_r=q^k||x^{(1)}-x^{(0)}||_r ∣∣x(k+1)−x(k)∣∣r=∣∣Bx(k)+f−Bx(k−1)−f∣∣r=∣∣Bx(k)−Bx(k−1)∣∣r=q∣∣x(k)−x(k−1)∣∣r=qk∣∣x(1)−x(0)∣∣r即得:
∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ q k 1 − q ∣ ∣ x ( 1 ) − x ( 0 ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{q^k}{1-q}||x^{(1)}-x^{(0)}||_r ∣∣x∗−x(k)∣∣r≤1−qqk∣∣x(1)−x(0)∣∣r
雅可比迭代法与高斯-赛德尔迭代法收敛的充分条件:
定理6:若 A x = b Ax=b Ax=b 的系数矩阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n 按行或列严格对角占优,即
∣ a j j ∣ > ∑ j = 1 , j ≠ i n ∣ a i j ∣ , i = 1 , 2 , ⋯ , n 或 : ∣ a j j ∣ > ∑ i = 1 , i ≠ j n ∣ a i j ∣ , j = 1 , 2 , ⋯ , n |a_{jj}|>\sum_{j=1,j\neq i}^n|a_{ij}|,i=1,2,\cdots,n\\或:|a_{jj}|>\sum_{i=1,i\neq j}^n|a_{ij}|,j=1,2,\cdots,n ∣ajj∣>j=1,j=i∑n∣aij∣,i=1,2,⋯,n或:∣ajj∣>i=1,i=j∑n∣aij∣,j=1,2,⋯,n
则方程组有唯一解,且对于任意初始向量,雅可比迭代法和高斯-赛德尔迭代法都收敛。
定理7:若 A x = b Ax=b Ax=b 的系数矩阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n 为对称正定矩阵,则对任意初始向量,高斯-赛德尔迭代法收敛。
逐次超松弛(SOR)迭代法
逐次超松驰(SOR)迭代法实际上是对高斯-赛德尔迭代法的加权平均,即:
x
i
(
k
+
1
)
=
(
1
−
ω
)
x
i
(
k
)
+
ω
x
~
i
(
k
+
1
)
,
i
=
1
,
2
,
⋯
,
n
其
中
x
~
i
(
k
+
1
)
为
高
斯
−
赛
德
尔
的
迭
代
解
:
x
~
i
(
k
+
1
)
=
1
a
i
i
(
b
i
−
∑
j
=
1
i
−
1
a
i
j
x
j
(
k
+
1
)
−
∑
j
=
i
+
1
n
a
i
j
x
j
(
k
)
)
x_i^{(k+1)}=(1-\omega)x_i^{(k)}+\omega\tilde{x}_i^{(k+1)},i=1,2,\cdots,n\\其中\tilde{x}_i^{(k+1)}为高斯-赛德尔的迭代解:\tilde{x}_i^{(k+1)}=\frac{1}{a_{ii}}(b_i-\sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}-\sum_{j=i+1}^na_{ij}x_j^{(k)})
xi(k+1)=(1−ω)xi(k)+ωx~i(k+1),i=1,2,⋯,n其中x~i(k+1)为高斯−赛德尔的迭代解:x~i(k+1)=aii1(bi−j=1∑i−1aijxj(k+1)−j=i+1∑naijxj(k))
矩阵形式:
x
(
k
+
1
)
=
B
ω
x
(
k
)
+
f
ω
,
k
=
0
,
1
,
2
,
⋯
其
中
S
O
R
迭
代
矩
阵
:
B
ω
=
(
D
−
ω
L
)
−
1
[
(
1
−
ω
)
D
+
ω
U
]
,
f
ω
=
ω
(
D
−
ω
L
)
−
1
b
x^{(k+1)}=B_{\omega}x^{(k)}+f_{\omega},k=0,1,2,\cdots\\其中SOR迭代矩阵:B_{\omega}=(D-\omega L)^{-1}[(1-\omega)D+\omega U],f_{\omega}=\omega(D-\omega L)^{-1}b
x(k+1)=Bωx(k)+fω,k=0,1,2,⋯其中SOR迭代矩阵:Bω=(D−ωL)−1[(1−ω)D+ωU],fω=ω(D−ωL)−1b
由于
d
e
t
(
B
ω
)
=
d
e
t
(
D
−
ω
L
)
−
1
⋅
d
e
t
[
(
1
−
ω
)
D
+
ω
U
]
=
1
a
11
a
22
⋯
a
n
n
⋅
(
1
−
ω
)
n
a
11
a
22
⋯
a
n
n
=
(
1
−
ω
)
n
det(B_{\omega})=det(D-\omega L)^{-1}·det[(1-\omega)D+\omega U]=\frac{1}{a_{11}a_{22}\cdots a_{nn}}·(1-\omega)^na_{11}a_{22}\cdots a_{nn}=(1-\omega)^n
det(Bω)=det(D−ωL)−1⋅det[(1−ω)D+ωU]=a11a22⋯ann1⋅(1−ω)na11a22⋯ann=(1−ω)n,得
λ
1
λ
2
⋯
λ
n
=
d
e
t
(
B
ω
)
=
(
1
−
ω
)
n
,
∣
1
−
ω
∣
n
=
∣
λ
1
λ
2
⋯
λ
n
∣
≤
(
ρ
(
B
ω
)
)
n
\lambda_1\lambda_2\cdots\lambda_n=det(B_{\omega})=(1-\omega)^n,|1-\omega|^n=|\lambda_1\lambda_2\cdots\lambda_n|\leq (\rho(B_\omega))^n
λ1λ2⋯λn=det(Bω)=(1−ω)n,∣1−ω∣n=∣λ1λ2⋯λn∣≤(ρ(Bω))n,所以有:
定理9::若 A x = b Ax=b Ax=b 的系数矩阵主对角线上元 a i i ≠ 0 a_{ii}\neq0 aii=0,则SOR法收敛的必要条件是 0 < ω < 2 0<\omega<2 0<ω<2。
但并不是充分条件:也就是,当 0 < ω < 2 0<\omega<2 0<ω<2 时,并不能保证SOR迭代法一定收敛。
实际应用中,可以根据系数矩阵𝐴的性质以及计算的经验来选定合适的松驰因子 ω \omega ω,以加快收敛的速度。
定理10:若系数矩阵 A A A 是实对称正定矩阵,且松弛因子 0 < ω < 2 0<\omega<2 0<ω<2,则对任意初始向量,SOR迭代法收敛。
定理11:若系数矩阵 A A A 为弱对角占优矩阵,且为不可约矩阵,则雅可比迭代法、高斯-赛德尔迭代法均收敛。
定理12:若系数矩阵 A A A 为严格对角占优矩阵(或为弱对角占优不可约矩阵),且 0 < ω ≤ 1 0<\omega\leq1 0<ω≤1,则SOR迭代法收敛。
定义4:(收敛速度)称 R ( B ) = − l n ρ ( B ) R(B)=-ln\rho(B) R(B)=−lnρ(B) 为迭代法的收敛速度,其中 B B B 为迭代矩阵。
方程组的状态与解的迭代改善
如果在 A x = b Ax=b Ax=b 中的初始数据 A , b A,b A,b 有一个小的扰动,对解的结果有什么影响?
方程组的状态与矩阵的条件数
初始数据 A , b A,b A,b 的微小变化引起了解的很大变化,称这样的方程组为病态方程组。
-
b b b 有一个扰动 δ b \delta b δb
设相应方程组的解为 x ~ ( x ~ = x + δ x ) \tilde{x}(\tilde{x}=x+\delta x) x~(x~=x+δx),其中 x x x 为 A x = b Ax=b Ax=b 的精确解。即 A x ~ = b + δ b A\tilde{x}=b+\delta b Ax~=b+δb,或 A ( x + δ x ) = b + δ b A(x+\delta x)=b+\delta b A(x+δx)=b+δb, A δ x = δ b , δ x = A − 1 δ b A\delta x=\delta b,\delta x=A^{-1}\delta b Aδx=δb,δx=A−1δb,得
∣ ∣ δ x ∣ ∣ = ∣ ∣ A − 1 δ b ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ δ b ∣ ∣ ||\delta x||=||A^{-1}\delta b||\leq||A^{-1}||·||\delta b|| ∣∣δx∣∣=∣∣A−1δb∣∣≤∣∣A−1∣∣⋅∣∣δb∣∣
而 ∣ ∣ b ∣ ∣ = ∣ ∣ A x ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ ||b||=||Ax||\leq||A||·||x|| ∣∣b∣∣=∣∣Ax∣∣≤∣∣A∣∣⋅∣∣x∣∣,即 1 ∣ ∣ x ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ b ∣ ∣ \frac{1}{||x||}\leq \frac{||A||}{||b||} ∣∣x∣∣1≤∣∣b∣∣∣∣A∣∣。所以
∣ ∣ δ 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∣∣
即:解的相对误差不超过向量 b b b 的相对误差的 ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ||A^{−1}||·||A|| ∣∣A−1∣∣⋅∣∣A∣∣ 倍。 -
A A A 有一个扰动 δ A \delta A δA (设 A + δ A A+\delta A A+δA 仍可逆)
设相应方程组的解为 x ~ ( x ~ = x + δ x ) \tilde{x}(\tilde{x}=x+\delta x) x~(x~=x+δx),其中 x x x 为 A x = b Ax=b Ax=b 的精确解。即 ( A + δ A ) x ~ = b (A+\delta A)\tilde{x}=b (A+δA)x~=b,或 ( A + δ A ) ( x + δ x ) = b (A+\delta A)(x+\delta x)=b (A+δA)(x+δx)=b, δ A ( x + δ x ) + A δ x = 0 , δ x = − A − 1 δ A ( x + δ x ) \delta A(x+\delta x)+A\delta x=0,\delta x=-A^{-1}\delta A(x+\delta x) δA(x+δx)+Aδx=0,δx=−A−1δA(x+δx),得
∣ ∣ δ x ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ δ A ∣ ∣ ⋅ ∣ ∣ x + δ x ∣ ∣ ||\delta x||\leq||A^{-1}||·||\delta A||·||x+\delta x|| ∣∣δx∣∣≤∣∣A−1∣∣⋅∣∣δA∣∣⋅∣∣x+δx∣∣
所以
∣ ∣ δ x ∣ ∣ ∣ ∣ x + δ x ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||\delta x||}{||x+\delta x||}\leq||A^{-1}||·||A||\frac{||\delta A||}{||A||} ∣∣x+δx∣∣∣∣δx∣∣≤∣∣A−1∣∣⋅∣∣A∣∣∣∣A∣∣∣∣δA∣∣
即:解的相对误差不超过系数矩阵相对误差的 ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ||A^{−1}||·||A|| ∣∣A−1∣∣⋅∣∣A∣∣ 倍。
这表明: 量 ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ||A^{−1}||·||A|| ∣∣A−1∣∣⋅∣∣A∣∣ 反映了方程组 A x = b Ax=b Ax=b 的解对初始数据 A , b A,b A,b 扰动的灵敏度,从而可以用来刻画方程组的
病态程度。称
∣
∣
A
−
1
∣
∣
⋅
∣
∣
A
∣
∣
||A^{−1}||·||A||
∣∣A−1∣∣⋅∣∣A∣∣ 为矩阵
A
A
A 的条件数,记作Cond(𝐴)或 𝜅(𝐴),即
C
o
n
d
(
A
)
=
∣
∣
A
−
1
∣
∣
⋅
∣
∣
A
∣
∣
Cond(A)=||A^{−1}||·||A||
Cond(A)=∣∣A−1∣∣⋅∣∣A∣∣
条件数与所取的矩阵范数有关,常用的有:
C
o
n
d
∞
(
A
)
=
∣
∣
A
−
1
∣
∣
∞
⋅
∣
∣
A
∣
∣
∞
C
o
n
d
2
(
A
)
=
∣
∣
A
−
1
∣
∣
2
⋅
∣
∣
A
∣
∣
2
=
λ
m
a
x
(
A
T
A
)
λ
m
i
n
(
A
T
A
)
Cond_{\infin}(A)=||A^{−1}||_{\infin}·||A||_{\infin}\\ Cond_2(A)=||A^{−1}||_2·||A||_2=\sqrt{\frac{\lambda_{max(A^TA)}}{\lambda_{min(A^TA)}}}
Cond∞(A)=∣∣A−1∣∣∞⋅∣∣A∣∣∞Cond2(A)=∣∣A−1∣∣2⋅∣∣A∣∣2=λmin(ATA)λmax(ATA)
其中
C
o
n
d
2
(
A
)
Cond_2(A)
Cond2(A) 为谱条件数。
定义5:设 A A A 是非奇异矩阵,若 C o n d ( A ) ≫ 1 Cond(A)≫1 Cond(A)≫1,则称方程组 A x = b Ax=b Ax=b 为病态方程组;若 C o n d ( A ) Cond(A) Cond(A) 相对较小,则称方程组 A x = b Ax=b Ax=b 为良态方程组。
方程组可能出现病态的情况:
(1)用选主元消元法消元过程中出现小主元;
(2)系数行列式的绝对值相对很小;
(3)系数矩阵元素间在数量级上相差很大且无一定规律;
(4)出现了相对很大的解。
方程组近似解可靠性判别法
定理13: 设 x ∗ x^* x∗ 是方程组 A x = b Ax=b Ax=b( A A A 非奇异且 b ≠ 0 b\neq0 b=0)的精确解。若 x ~ \tilde{x} x~ 是该方程组的近似解,其残余向量 r = b − A x ~ r=b-A\tilde{x} r=b−Ax~,则有
∣ ∣ x ∗ − x ~ ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ≤ C o n d ( A ) ∣ ∣ r ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||x^*-\tilde{x}||}{||x^*||}\leq Cond(A)\frac{||r||}{||b||} ∣∣x∗∣∣∣∣x∗−x~∣∣≤Cond(A)∣∣b∣∣∣∣r∣∣
证明:由 x ∗ − x ~ = A − 1 b − x ~ = A − 1 r x^*-\tilde{x}=A^{-1}b-\tilde{x}=A^{-1}r x∗−x~=A−1b−x~=A−1r 知: ∣ ∣ x ∗ − x ~ ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ r ∣ ∣ ||x^*-\tilde{x}||\leq||A^{-1}||·||r|| ∣∣x∗−x~∣∣≤∣∣A−1∣∣⋅∣∣r∣∣。又由 b = A x ∗ b=Ax^* b=Ax∗ 有 ∣ ∣ b ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∗ ∣ ∣ ||b||\leq||A||·||x^*|| ∣∣b∣∣≤∣∣A∣∣⋅∣∣x∗∣∣,由 A A A 非奇异且 b ≠ 0 b\neq0 b=0,得 x ∗ ≠ 0 x^*\neq0 x∗=0,故可得:
∣ ∣ 1 ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||1||}{||x^*||}\leq\frac{||A||}{||b||} ∣∣x∗∣∣∣∣1∣∣≤∣∣b∣∣∣∣A∣∣
所以
∣ ∣ x ∗ − x ~ ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ≤ C o n d ( A ) ∣ ∣ r ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||x^*-\tilde{x}||}{||x^*||}\leq Cond(A)\frac{||r||}{||b||} ∣∣x∗∣∣∣∣x∗−x~∣∣≤Cond(A)∣∣b∣∣∣∣r∣∣
近似解 x ~ \tilde{x} x~ 的精度不仅依赖于残余向量 r r r 的大小,而且还依赖于矩阵 A A A 的条件数。所以,对于病态方程组,即使 r r r 很小,也不能保证 x ~ \tilde{x} x~ 的可靠性。
近似解的迭代改善法
设用某种方法得到方程 A x = b Ax=b Ax=b( A A A 非奇异且 b ≠ 0 b\neq0 b=0)的某个近似解 x ~ = x ( 1 ) \tilde{x}=x^{(1)} x~=x(1) 后,若 x ( 1 ) x^{(1)} x(1) 未达到精度要求,可采用以下方法:
误差的改进: 如果数值解的精度太低,可用如下方法改进:
- 计算残差 r ( 1 ) = b − A x ( 1 ) r^{(1)}=b-Ax^{(1)} r(1)=b−Ax(1)(用双精度计算)。
- 用列主元消元法解方程组 A x = r ( 1 ) Ax=r^{(1)} Ax=r(1),得到近似解 d ( 1 ) d^{(1)} d(1)。
- 用 d ( 1 ) d^{(1)} d(1) 修正 x ( 1 ) x^{(1)} x(1),得到 A x = b Ax=b Ax=b 的新近似值 x ( 2 ) = x ( 1 ) + d ( 1 ) x^{(2)}=x^{(1)}+d^{(1)} x(2)=x(1)+d(1)。
- 计算 e = ∣ ∣ d ( 1 ) ∣ ∣ ∞ ∣ ∣ x ( 1 ) ∣ ∣ ∞ e=\frac{||d^{(1)}||_{\infin}}{||x^{(1)}||_{\infin}} e=∣∣x(1)∣∣∞∣∣d(1)∣∣∞,若 e < ε e<\varepsilon e<ε( ε \varepsilon ε 为精度控制常数),则取 x ∗ ≈ x ( 2 ) x^*\approx x^{(2)} x∗≈x(2);否则视 x ( 2 ) x^{(2)} x(2) 为 x ( 1 ) x^{(1)} x(1),重复上述过程,直到满足条件 e < ε e<\varepsilon e<ε。
预条件处理方法
对于病态方程组 A x = b Ax=b Ax=b, A A A 的条件数 C o n d ( A ) Cond(A) Cond(A) 比较大,为此,寻找可逆矩阵(一般为对角矩阵) P , Q P,Q P,Q,使得 C o n d ( P A Q ) < C o n d ( A ) Cond(PAQ)<Cond(A) Cond(PAQ)<Cond(A),将 A x = b Ax=b Ax=b 转化为 P A Q ( Q − 1 x ) = P b PAQ(Q^{-1}x)=Pb PAQ(Q−1x)=Pb。