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

上传人:b****5 文档编号:7756645 上传时间:2023-01-26 格式:DOCX 页数:19 大小:309.17KB
下载 相关 举报
数学建模上机练习习题及答案.docx_第1页
第1页 / 共19页
数学建模上机练习习题及答案.docx_第2页
第2页 / 共19页
数学建模上机练习习题及答案.docx_第3页
第3页 / 共19页
数学建模上机练习习题及答案.docx_第4页
第4页 / 共19页
数学建模上机练习习题及答案.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

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

《数学建模上机练习习题及答案.docx》由会员分享,可在线阅读,更多相关《数学建模上机练习习题及答案.docx(19页珍藏版)》请在冰豆网上搜索。

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

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

练习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=

53

3.在给定的矩阵中删除含有整行内容全为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,

并且用legend标注

x=0:

0.01:

10;

y1=2*x+5;

y2=x.^2-3*x+1;

plot(x,y1,x,y2,'r')

legend('y1','y2')

5.画出下列函数的曲面及等高线:

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)

三、程序设计:

6.编写程序计算(x在[-3,3],间隔0.01)

建立M文件d.m

x=input('请输入x的值:

');

ifx>=-3&x<-1

y=(-x.^2-4*x-3)/2;

elseifx>=-1&x<1

y=-x.^2+1;

elseifx>=1&x<=3

y=(-x.^2+4*x-3)/2;

else

y='error'

end

y

在命令窗口输入x的值:

7.有一列分数序列:

求前15项的和。

a=1;

b=2;

sum=0;

fork=1:

15

c=b/a;

sum=sum+c;

t=b;

b=a+b;

a=t;

end

sum

sum=

24.5701

8.用至少三种方法编写函数实现求任意整数n的阶乘。

方法一:

functionf=factor(n)

ifn<=1

f=1;

else

f=factor(n-1)*n;

end

方法二:

functionresult=fa(n)

n=input('pleaseinputn:

');

result=1;

fori=1:

n

result=result*i;

end

方法三:

n=input('pleaseinputn:

');

x=1:

n;

prod(x)

9.将任意大于6的偶数m写成两个素数p1、p2的和(试着写出所有的m=p1+p2的可能形式)。

解:

functiony=f(n);

n=input('请输入n的值:

');

ifmod(n,2);

error('n不是素数.请重新运行程序.')

elseifn<=6;

error('n必须大于6.请重新运行程序.')

else

form=1:

n;

fork=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的值:

');

ifmod(n,3);

error('n不是3的倍数.请重新运行.')

elseifn<6;

error('n必须不小于6.')

else

form=1:

n;

fork=m:

n;

forp=k:

n

if(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.通过测量得到一组数据:

t

1

2

3

4

5

6

7

8

9

10

y

4.842

4.362

3.754

3.368

3.169

3.038

3.034

3.016

3.012

3.005

分别采用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.13530.04980.01830.00670.00250.00090.00030.00010.0000

x2=t.*exp(-t)

x2=

0.36790.27070.14940.07330.03370.01490.00640.00270.00110.0005

y1=polyfit(x1,y,1)

y1=

5.21653.1564

y1=5.2165*exp(-t)+3.1564

y1=

5.07543.86243.41613.25193.19153.16933.16123.15813.15703.1566

y2=polyfit(x2,y,1)

y2=

5.02732.9973

y2=5.0273*t.*exp(-t)

y2=

1.84941.36070.75090.36830.16940.07480.03210.01350.00560.0023

plot(t,y,t,y1,'r--',t,y2,'gx')

12.计算下列定积分

第一个:

建立m文件:

functionf=jifen1(x)

f=exp(-2*x);

在命令窗口输入:

[z1,n]=quad(@jifen1,0,2)

得到结果:

z1=

0.4908

n=

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.6667

13.微分方程组

当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)

14.设通过测量得到时间t与变量y的数据:

        t=[00.30.81.11.62.3];

           y=[0.50.821.141.251.351.41];

分别采用多项式:

 y=a0+a1t+a2t^2

和指数函数 y=b0+b1e^t+b2te^t

进行拟合,并计算均方误差、画出拟合效果图进行比较。

解:

t=[00.30.81.11.62.3];

y=[0.50.821.141.251.351.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')

15.观察函数:

y=e^x-1.5cos(2*pi*x)

在区间[-1,1]上的函数图像,完成下列两题:

(1)用函数fzero求解上述函数在[-1,1]的所有根,验证你的结果;

(2)用函数fminbnd求解上述函数在[-1,1]上的极小、极大、最小和最大值,在函数图像

上标出你求得的最小值点作出验证。

注:

可以用helpfzero命令查看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')

holdon

>>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.m

functiony=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.0062

f1.m

functiony=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.4897

x1=-1.0062;

y1=exp(x1)-1.5*cos(2*pi*x1)

y1=

-1.1333

plot(x1,y1,'*')

练习2气象观察站调整问题

某地区内有12个气象观察站(位置如图),现有10年各观察站的年降水量数据.为了节省开支,想要适当减少气象站.

问题:

减少哪些观察站可以使得到的降水量的信息量仍然足够大?

试结合方差分析和回归分析方法确定最终保留的观察站。

提示:

 

解:

程序代码:

a=[272.6,324.5,158.6,412.5,292.8,258.4,334.1,303.2,292.9,243.2,159.7,331.2;251.6,287.3,349.5,297.4,227.8,453.6,321.5,451.0,446.2,307.5,421.1,455.1;192.7,433.2,289.9,366.3,466.2,239.1,357.4,219.7,245.7,411.1,357.0,353.2;246.2,232.4,243.7,372.5,460.4,158.9,298.7,314.5,256.6,327.0,296.5,423.0;291.7,311.0,502.4,254.0,245.6,324.8,401.0,266.5,251.3,289.9,255.4,362.1;466.5,158.9,223.5,425.1,251.4,321.0,315.4,317.4,246.2,277.5,304.2,410.7;258.6,327.4,432.1,403.9,256.6,282.9,389.7,413.2,466.5,199.3,282.1,387.6;453.4,365.5,357.6,258.1,278.8,467.2,355.2,228.5,453.6,315.6,456.3,407.2;158.5,271.0,410.2,344.2,250.0,360.7,376.4,179.4,159.2,342.4,331.2,377.7;324.8,406.5,235.7,288.8,192.6,284.9,290.5,343.7,283.4,281.2,243.7,411.1];

y=std(a,0,1)

输出结果:

y=

Columns1through6

100.266080.9270108.244463.974794.103494.2002

Columns7through12

38.047985.0735106.409257.247286.513636.8299

 

练习3中国总人口的灰色动态预测

运用灰色系统理论及其建模原理,预测2020年和2050年中国人口。

灰色预测法原理可参考:

灰色预测法.ppt

 

注:

以上所有作业均要求编写M文件,目的在于熟悉常用建模方法的使用和相关的Matlab语言。

 

练习4优化问题练习

1、线性规划

规划问题不等式约束默认是

,所有不等式约束都要变成

的形式。

函数原型:

X=linprog(f,A,b,Aeq,beq,LB,UB,X0,OPTIONS)

f:

目标函数的系数列向量

A:

不等式约束条件的系数矩阵

b:

不等式约束条件的

Aeq:

等式约束条件的系数矩阵

beq:

等式约束条件的

lb:

未知数的下界

ub:

未知数的上界

x0:

初值

option:

选项

例:

求解如下规划问题

2、二次规划

函数原型:

X=quadprog(H,f,A,b,Aeq,beq,LB,UB,X0,OPTIONS)

将目标函数写成如下形式:

例:

求解如下规划问题

 

3、0-1规划

函数原型:

X=bintprog(f,A,b,Aeq,beq,X0,OPTIONS)

例:

求解如下规划问题

4、有约束的最值问题

函数原型:

X=fimincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)

fun:

目标函数

nonlcon:

非线性约束条件函数

例1:

例2:

目标函数:

约束条件:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1