当前位置:文档之家› 数学建模上机练习习题及答案

数学建模上机练习习题及答案

练习1基础练习一、矩阵及数组操作:1.利用基本矩阵产生3×3和15×8的单位矩阵、全1矩阵、全0矩阵、均匀分布随机矩阵([-1,1]之间)、正态分布矩阵(均值为1,方差为4)。

A=eye(3) B=eye(15,8)C=ones(3)D=ones(15,8)E=zeros (3) F=zeros(15,8) G=(-1+(1-(-1))*rand(3)) H=1+sqrt(4)*randn(5)2.利用fix及rand函数生成[0,10]上的均匀分布的10×10的整数随机矩阵a,然后统计a中大于等于5的元素个数a=fix(0+(10-0)*rand(10));K=find(a>=5);Num=length(K)或者num=sum(sum(a>=5))num =533.在给定的矩阵中删除含有整行内容全为0的行,删除整列内容全为0的列。

如已给定矩阵A在给定的矩阵中删除含有整行内容全为0的行在命令窗口中输入A(find(sum(abs(A'))==0),:)=[];删除整列内容全为0的列。

A(:,find(sum(abs(A'))==0))=[];二、绘图:4.在同一图形窗口画出下列两条曲线图像: y1=2x+5; y2=x ^2-3x+1, 并且用legen d标注 x=0:0.01:10; y1=2*x+5;y 2=x.^2-3*x+1; plot(x,y 1,x,y2,'r') leg en d('y 1', 'y2')12345678910-10010203040506070805.画出下列函数的曲面及等高线: z=x^2+y^2+sin(xy). 在命令窗口输入:[x,y]=meshgrid(0:0.25:4*pi);z=x.^2+y.^2+sin(x.*y);contour3(x,y,z);meshc(x,y,z)5101551015100200300400三、程序设计:6.编写程序计算(x在[-3,3],间隔0.01)建立M文件d.mx=input('请输入x的值:');if x>=-3&x<-1y=(-x.^2-4*x-3)/2;elseif x>=-1&x<1y=-x.^2+1;elseif x>=1&x<=3y=(-x.^2+4*x-3)/2;elsey='error'endy在命令窗口输入x 的值:7.有一列分数序列:求前15项的和。

a=1;b=2;sum=0;fork=1:15c=b/a;sum=sum+c;t=b;b=a+b;a=t;endsumsum =24.57018.用至少三种方法编写函数实现求任意整数n的阶乘。

方法一:function f=factor(n)if n<=1f=1;elsef=factor(n-1)*n;end方法二:functionresult=fa(n)n=input('please input n:');result = 1;for i = 1:nresult =result * i;end方法三:n=input('please input n:');x=1:n;prod(x)9.将任意大于6的偶数m写成两个素数p1、p2的和(试着写出所有的m=p1+p2的可能形式)。

解:functiony=f(n);n=input('请输入n的值:');if mod(n,2);error('n不是素数.请重新运行程序.')elseif n<=6;error('n必须大于6.请重新运行程序.')elsefor m=1:n;for k=m:n;if(isprime(m))&(isprime(k))&(m+k==n);disp([num2str(n),'=',num2str(m),'+',num2str(k)]);break;end;end;end;end;10.是否任意3的倍数m可以写成三个素数p1、p2、p3的和(试着写出所有的m=p1+p2+p3的可能形式)?解:functiony=fg(n);n=input('请输入n的值:');if mod(n,3);error('n不是3的倍数.请重新运行.')elseif n<6;error('n必须不小于6.')elsefor m=1:n;for k=m:n;for p=k:nif(isprime(m))&(isprime(k))&(isprime(p))&(m+k+p==n);disp([num2str(n),'=',num2str(m),'+',num2str(k),'+',num2str(p)]);break;end;end;end;end;end;四、数据处理与拟合初步:11.通过测量得到一组数据:分别采用y=c1+c2e^(-t)和y=d1+d2te^(-t)进行拟合,并画出拟合曲线进行对比。

解:t=1:10;y=[4.842,4.362,3.754,3.368, 3.169,3.038,3.034,3.016,3.012,3.005];x1=exp(-t)x1=0.36790.1353 0.0498 0.0183 0.0067 0.00250.0009 0.00030.0001 0.0000x2=t.*exp(-t)x2 =0.36790.2707 0.14940.0733 0.0337 0.0149 0.00640.0027 0.00110.0005y1=polyfit(x1,y,1)y1 =5.21653.1564y1=5.2165*exp(-t)+3.1564y1 =5.0754 3.86243.4161 3.2519 3.1915 3.16933.1612 3.1581 3.1570 3.1566y2=polyfit(x2,y,1)y2 =5.0273 2.9973y2=5.0273*t.*exp(-t)y2=1.8494 1.36070.7509 0.3683 0.16940.07480.0321 0.0135 0.00560.0023plot(t,y,t,y1,'r--',t,y2,'gx')12345612.计算下列定积分第一个:建立m文件:function f=jifen1(x)f=exp(-2*x);在命令窗口输入:[z1,n]=quad(@jifen1,0,2)得到结果:z1=0.4908n=25第二个:x=0:0.01:2;z2=exp(2*x);trapz(x,z2)得到结果:ans =26.8000第三个:t=-1:0.01:1;z3=x.^2-3*x+0.5;trapz(x,z3)得到结果:ans =1.666713.微分方程组当t=0时,x1(0)=1,x2(0)=-0.5,求微分方程t在[0,25]上的解,并画出相空间轨道图像。

t=0:0.01:25;[x,y]=dsolve('Dx=0.5-x','Dy=x-4*y','x(0)=1','y(0)=-0.5','t') x=1/2+1/2*exp(-t)y =1/8+1/6*exp(-t)-19/24*exp(-4*t)plot(t,x,t,y)图像如下:t=0:0.01:25;x=1/2+1/2*exp(-t);y =1/8+1/6*exp(-t)-19/24*exp(-4*t);plot(t,x,t,y)0510152025-0.50.5114.设通过测量得到时间t 与变量y的数据:t=[0 0.3 0.8 1.1 1.6 2.3];y=[0.5 0.82 1.14 1.25 1.35 1.41]; 分别采用多项式: y=a0+a 1t+a2t^2 和指数函数 y=b0+b 1e^t +b 2te^t 进行拟合,并计算均方误差、画出拟合效果图进行比较。

解:t=[0 0.3 0.8 1.1 1.6 2.3];y=[0.5 0.82 1.14 1.25 1.35 1.41]; tt =0:0.01:2.3;a=polyfit(t,y,2)yy1=polyval(a,tt);z1=polyval(a,t);wucha1=sqrt(sum((z1-y).^2))B=[ones(size(t'))exp(-t)'( t.*exp(-t))']; b=B\y'yy2=b(1)+b(2)*exp(-tt)+b(3)*tt.*exp(-tt); z2=b(1)+b(2)*exp(-t)+b(3)*t.*exp(-t);wucha2=sqrt(sum((z2-y).^2))figure(1);plot(t,y,'+',tt,yy1,t,z1,'o')figure(2);plot(t,y,'+',tt,yy2,t,z2,'o')00.51 1.52 2.515.观察函数:y=e^x-1.5cos(2*pi*x)在区间[-1,1]上的函数图像,完成下列两题:(1)用函数fzero求解上述函数在[-1,1]的所有根,验证你的结果;(2)用函数fminbnd求解上述函数在[-1,1]上的极小、极大、最小和最大值,在函数图像上标出你求得的最小值点作出验证。

注:可以用help fzero命令查看fzero的调用格式,fzero典型的调用方法是:fzero(@myfun,x0)%返回函数myfun在x0附近的根;fminbnd典型的调用方法是:fminbnd(@myfun,x1,x2)%返回函数myfun在区间[x1,x2]上的最小值。

(1)x=-1:0.01:1;y=exp(x)-1.5*cos(2*pi*x); plot(x,y,'g')hold on>>y0=0;>> plot(x,y0,'k')z=fzero('f',-0.8)z =-0.7985>> z=fzero('f',-0.1)z =-0.1531>> z=fzero('f',0.1)z =0.1154(2)f.mfunction y=f(x);y=exp(x)-1.5*cos(2*pi*x);x=fminsearch('f',-0.2,0.2) x=-0.0166>> x=fminsearch('f',-1,1)x =-1.0062f1.mfunction y=f(x);y=-exp(x)+1.5*cos(2*pi*x); x=fminsearch('f1',0.4,0.6)x =0.5288>> x=fminsearch('f1',-0.6,-0.4)x =-0.4897x1=-1.0062 ;y1=exp(x1)-1.5*cos(2*pi*x1)y1 =-1.1333plot(x1,y1,'*')练习2气象观察站调整问题某地区内有12个气象观察站(位置如图),现有10年各观察站的年降水量数据.为了节省开支,想要适当减少气象站.问题:减少哪些观察站可以使得到的降水量的信息量仍然足够大? 试结合方差分析和回归分析方法确定最终保留的观察站。

相关主题