MATLAB数值分析实验三(线性方程求解及精度分析)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

佛山科学技术学院实验报告课程名称数值分析实验项目数值积分专业班级机械工程姓名余红杰学号2111505010指导教师陈剑成绩日期月日一、实验目的1、掌握程序的录入和matlab的使用和操作;2、了解影响线性方程组解的精度的因素——方法与问题的性态。3、学会Matlab提供的“\”的求解线性方程组。二、实验要求1、按照题目要求完成实验内容;2、写出相应的Matlab程序;3、给出实验结果(可以用表格展示实验结果);4、分析和讨论实验结果并提出可能的优化实验。5、写出实验报告。三、实验步骤1、用LU分解及列主元高斯消去法解线性方程组a)15900001.582012151526099999.23107104321xxxx,输出bAx中系数LUA分解的矩阵L和U,解向量x和)det(A;用列主元法的行交换次序解向量x和求)det(A;比较两种方法所得结果。2、用列主高斯消元法解线性方程组bAx。(1)、11134.981.4987.023.116.427.199.103.601.3321xxx(2)、11134.981.4990.023.116.427.199.103.600.3321xxx分别输出)det(,,AbA,解向量x,(1)中A的条件数。分析比较(1)、(2)的计算结果3、线性方程组bAx的A和b分别为1095791068565778710A,31332332b则解Tx),1,1,1,1(.用MATLAB内部函数求)det(A和A的所有特征值和2)(Acond.若令98.99599.6989.998.585604.508.72.71.8710AA,求解bxxAA))((,输出向量x和2x,从理论结果和实际计算两方面分析线性方程组bAx解的相对误差22/xx以及A的相对误差22/AA的关系。四、实验结果1:%run311.mclc,clear;A=[10-701;-32.09999962;5-15-1;2102];b=[8;5.90001;5;1];%LU分解formatshort%小数点后四位,不然会受到后面的影响[LU]=lu(A)%解方程组,输出A,det(A)y=L\b;formatlong%小数点后15位显示x=U\y%Vol_xiao.m列主元消去,未用增广矩阵而把系数矩阵A和矩阵B分开对应来的functionx=Vol_xiao(A,b)%列主元消去%x为解%A为系数矩阵n=length(A);%A默认为方阵,求其大小,且默认和b长度一样C=zeros(1,n);%用于系数矩阵交换存放数据b0=0;%用于b矩阵交换存放数据x=zeros(n,1);%建一个矩阵存放解%下面对矩阵进行n-1次列主元交换得到上三角矩阵fori=1:(n-1)forj=(i+1):nifabs(A(i,i))abs(A(j,i))C=A(i,1:n);A(i,1:n)=A(j,1:n);A(j,1:n)=C;b0=b(i);b(i)=b(j);b(j)=b0;elsecontinue;endend;forj=(i+1):nb(j)=b(j)+b(i)*(-A(j,i))/A(i,i);A(j,1:n)=A(j,1:n)+A(i,1:n).*(-A(j,i)/A(i,i));endend%以下为判断是否满秩然后从下往上求解:ifA(n,n)~=0x(n)=b(n)/A(n,n);fori=(n-1):-1:1sum=0;forj=(i+1):nsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endelsex=['err'];end%run312.mclc,clear;A=[10-701;-32.09999962;5-15-1;2102];b=[8;5.90001;5;1];formatlongx=Vol_xiao(A,b)(其实可以看出,两种结果是一致的)2.%run321.mclc;clear;A=[3.016.031.99;1.274.16-1.23;0.987-4.819.34];b=[1;1;1];formatbank%格式转换为普通的,不然会用科学计数法表示x=Vol_xiao(A,b)T1=cond(A,1)T2=cond(A,2)T3=cond(A,inf)%可以看出条件数很大%run322.mclc;clear;A=[3.016.031.99;1.274.16-1.23;0.990-4.819.34]b=[1;1;1]det1=det(A)formatbankx=Vol_xiao(A,b)%从条件数就可以猜出其实微小变化就会对结果造成很大差异%结果也验证了条件数大的方程的不稳定性很差。3.%run331.mclc;clear;A=[10787;7565;86109;75910];b=[32;23;33;31];formatshort%显示对应行列式值和特征值det1=det(A)eig1=eig(A)formatbank%显示条件数tjs2=cond(A,2)%run332.mclc;clear;A=[10787;7565;86109;75910];b=[32;23;33;31];X=[1;1;1;1];AA=[1078.17.2;7.085.0465;85.989.899;6.99599.98];oA=AA-A;XX=AA\b;oX=XX–X%输出oX的2范数normx2=norm(oX)%输出X的相对误差xrerro=normx2/norm(X)%输出A的相对误差Arerro=norm(oA)/norm(A)五、讨论分析1.对于第一题,有一个顺序主子式是极小的,接近等于0,所以无法直接得到标准的上下三角,所以调用程序内置的lu函数进行分解,所求到的值与列主元方法的值一致,查找后发现matlab的lu分解就是根据列主元方法求出的;2.条件数对一个方程的稳定性有很大影响,题中的系数矩阵条件数超过五万,微小的变化就引起了结果的很大变化,如果是数据分析的话相当于蝴蝶效应般严重;3.第三题也是对于一个系数矩阵的范数,很小的变化引起结果的大变化,该系数矩阵的相关数也是三千多,也是比较大,不稳定的。六、改进实验建议相关题目太少,而且很少有扩展性题目,对于各种指令的使用并不充分,其实在这个求解方程组的过程中,还是有比较多的相关方法可以进行MATLAB实现的。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功