数值分析讲义——线性方程组的解法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析讲义
第三章线性方程组的解法
§3.0 引言
§3.1 雅可比(Jacobi)迭代法
§3.2 高斯-塞德尔(Gauss-Seidel)迭代法
§3.3 超松驰迭代法§3.7 三角分解法
§3.4 迭代法的收敛性§3.8 追赶法
§3.5 高斯消去法§3.9 其它应用
§3.6 高斯主元素消去法§3.10 误差分析
§3 作业讲评3 §3.11 总结
§3.0 引言
重要性:解线性代数方程组的有效方法在计算数学和科学计算中具有特殊的地位和作用.如弹性力学、电路分析、热传导和振动、以及社会科学及定量分析商业经济中的各种问题.
分类:线性方程组的解法可分为直接法和迭代法两种方法.
(a) 直接法:对于给定的方程组,在没有舍入误差的假设下,能在预定的运算次数内求得精确解.最基本的直接法是Gauss消去法,重要的直接法全都受到Gauss消去法的启发.计算代价高.
(b) 迭代法:基于一定的递推格式,产生逼近方程组精确解的近似序列.收敛性是其为迭代法的前提,此外,存在收敛速度与误差估计问题.简单实用,诱人.
§3.1 雅可比Jacobi 迭代法 (AX =b )
1
基本思想:
与解f (x )=0 的不动点迭代相类似,将AX =b 改写为X =BX +f 的形式,建立雅可比方法的迭代格式:X k +1=BX (k )+f ,其中,B 称为迭代矩阵.其计算精度可控,特别适用于求解系数为大型稀疏矩阵(sparse matrices)的方程组. 2
问题:
(a) 如何建立迭代格式?
(b) 向量序列{X k }是否收敛以及收敛条件? 3 例题分析:
考虑解方程组⎪⎩⎪
⎨⎧=+--=-+-=--2.453.82102
.72103
21321321x x x x x x x x x (1)
其准确解为X *={1, 1.2, 1.3}. 建立与式(1)相等价的形式:
⎪⎩⎪
⎨⎧++=++=++=84.02.01.083.02.01.072
.02.01.02
13312321x x x x x x x x x (2) 据此建立迭代公式:
⎪⎩⎪⎨⎧++=++=++=+++84
.02.01.083.02.01.072.02.01.0)(2)(1)1(3
)(3
)(1)1(23)(2)1(1k k k k k k k
k k x x x x x x x x x (3) 取迭代初值0)
0(3
)0(2)0(1===x x x ,迭代结果如下表. JocabiMethodP31.cpp
迭代次数 x1 x2 x3
0 0 0 0
1 0.7
2 0.8
3 0.84
2 0.971 1.07 1.15
3 1.057 1.1571 1.2482
4 1.0853
5 1.18534 1.28282
5 1.095098 1.195099 1.294138
6 1.098338 1.19833
7 1.298039
7 1.099442 1.199442 1.299335
8 1.099811 1.199811 1.299777
9 1.099936 1.199936 1.299924
10 1.099979 1.199979 1.299975
11 1.099993 1.199993 1.299991
12 1.099998 1.199998 1.299997
13 1.099999 1.199999 1.299999
14 1.1 1.2 1.3
15 1.1 1.2 1.3
4Jocobi迭代公式:
设方程组AX=b, 通过分离变量的过程建立
Jocobi迭代公式,即
)
,,2,1()(1
)
,,2,1(0,11
n i x a b a x n i a b x a n i
j j j ij i ii
i ii n
i i j ij =∑-==≠∑=≠== 由此我们可以得到Jacobi 迭代公式:
),,2,1()(1
1)
1(n i x a b a x
n i
j j k i ij i ii
k i
=∑-=≠=+
[Jacobi 迭代公式的算法] 1: 初始化. n , (a ij ), (b j ), (x 1) , M . 2: 执行k =1直到M 为止. ① 执行i =1直到n 为止.
ii n
i
j j j ij i i a x a b u /)(1∑-←≠= ;
② 执行i =1直到n 为止.
i i u x ← ;
③
输出k , (x i ).
另外,我们也可以建立Jacobi 迭代公式的矩阵形式. 设方程组AX =b ,
其中,A =(a ij )n 为非奇异阵,
X =(x 1,x 2,…,x n )T , b =(b 1,b 2,…,b n )T
将系数阵A 分解为: A =U +D +L ,
U 为上三角矩阵,D 为对角矩阵,L 为下三角矩阵.
于是AX =b 可改写为 (U +D +L )X =b
⇔ X =D -1b -D -1(U +L )X
由此可得矩阵形式的Jocobi 迭代公式: X k +1=BX (k )+f □
§3.2 高斯-塞德尔Gauss-Seidel 迭代法
注意到利用Jocobi 迭代公式计算)
1(+k i
x 时,已经计算好
)(1)(2)(1,,,k i k k x x x - 的值,而Jocobi 迭代公式并不利用这些最新的近似值计
算,仍用)
(1)(2)
(1
,,,k i k k x x x - .这启发我们可以对其加以改进,即在每个分量的
计算中尽量利用最新的迭代值,得到
),,2,1()(1111)1()
1(n i x a x a b a x
n i j k j
ij i j k j ij i ii
k i
=∑-∑-=+=-=++
上式称为Gauss-Seidel 迭代法. 其矩阵形式是
X =-(D +L )-1UX +(D +L )-1b , X k +1=BX (k )+f .
迭代次数 x1 x2 x3 0 0 0 0 1 0.72 0.902 1.1644 2 1.04308 1.167188 1.282054 3 1.09313 1.195724 1.297771
4 1.099126 1.199467 1.299719
5 1.09989 1.199933 1.299965
6 1.099986 1.199992 1.299996
7 1.099998 1.199999 1.299999
8 1.1 1.2 1.3
§3.3 超松驰迭代法SOR 方法
1
基本思想:
逐次超松弛迭代法(Successive Over Relaxation Method,简写为SOR)可以看作带参数ω的高斯-塞德尔迭代法,是G-S 方法的一种修正或加速.是求解大型稀疏矩阵方程组的有效方法之一. 2 SOR 算法的构造:
设方程组AX =b , 其中,A =(a ij )n 为非奇异阵,X =(x 1,x 2,…,x n )T , b =(b 1,b 2,…,b n )T . 假设已算出x (k ),
),,2,1()(1111)
1()
1(n i x a x a b a x
n i j k j ij i j k j ij i ii
k i
=∑-∑-=+=-=++ (1)
相当于用高斯-塞德尔方法计算一个分量的公式. 若对某个参数ω,作)
1(+k i
x
与)(k i x 加权的平均,即
)
()1()()1()()
1()(1k i k i
k i k i
k i
k i
x x
x x
x
x
-+=+-=+++ωωω (2)
其中,ω称为松弛因子.
用(1)式代入(2)式,就得到解方程组AX =b 的逐次超松弛迭代公式:
⎪⎩⎪
⎨⎧=∑-∑-=∆∆+==-=++),,2,1()()
(11)1()()1(n i x a x a b a x x x x n i
j k j ij i j k j ij i ii
i i k i k i ω (3) 显然,当取ω=1时,式(3)就是高斯-塞德尔迭代公式. 3 例题分析:
利用SOR 方法解方程组
⎪⎩⎪
⎨⎧=+---=-+-=--33222420243
21321321x x x x x x x x x (1) 其准确解为X *={1, 1, 2}. 建立与式(1)相等价的形式:
⎪⎪⎩⎪
⎪⎨⎧
++=-+=+=13
2
315.05.05.025.05.021*******x x x x x x x x x (2) 据此建立迭代公式:
⎪⎪⎩⎪⎪⎨⎧++=-+=+=+++13
2315.05.05.025.05.0)(2)(1)
1(3)
(3)(1)1(23)(2)
1(1
k k k k k k k
k k x x x x x x x x x (3)
利用SOR 算法,取迭代初值1)
0(3)0(2)0(1===x x x ,
ω=1.5,迭代结果如下表.
逐次超松弛迭代法
次数 x1 x2 x3 1 0.625000 0.062500 1.750000 2 0.390625 0.882813 1.468750 3 1.017578 0.516602 1.808594
4 0.55688
5 0.880981 1.710449
5 1.023712 0.743423 1.868103
6 0.746250 0.908419 1.838737
7 0.997715 0.860264 1.913894
8 0.864050 0.936742 1.908605
9 0.986259 0.922225 1.945523
10 0.928110 0.958649 1.947493
11 0.985242 0.955944 1.966198
12 0.961661 0.973818 1.969521
13 0.988103 0.974699 1.979289
14 0.979206 0.983746 1.982172
15 0.991521 0.985318 1.987416
16 0.988509 0.990038 1.989513
17 0.994341 0.991414 1.992397
18 0.993538 0.993946 1.993806
19 0.996367 0.994950 1.995424
20 0.996313 0.996342 1.996331
21 0.997724 0.997018 1.997254
22 0.997871 0.997798 1.997822
23 0.998596 0.998234 1.998355
GS迭代法须迭代85次得到准确值X*={1, 1, 2};而SOR方法只须55次即得准确值.由此可见,适当地选择松弛因子ω,SOR法具有明显的加速收敛效果. □
§3.4 迭代法的收敛性
1. 向量和矩阵范数 (a) 向量范数
R n 空间的向量范数 || · || ,对任意
n R y x ∈,, 满足下列条件:
00||||;0||||)1(
=⇔=≥x x x (正定性)
||||||||||)2(x x
⋅=αα (齐次性)
||||||||||||)3(y x y x
+≤+ (三角不等式)
常见的向量范数有: (1) 列范数:
(2) 谱范数:(欧几里德范数或向量的长度,模)
(3) 行范数:
(4) p 范数:
上述范数的几何意义是:
∞||||x =max(|x 2-x 1|,|y 2-y 1|) ; 1||||x =|x 2-x 1|+|y 2-y 1| ;
2122122)()(||||y y x x x -+-=.
向量序列}{)
(k x
依坐标收敛于向量x * 的充要条件是向量序列
}{)(k x 依范数收敛于向量x *,即0||||lim *)(=-∞
→x x k k .
(b) 矩阵范数
n m R ⨯空间的向量范数 || ·
|| ,对任意 n m R B A ⨯∈,, 满足下列条件:
||
|||||| || AB || (4)||
||||||||||)3(||||||||||)2(0
0||||;0||||)1(B A B A B A A A A A A ≤+≤+⋅==⇔=≥αα
常见的矩阵范数有:
∑==∞≤≤n
j ij a A n
i 1
||max ||||1 (行和范数)
∑==≤≤n
i ij a A n
j 1
1||max ||||1 (列和范数)
)(||||max 2A A A T λ= (谱范数)
若A 对称,则有
)()(2max max A A A T λλ=.
矩阵A 的谱半径记为)(||||
2A A ρ=,
ρ(A ) =||max
1i n
i λ≤≤,其中λi 为A 的特征根。
2. 迭代法基本定理
设有方程组X =BX +f ,对于任意初始向量X (0)及任意f ,迭代公式
X (k +1)=BX (k )+f 收敛的充要条件是)(B ρ<1,)(B ρ为矩阵B 的谱半径. 证:设X *为方程组X =BX +f 的准确解,即 X *=BX *+f .
对于任意初始向量X (0)及任意f ,迭代公式X (k +1)=BX (k )+f ,
于是,
)
()()
()
(*)0(*)2(2*
)
1(*)1(*)(X X B X X B X X
B f BX f BX X X k k k k k -=-=-=+-+=----
由此可得,迭代法收敛的充要条件是)(0∞→→k B k
.
即,
)(B ρ<1. □
上述定理是线性方程组迭代解法收敛性分析的基本定理,然而由于
)(B ρ的计算往往比较困难,尽管有各种办法估计)(B ρ的上界,但往往
偏听偏大而不实用,由此导致定理的理论价值胜于实用价值,为满足实际判敛的需要,有如下定理
.
(迭代收敛的充分条件)
设有迭代公式X (k +1)=BX (k )+f ,如果||B ||<1,则对于任意初始向量X (0)及任意f , 迭代公式均收敛.
3. 从方程组的系数矩阵A 判断迭代收敛性
实际中要求解的某些线性方程组,其系数矩阵往往具有一些特点,如系数矩阵为对称正定、对角元素占优等.由这些方程组系数矩阵的特殊性,使得我们可以直接从方程组的系数矩阵A 出发来讨论迭代法的收敛性
.
设n n n
n ij R a A ⨯⨯∈=)(,满足
∑=≥≠=n
i
j j ij ii n i a a 1,,2,1,||||
且至少有一个i 值,使得
∑>≠=n
i
j j ij ii a a 1||||
成立,则称A 为对角占优矩阵;若
∑=>≠=n
i
j j ij ii n i a a 1,,2,1,|||| ,
则称A 为严格对角占优矩阵
.
如果n n n
n ij R a A ⨯⨯∈=)(为严格对角占优矩阵,则对任意的初值
x (0),解方程组AX =B 的Jacobi 法、Guess-Seidel 迭代法均收敛. □ HW: 3.1 3.2 3.3(上机实习)
§3.5 高斯消去法
1
基本思想:
用高斯消去法求解线性方程组的基本思想是设法消去方程组的系数矩阵A 的主对角线下的元素,而将Ax =b 化为等价的上三角形方程组,然后再通过回代过程便可以获得方程组的解.
这种解线性方程组的方法,常称为高斯消去法(Gaussian Elimination)
.
2 例题分析:
利用高斯消去法求解方程组:⎪⎪⎩⎪⎪⎨
⎧-=-++-=++-=++-=++-38
1846273913334106812124226432
14321432
14321x x x x x x x x x x x x x x x x
⎪⎪⎩⎪⎪⎨
⎧-=-++-=++-=++-=++-38
1846273913334106812124226432
143214321432
1x x x x x x x x x x x x x x x x (1)
利用r i -111
1
r a a i ,i =2,3,4.得
⎪⎪⎩⎪⎪⎨
⎧-=-+=++-=++-=++-26
1432 21 812 10 2 24 12 4226432
4324324321x x x x x x x x x x x x x (2)
利用r i -2)2(22
)
2(2r a a i ,i =3,4.得
⎪⎪⎩⎪⎪⎨
⎧-=--=-=++-=++-21
13 4 9 5 2 10 2 24 12 422643434
324321x x x x x x x x x x x (3) 利用r i -3)3(33
)
3(3r a a i ,i =4.得
⎪⎪⎩⎪⎪⎨
⎧-=--=-=++-=++-3
3 9 5 2 10 2 2
4 12 42264434
324321x x x x x x x x x x (4) 显然,方程组(4)与(1)是等价的,其系数矩阵为上三角
状的,易于求解.称以上过程为高斯消去法的消去过程.通过方程组(4)的回代求解,可以得到准确解为
X *=[1, -3, -2,1]T .
这一过程为高斯消去法的回代过程. 2 高斯消去法算法的构造:
记方程组AX =b 为A (1)X =b (1), 其中,A (1)和b (1)的元素分别记为
.,,2,1,)1()
1(n j i b a i ij =、、
Step1:第一次消元
设0)1(11≠a ,将增广矩阵的第i 行减去)1(11
)1(11/a a m i i =倍,(i =2,…,n ),目的是将增广矩阵的第一列内除每一个元素不变外,其余全部消为零,得到A (2)X =b (2),即
][ 0
...0............][)2()2()2()2()2(2)2(2)2(2)2(22)1(1)1(1)1(12)1(11)1()1()1(2)1(1)1(2)1(2)1(22)1(21)1(1)
1(1)1(12)
1(11)1()1(b A b a a b a a b a a a b a a a b a a a b a a a b A n nn
n n
n n nn n n n
n =⎥⎥⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡⇒⎥⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢⎢⎣⎡=
其中
)...,,2,()
1(1
1)1()2()
1(11)
1()2(n j i b m b b a m a a i i i j i ij ij =⎩⎨⎧-=-= Step2:第k 次消元(12-≤≤n k )
设第k -1次消元已完成,且0)
(≠k kk
a ,得到A (k )X =
b (k ),即
⎥⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢
⎢⎢⎢⎣
⎡=)()
()()()
()()2(2)
2(2)2(2)2(22)1(1)
1(1)1(1)1(12)1(11)
()(][k n k nn
k kn
k k k kn k kk n
k
n
k k k b a a b a a b a a a b a a a a b A
计算因子)...,,1(/)()(n k i a a m k kk
k ik ik
+==,
⎩⎨⎧+=-=-=++)
...,,1,()()()1()
()()1(n k j i b m b b a m a a k k
ik k i k i k kj ik k ij k ij
如此反复,经过n -1次消元之后得到一个与原方程组等价的上三角形方程组.
⎥
⎥
⎥⎥
⎥
⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡=
⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢
⎢⎢⎢⎣
⎡=)()2(2)1(121)
()2(2)2(22
)
1(1)
1(12)
1(11)()
(...............
][n n n n nn n n
n n b b b x x x a a a a a a b A Step3:回代
只要0)
(≠n nn a 就可以回代求解
)
()(/n nn n n n a b x =
)1...,,1()(1)
()(-=∑-=
+=n i a
x a b x i ii
n
i j j i ij i i
i
3 高斯消去法[算法] Step1[消元]: 对k =1,2,…,n -1 ① 若0)
(=k kk
a 则停止计算
②
对i =k +1,k+2,…,n
计算因子)()(/k kk k ik ik a a m =;
对j =k +1,k+2,…,n
计算⎩⎨⎧-=-=++)
()()
1()()()1(k k
ik k i k i k kj ik k ij k ij b m b b a m a a ;
Step2[回代]: 对i =n ,n -1,…,1
)(1
)
()(i ii
n
i j j
i ij i i
i a
x a b x ∑-=
+=
(高斯消去法的条件)
(1)
若A 的所有顺序主子式均不为0,则高斯消元无需换行即可进行到底,且得到唯一解.
(2)
若消元过程中允许对增广矩阵进行行交换,则方程组Ax =b 可用消去法求解的充要条件是A 可逆.
□
§3.6 高斯主元素消去法
1 主元素及其选取问题
Gauss 消去法第k 次消去是用第k 个方程
)()()(k k n k kn k k kk b x a x a =++
来消去第k +1,…,n 个方程中的x k ,条件是0)
(≠k kk a .)
(k kk a 是实现第k 次消元的
关键元素,称为第k 次消去的主元(素). Gauss 消去法存在的问题是: (1) 顺序消元时一旦产生0)
(=k kk a (这是经常可能的),消元过程则中断;
(2) 此外,即使0)
(≠k kk
a 但绝对值很小时,由于用它作除数,引起在消去过
程中出现数量级及舍入误差急剧增长的系数,而使最后的计算解严重地不可靠. 例:单精度求解方程组
⎩⎨
⎧=+=+
-2
1102
1
219x x x x
其准确解为 ⎪⎪
⎩⎪⎪⎨⎧=-==-=-...8999...
99.02...
1000...00.11011
8128
91 x x x
当利用Gauss 消元法时,
9
998212210101010...0.011-=-⨯=⨯-= m a
9
21210
12-=⨯-= m b
舍入误差
0,11010011102111110129999==⇒⎥⎦⎤⎢⎣⎡--⇒⎥⎦⎤⎢⎣⎡--x x
基本思想:
主元素法是对Gauss 消去法的改进. 它全面或局部地选
取绝对值大的元素为主元素,仅对Gauss 消去法的步骤作某些技术性地修改,使之成为一种有效的方法.从而保证和改善算法的数值稳定性. 2 完全主元素消去法
设方程组AX =b , 其中,A =(a ij )n 为非奇异阵,X =(x 1,x 2,…,x n )T , b =(b 1,b 2,…,b n )T .经过k -1次选主元消元后,得到下列等价方程组:
⎥⎥⎥⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢
⎢⎢⎢⎣
⎡=)()()()()
()()2(2)2(2)2(2)2(22)1(1)
1(1)
1(1)1(12
)
1(11)
()(][k n k nn
k nk k k k kn
k kk n
k n
k
k k b a a b a a b a a a b a a a a b A
① 选主元过程
在矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡)()()
()(k nn k nk
k kn k kk a a a a 中选取绝对值最大的元素为主元素,保证
;0||max ||)(,)(,≠=≤≤k ij n
j i k k j i a a k
k
从而确定 i k , j k .
② 行变换和列交换
If i k ≠ k then 交换第 k 行与第i k 行;
×
恶性传播
If j k ≠ k then 交换第 k 列与第j k 列;
值得注意的是,在全主元消去过程中,列交换已改
变了x 各分量的顺序,因此,必须在每次列交换的同时,记录调换后未知数的排列次序. ③ 消元 ④ 回代求解
⑤
还原未知数的排列次序
2.1 全主元素Gauss 消去法[算法] Step1[消元]: 对k =1,2,…,n -1 ① 选主元 确定 i k , j k },,{n k ∈,满足;0||max ||)(,)(,≠=≤≤k ij n
j i k k j i a a k
k
② 若;0)
(,=k j i k
k a 则停止计算,det A =0.
③
If i k ≠ k then 交换第 k 行与第i k 行; If j k ≠ k then 交换第 k 列与第j k 列;
④ 消元
对i =k +1,k+2,…,n 计算因子)()(/k kk k ik ik a a m = ;
对j =k +1,k+2,…,n
计算⎩⎨⎧-=-=++)
()()
1()()()1(k k
ik k i k i k kj ik k ij k ij b m b b a m a a ;
Step2[回代]: ①
若0)
(=n nn
a 则停止计算,det A =0.
② 对i =n ,n -1,…,1
)(1
)
()(n ii
n
i j j
n ij n i i a
x a b y ∑-=
+=
Step3[还原排列次序]: 对i =1,2,…,n -1
x * := y i
(3) 列主元素消去法
在计算机上实现主元素消去法意味着进行数的比较操作,全选主元素法需要相当多的计算时间,因此常采用局部选主元素的方法.
列主元素消去法依次按列选主元素,只须进行方程行 交换,不产生未知数次序的调换. ① 按列选主元过程 设方程组AX =b 的增广矩阵为
⎥⎥⎥
⎥⎦
⎤
⎢⎢⎢⎢⎣⎡=)1()1()1(2)1(1
)1(2)1(2)1(22)1(21)1(1)1(1)1(12)1(11)1()1(][n nn
n n n
n b a a a b a a a b a a a b A 首先在A (1)中第一列选取绝对值最大的元素为主元素,保证
;0||max ||)1(11)1(1,≠=≤≤i n
i i a a k
从而确定 i k .
② 行变换
If i k ≠ 1 then 交换第 1 行与第i k 行;
重复上述过程,设已完成第k -1次按列选主元消元后,得到下列等价方程组:
⎥⎥⎥⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢
⎢⎢⎢⎣
⎡=)()()()()
()()2(2)2(2)2(2)2(22)1(1)
1(1)
1(1)1(12
)1(11)
()(][k n k nn
k nk k k k kn
k kk n
k n
k
k k b a a b a a b a a a b a a a a b A
在方框内的诸元素中选取绝对值最大的元素为主元素,保证:
;0||max ||)()(,≠=≤≤k ij n
i k k k i a a k
从而确定 i k .
If i k ≠ k then 交换第 k 行与第i k 行; 然后进行消元,如此进行,直至k =n -1为止. 3.1 列主元素Gauss 消去法[算法] Step1[消元]: 对k =1,2,…,n -1
① 选主元 确定 i k },,{n k ∈,满足0||max ||)
()(,≠=≤≤k ij n
i k k k i a a k
; ② 若;0)
(,=k k
i k a 则停止计算,det A =0.
③ If i k ≠ k then 交换第 k 行与第i k 行; ④ 消元 对i =k +1,k+2,…,n 计算因子)
()(/k kk k ik ik a a m =;
对j =k +1,k+2,…,n
计算⎩⎨⎧-=-=++)
()()
1()()()1(k k
ik k i k i k kj ik k ij k ij b m b b a m a a ;
Step2[回代]:
① 若0)
(=n nn a 则停止计算,det A =0.
② 对i =n ,n -1,…,1
)(1
)
()
(n ii
n
i j j
n ij n i i a
x a b x ∑-=
+=
(4) 例题分析:
求解方程组:⎪⎩⎪
⎨⎧=+--=++-=++000.3643.5070.1000.2000.2623.4712.3000.1000.1000.3000.2001.03
21321321x x x x x x x x x
解之得:X *=(-0.479107 -0.033089 0.355552)T HW: 3.5
□
作业讲评3
[3.1] 设有方程组⎪⎩⎪
⎨⎧=+-=++--=++31032202412253
21321321x x x x x x x x x
(1) 考察用Jacobi'Method 、Gauss-Seidel'Method 解方程组的收敛性.
(2) 用Jacobi'Method 、Gauss-Seidel'Method 解方程,要求当|| x (k +1)-x (k )||∞<10-4终止.
解:(1) 由于方程组系数矩阵A=⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡--1032241125
是一个严格对角占优矩阵,故用Jacobi'Method 、Gauss-Seidel'Method 进行迭代求解时算法均收敛.
(2) 用Jacobi'Method. 据此建立迭代公式:
⎪⎩⎪⎨⎧+--=+-=---=+++3
.03.02.055.025.04.22.04.0)(2)(1)1(3
)(3
)(1)1(2)
(3)(2)1(1k k k k k k k k k x x x x x x x x x 取迭代初值0)
0(3)0(2)
0(1
===x x x ,其计算结果如表一.
Jacobi'Method 计算结果(表一)
迭代次数
x1 x2 x3 0 0 0 0 1 -2.4 5 0.3 2 -4.46 4.25 2.28 3 -4.556 2.745 2.467 4 -3.9914 2.6275 2.0347 5 -3.85794 2.9848 1.88653 6 -3.97123 3.09225 1.967028 7 -4.03031 3.02368 2.02192 8
-4.01386
2.981464
2.013165
9 -3.99522 2.989954 1.99721 10 -3.99542 3.00259 1.99603 11 -4.00024 3.003129 1.999862 12 -4.00122 3.000009 2.000987 13 -4.0002 2.9992 2.000247 14 -3.99973 2.999826 1.9998 15 -3.99989 3.000167 1.999894 16 -4.00005 3.000081 2.000028 17 -4.00004
2.999974 2.000033
18 -4
2.999974
2
利用Gauss-Seidel'Method ,据此建立迭代:
⎪⎩⎪⎨⎧+--=+-=---=++++++3
.03.02.055.025.04.22.04.0)1(2)1(1)1(3
)(3
)1(1)1(2)
(3)(2)1(1k k k k k k k k k x x x x x x x x x 取迭代初值0)0(3)0(2)
0(1
===x x x ,其计算结果如表二.
Gauss-Seidel'Method 计算结果(表二) 迭代次数
x1 x2 x3 0 0 0 0 1 -2.4 4.4 2.1 2 -4.58 2.805 2.0575 3
-3.9335
2.987875
1.983063
4 -3.99176 3.010528 2.001511
5 -4.00451 2.99811
6 2.000338 6 -3.99931 3.000003 1.999864
7 -3.99997 3.000075 2.000017 8
-4.00003
2.999983
2.000002
[3.2] 设有方程组)0,(12112
2221211
212111≠⎩⎨
⎧=+=+a a b x a x a b x a x a
迭代公式为:...)3,2,1()
(1)(1)1(121222)(2)1(212111)(1=⎪⎪⎩
⎪
⎪⎨
⎧-=-=--k x a b a x x a b a x k k k k 求证由上述迭代公式产生的向量序列{X (k )}收敛的充要条件是
.122
1121
12<=a a a a γ
证明: 显然,上述迭代格式属于Jacobi 迭代格式,其迭代矩阵为X (k )=BX (k -1)+f,
其中,B =⎥⎥⎥⎥⎦
⎤
⎢⎢⎢
⎢⎣⎡--00
22
2111
12
a a a a ,由迭代法基本定理得: 1||1)(22
21
11122
*
)
(<⨯=⇔<⇔→a a a a B X X
k λρ. 即
.122
1121
12<=a a a a γ
[3.3] 用SOR 方法解下列方程组(取松弛因子2.1=ω
),要求 || x (k +1)-x -
(k )
||∞<10
-4
,⎩⎨
⎧=-=+5
4122121x x x x .
解: SOR 方法是Gauss-Seidel 法的一种改进(修正).
Gauss-Seidel'Method 迭代格式为:⎪⎩⎪⎨⎧+=--=+++25.125.05.05.0)1(1)1(2
)(2)1(1
k k k k x x x x ,
因此,SOR 法的迭代式为:
.
2,1)()1()()1()()1()()
1(=-+=+-=+++i x x
x x
x
x
k i k i
k i k i
k i
k i
ωωω
取迭代初值0)0(2)
0(1
==x x ,其计算结果如表三.
SOR'Method 计算结果(表三)
次数 x1 x2 ∞--||||)1()(k k X X
0 0 0 1 0.6 -1.32 1.32 2 1.272 -0.8544 0.672 3 0.85824 -1.071648 0.41376 4 1.0713408 -0.964268 0.2131008 5 0.9642927 -1.017859 0.1070481 6
1.0178566
-0.991071
0.0535638
7 0.9910715 -1.004464 0.0267851
8 1.0044643 -0.997768 0.0133928
9 0.9977679 -1.001116 0.0066964
10 1.0011161 -0.999442 0.0033482
11 0.999442 -1.000279 0.0016741
12 1.000279 -0.99986 0.0008371
13 0.9998605 -1.00007 0.0004185
14 1.0000698 -0.999965 0.0002093
15 0.9999651 -1.000017 0.0001046
16 1.0000174 -0.999991 5.232E-05
□
§3.7 三角分解法
1 矩阵A 的LU 分解
:
已给n 阶方阵A ,若能求得一个下三角方阵L 和一个上三角方阵
U ,使得A=LU ,则我们称方阵A 有LU 三角分解.
由高斯消去法,我们知道它是通过逐步消元过程,将方程组的系数矩阵A 转变为一个上三角矩阵,这实际上相当于用一系列初等矩阵左乘A . 2 高斯消去法的矩阵形式: Step1:第一次消元(0)
1(11
≠a ):
][ 0
...0............][)2()2()2()2()2(2)2(2)2(2)2(22)1(1)1(1)1(12)1(11)1()
1()1(2)1(1)1(2)1(2)1(22)1(21)1(1)1(1)1(12)
1(11)1()1(b A b a a b a a b a a a b a a a b a a a b a a a b A n nn
n n
n n nn n n n
n =⎥⎥⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡⇒⎥⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢⎢⎣⎡=
即相当于:
记:⎥⎥⎥⎥⎦
⎤⎢⎢⎢
⎢⎣⎡--=1001001
121
1
n m m L 其中,⎩⎨⎧==.,,3,2,/)1(11)1(11n i a a m i i .
][...0...0...][)2()2()2()2()2(2)2(2)2(2)2(22)1(1)
1(1)1(12)1(11)1()1(1b A b a a b a a b a a a b A L n nn
n n
n =⎥⎥⎥⎥
⎥⎦
⎤
⎢⎢⎢⎢
⎢⎣⎡= Step k :第k 次消元(0)
(≠k kk
a ):
][][)1()1()()
(++=k k k k k b A b A
L ,其中,
⎥⎥
⎥
⎥⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦
⎤⎢⎢⎢⎢⎢⎢⎢
⎢⎢⎢⎢⎣⎡-=+1000
000010000100001000
00
1
0001
,,1
k
n k
k k m m L
Step n -1:第n -1次消元(0)
1(1
,1≠---n n n a ):
][][]
[00
0][)
()(11
121211)1()1()()()()2(2)1(1)()2(2)2(22)
1(1)1(12)
1(11)1()1(1221n n n n n n n n n nn n n n n b A L L L L b A b A b b b a a a a a a b A L L L L
--------=⇒=⎥⎥
⎥
⎥⎦
⎤
⎢⎢⎢⎢⎣⎡=
记⎩
⎨⎧==------)
(11
12
121
1n n n A U L
L L L L 于是可以推出LU A =.
其中
⎥⎥⎥⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡==------101010001
213231
211
1121211 n n n n m m m m m L L L L L . 由上述讨论可知,高斯消去法实质上产生了一个将系数矩阵A 分解为上三角阵与下三角阵相乘的因式分解.若A 的所有顺序主子式均不为0,则 A 的 LU 分解唯一(其中 L 为单位下三角阵). 设有方程组AX=b,并设A=LU ,于是 AX=LUX=b 其中,
令 UX=Y,
则 LY=b.
于是求解AX=b 的问题等价于求解两个方程组UX=Y 和LY=b. 具体的解法如下:
(1) 利用顺推过程解LY=b,其计算公式为:
∑=-=-=1
1
),,2,1(i j j
ij i i n i y l b y .
(2) 利用回代过程解UX=Y,其计算公式为:
∑-=-=+=n
i j ii
j ij i i n n i u x u y x 1
)1,,1,(/)( .
上述方法称为求解线性方程组的三角直接分解法.这种分 解又称为Doolittle 分解法. 3 Doolittle 分解法[算法] Step1[分解]: ① 对i =1,2,…,n
11
1111/u a l a u i i i i ==;
② 计算U 的第r 行,L 的第r 列元素
对r =2,3…,n
∑≠+=-=∑+=-=-=-=11
1
1)
,,,1,(/)()
,,1,(r k rr
kr ik ir ir r k ki
rk ri ri n r n r r i u u l a l n r r i u l a u 且
Step2[顺推过程]: 求解LY=b
∑=-=-=1
1
),,2,1(i j j
ij i i n i y l b y
Step3[回代过程]: 回代过程解UX=Y
∑-=-=+=n
i j ii
j ij i i n n i u x u y x 1
)1,,1,(/)( .
4 算例
用Doolittle 分解法解方程组
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡201814513252321321x x x 解: 用Doolittle 算法计算得:
LU A =⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡--⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=240041032
1153012001
解得LY=(14,18,20)T ,得Y =(14,-10,-72)T
UX=(14,-10,-72)T ,得X =(1,2,3)T
□
§3.8 追赶法
1 三对角方程组
具有如下形式的方程组:
⎥⎥
⎥
⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡---n n n n n n n d d d x x x b a c b a c b a c b 212111122211 称为三对角方程组.
特点:其系数矩阵为一种带状的稀疏矩阵,非零元素集中分布在主对角线及相邻两条次对角线上,且系数矩阵为严格对角占优阵,即
.1,,3,2,0,0|||||||||||
|||11-=≠≠⎪⎩⎪
⎨⎧>+>>n i c a a b c a b c b i i n
n i i i
利用高斯消元法,经过n-1次消元后,可得等价的方程组:
⎥⎥⎥
⎥⎥⎥
⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢
⎢⎢⎢⎢⎣⎡---n n n n n q q q q x x x x u u u 12112112
111101 其中,
)
,,3,2()/()()1,,3,2()/(,
/,/111111111n i a u b a x d q n i a u b c u b d q b c u i i i i i i i i i i i i =--=-=-===---⇐追的过程
利用回代依次求出n i q u i i ,,2,1,, =,于是,
⎩⎨
⎧--=-==+)
1,,...2,1(1n n i x u q x q x i i i i n n
⇐赶的过程
HW: 3.6 3.7 3.8(希望上机实习)
□
§
3.9 其它应用
1 计算|A |
设A =(a ij )n : a) det(A )=det(A T ); b) 数a 乘A 的一行得:det =a det(A ); c) A 的两行互换得:det
=-det(A );
d) A 的一行乘以a 加到另一行得:det =det(A );
e) A 的两行成比例:det(A )=0;
f) det(AB )=det(A )·det(B ); 其中B=(b ij )n
由以上定理可知,通过高斯消元法的计算可得到行列式 的值.
例1 用列主元素法求det(A )的值,其中
⎥⎥
⎥⎦
⎤⎢⎢⎢⎣⎡----=221111232311A
解:由矩阵A 的LU 分解过程,可知)
(,)1(1,1)2(22)1(11||n n n n n n a a a a A ---= ,因此,
若用列主元素法求行列式的值,只须将每一步的主元素相乘即可,当然要注意行列式的值的符号改变.其计算过程如下所示.
53.0000
||1.0192 0.0000 0.0000 1.5217- 2.2609 0.0000 1.0000 11.0000 23.0000-)(2.0435 1.5217- 0.0000 1.5217- 2.2609 0.0000 1.0000 11.0000 23.0000-)2.0000 2.0000- 1.0000 2.0000- 3.0000- 11.0000 1.0000 11.0000 23.0000-(2.0000 2.0000- 1.0000 1.0000 11.0000 23.0000- 2.0000- 3.0000- 11.0000 =⇒⎥⎥⎥⎦
⎤
⎢⎢⎢⎣⎡⇒⎥⎥⎥⎦⎤
⎢⎢⎢⎣⎡⇒⎥⎥⎥⎦⎤
⎢⎢⎢⎣⎡⇒⎥⎥⎥⎦⎤
⎢⎢⎢⎣⎡A 消元(消元行交换)
1 计算A -1
在某些应用中,如在统计学中,可能还需要计算矩阵A 的逆,并且将它明显地表示为A -1.
1.1 利用A 的LU 分解计算A -1 设A =(a ij )n 为满秩矩阵,则
AX=I , (1) 这里I 为单位矩阵,显然X 为A 的可逆矩阵A -1. 将方程(1)改写为
A [X (1),X (2),…,X (n )]=[I (1),I (2),…,I (n )] (2) 其中,X (j ), I (j )分别表示X 和I 的第j 列.
于是,方程(2)又可改写为n 个线性方程组的形式: AX (j )=I (j ) , n j ≤≤
1 (3)
由于这n 个方程组的系数矩阵相同,故可应用LU 分解法来进行计算,这样A -1=[X (1),X (2),…,X (n )].并且能够极大地节省计算工作量.
1.2 利用高斯消元法计算A -1
例如:对矩阵⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡------=5
34410496281A ,求A -1. 解: []⎥⎥⎥⎦
⎤
⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤
⎢⎢⎢⎣⎡------=1- 2 8- 1 0 0 2 3- 10 0 1 0 18 28- 95 0 0 1 100010001534410496281I A 故 ⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡=-1- 2 8-2 3- 10 18 28- 95 1A □
§3.10 误差分析
1 问题的提出
设方程组AX =b , 其中,A =(a ij )n 为非奇异阵,X =(x 1,x 2,…,x n )T , b =(b 1,b 2,…,b n )T .由于原始数据a ij , b i 往往是观测数据,难免带有误差,因此,我们下面讨论原始数据的微小变化对方程组的影响.
2 例题
⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡41312161 51 4151 41 31 41 31 21 321x x x 的准确解为T x )0,0,1(*=,当向量b 以较小的扰动时,即
b =(εεε+++4
1,31,21)T ,这时方程组的准确解为T x )1500,1860,4921(*εεε-+=,说明右端项的微小变化引起了解的很大扰动,其原因是由方程组本身的状态所决定的.
下面分别讨论右端项b i 的误差对解的影响以及系数矩阵元素a ij 的误差对解的影响.
2 右端项b i 的误差对解的影响
设 A 精确,b 有误差b δ,得到的解x x δ+,即b A x b b x x A δδδδ1)(-=⇒+=+
||||||||||||1b A x δδ⋅≤⇒-
而 ||||||||||||||||x A Ax b ⋅≤=
于是, ||
||||||||||||||||||||||1b b A A x x δδ⋅⋅≤- 上式说明右端项的相对误差||
||||||b b δ在解中放大了||||||||1-⋅A A 倍. 3 系数矩阵元素a ij 的误差对解的影响
设b 精确,A 有误差A δ,得到的解为x x δ+,即
b x x A A =++))((δδ
b x x A x x A =+++)()(δδδ
)(1x x A A x δδδ+-=⇒-
||||||||||||||||||||||||||
||||||11A A A A A A x x x δδδδ⋅⋅=⋅≤+⇒--
或者,
b x A A x A A =+++δδδ)()(
Ax x A A I A δδδ-=+⇒-)(1
(只要||δA ||充分小,使得)1||||||||||||11<⋅≤--A A A A δδ,有
Ax A A A I x δδδ111)(---+-=⇒
||
||||||||||||||1||||||||||||||||||
||||||1||||||||||||||||1111A A A A A A A A A A A A x x δδδδδ⋅⋅-⋅⋅=⋅-⋅≤⇒----
上式表明:当||δA ||充分小,矩阵A 的相对误差||
||||||A A δ在解中可能放大了||||||||1-⋅A A 倍
.
称cond(A )=||||||||1-⋅A A 为矩阵A 的条件数.
当cond(A )>>1时,则方程组是“病态”的;当cond(A )较小时,则方程组是“良态”的.通常的条件数有:
(1) cond(A )∞=
∞-∞⋅||||||||1A A (2) cond(A )2=212||||||||-⋅A A )(/)(min
max A A A A T T λλ= 特别地,若 A 对称,则|
|min ||max )( 2λλ=A cond . 3 例题
已知⎪⎭⎫ ⎝⎛=98.099.099.01A ,求A 的条件数.
解: 由⇒=-0)det(A I λ⎩⎨⎧-==000050504
.0980050504.121λλ ,于是
≈=2
12)(λλA cond 39206>>1.说明由A 构成的系数矩阵方程组是“病态”的.
□
§3.11 总结
[高斯消去法]是解线性方程组直接方法的基础.将线性方程组约化为等价的三角形方程组再求解是直接法的基本解法.在约化过程中,引进选主元素的技巧是为了保证方法的数值稳定性所采取的必要措施.如全选主元素消去法;列选主元素消去法等.
[直接三角分解法] 是高斯消去法的变形.从代数上看,直接三角分解法和高斯消去法本质上是一致的.但从实际应用效果来看是有差异的.如用Doolittle分解法解具有相同系数矩阵但右端向量不同的方程组AX=B=(b1,b2,…,b m)是相当便利的,每解一个方程组AX=b i仅需增加n2次乘除法运算.
迭代法是一种逐次逼近方法,注意到在使用迭代法时,X k+1=BX(k)+f,其迭代矩阵B和迭代向量f在计算过程中始终不变,迭代法具有循环的计算公式、方法简单.此外,应注意收敛性与收敛速度问题.收敛性是迭代法的前提,针对不同的问题,分析并采用适当的数值算法,如Guass-Seidel方法、SOR方法等.
对以上算法的分析,立足点是在计算机上实现.因此,我们对于方法的掌握不仅在数学推导和数学公式上,而且应当深入思考方法的计算机实现过程,以加深对数值计算的认识和理解.
□。