ch3 线性方程组求解的数值方法
DESCRIPTION
Ch3 线性方程组求解的数值方法. Numerical Solutions of Systems of Linear Equations. § 3.0 Introduction. 工程问题 (电子网络,船体放样等). 自然科学 (实验数据的最小二乘法曲线拟合). 线性方程组. 解非线性方程组. 解常 / 偏微分方程组 (差分法,有限元法). 3.0 Introduction. 线性方程组的 系数矩阵 :. ( 1 )低价稠密矩阵(阶数TRANSCRIPT
Ch3 线性方程组求解的数值方法
Numerical Solutions of Systems of Linear Equations
§3.0 Introduction
线性方程组
工程问题(电子网络,船体放样等) 自然科学(实验数据的最小二乘法曲线拟合)
解非线性方程组 解常 / 偏微分方程组(差分法,有限元法)
3.0 Introduction
线性方程组的系数矩阵:
( 1 )低价稠密矩阵(阶数 <150 );
( 2 )大型稀疏矩阵(阶数高且零元素较多)。
求解线性方程组的方法: ( 1 )直接法 : 经过有限步算术运算,求得精确解(假设计算过程没有舍入误差)。 如 Gauss 消去法,三角分解法。 ( 2 )间接法 ( 迭代法 ) : 通过迭代序列,逐步逼近方程组的解。如 Jacobi 迭代法, Gauss-Seidel 迭代法。
3.0 Introduction
【最简单的情形】三角形线性方程组:
简记为
.
,
,
22222
11212111
nnnn
nn
nn
bxa
bxaxa
bxaxaxa
bAx , A 为上三角矩阵。
若所有 aii0 ,可用“回代”过程得到方程组的解。
.1,2,,2,1, , 1
nnka
xrbx
a
bx
kk
n
kiiki
knn
nn
function X=backsub(U,b)
% 解上三角方程组 -- 回代过程 %Backsubstitution in Gauss elimination
% Input--U is a n x n upper-trianglular matrix
% --b is a n x 1 constant vctor
% Output--X is the solution vector of UX=b
% Usage: X=backsub(U,b)
%Find the dimension of b and initialize X
n=length(b);
X=zeros(n,1);
X(n)=b(n)/U(n,n);
for p=n-1:-1:1
X(p)=(b(p)-U(p,p+1:n)*X(p+1:n))/U(p,p);
end
Backsub.m
3.0 Introduction
3.0 Introduction
【作业】( 1 )编写 Matlab 程序解下列上三角形方程组:
.63
456
7472
20324
4
43
432
4321
x
xx
xxx
xxxx
( 2 )编写 Matlab 程序解下列下三角形方程组:
. 563
2 643
43
105
4321
321
21
1
xxxx
xxx
xx
x
§3.1 Gauss 消去法与 LU 分解法
直接法的基本思想:
将线性方程组化成与之等价的上三角形或下三角形,再用回代法求解。它的核心是矩阵分解。
核心:矩阵分解。
Gauss 消去法( Gaussian elimination ):(对方程组的三种变换)
( 1 )交换两个方程的次序;
( 2 )用一个非零常数乘一个方程;
( 3 )将一个方程的非零倍数加到另一个方程上去。
这等价与对增广矩阵进行三种行初等变换,将它化为行阶梯形。
【例 3.1 】解下列线性方程组:
解:用行初等变换将方程组的增广矩阵化为行阶梯形:
.655
4623
7710
321
321
21
xxx
xxx
xx
1212 )10/5( ,)10/3(
6515
4623
70710
],[ rrrrbA
2.62.600
5.255.20
70710
1.661.00
5.255.20
70710
5.255.20
1.661.00
707102332 )5.2/1.0( rrrr
解得 x=(0, -1, 1)’.
§3.1 Gaussian Elimination and LU Decomposition
【注】上述过程可用矩阵表示为:
LU=PA
,
104.03.0
015.0
001
L
其中
,
2.600
55.20
0710
U
.
010
100
001
P
§3.1 Gaussian Elimination and LU Decomposition
【高斯消元法思路】
(1) 用消元法将 A 化为上三角阵 upper-triangular matrix ;
(2) 回代求解 backward substitution 。
§3.1 Gaussian Elimination and LU Decomposition
§3.1 Gaussian Elimination and LU Decomposition
消元 记 ,)( )1()1(nnijaAA
)1(
)1(1
)1(...
nb
b
bb
Step 1 :设 ,计算因子0)1(11 a )...,,2(/ )1(
11)1(
11 niaam ii 将增广矩阵 /* augmented matrix */ 第 i 行 mi1 第1行,得到 )1(
1)1(
1)1(
12)1(
11 ... baaa n
)2(A )2(b
)...,,2,(
)1(11
)1()2(
)1(11
)1()2(
nji
bmbb
amaa
iii
jiijij
其中
Step k :设 ,计算因子
且计算
0)( kkka )...,,1(/ )()( nkiaam k
kkk
ikik
)...,,1,(
)()()1(
)()()1(
nkji
bmbb
amaak
kikk
ik
i
kkjik
kij
kij
共进行 ? 步n 1
)(
)2(2
)1(1
2
1
)(
)2(2
)2(22
)1(1
)1(12
)1(11
..
....
..
....
...
...
nnn
nnn
n
n
b
b
b
x
x
x
a
aa
aaa
回代 )()( / nnn
nnn abx
0)( nnnaWhat if ?No unique
solution exists.
)1...,,1()(
1
)()(
nia
xab
xi
ii
n
ijj
iij
ii
i
0)( iiiaWhat if ?
Then we must find the smallest integer k i with , and interchange the k-th row with the i-th row.
0)( ikia
What if we can’t find such k ?No unique
solution exists.
定理 若 A 的所有顺序主子式 /* determinant of
leading principal submatrices */ 均不为 0 ,则高斯消元无需换行即可进行到底,得到唯一解。
iii
i
i
aa
aa
A
...
.........
...
)det(
1
111
注注::事实上,只要 A 非奇异,即 A1 存在,则可通过逐次消元及行交换,将方程组化为三角形方程组,求出唯一解。
注注::事实上,只要 A 非奇异,即 A1 存在,则可通过逐次消元及行交换,将方程组化为三角形方程组,求出唯一解。
§3.1 Gaussian Elimination and LU Decomposition
高斯消元法的矩阵表达 ---- 矩阵分解
课本 P40-42
§3.1 Gaussian Elimination and LU Decomposition
3.1.2 矩阵的 LU 分解( LU Decomposition )
若在 Gauss 消去法过程中,没有进行交换行的变换,即 P=I, 则分解结果为
LUA
§3.1 Gaussian Elimination and LU Decomposition
这样的分解式称为矩阵的 LU 分解。
【 Matlab 】 >> [L,U,P]=lu(A)
其中
njia
al
lll
ll
l
Ljjj
jij
ij
nnn
,,1,,
1
1
1
1
321
3231
21
【作业】 P.67 题 1, 2
3.1.3 选主元消去法 /* Pivoting Strategies */
例:单精度解方程组
2
110
21
219
xx
xx
/* 精确解为 和 */
...1000...00.1101
191
x
8 个
...8999...99.02 12
xx
8 个
用 Gaussian Elimination 计算:9
112121 10/ aam
9992122 10101010...0.011 ma
8 个
9212 1012 mb
99
9
10100
1110
0,1 12 xx
小主元 /* Small pivot element */ 可能导致计
算失败。
§3.1 Gaussian Elimination and LU Decomposition
全主元消去法 /* Complete Pivoting */
每一步选绝对值最大的元素为主元素,保证 。
1|| ikm
Step k: ① 选取
;0||max||,
ij
njikji aakk
② If ik k then 交换第 k 行与第 ik 行 ; If jk k then 交换第 k 列与第 jk 列 ;③ 消元
注注::列交换改变了 xi 的顺序,须记录交换次序,解完后再换回来。
注注::列交换改变了 xi 的顺序,须记录交换次序,解完后再换回来。
列主元消去法 /* Partial Pivoting, or maximal column pivoting */
省去换列的步骤,每次仅选一列中最大的元。0||max|| ,
iknik
ki aak
§3.1 Gaussian Elimination and LU Decomposition
例:
211
1110 9
1,1 12 xx
110
211
1110
2119
注注::列主元法没有全主元法稳定。注注::列主元法没有全主元法稳定。
0,1 12 xx例:
211
10101 99
99
99
10100
10101
注意:这两个方程组在数学上严格等价。
标度化列主元消去法 /* Scaled Partial Pivoting */
对每一行计算 。为省时间, si 只在初始
时计算一次。以后每一步考虑子列 中 最大的
aik 为主元。
||max1
ijnj
i as
nk
kk
a
a
..
.i
ik
s
a
注注::稳定性介于列主元法和全主元法之间。注注::稳定性介于列主元法和全主元法之间。
§3.1 Gaussian Elimination and LU Decomposition
实际应用中直接调用 Gauss Elimination 解 3阶线性方程组的结果:
结合全主元消去后的结果:
§3.1 Gaussian Elimination and LU Decomposition
§3.2 Cholesky 分解
【 Matlab 】
设 A 是对称正定矩阵,则 A 有以下形式的 LU 分解:
A=PTP ( 3.2.1 )
其中 P 是一个上三角矩阵 , 上式称为 A 的 Cholesky 分解(Choleskian decomposition).
>> P=chol(A)
定理
【作业】 P.68 题 4
§3.3 向量范数与矩阵范数 — 误差的度量
3.3.1 向量范数 (vector norms)
常用向量范数:
,||1
1
n
i
xx ,||2/1
1
2
2
n
i
xx .||max1
ini
xx
这些范数满足:
;0 ifonly and if 1 and ,0 )1( xxx
;constantany is , )2( xx
. )3( yxyx
||||||||lim xx p
p
一般范数:
如,设向量 x=(2, -4, -1)T, 则
,21||2/1
1
2
2
n
i
xx,7||1
1
n
i
xx
.4||max1
ini
xx
§3.3 向量范数与矩阵范数
【 Matlab 】x=(1:4)/5N1=norm(x,1)N2=norm(x)N7=norm(x,7)Ninf=norm(x,inf)
x =
0.2000 0.4000 0.6000 0.8000
N1 =
2
N2 =
1.0954
N7 =
0.8153
Ninf =
0.8000
定义 矩阵 A的范数定义为
§3.3 向量范数与矩阵范数
3.3.2 矩阵范数 (matrix norms)
.max0 x
AxA
x
命题:矩阵的常用范数:
;||max )1(1
11
n
iij
njaA
;||max )2(1
1
n
jij
niaA
,)(max )3(12
AAA Ti
ni
其中,λ1,…, λ n 是 AAT
的特征值, ini
T AA
1max:)( 称为 的谱半径。AAT
例 设矩阵
§3.3 向量范数与矩阵范数
,43
21
A
;6||max )1(1
11
n
iij
njaA
;7||max )2(1
1
n
jij
niaA
.46.522115)(max )3(12
AAA Ti
ni
则
可以证明,矩阵范数满足:
;0 ifonly and if 0 ;0 (1) AAA
;|c| (2) AcA
; (3) BABA
(4) .AB A B
§3.4 经典迭代法- Jacobi 迭代法与 Gauss-Seidel 迭代法
3.4.1 . Jacobi 迭代法设有 n 阶方程组
nnnnnn
nn
nn
bxaxaxa
bxaxaxa
bxaxaxa
2211
22222121
11212111
(3.4.1)
若系数矩阵非奇异,且 (i = 1, 2,…, n) ,将方程组0iia
11,22111
2323121222
2
1313212111
1
1
1
1
nnnnnnnn
n
nn
nn
xaxaxaba
x
xaxaxaba
x
xaxaxaba
x
( 4.1 )改写成
§3.4 经典迭代法
然后写成迭代格式
)(11,
)(22
)(11
)1(
)(2
)(323
)(1211
22
)1(2
)(1
)(313
)(2121
11
)1(1
1
1
1
knnn
kn
knn
nn
kn
knn
kkk
knn
kkk
xaxaxaba
x
xaxaxaba
x
xaxaxaba
x
( 3.4.2 )
( 3.4.2 )式也可以简单地写为
),,2,1(1 )(
1
)1( nixaba
x kj
n
ijj
ijiii
ki
( 3.4.3 )
§3.4 经典迭代法
写成矩阵形式:
A =
L
UD
B f
Jacobi 迭代阵
bDxULDx kk 1)(1)1( )( (3.4.6)
bxULxDbxULDbxA
)(
)(
bDxULDx 11 )(
§3.4 经典迭代法
)(11
)(1
)(414
)(313
)(212
11
)1(1 bxaxaxaxa
ax k
nnkkkk
)(12
)(2
)(424
)(323
)1(121
22
)1(2 bxaxaxaxa
ax k
nnkkkk
)(13
)(3
)(434
)1(232
)1(131
33
)1(3 bxaxaxaxa
ax k
nnkkkk
)(1 )1(11
)1(33
)1(22
)1(11
)1(n
knnn
kn
kn
kn
nn
kn bxaxaxaxa
ax
… … … …
只存一组向量即可。
写成矩阵形式: bDxUxLDx kkk 1)()1(1)1( )(
bxUxLD kk )()1()(
bLDxULDx kk 1)(1)1( )()(
B fGauss-Seidel
迭代阵
3.4.2 Gauss-Seidel 迭代法
(3.4.7)
§3.4 经典迭代法
定理 3.1 对任意初始向量 X(0) 及常向量 F ,迭代格式 (3.5.1)
FBXX kk )1( (3.5.1)
推论:若迭代矩阵B的某种范数 ,则( 3.5.1 )1B
收敛的充分必要条件是迭代矩阵 B的谱半径 (B) < 1 。
确定的迭代法对任意初值 X(0) 均收敛于方程组 X = BX + F
§3.5 迭代法的分析—— 迭代法的收敛性、收敛速度与数值稳定性
3.5.1 收敛性
的唯一解 x* 。
定义 1 :如果矩阵的每一行中,不在主对角线上的所有元素绝对值之和小于主对角线上元素的绝对值,即 niaa ii
n
ijj
ij ,,2,1,1
则称矩阵 A ( 按行 ) 严格对角占优。
定理 3.2 :若 A 是严格对角占优,则 A 是非奇异的。
§3.5 迭代法的分析
定理 3 :若线性方程组 AX = b 的系数矩阵 A 按行严格对角占优,则 Jacobi 迭代法和 Gauss-Seidel 迭代法对任意给定初值均收敛。
3.5.2 迭代法的误差估计与收敛速度
定理 3.4 设 X* 是方程组 AX = b 的同解方程 X = BX +
F 的准确解,若迭代公式中迭代矩阵 B 的某种范数,
( ) * ( ) ( 1) .1
k k kBX X X X
B
( ) * (1) (0) ,1
K
k BX X X X
B
(1)
(2)
1B
则有
§3.5 迭代法的分析
)(
1
)1(1
1
)1( 1~ kj
n
ijij
kj
i
jiji
ii
ki xaxab
ax
),,2,1(~)1( 1)()1( nixxx ki
ki
ki
)(
1
)1(1
1
)()1( )1( kj
n
ijij
kj
i
jiji
ii
ki
ki xaxab
axx
迭代
加速
( 3.6.2 )
§3.6 超松驰法 (SOR) 及分块迭代法
定理 3. 5 SOR 方法收敛的必要条件是
.20
其中 ω 称为松弛因子.
( 3.6.1 )
§3.7 条件数、病态方程组与算法的稳定性3.7.1 病态方程组与数值稳定的算法
定义 对线性方程组 Ax=b, 如果解 x 关于问题(矩阵 A和 b )的“微小”变化(即舍入误差)不敏感,则称此方程组是“好的”,或称为“良态的”,否则,称之为“坏的”,或称为“病态的”。
定义 对求解线性方程组 Ax=b 的一个 ( 迭代 ) 算法 ,如果关于初始值的误差,不随计算逐步放大,则称算法是数值稳定的,否则,称之为是数值不稳定的。
数值不稳定的算法是不可用的!
例 (病态方程组)考虑线性方程组§3.7 条件数、病态方程组与算法的稳定性
10 7 8 7 32
7 5 6 5 23, , .
8 6 10 9 33
7 5 9 10 31
Au b A b
已知其精确解是 u =(1,1,1,1)T.(1) 对右边常数向量 b作“微小”扰动,得方程(2) 对系数矩阵 A作“微小”扰动,得方程组
.
9.30
1.33
9.22
1.32
Av它的解是 v = (9.2, -12.6, 4.5, -1.1)T.
.
98.9999.499.6
989.996.58
5604.508.7
2.71.8710
bwwA
它的解是 w = (-81, 137, -34, 22)T.
注意:上述两种情况的解都是精确解!
一般地,对线性方程组 Au=b ( 1)
.bbAv
两方程相减得于是
(2)
, ,1 uAAubbAu
由此得到
.)( bbuuA
设其解为 v=u+u, 即设
.1 bAu
.
1
b
bAA
u
u
(1) 考虑对此线性方程组的第一类扰动方程组
( 2)式右端给出了解的相对误差界。
§3.7 条件数、病态方程组与算法的稳定性
.bvAA
两方程相减得
于是
(3)
,1 uuAAu
由此得到
.)( bbuuAA
设其解为 v=u+u, 即设
.1 uuAAu
.
1
A
AAA
uu
u
(2) 考虑对线性方程组( 1)的第二类扰动方程组
( 4)式右端给出了解的相对误差界。
进一步得到 .)(1
1 AO
A
AAA
u
u
(4)
§3.7 条件数、病态方程组与算法的稳定性
3.7.2 条件数与方程组病态性
定义 设 A 是一个非奇异矩阵, ||.|| 是与某种向量范数相容的矩阵范数,正数
cond(A):=||A-1|| ||A||称为矩阵 A 的 条件数( conditional number )。 Remark: 由上面分析可知,系数矩阵的条件数很大 (>>1)(此时矩阵也称为“病态矩阵”)的线性方程组 Ax=b 是病态的;反之,系数矩阵的条件数很小的线性方程组 Ax=b 是良态的。
>> A=hilb(n);>> c=cond(A)
Example: 著名的 Hilbert 矩阵是病态的。【 Matlab 】
§3.7 条件数、病态方程组与算法的稳定性
定理 3.6 ( 条件数的性质 ) 设 A 是一个非奇异矩阵 .(1) cond(A)≥1, cond(A)=cond(A-1), con(aA)=cond(A), a ≠ 0.(2) 如果 Q 是正交矩阵,则 cond2(Q)=1, cond2(A)= cond2(QA)= cond2(AQ),其中 cond2(A)=||A-1||2 ||A||2.
§3.7 条件数、病态方程组与算法的稳定性
§3.8 稀疏矩阵的计算
.
41
1
41
14
1
2
1
1
2
1
nn b
b
b
M
M
M
例 (比较稀疏矩阵算法与普通矩阵算法:机器时间与占用空间)考虑线性方程组
% sparse and full matrix
n=100;
row=2:n; col=1:n-1;
val=ones(1,n-1);
offd=sparse(row, col,val,n,n);
a=sparse(1:n,1:n.4*ones(1,n),n,n);
b=full(a);
rh=[1:n];
tic; x=a/rh; t1=toc
tic; y=b/rh; t2=toc
【实验要求】逐步增大 n 的值,观察发生的现象。
§3.8 稀疏矩阵的计算