资源描述:
《同济大学数值分析matlab编程题汇编》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、..MATLAB编程题库1.下面的数据表近似地满足函数,请适当变换成为线性最小二乘问题,编程求最好的系数,并在同一个图上画出所有数据和函数图像.解:x=[-0.931-0.586-0.362-0.2130.0080.5440.6280.995]';y=[0.3560.6060.6870.8020.8230.8010.7180.625]';A=[xones(8,1)-x.^2.*y];z=Ay;a=z(1);b=z(2);c=z(3);xh=-1:0.1:1;yh=(a.*xh+b)./(1+c.*xh.^2);p
2、lot(x,y,'r+',xh,yh,'b*')word教育资料..2.若在Matlab工作目录下已经有如下两个函数文件,写一个割线法程序,求出这两个函数精度为的近似根,并写出调用方式:文件一文件二functionv=f(x)v=x.*log(x)-1;functionz=g(y)z=y.^5+y-1;解:>>editgexianfa.mfunction[xiter]=gexianfa(f,x0,x1,tol)iter=0;while(norm(x1-x0)>tol)iter=iter+1;x=x1-feval(f
3、,x1).*(x1-x0)./(feval(f,x1)-feval(f,x0));x0=x1;x1=x;end>>editf.mfunctionv=f(x)v=x.*log(x)-1;>>editg.mfunctionz=g(y)z=y.^5+y-1;>>[x1iter1]=gexianfa('f',1,3,1e-10)x1=1.7632iter1=6>>[x2iter2]=gexianfa('g',0,1,1e-10)x2=0.7549iter2=8word教育资料..3.使用GS迭代求解下述线性代数方程组:解:
4、>>editgsdiedai.mfunction[xiter]=gsdiedai(A,x0,b,tol)D=diag(diag(A));L=D-tril(A);U=D-triu(A);iter=0;x=x0;while((norm(b-A*x)./norm(b))>tol)iter=iter+1;x0=x;x=(D-L)(U*x0+b);end>>A=[521;-142;1-310];>>b=[-12103]';>>tol=1e-4;>>x0=[000]';>>[xiter]=gsdiedai(A,x0,b,to
5、l);>>xx=-3.09101.23720.9802>>iteriter=6word教育资料..4.用四阶Range-kutta方法求解下述常微分方程初值问题(取步长h=0.01)解:>>editksf2.mfunctionv=ksf2(x,y)v=y+exp(x)+x.*y;>>a=1;b=2;h=0.01;>>n=(b-a)./h;>>x=[1:0.01:2];>>y(1)=2;>>fori=2:(n+1)k1=h*ksf2(x(i-1),y(i-1));k2=h*ksf2(x(i-1)+0.5*h,y(i-
6、1)+0.5*k1);k3=h*ksf2(x(i-1)+0.5*h,y(i-1)+0.5*k2);k4=h*ksf2(x(i-1)+h,y(i-1)+k3);y(i)=y(i-1)+(k1+2*k2+2*k3+k4)./6;end>>y调用函数方法>>editRangekutta.mfunction[xy]=Rangekutta(f,a,b,h,y0)x=[a:h:b];n=(b-a)/h;y(1)=y0;fori=2:(n+1)k1=h*(feval(f,x(i-1),y(i-1)));k2=h*(feval(f
7、,x(i-1)+0.5*h,y(i-1)+0.5*k1));k3=h*(feval(f,x(i-1)+0.5*h,y(i-1)+0.5*k2));k4=h*(feval(f,x(i-1)+h,y(i-1)+k3));y(i)=y(i-1)+(k1+2*k2+2*k3+k4)./6;end>>[xy]=Rangekutta('ksf2',1,2,0.01,2);>>yword教育资料..5.取,请编写Matlab程序,分别用欧拉方法、改进欧拉方法在上求解初值问题。解:>>editEuler.mfunction[xy]
8、=Euler(f,a,b,h,y0)x=[a:h:b];n=(b-a)./h;y(1)=y0;fori=2:(n+1)y(i)=y(i-1)+h*feval(f,x(i-1),y(i-1));end>>editgaijinEuler.mfunction[xy]=gaijinEuler(f,a,b,h,y0)x=[a:h:b];n=(b-a)./h;y(1)=