您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 38数值分析实验报告
《数值分析》实验报告班级:姓名:学号:指导老师:实验基本要求一、上机前的准备工作1、复习和掌握与本次实验有关的教学内容。2、根据本次实验要求,在纸上编写算法及上机的程序,并经过人工模拟运行检验,减少不必要的错误,提高上机效率。切忌不编程序、不作人工检查就进行程序输入,这只能使上机调试的难度增加,甚至可能带来学习自信心的下降,影响后续课程的学习。二、上机实验步骤1、启动开发环境;2、建立源程序文件,输入源程序;3、编译产生目标程序,连接生成可执行程序,运行程序,输出结果;4、对数值计算结果进行误差分析,讨论数值算法的收敛性与稳定性;5、整理实验报告。三、实验报告实验报告是记录实验工作全过程的技术文档,实验报告的撰写是科学技术工作的一个组成部分。《数值分析》实验报告包括下列要求:1、实验原理;2、实验内容和要求;3、数值算法描述,包括数据输入、数据处理和数据输出;4、算法的实现(1)给出具体的计算实例,(2)经调试正确的源程序清单,(3)对具体的数值例子给出数值结果;5、计算结果的误差分析,算法的收敛性与稳定性的讨论;6、实验心得。实验一、误差分析一、实验目的1、通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;2、通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念;3、通过上机计算,了解舍入误差所引起的数值不稳定性。二、实验原理误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。三、实验任务对20,,2,1,0n,计算定积分105dxxxynn.算法1:利用递推公式151nnyny,20,,2,1n,取100182322.05ln6ln51dxxy.算法2:利用递推公式nnyny515111,,19,20n.注意到1010202010201051515611261dxxdxxxdxx,取008730.0)12611051(20120y.思考:从计算结果看,哪个算法是不稳定的,哪个算法是稳定的。四、实验源程序及结果算法1functiony1(i)formatlongy1=zeros(1,21);y1(1)=0.182322;fori=1:1:20y1(i+1)=1/i-5*y1(i);endy1(1:21)ans=1.0e+007*Columns1through40.0000000182322000.0000000088390000.0000000058050000.000000004308333Columns5through80.0000000034583330.0000000027083330.000000003125000-0.000000001339286Columns9through120.000000019196429-0.0000000848710320.000000434355159-0.000002162684885Columns13through160.000010821757756-0.0000541010964740.000270512625226-0.001352556459463Columns17through200.006762788547315-0.0338139368542210.169069689826659-0.845348443870135Column214.226742224350675算法2functiony2(i)formatlongy2=zeros(1,21);y2(21)=0.008730;fori=21:-1:2y2(i-1)=0.2/(i-1)-0.2*y2(i);endy2(1:21)ans=Columns1through40.1823215567939550.0883922160302270.0580389198488660.043138734089004Columns5through80.0343063295549800.0284683522251020.0243249055411550.021232615151370Columns9through120.0188369242431500.0169264898953620.0153675505231920.014071338293132Columns13through160.0129766418676730.0120398675847140.0112292335050020.010520499141658Columns17through200.0098975042917100.0093360079532160.0088755157894740.008254000000000Column210.008730000000000从结果看算法2比较稳定,算法1不稳定。实验二、插值法一、实验目的1、理解插值的基本概念,掌握各种插值方法,包括拉格朗日插值和牛顿插值等,注意其不同特点;2、通过实验进一步理解并掌握各种插值的基本算法。二、实验原理插值法是函数逼近的一种重要方法,它是数值积分、微分方程数值解等数值计算的基础与工具,其中多项式插值是最常用和最基本的方法。拉格朗日插值多项式的优点是表达式简单明确,形式对称,便于记忆,它的缺点是如果想要增加插值节点,公式必须整个改变,这就增加了计算工作量。而牛顿插值多项式对此做了改进,当增加一个节点时只需在原牛顿插值多项式基础上增加一项,此时原有的项无需改变,从而达到节省计算次数、节约存储单元、应用较少节点达到应有精度的目的。三、实验任务1、已知函数表ix0.561600.562800.564010.56521iy0.827410.826590.825770.82495用二次拉格朗日插值多项式求5635.0x时的函数近似值。2、已知函数表ix0.40.550.650.80.9iy0.410750.578150.696750.888111.02652用牛顿插值多项式求)596.0(3N和)895.0(4N。四、实验源程序及结果1、二次拉格朗日插值function[y,R]=lagranzi(X,Y,x,M)formatlongx=0.5635;M=2;X=[0.56160,0.56280,0.56401,0.56521];Y=[0.82741,0.82659,0.82577,0.82495];n=length(X);m=length(x);fori=1:mz=x(i);s=0.0;fork=1:np=1.0;q1=1.0;c1=1.0;forj=1:nifj~=kp=p*(z-X(j))/(X(k)-X(j));endq1=abs(q1*(z-X(j)));c1=c1*j;ends=p*Y(k)+s;endy(i)=s;endR=M.*q1./c1;ans=0.8261156638643182、牛顿插值多项式求)596.0(3N和)895.0(4N(1))596.0(3N:function[y,R]=newcz(X,Y,x,M)M=3;X=[0.4,0.55,0.65,0.8,0.9];Y=[0.41075,0.57815,0.69675,0.88811,1.02652];x1=0.596;n=length(X);m=length(x1);fort=1:mz=x1(t);A=zeros(n,n);A(:,1)=Y';s=0.0;p=1.0;q1=1.0;c1=1.0;forj=2:nfori=j:nA(i,j)=(A(i,j-1)-A(i-1,j-1))./(X(i)-X(i-j+1));endq1=abs(q1.*(z-X(j-1)));c1=c1.*j;endC=A(n,n);q1=abs(q1.*(z-X(n)));fork=(n-1):-1:1C=conv(C,poly(X(k)));d=length(C);C(d)=C(d)+A(k,k);endy(k)=polyval(C,z);endR=M.*q1./c1;ans=0.631917508079616(2))895.0(4N:function[y,R]=newcz4(X,Y,x,M)M=4;X=[0.4,0.55,0.65,0.8,0.9];Y=[0.41075,0.57815,0.69675,0.88811,1.02652];x1=0.895;n=length(X);m=length(x1);fort=1:mz=x1(t);A=zeros(n,n);A(:,1)=Y';s=0.0;p=1.0;q1=1.0;c1=1.0;forj=2:nfori=j:nA(i,j)=(A(i,j-1)-A(i-1,j-1))./(X(i)-X(i-j+1));endq1=abs(q1.*(z-X(j-1)));c1=c1.*j;endC=A(n,n);q1=abs(q1.*(z-X(n)));fork=(n-1):-1:1C=conv(C,poly(X(k)));d=length(C);C(d)=C(d)+A(k,k);endy(k)=polyval(C,z);endR=M.*q1./c1;ans=1.019367566810000实验三、解线性方程组的直接法一、实验目的1、了解求线性方程组的直接法的有关理论和方法;2、会编制列主元消去法、LU分解法的程序;3、通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。二、实验原理解线性方程组的直接法是指经过有限步运算后能求得方程组精确解的方法。但由于实际计算中舍入误差是客观存在的,因而使用这类方法也只能得到近似解。目前较实用的直接法是古老的高斯消去法的变形,即主元素消去法及矩阵的三角分解法。引进选主元的技巧是为了控制计算过程中舍入误差的增长,减少舍入误差的影响。一般说来,列主元消去法及列主元三角分解法是数值稳定的算法,它具有精确度较高、计算量不大和算法组织容易等优点,是目前计算机上解中、小型稠密矩阵方程组可靠而有效的常用方法。三、实验任务1、用列主元高斯消去法求解方程组035.3643.5072.1835.2137.2623.4712.3347.1183.1555.3304.2101.0321321321xxxxxxxxx.2、用矩阵直接三角分解法求解方程组bAx,其中381265973274581221A,4911427b四、实验源程序及结果1、用列主元高斯消去法求解方程组function[RA,RB,n,X]=liezhu(A,b)B=[Ab];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;ifzhica0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendifRA==RBifRA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);C=zeros(1,n+1);forp=1:n-1[Y,j]=max(abs(B(p:n,p)));C=B(p,:);B(p,:)=B(j+p-1,:);B(j+p-1,:)=C;fork=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);endendb=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);forq=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('请注意:因为RA=RBn,所以此方程组有无穷多解.')endend
本文标题:38数值分析实验报告
链接地址:https://www.777doc.com/doc-4224120 .html