文档详情

解线性方程组的列主元素高斯消去法和LU分解法.doc

发布:2017-06-04约1.81千字共7页下载文档
文本预览下载声明
实验报告 一、实验名称 解线性方程组的列主元素高斯消去法和LU分解法 二、实验目的及要求 通过数值实验,从中体会解线性方程组选主元素的必要性和Lu分解法的优点,以及方程组系数矩阵和右端向量的微小变化对解向量的影响。 解下列两个线性方程组 (1) (2) 1、列主元高斯消去法: 记 () () 消元过程 对于R=1,2,……,n-1执行 1)选行号,使 交换与(j=k,k+1,……n)以及与所含的数值。 对于i=k+1,k+2,……,n计算 j=k+1,k+2,……n. 回代过程 在此算法中的(k=1,2,……,n-1)称为第k个列主元素,它的数值总要被交换到第k个主对角线元素的位置上。 LU分解法通过自有的函数把系数矩阵分解成,其中,是下三角矩阵,是上三角矩阵。这时方程组=就可化为两个容易求解的三角形方程组=,=.先由=解出向量=解出向量这就是原方程组=的解向量。 Y N (2)LU分解法程序流程图如下: Y N Y N 这里我使用了四种框,一种是起止框 ,一种是输入输出框 ,一种是判断框 ,还有一种是处理框 。 3、列主元素高斯消去法的文件 function a=liezhuGS(A,b) r=length(A[1],i) for i=1:r for j=1:r if A(i,i)A(j,i) for k=i:r c=A(i:k); A(i,k)=A(j,k); A(j,k)=c; end d=b(i); b(i)=b(j); b(j)=d; end end for l=(i+1):r p=A(l,l)/A(i,i); for m=i:r A(l,m)=A(l,m)-p*A(i,m); end b(l)=b(l)-p*b(i); end end A……Z=det(A)… b for n=r:-1:1 if n==r x(n)=b(n)/A(n,n); else for q=1:(r-n) b(n)=b(n)-x(x+q)*A(n,n+q); end x(n)=b(n)/A(n,n); end end x 4、LU分解法的M文件如下: Function a=Lufenjiefa(A,b) [L,U]=lu(A) Y=l\b X=u\y A b Z=det(l)*det(u) 5、实验步骤如下: (1)A=;b= ;分别在命令窗口中运行LiezhuGs(A,b)和Lufenjiefa(A,b);记录相关数据 (2) A= ;b=;分别在命令窗口中运 行LiezhuGs(A,b)和Lufenjiefa(A,b);记录相关数据 (3)A=;b= ;分别运行LiezhuGs(A,b),记录列主行交换次序x,det(A) (4)A= ;b=;运行LiezhuGs(A,b),记录相关数据 (5)分别对上述A,b在命令窗口运行x=inv(A)*b,y=det(A),记录数据。 六、实验结果 实验项目 列主元高斯消去法 LU分解法 Matlab内部函数法 (1) A= L= U= (2) (3) (4) 七、实验结果分析 解线性方程组有选主元的必要性。 LU分解法具有简洁、正确的优点,调用[L,U]内部函数使其解法简便,得出的系数距阵的行列式为精确值。 实验(1)系数为3.01改为3.00,0.978改为0.990,得出结果如上所示。实验(1)中系数发生微小改变后,结果变化不大。 用Matlab的内部函数inv计算得出的解向量x=inv(A)*b,即为上述各方程组的解,与列主元素高斯消去法和LU分解法求出的解进行比较可知,它们都是等同的,这说明列主元素消去法具有良好的数值稳定性。 开始 读入矩阵A,b 选主元 ik=k ? 跳出循环 列主元 计算 对A进行上三角变换 回代求x 输出x 结束 开始 读入矩阵A 求出值y(1),y(2) 求 i3 ? 输出y 求y值 求末值x(n),x(n-1) j3 ? 求x值 输出x 结束
显示全部
相似文档