文档库 最新最全的文档下载
当前位置:文档库 › 数学建模上机练习习题及答案

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

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

练习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, 并且用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

-1001020304050607080

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)

5

10

15

5

10

15

100

200

300

400

三、程序设计:

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

建立M文件d.m

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

if x>=-3&x<-1

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

elseif x>=-1&x<1

y=-x.^2+1;

elseif x>=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的阶乘。方法一:

function f=factor(n)

if n<=1

f=1;

else

f=factor(n-1)*n;

end

方法二:functionresult=fa(n)

n=input('please input n:');

result = 1;

for i = 1:n

result =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.请重新运行程序.')

else

for 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.')

else

for m=1:n;

for k=m:n;

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

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

x2=t.*exp(-t)

x2 =

0.36790.2707 0.14940.0733 0.0337 0.0149 0.00640.0027 0.00110.0005

y1=polyfit(x1,y,1)

y1 =

5.21653.1564

y1=5.2165*exp(-t)+3.1564

y1 =

5.0754 3.86243.4161 3.2519 3.1915 3.16933.1612 3.1581 3.1570 3.1566

y2=polyfit(x2,y,1)

y2 =

5.0273 2.9973

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

y2=

1.8494 1.36070.7509 0.3683 0.16940.07480.0321 0.0135 0.00560.0023

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

1

2

3

4

5

6

12.计算下列定积分

第一个:

建立m文件:

function f=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]上的

相关文档