第二章 线性方程组的直接方法(3)
这一讲,我们来学习平方根法。平方根法也是一种求解线性方程组的三角分解法。之前我们已经讲过了求解三角分解的Doolittle三角分解法,那么平方根法有什么区别呢?
2.5 平方根法
平方根法是用来适用于系数矩阵A是对称正定矩阵的,如果A为对称正定矩阵,则有唯一分解A=LU,且ukk>0。那么我们可以将矩阵U继续分解,分解为一个对角矩阵和一个单位上三角矩阵的乘积:
⎣⎢⎢⎢⎡u11u12u22......⋱u1nu2n⋮unn⎦⎥⎥⎥⎤=⎣⎢⎢⎡u11u22⋱unn⎦⎥⎥⎤⎣⎢⎢⎢⎡1u11u121......⋱u11u1nu22u2n⋮1⎦⎥⎥⎥⎤=DM
则有:A=LDM
又因为A是对称矩阵,那么我们又可以推出(LDM)T=MTDLT=LDM,所以M=LT,所以又可以进一步写成A=LDM=LDLT。
因为ukk>0,那么我们将对角矩阵D再进一步分解:
令D=⎣⎢⎢⎡u11u22⋱unn⎦⎥⎥⎤⎣⎢⎢⎡u11u22⋱unn⎦⎥⎥⎤=D21D21
则有A=LD21D21LT=(LD21)(LD21)T=GGT,其中,G=LD21
因此,正定对称矩阵A经过一系列分解,得到A=GGT,称为对称正定矩阵的Cholesky分解。
那么,原来的Ax=b就转换为了Gy=b,GTx=y,这就是平方根法。
计算方法
若记G=(gij),则有:对k=1,2,...,n
{gkk=(akk−∑m=1k−1gkm2)21gik=(aik−∑m=1k−1gimgkm)÷gkk,i=k+1,...,n
求解顺序:先求G的都一列,再求第二列,以此类推。
解三角方程Gy=b,GTx=y,可得:
{yk=(bk−∑m=1k−1gkmym)÷gkkxk=(yk−∑m=k+1ngmkxm)÷gkk
例:解线性方程组:
⎩⎪⎨⎪⎧4x1+2x2+4x3=42x1+10x2−x3=174x1−x2+6x3=0
通过观察可知,这是一个正定对称矩阵,因此可以使用Cholesky分解。
解:
我们表示正定对称的系数矩阵A和G都可以只写出下三角元素
⎣⎡42410−16⎦⎤→⎣⎡2123−11⎦⎤
所以:
A=⎣⎡2123−11⎦⎤⎣⎡2132−11⎦⎤=GGT
接下来求解三角方程,解方程Gy=b:
⎣⎡2123−11⎦⎤⎣⎡y1y2y3⎦⎤=⎣⎡4170⎦⎤,得⎣⎡y1y2y3⎦⎤=⎣⎡251⎦⎤
再解GTx=y:
⎣⎡2132−11⎦⎤⎣⎡x1x2x3⎦⎤=⎣⎡251⎦⎤,得⎣⎡x1x2x3⎦⎤=⎣⎡−121⎦⎤
平方根法是求对称正定系数线性方程组的三角分解法,对称正定矩阵的Cholesky分解的计算量和存储量均约为一般矩阵的LU分解的一般。且Cholesky分解具有数值稳定性。