. -
线性代数方程组数值解法及MATLAB实现综述
廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一、分析课题
随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。
直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。
迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。迭代法包括Jacobi法SOR法、SSOR法等多种方法。
二、研究课题-线性代数方程组数值解法 一、 直接法 1、 Gauss消元法
通过一系列的加减消元运算,也就是代数中的加减消去法,以使A对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x向量。
. 可修编.
. -
1.1消元过程
1. 高斯消元法(加减消元):首先将A化为上三角阵,再回代求解。
?a(1)12a(1)13a(1)1nb(1)1??a11a12a1nb?a(1)111?a(2)?a22a(2)23a(2)2nb(2)?221a22a2nb??02????0a(3)33a(3)3nb(3)3????0? ?a?n1an2annb???n???000a(n)nnb(n)n??步骤如下:
第一步:第1行??ai1a?第i行,i?2,,n
11??a11a12a1nb1?a1nb1??a21a22ab???a11a12(2)2n2a(2)b(2)?2n2???0a22????? ?an1an2annb??(2)n??0an2a(2)nnb(2)?n?第二步:2行??a(2)第i2a(2)?第i行,i?3,,n 22??a11a12a1b???a11a12a13a1nb1?n1?0a(2)22a(2)b(2)??0a(2)22a(2)23a(2)2nb(2)?22n2???????00a(3)33a(3)3nb(3)3?? ?0a(2)n2a(2)?nnb(2)??n???00a(3)a(3)n3nnb(3)n??类似的做下去,我们有:
第k步:(第k行??ak)ika(k)?第i行,i?k?1,,n。
kkn-1步以后,我们可以得到变换后的矩阵为:
??a11a12a13a1nb1??0a(2)22a(2)23a(2)2nb(2)?2???00a(3)33a(3)3nb(3)3??? ???000a(n)nnb(n)n?? . 可修编.
. -
(k)注意到,计算过程中akk处在被除的位置,因此整个计算过程要保证它不为0。
所以,Gauss消元法的可行条件为:a(k)kk?0。 就是要求A的所有顺序主子式均不为0,即
?a11a1i?det??????0,i?1,,n
?ai1aii??因此,有些有解的问题,不能用Gauss消元求解。
另外,如果某个a(k)kk很小的话,会引入大的误差。
例 用Gauss消去法解方程组:
??12?334????x1??15?(1)??183?1?1x?????1111???2?x????15? 3?31?11?????6??x???4??2?(1)对增广矩阵进行初等变换
?123415?(3?2E1?E2)?E27?12?33415???3(?112E1?E3)?E3?0?3515???183?1?1?15??(?1E1?E4)?E4?222???43219?
?11116??????????05??31?112????4434????7?04?740?7?4????12?334???12?33(56E)?E372?E33?0?515????0?3715?????(76E2?E4)?E4?22???0011292???????(?711E3?E4)?E4?22???3611????00113?00735??7?36?????000 . 4?515?15??292? 611??910?33?? 可修编.
. -
得等价方程组
?12x1?3x2?3x3?4x4?15???3x2?7x3?5x4?15222?? 1129?x?x?1134?36?91?x4?0?33?回代得x4?0,x3?3,x2?2,x1?1。
第一步:将(1)/3使x1的系数化为1,再将(2)、(3)式中x1的系数都化为零,即由(2)-2×(1)得
(1)
x1?21x2?x3?2......(1)(1)33由(3)-4×(1)(1)得
24x2?x3?0......(2)(1)331410?x2?x3??6......(3)(1)33x2?2x3?0......(2)(2)第二步:将(2)除以2/3,使x2系数化为1,得
(1)
再将(3)(1)式中x2系数化为零,由(3)(1)-(-14/3)*(2)(2),得
18x3??6......(3)(2)3
x3??1......(3)(3)第三步:将(3)除以18/3,使x3系数化为1,得
(2)
经消元后,得到如下三角代数方程组:
. 可修编.
. -
1.2回代过程
由(3)(3)得 x3=1,将x3代入(2)(2)得x2=-2,将x2 、x3代入(1)(1)得x2=1,
所以,本题解为[x]=[1,2,-1]T
1.3高斯消元的公式
综合以上讨论,不难看出,高斯消元法解方程组的公式为 第一步,消元
(1) 令
aij(1) = aij , (i,j=1,2,3,…,n) bi(1) =bi , (i=1,2,3,…,n) (2) 对k=1到n-1,若akk(k)≠0,进行
lik = aik / akk , (i=k+1,k+2,…,n) aij(k+1) = aij(k) - lik * akj(k), (i,j= k+1,k+2,…,n) bi(k+1) = bi(k) - lik * bk(k), (i= k+1,k+2,…,n)
第二步,回代
若ann(n) ≠ 0
xn = bn(n) / ann(n)
xi = (bi(i) – sgm(aij(i) * xj)/- aii(i) ,(i = n-1,n-2,…,1),( j = i+1,i+2,…,n )
2 、LU分解法
求解线性代数方程组除了高斯消元法外,还常用LU分解法(三角形分解法)。LU分解法的优点是当方程组左端系数矩阵不变,仅仅是方程组右端列向量改变,
. 可修编.
(k)
(k)
线性代数方程组数值解法及MATLAB实现综述 - 图文



