列主元高斯消去法和列主元三角分解法解线性方程
- 格式:doc
- 大小:508.00 KB
- 文档页数:16
数值分析复习资料一、重点公式第一章 非线性方程和方程组的数值解法 1)二分法的基本原理,误差:~12k b ax α+--<2)迭代法收敛阶:1lim0i pi ic εε+→∞=≠,若1p =则要求01c <<3)单点迭代收敛定理:定理一:若当[],x a b ∈时,[](),x a b ϕ∈且'()1x l ϕ≤<,[],x a b ∀∈,则迭代格式收敛于唯一的根;定理二:设()x ϕ满足:①[],x a b ∈时,[](),x a b ϕ∈, ②[]121212,,, ()(),01x x a b x x l x x l ϕϕ∀∈-≤-<<有 则对任意初值[]0,x a b ∈迭代收敛,且:110111i i iii x x x llx x x lαα+-≤---≤-- 定理三:设()x ϕ在α的邻域内具有连续的一阶导数,且'()1ϕα<,则迭代格式具有局部收敛性;定理四:假设()x ϕ在根α的邻域内充分可导,则迭代格式1()i i x x ϕ+=是P 阶收敛的 ()()()0,1,,1,()0j P j P ϕαϕα==-≠ (Taylor 展开证明)4)Newton 迭代法:1'()()i i i i f x x x f x +=-,平方收敛 5)Newton 迭代法收敛定理:设()f x 在有根区间[],a b 上有二阶导数,且满足: ①:()()0f a f b <; ②:[]'()0,,f x x a b ≠∈;③:[]'',,f x a b ∈不变号④:初值[]0,x a b ∈使得''()()0f x f x <;则Newton 迭代法收敛于根α。
6)多点迭代法:1111111()()()()()()()()()i i i i i i i i i i i i i i i f x f x f x x x x x f x f x f x f x f x f x x x -+-----=-=+----收敛阶:P =7)Newton 迭代法求重根(收敛仍为线性收敛),对Newton 法进行修改 ①:已知根的重数r ,1'()()i i i i f x x x rf x +=-(平方收敛) ②:未知根的重数:1''()(),()()()i i i i u x f x x x u x u x f x +=-=,α为()f x 的重根,则α为()u x 的单根。
高斯列主元消去法2.3高斯列主元消去法解线性方程组一:问题的提出我们都知道,高斯列主元素消去法是计算机上常用来求解线性方程组的一种直接的方法。
就是在不考虑舍入误差的情况下,经过有限步的四则运算可以得到线性方程组的准确解的一类方法。
实际运算的时候因为只能有限小数去计算,因此只能得到近似值。
在实际运算的时候,我们很多时候也常用高斯消去法。
但是高斯消去法在计算机中运算的时候常会碰到两个问题。
1.一旦遇到一些主元等于0,消元过程便无法进行下去。
2.在长期使用中还发现,即使消元过程能进行下去,但是当一些主元的绝对值很小时,求解出的结果与真实结果相差甚远。
为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。
其中又可以分为列选主元和全面选主元两种方法。
目前计算机上常用的按列选主元的方法。
因此我在这里做的也是列选主元高斯消去法。
二、算法的基本思想大家知道,如果一个线性方程组的系数矩阵是上三角矩阵时,即这种方程组我们称之为上三角方程组,它是很容易求解的。
我们只要把方程组的最下面的一个方程求解出来,在把求得的解带入倒数第二个方程,求出第二个解,依次往上回代求解。
然而,现实中大多数线性方程组都不是上面所说的上三角方程组,所以我们有可以把不是上三角的方程通过一定的算法化成上三角方程组,由此我们可以很方便地求出方程组的解。
高斯消元法的目的就是把一般线性方程组简化成上三角方程组。
于是高斯消元法的基本思想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解线性方程组。
三、算法的描述1、设有n元线性方程组如下:=2、第一步:如果a11!=0,令li1= ai1/a11, I= 2,3,……,n用(-li1)乘第一个方程加到第i个方程上,得同解方程组:a(1)11a(1)12...a(1)1nx1b(1)1a(1)21a(1)22...a(1)2nx2b(1)2 .......=.a(1)n-11 a(1)n-12 . .a(1)n-1nxn-1b(1)n-1a(1)n1a(1)n2. . . a(1)nnxnb(1)n简记为:A(2)x=b(2)其中a(2)ij = a(1)ij – li1 a(1)1j ,I ,j = 2,3,..,nb(2)I = b(1)I – li1 b(1)1 ,I = 2,3,...,n第二步:如果a(2)22!=0,令li2= a(2)i2/a(2)22, I= 3,……,n依据同样的原理,对矩阵进行化间(省略),依次下去,直到完成!最后,得到上三角方程组:a(1)11a(1)12...a(1)1nx1b(1)1a(1)22 ...a(1)2nx2b(1)2 .......=.. .a(n-1)n-1nxn-1b(n-1)n-1. . . a(n)nnxnb(n)n简记为:A(n)x=b(n)最后从方程组的最后一个方程进行回代求解为:n = b(n) / a(n)nni = ( b(k)k - a(k)kjxj ) / a(k)kk以上为高斯消去法的基本过程。
实验报告线性方程组的求解一.上机题目已知方程组为:x1-2*x2+2*x3=-2;2*x1-3*x2-3*x3=4;4*x1+x2+6*x3=3;分别用矩阵的三角分解法和高斯列主元消去法求方程组的解二.目的要求掌握用矩阵的三角分解法和高斯列主元消去法设计程序,从而实现对线性方程组的求解。
三.方法原理1.高斯消去法是通过逐步消元的方法把原方程组化为等价的上三角形方程组,然后回代的求解过程。
高斯列主元消去法是在高斯消去法第k步时,不取a[k][k]作为主元,而是取满足|a[r][k]|=max|a[i][k]|(k<=i<=n)的a[r][k]作为主元,若有多个r满足则取最小的,然后再去交换第r行与第k行;最后利用高斯消元法求解。
2. 矩阵的三角分解法是方程组的系数矩阵A可以分解为一个下三角阵L和一个上三角阵U的乘积,即A=LU,则AX=b为LUX=b,根据Ly=b和UX=y求出方程组的解。
其中求L,U的过程为:先计算U的第一行和L的第一列U[1][j]=a[1][j](1<=j<=n),L[i][1]=a[i][1]/U[1][1];然后根据U[k][j]=a[k][j]-∑L[k][r]*U[r][j](1<=r<=k-1;j=k,k+1,…n)和L[i][k]=(a[i][k]-∑L[i][r]*U[r][k])/U[k][k](1<=r<k-1;i=k+1,…n)计算出U的第k行和L的第k 列,从而求出L和U矩阵四.算法步骤(N-S流程图)1.矩阵的三角分解法算法步骤如下:Step1:计算U的第一行和L的第一列U的第一行:i=1时a[1][j]=L[1][1]*U[1][j]则U[1][j]=a[1][j] L[1][1]=1 (j=1,2,…n );L的第一列:j=1时a[i][1]=L[i][1]*U[1][1]则L[i][1]=a[i][1]/a[1][j] (i=2,3,…n);Step2:计算U的第二行和L的第二列U的第二行:i=2时a[2][j]=L[2][1]*U[1][j]+L[2][2]*U[2][j] L[2][2]=1则U[2][j]=a[2][j] –L[2][1]*U[1][j] (j=2,3,…n);L的第二列:j=2时 a[i][2]=L[i][1]*U[1][2]]+L[i][2]*U[2][2]则L[i][2]=(a[i][2]-L[i][1]*U[1][2])/U[2][2] (i=3,4,…n);Step3:假设已经进行了(k-1)步,得到了U的前k-1行和L的前k-1列,则计算U的第k行和L的第k列U的第k行:i=k时U[k][j]=a[k][j]-∑L[k][r]*U[r][j] (1<=r<=k-1;j=k,k+1,…n)L的第k列:j=k时L[i][k]=(a[i][k]-∑L[i][r]*U[r][k])/U[k][k] (1<=r<k-1;i=k+1,…n)Step4:利用L,U求解方程组的解根据A=L*U,A*X=y,从而得到 Ly=b和UX=y,然后根据高斯消元法的回代部分即可分别求出y和x2. 高斯列主元消去法算法步骤如下:Step1:选出列主元a[r][k]=max|a[i][k]| (k<=i<=n);Step2:判断方程组是否适合使用该方法求解若a[r][k]<e,则方程组不适合使用该方法求解,程序结束,否则进行下一步Step3:若r不等于k,交换r,k行Step4:高斯消元求解过程消元过程:当k=0,i=1时,令a[1][0]=a[1][0]/a[0][0];b[1]=b[1]-a[1][0]*b[1]; j=1时a[1][1]=a[1][1]-a[1][0]*a[0][1]当消元进行到第k次时,令a[k][k-1]=a[k][k-1]/a[k-1][k-1]; b[k]=b[k]-a[k][k-1]*b[k]; j=k时a[k][k]=a[k][k]-a[k][k-1]*a[k][k-1]回代求解过程:b[n-1]=b[n-1]/a[n-1][n-1];当k=n-1时,b[k]=(b[k]-∑a[k][j]*b[j])/a[k][k](k+1<=j<=n;k=n-1,n-2,...1);返回值b[k]即为所求解。
例题分析一例1 设准确值x*=π =3.1415926,当分别取近似值x=3.14和x=3.1416和x=3.1415时,求绝对误差、绝对误差限及有效数字位数。
解:近似值x=3.14=0.314×101,即m=1, 它的绝对误差是 -0.0015926…,有│x-x*│=0.0015926…≤0.5×101-3 即n=3,故x=3.14有3位有效数字。
x=3.14准确到小数点后第2位,又近似值x=3.1416,它的绝对误差是0.0000074…,有│x-x*│=0.0000074…≤0.5×101-5 即m=1,n=5,x=3.1416有5位有效数字。
而近似值x=3.1415,它的绝对误差是0.0000926…,有│x-x*│=0.0000926…≤0.5×101-4 即m=1,n=4,x=3.1415有4位有效数字。
这就是说某数有s位数,若末位数字是四舍五入得到的,那么该数有s位有效数字;例2 指出下列各数具有几位有效数字,及其绝对误差限和相对误差限: 2.0004 -0.00200 9000 9000.00 解:因为x1=2.0004=0.20004×101,它的绝对误差限0.00005=0.5×101-5,即m=1,n=5,故x=2.0004有5位有效数字。
a1=2,相对误差限; x2=-0.00200,绝对误差限0.000005,因为m=-2,n=3,x2=-0.00200有3位有效数字。
a1=2,相对误差限 x3=9000,绝对误差限为0.5×100,因为m=4, n=4,x3=9000有4位有效数字,a=9,相对误差限 x4=9000.00,绝对误差限0.005,因为m=4,n=6,x4=9000.00有6位有效数字,相对误差限为 由x3与x4可以看到小数点之后的0,不是可有可无的,它是有实际意义的。
例3 ln2=0.69314718…,精确到10-3的近似值是多少? 解:精确到10-3=0.001,意旨两个近似值x1,x2满足│x1-x2│≤0.001,由于近似值都是四舍五入得到的,要求满足│x1-x2│≤0.001,近似值的绝对误差限应是ε=0.0005,故至少要保留小数点后三位才可以。
数值分析小论文线性方程组的直接解法线性方程组的直接解法是指通过一系列的代数运算直接求解线性方程组的解。
线性方程组是数值分析中非常重要的问题,广泛应用于工程、科学、计算机图形学等领域。
在线性方程组的直接解法中,最常用的方法是高斯消元法,它是一种基于矩阵变换的方法。
高斯消元法将线性方程组表示为增广矩阵,并通过一系列的行变换将增广矩阵转化为行阶梯形矩阵,从而得到方程组的解。
高斯消元法的主要步骤包括消元、回代和得到方程组的解。
消元是高斯消元法的第一步,通过一系列的行变换将增广矩阵的元素转化为上三角形式。
在消元过程中,我们首先找到主元素,即矩阵的对角线元素,然后将其它行的元素通过消元操作转化为0,从而使得矩阵逐步变成上三角形矩阵。
回代是高斯消元法的第二步,通过一系列的回代操作求解线性方程组。
回代操作是从上三角形矩阵的最后一行开始,通过依次求解每个未知数的值,最终得到方程组的解。
高斯消元法的优点是算法简单易于实现,可以在有限的步骤内求解线性方程组,适用于一般的线性方程组问题。
但是高斯消元法也存在一些问题,例如当矩阵的主元素为0时,无法进行消元操作,此时需要通过行交换操作来避免这种情况。
另外,高斯消元法对病态矩阵的求解效果较差,容易引起舍入误差累积,导致解的精度下降。
在实际应用中,为了提高求解线性方程组的效率和精度,人们常常使用一些改进的直接解法,例如列主元高斯消元法和LU分解法。
列主元高斯消元法通过选择最大主元来避免主元为0的情况,进一步提高了求解线性方程组的精度。
LU分解法将矩阵表示为两个矩阵的乘积,从而将线性方程组的求解问题转化为两个三角形矩阵的求解问题,提高了求解效率。
综上所述,线性方程组的直接解法是一种基于矩阵变换的方法,通过一系列的代数运算求解线性方程组的解。
高斯消元法是最常用的直接解法之一,它简单易于实现,适用于一般的线性方程组问题。
在实际应用中,可以通过改进的直接解法来进一步提高求解效率和精度。
WORD格式.分享第5章复习与思考题1、用高斯消去法为什么要选主元?哪些方程组可以不选主元?k答:使用高斯消去法时,在消元过程中可能出现a的情况,这时消去法无法进行;即kkk时主元素0和舍入增长a,但相对很小时,用其做除数,会导致其它元素数量级的严重kk计误差的扩散,最后也使得计算不准确。
因此高斯消去法需要选主元,以保证计算的进行和算的准确性。
当主对角元素明显占优(远大于同行或同列的元素)时,可以不用选择主元。
计算时一般选择列主元消去法。
2、高斯消去法与LU分解有什么关系?用它们解线性方程组Ax=b有何不同?A要满足什么条件?答:高斯消去法实质上产生了一个将A分解为两个三角形矩阵相乘的因式分解,其中一个为上三角矩阵U,一个为下三角矩阵L。
用LU分解解线性方程组可以简化计算,减少计算量,提高计算精度。
A需要满足的条件是,顺序主子式(1,2,⋯,n-1)不为零。
3、楚列斯基分解与LU分解相比,有什么优点?楚列斯基分解是LU分解的一种,当限定下三角矩阵L的对角元素为正时,楚列斯基分解具有唯一解。
4、哪种线性方程组可用平方根法求解?为什么说平方根法计算稳定?具有对称正定系数矩阵的线性方程可以使用平方根法求解。
,切对角元素恒为正数,因此,是一个稳定的平方根法在分解过程中元素的数量级不会增长算法。
5、什么样的线性方程组可用追赶法求解并能保证计算稳定?对角占优的三对角方程组6、何谓向量范数?给出三种常用的向量范数。
向量范数定义见p53,符合3个运算法则。
正定性齐次性三角不等式x为向量,则三种常用的向量范数为:(第3章p53,第5章p165)设n||x|||x|1ii11n22||x||(x)2ii1||x||max|x i|1in7、何谓矩阵范数?何谓矩阵的算子范数?给出矩阵A=(a ij)的三种范数||A||1,||A||2,精品.资料WORD格式.分享||A||∞,||A||1与||A||2哪个更容易计算?为什么?向量范数定义见p162,需要满足四个条件。
线性方程组的几种解法线性方程组形式如下:常记为矩阵形式其中一、高斯消元法高斯(Gauss)消元法的基本思想是:通过一系列的加减消元运算,也就是代数中的加减消去法,将方程组化为上三角矩阵;然后,再逐一回代求解出x向量。
现举例说明如下:(一)消元过程第一步:将(1)/3使x1的系数化为1 得再将(2)、(3)式中x1的系数都化为零,即由(2)-2×(1)(1)得由(3)-4×(1)(1)得)1(32)2(......3432=+xx)1(321)1(......23132=++xxx第二步:将(2)(1)除以2/3,使x 2系数化为1,得再将(3)(1)式中x 2系数化为零,即 由(3)(1)-(-14/3)*(2)(2),得第三步:将(3)(2)除以18/3,使x 3系数化为1,得经消元后,得到如下三角代数方程组:(二)回代过程由(3)(3)得 x 3=1, 将x 3代入(2)(2)得x 2=-2, 将x 2 、x 3代入(1)(1)得x 2=1 所以,本题解为[x]=[1,2,-1]T(三)、用矩阵演示进行消元过程第一步: 先将方程写成增广矩阵的形式第二步:然后对矩阵进行初等行变换初等行变换包含如下操作(1) 将某行同乘或同除一个非零实数(2) 将某行加入到另一行 (3) 将任意两行互换第三步:将增广矩阵变换成上三角矩阵,即主对角线全为1,左下三角矩阵全为0,形)3(3)3(......1-=x )2(3)3( (63)18-=x )2(32)2(......02=+x x )1(32)3( (63)10314-=--x x示例:(四)高斯消元的公式综合以上讨论,不难看出,高斯消元法解方程组的公式为1.消元(1)令a ij(1) = a ij , (i,j=1,2,3,…,n)b i(1) =b i , (i=1,2,3,…,n)(2)对k=1到n-1,若a kk(k)≠0,进行l ik = a ik(k) / a kk(k) , (i=k+1,k+2,…,n)a ij(k+1) = a ij(k) - l ik * a kj(k), (i,j= k+1,k+2,…,n)b i(k+1) = b i(k) - l ik * b k(k), (i= k+1,k+2,…,n)2.回代若a nn(n) ≠0x n = b n(n) / a nn(n)x i = (b i(i) – sgm(a ij(i) * x j)/- a ii(i),(i = n-1,n-2,…,1),( j = i+1,i+2,…,n )(五)高斯消元法的条件消元过程要求a ii(i) ≠0 (i=1,2,…,n),回代过程则进一步要求a nn(n) ≠0,但就方程组Ax=b 讲,a ii(i)是否等于0时无法事先看出来的。
目录1 引言 (2)1.1 概念 (3)1.2 解的情况及其通解 (4)2 线性方程组的常见解法 (4)2.1 高斯消元法 (4)2.2 矩阵初等变换法 (6)2.2.1 LU分解 (6)2.2.2 追赶法 (9)2.3平方根法 (10)3 线性方程组解法探讨 (12)3.1 线性方程组的直接方法 (12)3.2 线性方程组的多项式矩阵的初等变换法 (16)4结束语................................................................19参考文献 (20)线性方程组的解法摘要: 线性方程组是线性代数中一个最基础的内容,广泛应用于现代科学的许多分支。
其核心问题之一就是线性方程组的求解问题。
本文先简要介绍了线性方程组的概念,然后给出线性方程组解的结构,重点介绍了解线性方程组的几种方法:高斯消元法,追赶法,平方根法,直接法,初等变换法等求解线性方程组的方法。
说明研究线性方程组求解问题的探讨及本文的写作意义。
关键词: 线性方程组;高斯消元法;平方根法;追赶法;直接法;初等变换法1 引言线性方程组即各个方程关于未知量均为一次的方程组。
对线性方程组的研究,中国比欧洲至少早1500年,记载在公元初《九章算术》方程章中。
线性方程组是线性代数的主要内容,它主要包括线性方程组有解性的判定、线性方程组的求解和线性方程组解的结构等。
线性方程组的核心问题是研究它何时有解,以及解是什么。
本节主要对线性方程组解的情况进行讨论,给出当解不唯一时通解的表示形式。
另外还介绍了几种特殊的线性方程组的求解方法。
线性方程组可以分成两类,一类是未知量个数与方程的个数相等,另一类是未知量个数与方程的个数不等。
对于前一类特殊的线性方程组,我们可以采用克拉默法则,对于后一种线性方程组我们可以采用高斯消元法。
而且随着现代工业的发展,线性方程组的应用出现在各个领域,伴随着大量方程和多未知数的出现,而追赶法是数值计算中解线性方程组的一种直接法,它能在无舍入误差存在的情况下,经过有限步运算即可求得方程组的精确解的算法。
计算方法实验报告1 【课题名称】 用列主元高斯消去法和列主元三角分解法解线性方程
【目的和意义】 高斯消去法是一个古老的求解线性方程组的方法,但由它改进得到的选主元的高斯消去法则是目前计算机上常用的解低阶稠密矩阵方程组的有效方法。 用高斯消去法解线性方程组的基本思想时用矩阵行的初等变换将系数矩阵A约化为具有简单形式的矩阵(上三角矩阵、单位矩阵等),而三角形方程组则可以直接回带求解 用高斯消去法解线性方程组bAx(其中A∈Rn×n)的计算量为:乘除法运算步骤为32(1)(1)(21)(1)(1)262233nnnnnnnnnnnMDn
,加减运算步骤为
(1)(21)(1)(1)(1)(25)6226nnnnnnnnnnAS。相比之下,传统的克莱姆
法则则较为繁琐,如求解20阶线性方程组,克莱姆法则大约要19510次乘法,而用高斯消去法只需要3060次乘除法。 在高斯消去法运算的过程中,如果出现abs(A(i,i))等于零或过小的情况,则会导致矩阵元素数量级严重增长和舍入误差的扩散,使得最后的计算结果不可靠,所以目前计算机上常用的解低阶稠密矩阵方程的快速有效的方法时列主元高斯消去法,从而使计算结果更加精确。 2、列主元三角分解法 高斯消去法的消去过程,实质上是将A分解为两个三角矩阵的乘积A=LU,并求解Ly=b的过程。回带过程就是求解上三角方程组Ux=y。所以在实际的运算中,矩阵L和U可以直接计算出,而不需要任何中间步骤,从而在计算过程中将高斯消去法的步骤进行了进一步的简略,大大提高了运算速度,这就是三角分解法 采用选主元的方式与列主元高斯消去法一样,也是为了避免除数过小,从而保证了计算的精确度 【计算公式】 1、 列主元高斯消去法 设有线性方程组Ax=b,其中设A为非奇异矩阵。方程组的增广矩阵为
第1步(k=1):首先在A的第一列中选取绝对值最大的元素1la,作为第一步的主元素: 然后交换(A,b)的第1行与第l行元素,再进行消元计算。 设列主元素消去法已经完成第1步到第k-1步的按列选主元,交换两行,消元计算得到与原方程组等价的方程组 A(k)x=b(k)
第k步计算如下: 对于k=1,2,…,n-1 (1)按列选主元:即确定t使 (2)如果t≠k,则交换[A,b]第t行与第k行元素。 (3)消元计算
111211212222112[,]nn
nlnnnna
aaabaaab
aaab
ab
111max0liinaa
(1)(1)(1)(1)(1)
1112111(2)(2)(2)(2)22222()(()1)()()()()()1,1()(,)()[,][,] kkkknkkn
kn
kkkkk
kkknk
kk
knkkknnnaaaabaaabaababbaaa
AbAb
()()max0kktkikkinaa
,(1,,)ikikikkkaamikna, (,1,,), (1,,)ijijikkjiiikkaamaijknbbmbikn
消元乘数mik满足: (4)回代求解
2、 列主元三角分解法 对方程组的增广矩阵 经过k-1步分解后,可变成如下形式:
第k步分解,为了避免用绝对值很小的数kku作除数,引进量 1111 (,1,,;1,2,,) ()/ (1,2,,;1,2,,)kkjkjkmmjmkikikimmkkkmualujkknknlaluuikknkn
11(,1,,)kiikimmkmsaluikkn
,于是有kku=ks。如果 ,则将矩阵的第t
行与第k行元素互换,将(i,j)位置的新元素仍记为jjl或jja,然后再做第k步分解,这时
【列主元高斯消去法程序流程图】
)1,,2,1(,)(1nniaxabxab
x
iinijjijii
nnnn
[,]AAb11121,11111222,122221,11,1,1,211,11,2121,112,112,1kkkkkkkjnkkjnkkkiiiknnkkkjknkikijininknjkkkjknnnnkknaaabAauuuuuuyllllllllllluuuuuyuuuuyaabaabla
maxtikinss ()/ 1,2,,)1 (1,2,,),kkkktikikikussslssikknlikkn即交换前的,(且 【列主元高斯消去法Matlab主程序】 function x=gauss1(A,b,c) %列主元法高斯消去法解线性方程Ax=b if (length(A)~=length(b)) %判断输入的方程组是否有误 disp('输入方程有误!') return; end
disp('原方程为AX=b:') %显示方程组 A b disp('------------------------') n=length(A); for k=1:n-1 %找列主元 [p,q]=max(abs(A(k:n,k))); %找出第k列中的最大值,其下标为[p,q] q=q+k-1; %q在A(k:n,k)中的行号转换为在A中的行号 if abs(p) disp('列元素太小,det(A)≈0'); break;
elseif q>k temp1=A(k,:); %列主元所在行不是当前行,将当前行与列主 A(k,:)=A(q,:); 元所在行交换(包括b) A(q,:)=temp1; temp2=b(k,:); b(k,:)=b(q,:); b(q,:)=temp2; end
%消元 for i=k+1:n m(i,k)=A(i,k)/A(k,k); %A(k,k)将A(i,k)消为0所乘系数 A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n); %第i行消元处理 b(i)=b(i)-m(i,k)*b(k); %b消元处理 end end disp('消元后所得到的上三角阵是') A %显示消元后的系数矩阵 b(n)=b(n)/A(n,n); %回代求解 for i=n-1:-1:1 b(i)=(b(i)-sum(A(i,i+1:n)*b(i+1:n)))/A(i,i); end clear x; disp('AX=b的解x是') x=b;
【调用函数解题】 【列主元三角分解法程序流程图】 【列主元三角分解法Matlab主程序】 ①自己编的程序: function x=PLU(A,b,eps) %定义函数列主元三角分解法函数 if (length(A)~=length(b)) %判断输入的方程组是否有误 disp('输入方程有误!') return; end disp('原方程为AX=b:') %显示方程组 A b disp('------------------------') n=length(A); A=[A b]; %将A与b合并,得到增广矩阵 for r=1:n if r==1 for i=1:n [c d]=max(abs(A(:,1))); %选取最大列向量,并做行交换 if c<=eps %最大值小于e,主元太小,程序结束 break; else end d=d+1-1; p=A(1,:); A(1,:)=A(d,:); A(d,:)=p; A(1,i)=A(1,i); end A(1,2:n)=A(1,2:n); A(2:n,1)=A(2:n,1)/A(1,1); %求u(1,i) else u(r,r)=A(r,r)-A(r,1:r-1)*A(1:r-1,r); %按照方程求取u(r,i) if abs(u(r,r))<=eps %如果u(r,r)小于e,则交换行