预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE\*MERGEFORMAT17MATLAB编程题库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=A\y;a=z(1);b=z(2);c=z(3);xh=-1:0.1:1;yh=(a.*xh+b)./(1+c.*xh.^2);plot(x,y,'r+',xh,yh,'b*')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,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=83.使用GS迭代求解下述线性代数方程组:解:>>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,tol);>>xx=-3.09101.23720.9802>>iteriter=64.用四阶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-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,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);>>y5.取,请编写Matlab程序,分别用欧拉方法、改进欧拉方法在上求解初值问题。解:>>editEuler.mfunction[xy]=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)=y0;fori=2:(n+1)y1=y(