第三章 解线性方程组的直接解法 第一节 引言
本章讨论的是:n元线性方程组的数值解法。
?a11x1?a12x2???a1nxn?b1?ax?ax???ax?b?2112222nn2可用矩阵方程Ax?b表示。 n元线性方程组?????an1x1?an2x2???annxn?bn?a11?a21其中A??????an1a12a22?an2?a1n??a2n??,x?????ann??b1??x1??b??x?2??,b??2?
??????????x?bn??n?由克拉默法则知:若
A?0,则方程组的解唯一。
?4时的线性方程组。
但由于计算量太大,不太适用当n通常计算机求解线性方程组的方法是直接法和迭代法。
直接法思想:将方程组转化为便于求解的三角线性方程组,再求三角线性方程组的解。
第二节 Gauss消去法
一、Gauss顺序消去法
Gauss
?a11x1?a12x2???a1nxn?b1?ax?ax???ax?b?2112222nn2消去法就是将线性方程组?逐次消元转化成上三角线性方程组
????an1x1?an2x2???annxn?bn(1))?x?b1(1)?a12?a1(1n?1???(2)?(2)(2)??xa22?a22n?????b2?,再逐次回代求得线性方程组的解。
???????????(n)?(n)??xann???n???bn??(1)?a11??????记增广矩阵
?A(1)b(1)?(1)?a11?(1)a??21???(1)??an1(1))(1)?a12?a1(1nb1(1)(1)(1)?a22?a2bn2? ?????(1)(1)(1)an?ab2nnn??第一次消元相当于用L1??l1?左乘?A(1)b(1)?,得:
?A(2)b(2)?L1??l1?A(1)b(1)???(1)?a11???????(1))(1)?a12?a1(1nb1(2)(2)(2)?a22?a2bn2? ?????(2)(2)(2)an2?annbn???1??l21其中,L1??l1????????ln1同理,经k??(1)1ai?为初等消元矩阵,l?1(i?2,3,?,n)
i1(1)???a11?0?1??1次消元后,可将A(1)b(1)(1)?a11??????????(1))a12?a1(1k(2)(2)a22?a2k??(k)akk?(k)ank??转化为:
)?a1(1n(2)?a2n?(k)?akn?(k)?ann?A(k)b(k)?b1(1)?(2)?b2???? (k)bk????(k)bn??第k次消元,设a(k)kk(k)aik?0,计算lik?(k)akk,i?k?1,?,n
?1????1Lk??lk????lk?1k?????lnk??则有
?????为初等消元矩阵,
1?????0?1???A(k?1)b(k?1)?Lk??lk?A(k)b(k)???
(k?1)(k)(k)?aij?aij?likakj其中:?(k?1)?bi(k)?likbk(k)?bii,j?k?1,?,ni?k?1,?,n(n)则最终可得:
?A(n)b(n)?,即得线性方程组Ax?b(n)
(n)(n)?xn?bn/ann?n?(k)?(k)回代解得 ?(k)??x?b?ax?kjj?/akk?k?kj?k?1???k?n?1,?,2,1称为Gauss消去法。
n2nn3n25n2?n?,加减法次数为??。 整个消去过程乘除法次数为33326??0, A??aij??Rn?n非奇异,且各阶顺序主子式?k??ak1?akka11?a1k定理1:
(k)k?1,2,?,n?1,则akk?0,
?a11x1?a12x2???a1nxn?b1?ax?ax???ax?b?2112222nn2从而可将线性方程组?(1)变为线性方程组
????an1x1?an2x2???annxn?bn(1)?a11??????(1))?x?b1(1)?a12?a1(1n?1???(2)?(2)(2)??xa22?a2bn??2???2?(2),并求得线性方程组(1)的解为 ????????????(n)?(n)?xann???n???bn??(n)(n)?xn?bn/ann?n?(k)?x??(k)(k)??b?ax?kjj?/akk?k?kj?k?1???k?n?1,?,2,1(3),并有
(1)(2)(n) A?a11a22?ann?x1?x2?x3?6?例1:用Gauss消去法求解线性方程组?4x2?x3?5,并求A。
?2x?2x?x?123?1?11?1116?16??x1?1?????4?15?04?15解:0,故再回代可得?x2?2,A??8 ?????x?3????2?21100?2?6?3????二、消去法与矩阵三角分解
Gauss消元法相当于左乘n?1次初等消元矩阵,即
1Ln?1(?ln?1)Ln?2(?ln?2)?L1(?l1)A?A(n)?U 而L?k(?lk)?Lk(lk)
?11?1(n)A?L1(?l1)L??LU 2(?l2)?Ln?1(?ln?1)A故
?1?l21?1?1?1其中L?L1(?l1)L2(?l2)?Ln?1(?ln?1)?L1(l1)L2(l2)?Ln?1(ln?1)??????ln1(1)?a11???????(1)a12(2)a221?ln2???????1?为
单位下三角矩阵,而U?A(n))??a1(1n(2)??a2n?为上三角矩阵,A?LU???(n)?ann??的三角分解也称
Doolittle分解,矩阵定理2:若矩阵
(k)A能进行分解的条件是akk?0(k?1,2,?,n?1)
A的顺序主子式?k?0(k?1,2,?,n?1),则A可分解为单位下三角矩阵L和上三
角矩阵U的乘积,即三、列主元消去法
A?LU,且这种分解是唯一的。
(k)(k)为0可通过行交换使其非0,但akkakk很小,则由于其做除法将导致舍入误差增长,使数值解不可靠。
例2:用Gauss消去法解方程组(用5位十进制数)?x1?2x2?1?0.0001
2x?3x?212?解:?1?0.0001?0,?2??3.9997?0,故方程组解唯一。
可用Gauss消去法求得解~x而方程组的精确解为x*??0.00000.5000?T,
T???0.250018750.49998750,两者误差较大。
先将两方程互换为??2x1?3x2?2,仍用Gauss消去法,
x1?2x2?1?0.0001可得解x?,有4位有效数字。 ??0.25000.5000列主元消去法的基本思想:每次消元前先找列主元(列中绝对值最大的元素),做行交换,然后再按照Gauss消元法计算。 注意:若主元
(k)akk?0,表明A?0,则方程组没有唯一解或严重病态。
列主元消去法是目前求解线性方程组最常用的方法,使用时可以直接从数学软件库中调用。
??0.002220.4???10.7812501.3816例3:用列主元消去法解Ax?b,其中?Ab???? ??3.9965.562547.4178??解:
?A?A(1)b(1)???Ab??A,
(2)b(2)??3.9965.562547.4178?????0?0.61077?1.0010?0.47471? ?2.00282.00200.40371??0?(3)b(3)??3.9965.562547.4178?????02.00282.00200.40371? ??0?0.39047?0.35159?0?消元结束,回代过程(3),求得解为x此例精确解为x*???1.9273?0.698500.90043TT
???1.92730?0.6984960.900423,两者误差较小。
T若不选列主元的Gauss消去法,求得解x???1.9300?0.686950.88888,误差较大。
第三节 直接三角分解法
一、Doolittle分解
A?LU,故线性方程组可化为LUx?b解决,其中Ly?b,Ux?y
?a11?a21而A??????an1a12a22?an2?1?a1n??l21???a2n????????ln?11?ann????ln11?ln2?1?lnn?1ln?12????u11?????????1??u12u22?u1n??u2n?? ????unn?u1j?a1j??ai1j?1,2,?nl??i1u11?i?2,3,?,n?i?1可解得:?
uij?aij??likukjj?i,i?1,?,n?k?1?j?1i?j?1,?,n??1?lij??aij??likukj???u?k?1??jj?再解线性方程组,计算公式为:
y1?b1?i?1?i?2,3,?,n?yi?bi??lijyjj?1??y ?xn?n?unn?n???xi?1?yi??uijxj?i?n?1,?,2,1???uj?i?1ii???注意:上述根据矩阵乘法直接得到的计算公式是编制软件使用的,我们一般只对n不必死记公式,直接用矩阵乘法计算即可。
?3的简单情形求解,
?123??x1??14???????例4:用直接三角分解求解方程组252x2?18 ????????315????x3????20??解:直接用矩阵乘法可知:u11 l31?1,u12?2,u13?3,l21?2,
?3,u22?1 ,u23??4,l32??5,u33??24,即
3??1??12???1?4??LU1 A?2??????24??3?51????? 求解Ly
??14,18,20?T,得
y??14,?10,?72?T
求解Ux??14,?10,?72?T,得x??1,2,3?T
Ax?f
二、三对角线性方程组的追赶法
科学计算中,常常要解三对角线性方程组,即