第二章 解线性方程组的直接法
2.3 Gauss列主元 消去法§
2.3 Gauss列主元 消去法§
例 1. 用 Gauss消去法解线性方程组 (用 3位十进制浮
点数计算 )
??
?
=+
=+
2
10001.0
21
21
xx
xx
解 : 本方程组的精度较高的解为
Tx )99989999.0,00010001.1(* =
用 Gauss消去法求解 (用 3位十进制浮点数计算 )
一 、 Gauss列主元消去法的引入
),( bAA = ??
?
?
???
?=
2
1
11
1000100.0
??? →? =1000021m ??
?
?
???
?
×?×? 44 1000.1
1
1000.10
1000100.0
9999
00.1,00.0 21 == xx回代后得到
与精确解相比 ,该结果相当糟糕
究其原因 ,在求行乘数时用了很小的数 0.0001作除数
主元
),( bAA = ??
?
?
???
?→
1
2
1000100.0
11
??? →? = 0001.021m ??
?
?
???
?
00.1
2
00.10
11
如果在求解时将 1,2行交换 ,即
0.9999
00.1,00.1 21 == xx
回代后得到
这是一个相当不错的结果
),( bAA =
例 2. 解线性方程组 (用 8位十进制尾数的浮点数计算 )
??
?
?
?
??
?
?
?
=
??
?
?
?
??
?
?
?
??
?
?
?
??
?
?
?
?
?
?
3
2
1
643.5072.12
623.4712.31
3210
3
2
1
8
x
x
x
解 : 这个方程组和例 1一样 ,若用 Gauss消去法计算会有
小数作除数的现象 ,若采用换行的技巧 ,则可避免
?
?
?
?
?
?
?
?
?
?
?
?=
?
3
2
1
643.5072.12
623.4712.31
3210 8
行交换因此
的列元素为
绝对值最大很小
3,1
,2
,10
13
8
?=
?
a
?? →? ? 31 rr
?
?
?
?
?
?
?
?
?
?
?
?
? 1
2
3
3210
623.4712.31
643.5072.12
8
???? →? ?×?=
=
8
31
21
105.0
5.0
m
m
?
?
?
?
?
?
?
?
?
?
×××
××
?
101.0
5.0
3
103.0102.00
1018015.0103176.00
643.5072.12
绝对值最大
不需换行
???? →? = 92722629.032m
?
?
?
?
?
?
?
?
?
?
×
××
?
54138685.0
5.0
3
1041555186.000
1018015.0103176.00
643.5072.12
),( )1()1( bA=
),( )2()2( bA=
),( )3()3( bA=
)3(
)3(
3
3
33a
bx = =
经过回代后可得
)1(
11
3
)1(
132
)1(
12
)1(
1
1 a
xaxabx ??=
54138685.0
1041555186.0 × 39257367.0=
)2(
22
3
)2(
23
)2(
2
2 a
xabx ?=
103176.0
1018015.05.0 3
×
××?= x 05088607.0?=
49105820.0?=
事实上 ,方程组的准确解为
Tx )367257384.0,050886075.0,491058227.0(* ??=
),( )1()1( bA
例 2所用的方法是在 Gauss消去法的基础上 ,利用换行
避免小主元作除数 ,该方法称为 Gauss列主元消去法
二 、 Gauss消元过程与系数矩阵的分解
1.Gauss消去法消元过程的矩阵描述
?
?
?
?
?
?
?
?
?
?
?
?
=
)1()1()1(
2
)1(
1
)1(
2
)1(
2
)1(
22
)1(
21
)1(
1
)1(
1
)1(
12
)1(
11
nnnnn
n
n
baaa
baaa
baaa
L
MMMM
L
L
niaam ii ,,3,2)1(
11
)1(
1
1 L==
行变换相
当于左乘
初等矩阵
由于
?
?
?
?
?
?
?
?
?
?
?
?
?
?=
1
1
1
1
21
1
nm
mL
OM令
则 ),( )1()1(1 bAL ? ),( )2()2( bA=
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?= +
1
1
1
1
,
,1
kn
kk
k
m
mL
OM
O
显然若令
则有 ),( )()( kkk bAL ? ),( )1()1( ++= kk bA
1,,3,2,1 ?= nk L
),( )1()1(1 bAL ??? 2LL??1nL ),( )()( nn bA=因此
从而 AL ?1?? 2LL??1nL
)(1
1
1
2
1
1
n
n ALLL
?
?
??= LA故
为上三角矩阵)(nAU =
为单位下三角矩阵1 11211 ????= nLLLL L
LU=
)(nA=
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
=
?
???
1
1
1
1
1
1,3,2,1,
2,12,11,1
3231
21
nnnnn
nnn
mmmm
mmm
mm
m
L
L
L
OMMM即
??
?
?
?
?
?
??
?
?
?
?
?
=
)(
)2(
2
)2(
22
)1(
1
)1(
12
)1(
11
n
nn
n
n
a
aa
aaa
MO
L
L
)(nAU =
且 Udet=Adet
顺序主元∏
=
=
n
i
i
iia
1
)(
定义 1. 不带行交换的 Gauss 消去法的消元过程 ,产生
一个单位下三角矩阵 L和一个上三角矩阵 U,即
该过程称之为
LUA =
.分解的矩阵 LUA
由上述分析不难得到
??
?
?
?
?
?
?
??
?
?
?
?
?
?
=
nnnkn
knkkk
nk
aaa
aaa
aaa
A
LL
MOMM
LL
MMOM
LL
1
1
1111
??
?
?
?
?
?
?
??
?
?
?
?
?
?
=
1
1
1
1
1
LL
OMM
L
OM
nkn
k
mm
m
??
?
?
?
?
?
?
??
?
?
?
?
?
?
?
)(
)()(
)1(
1
)1(
1
)1(
11
n
nn
k
kn
k
kk
nk
a
aa
aaa
MO
L
MMO
LL
阶顺序主子式k
kA
kkk ULA = kAdet kUdet= ∏
=
=
k
i
i
iia
1
)(
kL kU
nk
Ak
,,2,1
0det
L=
≠
ni
a iii
,,2,1
0)(
L=
≠Gauss消去法
可以执行
定理 1. ,0det ≠=
kk ADAn 的顺序主子式阶方阵若
,1,,2,1 ?= nk L 存在且唯一分解结果的则 LUALUA =
在定理中 ,可能注意到
0det == nn AD 0)( =nnna即可能存在
分解并不影响的这对 LUA
起决定作用消去法的回代能否进行用但对方程组 GaussbAx =
2.Gauss列主元消去法消元过程的矩阵描述
由于 Gauss列主元消去法每一步都要选取列主元 ,因
此不可避免要进行行交换
行交换后再消元行与的第要将步消元时设第 kkk ikbAk ),(, )()(
即 ),( )()( kk bA ),( )1()1( ++= kk bA?kL ?kikI ,
kikI ,
??
?
?
?
?
?
?
?
?
?
??
?
?
?
?
?
?
?
?
?
=
1
01
10
1
O
L
MOM
L
O
行第 k
行第 ki
kik ≤一般
时kik =
II ki
k
=,
表示不换行初等矩阵
因此 ,Gauss列主元消去法的消元过程为 :
),( )1()1( bA ),( )()( nn bA=?? 1,1 1iIL?? 2,2 2iILL?? ?? ? 1,1 1 nin nIL
A )( nA=?? 1,1
1i
IL?? 2,2
2i
ILL?? ??
? 1,1 1 nin n
IL显然 U=
上三
角阵消元过程为时当例如 ,4, =n
A )4(A=?? 1,1
1i
IL?? 2,2
2i
IL?? 3,3
3i
IL U=
3L 3,23, 33 ii ILI? 3,2,12,3, 3223 iiii IILII? 1,2,3, 123 iii III? A? U=
3,23,2 33
~
ii ILIL =设
3,2,12,3,1 3223
~
iiii IILIIL =
仍然为单位
下三角矩阵
1,2,3, 123 iii IIIP = 初等矩阵的乘积 ,称为 排列阵
则 3L 2~L? 1~L? P? A? U=
推广到一般情形
1?nL 2
~L?
1
~L? P? A? U=L
2
~
?? nL
=PA 1( ?nL 2~L? 11 )~ ?? LL2~ ?? nL U?
1( ?nL 2
~L? 1
1 )
~ ?? LL
2
~
?? nL令 =L
仍然为单位
下三角矩阵
=PA LU则 单位下三角阵与上三角阵的乘积
分解的上述过程称为矩阵 LUPA
综合以上讨论 ,有
定理 2. ,0det, ≠AAn 即为非奇异矩阵阶方阵若
使得阵和一个非奇异上三角矩
、 一个单位下三角矩阵则必存在一个排列矩阵
,U
LP
=PA LU
请作出 Gauss列主元消去法的程序 (用 Matlab语言 )
已编程序 gaussliezhuyuan.m
开始
EPSnbA ,,,输入
输出无解信息
k?1
x输出解
EPSnnA ≤|),(|
nk =
kk ?+ 1
P选取主元素
EPSP ≤||
消元换行
停机 回代求解
T
T
T
F
F
F
三
、
Gauss
列主元消去法的算法设计
(一 ) 流程图
(二 ) 自然语言
n输入方程组的维数.1
1,,2,1,,,2,1,),( +== njniabA ij LL的元素增广矩阵
EPS控制条件转移精度
1,2,1.2 ?= nk L对于
PkkA ?),(1.2
nkki ,,1,2.2 L+=对于
|||),(| PkiA >如果
).(7,||3.2 输出无解信息则转到如果 EPSP ≤
5.2,,),( 0 否则转则 IiPkiA ??
选主元
1,,1,4.2 ++= nkkj L对于
wjkA ?),( ),(),( 0 jkAjIA ? ),( 0 jIAw ?
,,,16.2 nki L+=对于
,1,,1 ++= nkj L对于
),(),(/),( kimkkAkiA ?
),(),(*),(),( jiAjkAkimjiA ??
).(7,|),(|.3 无解则转到如果 EPSnnA ≤
).(7,||5.2 输出无解信息则转到如果 EPSP ≤
换行
消元
)(),(/)1,(.4 nxnnAnnA ?+
1,2,,1.5 L?= nk对于
)(n
nn
n
n a
bx =
)(
1
)()(
i
ii
n
ij
j
i
ij
i
i
i a
xab
x
∑
+=
?
=
),(
)(),()1.(
1
kkA
jxjkAnkA
x
n
kj
k
∑
+=
?+
=
0=S
nkj ,,1 L+=对于
SjxjkAS ?+ )(*),(
SSnkA ??+ )1,(
)(),(/ kxkkAS ?
.8)),(,),2(),1((.6 并转输出解 nxxxxT L=
回代
输出无解信息.7
停机.8
上述过程中的储存空间需要 :
注意 :
1:1,:1),,( +== njnijiA增广矩阵
1:1,:1),,( ?=+= nknkikim行乘数矩阵
nkkx :1),( =解向量
SIPkji ,,,,, 0 储存空间需要较大
(三 ) 自然语言的改进
选主元
n输入方程组的维数.1 EPS控制条件转移精度
1,,2,1,,,2,1,),( +== njniabA ij LL的元素增广矩阵
1,2,1.2 ?= nk L对于
PkkA ?),(1.2
nkki ,,1,2.2 L+=对于
|||),(| PkiA >如果
5.2,,),( 0 否则转则 IiPkiA ??
.7,||3.2 则转到如果 EPSP ≤
1,,1,4.2 ++= nkkj L对于
wjkA ?),( ),(),( 0 jkAjIA ? ),( 0 jIAw ?
,,,16.2 nki L+=对于
,1,,1 ++= nkj L对于
),(),(/),( kimkkAkiA ?
),(),(*),(),( jiAjkAkimjiA ??
.7,|),(|.3 则转到如果 EPSnnA ≤
.7,||5.2 则转到如果 EPSP ≤
),(),(/),( kiAkkAkiA ?
),(),(*),(),( jiAjkAkiAjiA ??
换行
消元
)(),(/)1,(.4 nxnnAnnA ?+ )1,(),(/)1,( +?+ nnAnnAnnA
1,2,,1.5 L?= nk对于
0=S
1:1,:1),,( +== njnijiA增广矩阵
1:1,:1),,( ?=+= nknkikim行乘数矩阵
nkkx :1),( =解向量
1:1,:1),,( +== njnijiA
??
???
回代
nkj ,,1 L+=对于
SjxjkAS ?+ )(*),( SnjAjkAS ?++ )1,(*),(
SSnkA ??+ )1,(
)(),(/ kxkkAS ? )1,(),(/ +? nkAkkAS
.8)),(,),2(),1((.6 并转输出解 nxxxxT L=
输出无解信息.7
停机.8