高斯主元消去法-matlab,高斯列主元消去法在Matlab中的实现

在我们的实验和工程中经常会遇到求解方程组的问题,而利用计算机求解是比较强有力的方法。高斯消去法是一种比较直观和简单的方法,但高斯消去法的特点是每次都是按照系数矩阵的主对角线上元素的顺序依次消元的,在这种迭代过程中容易出现两个问题:第一,一旦遇上某个主元等于零,消元过程便无法进行下去;第二,人们在长期的工作中发现,即使消元过程能进行下去,但当某个主元的绝对值很小时,求出的结果与真实值之相差甚远。为了避免高斯消元中出现的上述两个问题,一般采用所谓选主元的方法(即高斯列主元消去法),其特点是:每次在系数矩阵中一次按列在主对角线及以下的元素中,选取最大的元素作为主元,将它调到主对角线上,然后用它消去主对角线以下的元素,最后化为同解的上三角形方程组去求解。由于列主元消去法在目前工程实际中应用广泛,但涉及该算法的计算量庞大,因此,必须借助计算机来完成该算法的求解过程。1算法的主要思想高斯列主元消去法的算法步骤:设有n元线性方程组a11a12…a1na21a22…a2n…………an1an2…ann?x1x2xn?=b1b2bn?(1)1)对方程组(1)确定i1,使得ai11=max1inai1,选取ai11作为第一个主元,然后交换第1、第i1个方程。2)令li1=ai1/a11,i=2,3,…,n,用-li1()乘第一个方程加到第i个方程上(i=2,3,…,n),得同解方程组a(1)11a(1)12…a(1)1n0a(2)22…a(2)2n…………0a(2)n2…a(2)nn?x1x2xn?=b(1)1b(2)2b(2)n?(2)其中a(2)ij=a(1)ij-li1a(1)1j,i,j=2,3,…,nb(2)i=b(1)i-li1b(1)1,i=2,3,…,n3)对方程组(2)确定i2,使得ai22=max2inai2,选取ai22作为第二个主元,然后交换第2、第i2个方程。4)令li2=a(2)i2/a(2)22,i=3,4,…,n,用-li2()乘第二个方程加到第i个方程上(i=3,4,…,n),得同解方程组a(1)11a(1)12a(1)13…a(1)1n0a(2)22a(2)23…a(2)2n00a(3)33…a(3)3n……………00a(3)n3…a(3)nn?x1x2x3x4x5?=b(1)1b(2)2b(3)3b(3)n?(3)561其中a(3)ij=a(2)ij-li2a(2)2j,i,j=3,4,…,nb(3)i=b(2)i-li2b(2)2,i=3,4,…,n5)设已完成第k-1步消元,得到同解方程组a(1)11a(1)12…a(1)1k…a(1)1n0a(2)22…a(2)2k…a(2)2n…00…a(k)kk…a(k)kn…00…a(k)nk…a(k)nn?x1x2xkxn?=b(1)1b(2)2b(k)kb(k)n?反复进行上述过程,那么,经过n-1步消元,最后便得到如下的与原方程组同解的上三角形方程组:a(1)11a(1)12…a(1)1n0a(2)22…a(2)2n…………00…a(n)nn?x1x2xn?=b(1)1b(2)2b(n)n?(4)由此可以看出,经过了n-1步逐步消元后,矩阵已经化成上三角形式,此时由(4)的最后一个方程就可求出xn,然后将xn代入倒数的第二个方程,求出xn-1,依次类推,可顺序解出xi,x……最后,由第一个方程求出x1。从而可得方程组的解为:xn=b(n)/a(n)nnxk=(b(k)k-nj=k+1a(k)kjxj)/a(k)kk,k=n-1,n-2,…,2,1?总之,高斯列主元消去法大概可分为

你可能感兴趣的:(高斯主元消去法-matlab)