资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
数值方法实验报告课程名称:LU 分解法与高斯消元法 学 院:数学与财经学院 专 业:信息与计算科学(金融软件) 年 级:2011 级 姓 名:郑 荐 学 号:201102334023 指导教师:李 梦 实验一【实验名称】实现 LU 算法,并利用该算法求解线性方程组【实验目的】了解如何用 LU 三角分解法解线性方程组,利用 LU 三角分解法解线性方程组【实验原理】设无行交换变换的高斯消去法可求解一般线性方程组 AX=B,则矩阵 A 可分解为一个下三角矩阵 L 和一个上三角矩阵 U 乘积:A=LU而且 L 的对角线元素为 1,U 的对角线元素非零。得到 L 和 U 后,可通过如下步骤得到 X:1. 利用向前替换法对方程组 LY=B 求解 Y。2. 利用回带法对方程组 UX=Y 求解 X。【实验步骤】1. 输入矩阵 A2. LU 分解 A,得到 L 矩阵与 U 矩阵的值 L U=LU_1(A)3. 输入矩阵 B,利用向前回带法求出 Y 值 Y=upsub(L,B)4. 利用回带发求出 X 值 X=backsub(U,Y)【实验程序】1. LU 分解代码:function L U=LU_1(A)n=length(A(1,:);L=eye(n);U=zeros(n);for j=1:nU(1,j)=A(1,j);endfor i=2:nL(i,1)=A(i,1)/U(1,1);endfor k=2:nfor j=k:nU(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);endfor i=k+1:nL(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k)/U(k,k);endend结果:2. 向前回带法代码:%向前代入法function Y=upsub(A,B)n=length(B);Y=zeros(n,1);Y(1)=B(1)/A(1,1);for k=2:nY(k)=(B(k)-A(k,1:k-1)*Y(1:k-1)/A(k,k);end结果:3. 回带法代码:%回代法function X=backsub(A,B)n=length(B);X=zeros(n,1); X(n)=B(n)/A(n,n);for k=n-1:(-1):1X(k)=(B(k)-A(k,k+1:n)*X(k+1:n)/A(k,k);end结果:【实验分析】LU 分解法比较简便迅速,当解多个系数矩阵为 A 的线性方程做时,LU 分解法就显得特别优越,只要对系数矩阵做一次 LU 分解,以后只要解三角形方程即可。也可以根据系数矩阵的形状来设计算法。实验二【实验名称】高斯消元法解线性方程组【实验目的】了解如何用高斯消元法解线性方程组,利用高斯消元法解线性方程组【实验原理】消元过程:设 ,令乘数 ,做(消去第 i 个方程组的 )操作 第 10)(1a)0(11/amiiixim个方程+第 i 个方程(i=2,3,.n)则第 i 个方程变为 1)(2)1(.inii bx这样消去第 2,3, 。 。 。 ,n 个方程的变元 后。原线性方程组变为:i)1()1(2)1( )1(2)1(2)1(000. . .nnnbxaxba这样就完成了第 1 步消元。回代过程:在最后的一方程中解出 ,得:nx)1()(/nnab再将 的值代入倒数第二个方程,解出 ,依次往上反推,即可求出方程组的解:nx 1x其通项为 3,.1-n2k /)()(1() knkjjjkab【实验步骤】1、输入 A 和 b2、判断是否有解B=A bif RA0disp(RARB,此方程无解);return;endif RA=RBif RA=ndisp(RA=RB=n,次方程组有唯一解);X=zeros(n,1);for p=1:n-1for k=p+1:nm=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);endendX=backsub(B(1:n,1:n),B(1:n,n+1);Xelsedisp(RA=RBn,次方程组有无穷解。)endend结果:【实验分析】高斯消元法代码更为复杂。LU 分解的方法,求解方程组的方法使得得出的结果更加精确。高斯消元法能更快判断出是由有解。LU 分解法在 LU 分解前矩阵 A 不知道能否可以分解。【实验心得】本次试验涉及到了用高斯消元法,LU 分解法两种方法。需要对这些方法的原理都要掌握才能写出程序,由于理论知识的欠缺,我花了很大一部分时间在看懂实验的原理上,看懂了实验原理之后就开始根据原理编写程序,程序中还是出现了很多的低级错误导致调试很久才能运行。通过这次试验使我深刻的体会到理论知识的重要性,没有理论知识的支撑是写不出程序来的。写程序时还会犯很多低级的错误,以后一定要加强理论知识的学习,减少编程时低级错误的产生。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号