您好,欢迎访问三七文档
MATLAB数学实验报告1MMAATTLLAABB数学实验报告姓名:劳杰林学号:1304100403指导老师:易昆南专业班级:统计1002MATLAB数学实验报告2一.解线性方程组的直接法学号1304100403班级统计1002姓名劳杰林指导教师易昆南实验题目Gauss消去法、列主元消去法、LU分解法评分1、设计(实习)目的:1.学习gauss消去原理及过程。2.利用matlab直接求解线性方程组。2、实验内容:利用matlab,编写gauss消去法、列主元消去法及LU分解法的程序,直接解线性方程组。3.详细设计:①gauss消去法:functionx=guass(A,b)n=rank(A);fork=1:n-1fori=k+1:nforj=k+1:nifabs(A(k,k))1e-6warning('分母为零不能计算!');return;elseA(i,j)=A(i,j)-(A(i,k)/A(k,k))*A(k,j);endendb(i)=b(i)-(A(i,k)/A(k,k))*b(k);A(i,k)=0;endendformatlongex(n)=b(n)/A(n,n);fork=n-1:-1:1sum=0;forj=k+1:nsum=sum+A(k,j)*x(j);endx(k)=(b(k)-sum)/A(k,k);end②列主元消去法:functionx=gaussxiaoqumethod(A,b)n=length(b);x=zeros(n,1);MATLAB数学实验报告3c=zeros(1,n);t=0;fori=1:n-1max=abs(A(i,i));m=i;forj=i+1:nifmaxabs(A(j,i))max=abs(A(j,i));m=j;endendifm~=ifork=1:nc(k)=A(i,k);A(i,k)=A(m,k);A(m,k)=c(k);endt=b(i);b(i)=b(m);b(m)=t;endfork=i+1:nforj=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endendx(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);end③LU分解法:function[lu]=lufj(A)n=rank(A);l=eye(n,n);u=zeros(n,n);MATLAB数学实验报告4fork=1:nu(1,k)=A(1,k);endk=1;fork=1:nfori=k:nifk==1l(i,k)=A(i,k)/u(k,k);elsesum=0;forp=1:i-1sum=sum+l(i,p)*u(p,k);endsum1=0;forp=1:k-1sum1=sum1+l(k,p)*u(p,i);endu(k,i)=A(k,i)-sum1;l(i,k)=(A(i,k)-sum)/u(k,k);endendend4:实验结果:①gauss消去法:x=guass([2.52.3-5.1;5.39.61.5;8.11.7-4.3],[3.7;3.8;5.5])x=4.067054123679263e-0012.368175425933071e-001-4.193247296305055e-001②列主元消去法:x=gaussxiaoqumethod([0.1012.3013.555;-1.3473.7124.623;-2.8351.0725.643],[1.183;2.137;3.035])x=-3.982025899847065e-0011.378433232797579e-0023.351619445574636e-001MATLAB数学实验报告5③LU分解法:[lu]=lufj([123;252;315])l=1002103-51u=12301-400-245:实验总结1.用matlab求解线性方程组问题有着很强的实用性,它能帮助我们简化繁琐又难以计算的数学问题。2.在设计过程中我发现先前看似无味的数学也有几丝美妙,这让我更加坚定了学习这门课程的信心与动力,相信通过深入地学习,今后定能有所收获。3.设计过程中,我深刻体会到与同学交流是十分重要的。比如说有时候一个小小的错误自己总是检查不出来,但让同学帮忙看一下马上就查出来了。姓名:劳杰林2012年3月21日MATLAB数学实验报告6二.牛顿插值学号1304100403班级统计1002姓名劳杰林指导教师易昆南实验题目牛顿插值、复化梯形公式、复化辛普森公式、节点加密复化梯形公式评分1、设计(实习)目的:1.利用matlab直接求解积分。2、实验内容:1.牛顿插值法2.复化梯形公式3.复化辛普森公式4.节点加密复化梯形公式3.详细设计:①牛顿插值法:clearallx0=[-2-1013];y0=[-56-16-2-24];n=length(x0);A=zeros(n);fori=1:nA(i,1)=y0(i);endforj=2:nfork=j:nA(k,j)=(A(k,j-1)-A(k-1,j-1))/(x0(k)-x0(k-j+1));endenda=diag(A);symsxf;s=0;p=1;fori=1:(n-1)forj=1:ip=p*(x-x0(j));ends=s+a(i+1)*p;p=1;endf=a(1)+s②复化梯形公式:MATLAB数学实验报告7formatlonga=input('a=');b=input('b=');n=input('n=');h=(b-a)/n;x0=a:h:b;symsx;y=input('y=');y0=subs(y,x0);s1=0;fori=2:n-1s1=s1+y0(i);ends=h/2*(y0(1)+y0(n)+2*s1);disp(['利用复化梯形公式求解积分数值为',num2str(s)])③复化辛普森公式:a=input('a=');b=input('b=');n=input('n=');h=(b-a)/(n);x0=a:h/2:b;symsx;y=input('y=');y0=subs(y,x0);s2=0;s3=0;fori=2:2:2*n-1s2=s2+y0(i);endfori=3:2:2*n-1s3=s3+y0(i);endt=h/6*(y0(1)+y0(n)+2*s3+4*s2);disp(['利用复化Simpson公式求得的积分数值为',num2str(t)])④节点加密复化梯形公式:formatlonga=input('a=');b=input('b=');n=input('n=');h=(b-a)/(2*n);MATLAB数学实验报告8x0=a:h:b;symsx;y=input('y=');y0=subs(y,x0);s1=0;s2=0;fori=3:2:(2*n-2)s1=s1+y0(i);endforj=2:2:(2*n-1)s2=s2+y0(j);ends=h/2*(y0(1)+y0(2*n)+2*s1)+h*s2disp(['利用节点加密复化梯形公式求解积分数值为',num2str(s)])4:实验结果:①牛顿插值法:f=40*x-13*(x+1)*(x+2)+2*x*(x+1)*(x+2)+24②复化梯形公式:a=0b=1n=50y=x利用复化梯形公式求解积分数值为0.4802③复化辛普森公式:a=0b=1n=50y=x利用复化Simpson公式求得的积分数值为0.4851④节点加密复化梯形公式:a=0b=1n=25y=xs=MATLAB数学实验报告90.461000000000000利用节点加密复化梯形公式求解积分数值为0.4615:实验总结1.用matlab求解线性方程组问题有着很强的实用性,它能帮助我们简化繁琐又难以计算的数学问题。2.在设计过程中我发现先前看似无味的数学也有几丝美妙,这让我更加坚定了学习这门课程的信心与动力,相信通过深入地学习,今后定能有所收获。3.设计过程中,我深刻体会到与同学交流是十分重要的。比如说有时候一个小小的错误自己总是检查不出来,但让同学帮忙看一下马上就查出来了。姓名:劳杰林2012年4月5日MATLAB数学实验报告10三、Romberg法求积分学号1304100403班级统计1002姓名劳杰林指导教师易昆南实验题目编程求积分,dx,评分1、设计(实习)目的:1.了解MATLAB在实际问题中的应用2.通过实践加深对这门语言中M文件的了解3.掌握运用matlab解决实际数学问题2、实验内容:1)用复化梯形公式计算2)用romberg求积方法计算积分dx3)用romberg算法计算积分I=3.详细设计:1.)functiony=f(x)y=;functionT_n=F_H_T(a,b,n)h=(b-a)/n;x=a:h:b;fork=0:nx(k+1)=a+k*h;ifx(k+1)==0x(k+1)=10^(-10);endendT_1=h/2*(f(x(1))+f(x(n+1)));fori=2:nF(i)=h*f(x(i));endT_2=sum(F);T_n=T_1+T_2;Romberg算法:function[s,n]=rombg2(a,b,eps1)s=10;s0=0;k=3;MATLAB数学实验报告11t=[];t(1,1)=(b-a)*(f(b)+f(a))/2;whileabs(s-s0)eps1h=(b-a)/2^(k-1);w=0;ifh~=0fori=1:2^(k-1)-1w=w+f(a+i*h);endt(k,1)=h*(f(a)/2+f(b)/2+w)/2;forl=2:kfori=1:(k-l+1)t(i,l)=(4^(l-1)*t(i+1,l-1)-t(i,l-1))/(4^(l-1)-1);endends=t(1,k);s0=t(1,k-1);k=k+1;n=k;elses=s0;n=-k;endend2)functiony=f(x)y=(2*exp(-x)/sqrt(pi));3)functiony=f(x)y=(sin(x))/x;4:实验结果:1.)T_n=F_H_T(0,1,10)T_n=0.74622)[s,n]=rombg2(0,1,5e-6)s=0.3566MATLAB数学实验报告12n=83.)[s,n]=rombg2(1e-8,1,5e-8)s=0.4730n=85:实验总结1.用matlab求解线性方程组问题有着很强的实用性,它能帮助我们简化繁琐又难以计算的数学问题。2.在设计过程中我发现先前看似无味的数学也有几丝美妙,这让我更加坚定了学习这门课程的信心与动力,相信通过深入地学习,今后定能有所收获。3.设计过程中,我深刻体会到与同学交流是十分重要的。比如说有时候一个小小的错误自己总是检查不出来,但让同学帮忙看一下马上就查出来了。姓名:劳杰林2012年4月02日MATLAB数学实验报告13四、常微分求解学号1304100403班级统计1002姓名劳杰林指导教师易昆南实验题目编写四个解线性方程组的程序评分1、设计(实习)目的:4.了解MATLAB在实际问题中的应用5.通过实践加深对这门语言中M文件的了解6.掌握运用matlab解决实际数学问题2、实验内容:用欧拉方法,休恩方法,泰勒方法,龙格库塔方法[03]解常微分方程,初值,y(0)=1,h=1,1/2,1/4,1/8,并画出图形。3.详细设计:1.)欧拉法function[xout,yout]=euler(ypfun,xspan,y0,h)f=ypfun;,x=xspan(1):h:xspan(2);n=length(x);y=zeros(1,n);y(1)=y0;fori=1:n-1y(i+1)=y(i)+h*feval(f,x(i),
本文标题:数值分析作业
链接地址:https://www.777doc.com/doc-4312717 .html