数学建模作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end
y
else
x=((c+d/60)-(a+b/60))*60;
ifx<=3
y=0.25;
else
y=0.5+(x-3)*0.15;
end
y
end
输出结果:
请输入你打电话的起始时间(小时)9
请输入你打电话的起始时间(分钟)23
请输入你打电话的终止时间(小时)16
请输入你打电话的终止时间(分钟)40
(2)
请输入百分制成绩:101
erro
3.假定某地区电话收费标准为:通话时间3分钟以下,收费0.5元;3分钟以上,则每超过分钟加收0.15元;通话时间在7:00~22:00之间者,按上述标准全价收费,在其他通话时间者,按上述标准半价收费。计算某人在t1到t2通话时间,应缴多少电话费
程序如下:
a=input('请输入你打电话的起始时间(小时)');
(5)
G1 =
12 34 -4 1 3 -1
34 7 87 2 0 3
3 65 7 3 -2 7
G2 =
12 34 -4
3 65 7
4 5 1
11 0 19
20 -5 40
3.设有矩阵A和B
,
(1)求他们的乘积C。
(2)求矩阵C的右下角3x2子矩阵赋给D。
(3)查看MATLAB工作空间的使用情况。
程序如下:
27 274625 343
(4)
F1 =
16.4000 -13.6000 7.6000
35.8000 -76.2000 50.2000
67.0000 -134.0000 68.0000
F2 =
0.1027 -0.0062 -0.0069
0.0617 0.0403 -0.0366
0.0205 0.0855 -0.0507
form=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10);
m3=rem(m,10);
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
向量结构:
for m=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10);
2.已知 ,
求下列表达式的值:
(1)A+6*B和A-B+I(I为单位矩阵)。
(2)A*B和A.*B
(3)A^3和A.^3
(4)A/B和B\A
(5)[A,B]和[A([1,3],:);B^2]
程序如下:
A=[12 34 -4;34 7 87;3 65 7];
B=[1 3 -1;2 0 3;3 -2 7];
数学建模作业
实验1MATLAB运算基础
1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)
程序如下:
(1)z=2*sin(85/180*pi)/(1+exp(2))
输出结果:z =
0.2375
(2) ,其中
程序如下:
(2)x=[2 1+2i;-0.45 5];
z2=0.5*log(x+sqrt(1+x.^2))
y =
65.6000
4.建立一个5×6矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出错误信息。
程序如下:
A=rand(5,6)
n=input('输入你想输出的行数n=');
ifn<=5
B=A(n,:)
else
B=A(5,:)
disp('输入行数超过矩阵本身的行数,输出最后一行')
Columns 8 through 14
0.6784 0.6709 0.6549 0.6313 0.6011 0.5652 0.5247
Columns 15 through 21
0.4805 0.4337 0.3854 0.3366 0.2881 0.2410 0.1962
Columns 22 through 28
A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25];
B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];
C=A*B
D=C(3:5,2:3)
输出结果:
C =
93 150 77
258 3Biblioteka Baidu5 237
n=input('输入n的值:');
i=1:n;
f=1./i.^2;
x=sum(f);
y=sqrt(6*x)
输出结果:
输入n的值:100
y =
3.1321
输入n的值:1000
y =
3.1406
输入n的值:10000
y =
3.1415
2.根据 ,求:
(1)y<3时的最大值。
(2)与(1)的n值对应的y值
0.2061 0.1272 0.0392 -0.0574 -0.1619
(4) 其中
程序如下:
(4)t=0:0.5:2.5;
z=((t>=0)&(t<1)).*t.*t+((t>=1)&(t<2)).*(t.*t-1)+((t>=2)&(t<3)).*(t.*t-2*t+1)
输出结果:z =
0 0.2500 0 1.2500 1.0000 2.2500
要求:
(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误成绩。
程序如下:
(1)If语句:
c=input('请输入分数:');
ifc>=90&c<=100
d='A';
elseifc>=80&c<=89
d='B';
elseifc>=70&c<=79
d='D';
case{0,1,2,3,4,5}
d='E';
otherwise
d=c;
end
d
(2)
score=input('请输入百分制成绩:');
if score>=0&score<=100
switch fix(score/10)
case {9,10}
grade='A';
case {8}
grade='B';
end
输出结果:
A =
0.1068 0.9037 0.0305 0.6099 0.1829 0.1679
0.6538 0.8909 0.7441 0.6177 0.2399 0.9787
0.4942 0.3342 0.5000 0.8594 0.8865 0.7127
0.7791 0.6987 0.4799 0.8055 0.0287 0.5005
C=length(B)
ch='ABedpoFjdlsjTjldk';
subch=find(ch>='A'&ch<='Z');
ch(subch)=[];
char(ch)
输出结果:(1)
C =
43
(2)
ans =
edpojdlsjjldk
实验2选择结构程序设计
1.求下列分段函数的值
程序如下:
x=input('请输入x的值:');
disp('零的个数:'),zn
输出结果:(1)
sum =
-7.4275e+011
max =
case {7}
grade='C';
case {6}
grade='D';
otherwise
grade='E';
end
grade
else
disp('erro')
end
输出结果:(1)
请输入分数:93
d =
A
请输入分数:89
d =
B
请输入分数:78
d =
C
请输入分数:68
d =
D
请输入分数:46
d =
E
f(3)=1;
n=100;
pn=2;
nn=0;
zn=1;
fori=4:n
f(i)=f(i-1)-2*f(i-2)+f(i-3);
iff(i)>0
pn=pn+1;
elseiff(i)==0
zn=zn+1;
else
nn=nn+1;
end
end
disp('正数的个数:'),pn
disp('负数的个数:'),nn
程序如下:
y=1;n=1;
while(y<3)
n=n+2;
y=y+1/n;
end
y=y-1/n
n=(n+1)/2
输出结果:
y =
2.9944
n =
57
3一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。试输出全部的水仙花数。要求
(1)用循环结构实现。
(2)用向量运算实现。
程序如下:
循环结构:
m3=rem(m,10);
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
输出结果:
153
370
371
407
4.已知 ,求f1~f100中:
(1)最大值、最小值、各数之和。
(2)正数、零、负数的个数。
程序如下:(1)
f(1)=1;
f(2)=0;
f(3)=1;
b=input('请输入你打电话的起始时间(分钟)');
c=input('请输入你打电话的终止时间(小时)');
d=input('请输入你打电话的终止时间(分钟)');
ifa>=7&c<=22
x=((c+d/60)-(a+b/60))*60;
ifx<=3
y=0.5;
else
y=0.5+(x-3)*0.15;
68 44 62
309 -72 596
154 -5 241
D2 =
12 102 4
68 0 261
9 -130 49
(3)
E1 =
37226 233824 48604
247370 149188 600766
78688 454142 118820
E2 =
1728 39304 -64
39304 343 658503
Columns 43 through 49
0.3669 0.3998 0.4289 0.4532 0.4719 0.4841 0.4891
Columns 50 through 56
0.4862 0.4748 0.4543 0.4243 0.3846 0.3350 0.2755
Columns 57 through 61
0.1543 0.1162 0.0824 0.0535 0.0299 0.0120 -0.0000
Columns 29 through 35
-0.0060 -0.0060 0 0.0117 0.0288 0.0509 0.0775
Columns 36 through 42
0.1080 0.1418 0.1780 0.2159 0.2547 0.2934 0.3311
423 520 397
588 705 557
753 890 717
D =
520 397
705 557
890 717
4.完成下列操作:
(1)求[100,999]之间能被21整除的数的个数。
(2)建立一个字符串向量,删除其中的大写字母。
程序如下:
A=100:1:999;
B=find(rem(A,21)==0);
d='C';
elseifc>=60&c<=69
d='D';
elseifc>=0&c<=60
d='E';
else
d=c;
end
d
Switch语句:
c=input('请输入分数:');
switchfix(c/10)
case{9,10}
d='A';
case{8}
d='B';
case{7}
d='C';
case{6}
C1=A+6*B
C2=A-B+eye
D1=A*B
D2=A.*B
E1=A^3
E2=A.^3
F1=A/B
F2=B/A
G1=[A,B]
G2=[A([1,3],:);B^2]
输出结果:(1)
C1 =
18 52 -10
46 7 105
21 53 49
C2 =
12 32 -2
33 8 85
1 68 1
(2)
D1 =
ifx<0&x~=-3
y=x^2+x-6
elseifx>=0&x<10&x~=2&x~=3
y=x^2-5*x+6
else
y=x^2-x-1
end
输出结果:
请输入x的值:4
y =
2
2.输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90~100分为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
n=100;
max=f(3);
min=f(2);
sum=2;
fori=4:n
f(i)=f(i-1)-2*f(i-2)+f(i-3);
iff(i)>max
max=f(i);
elseiff(i)<min
min=f(i);
end
sum=sum+f(i);
end
sum
max
min
(2)
f(1)=1;
f(2)=0;
输出结果:z2 =
0.7218 0.7347 + 0.5317i
-0.2180 1.1562
(3) ,
程序如下:
(3)a=-3.0:0.1:3.0;
z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)
输出结果:z3 =
Columns 1 through 7
0.4387 0.5072 0.5640 0.6089 0.6424 0.6648 0.6766
0.7150 0.1978 0.9047 0.5767 0.4899 0.4711
输入你想输出的行数n=4
B =
0.7791 0.6987 0.4799 0.8055 0.0287 0.5005
实验三循环结构程序设计
1.据 ,求π的近似值。当n分别取100、1000、10000时,结果是多少?
程序如下:
y
else
x=((c+d/60)-(a+b/60))*60;
ifx<=3
y=0.25;
else
y=0.5+(x-3)*0.15;
end
y
end
输出结果:
请输入你打电话的起始时间(小时)9
请输入你打电话的起始时间(分钟)23
请输入你打电话的终止时间(小时)16
请输入你打电话的终止时间(分钟)40
(2)
请输入百分制成绩:101
erro
3.假定某地区电话收费标准为:通话时间3分钟以下,收费0.5元;3分钟以上,则每超过分钟加收0.15元;通话时间在7:00~22:00之间者,按上述标准全价收费,在其他通话时间者,按上述标准半价收费。计算某人在t1到t2通话时间,应缴多少电话费
程序如下:
a=input('请输入你打电话的起始时间(小时)');
(5)
G1 =
12 34 -4 1 3 -1
34 7 87 2 0 3
3 65 7 3 -2 7
G2 =
12 34 -4
3 65 7
4 5 1
11 0 19
20 -5 40
3.设有矩阵A和B
,
(1)求他们的乘积C。
(2)求矩阵C的右下角3x2子矩阵赋给D。
(3)查看MATLAB工作空间的使用情况。
程序如下:
27 274625 343
(4)
F1 =
16.4000 -13.6000 7.6000
35.8000 -76.2000 50.2000
67.0000 -134.0000 68.0000
F2 =
0.1027 -0.0062 -0.0069
0.0617 0.0403 -0.0366
0.0205 0.0855 -0.0507
form=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10);
m3=rem(m,10);
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
向量结构:
for m=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10);
2.已知 ,
求下列表达式的值:
(1)A+6*B和A-B+I(I为单位矩阵)。
(2)A*B和A.*B
(3)A^3和A.^3
(4)A/B和B\A
(5)[A,B]和[A([1,3],:);B^2]
程序如下:
A=[12 34 -4;34 7 87;3 65 7];
B=[1 3 -1;2 0 3;3 -2 7];
数学建模作业
实验1MATLAB运算基础
1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)
程序如下:
(1)z=2*sin(85/180*pi)/(1+exp(2))
输出结果:z =
0.2375
(2) ,其中
程序如下:
(2)x=[2 1+2i;-0.45 5];
z2=0.5*log(x+sqrt(1+x.^2))
y =
65.6000
4.建立一个5×6矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出错误信息。
程序如下:
A=rand(5,6)
n=input('输入你想输出的行数n=');
ifn<=5
B=A(n,:)
else
B=A(5,:)
disp('输入行数超过矩阵本身的行数,输出最后一行')
Columns 8 through 14
0.6784 0.6709 0.6549 0.6313 0.6011 0.5652 0.5247
Columns 15 through 21
0.4805 0.4337 0.3854 0.3366 0.2881 0.2410 0.1962
Columns 22 through 28
A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25];
B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];
C=A*B
D=C(3:5,2:3)
输出结果:
C =
93 150 77
258 3Biblioteka Baidu5 237
n=input('输入n的值:');
i=1:n;
f=1./i.^2;
x=sum(f);
y=sqrt(6*x)
输出结果:
输入n的值:100
y =
3.1321
输入n的值:1000
y =
3.1406
输入n的值:10000
y =
3.1415
2.根据 ,求:
(1)y<3时的最大值。
(2)与(1)的n值对应的y值
0.2061 0.1272 0.0392 -0.0574 -0.1619
(4) 其中
程序如下:
(4)t=0:0.5:2.5;
z=((t>=0)&(t<1)).*t.*t+((t>=1)&(t<2)).*(t.*t-1)+((t>=2)&(t<3)).*(t.*t-2*t+1)
输出结果:z =
0 0.2500 0 1.2500 1.0000 2.2500
要求:
(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误成绩。
程序如下:
(1)If语句:
c=input('请输入分数:');
ifc>=90&c<=100
d='A';
elseifc>=80&c<=89
d='B';
elseifc>=70&c<=79
d='D';
case{0,1,2,3,4,5}
d='E';
otherwise
d=c;
end
d
(2)
score=input('请输入百分制成绩:');
if score>=0&score<=100
switch fix(score/10)
case {9,10}
grade='A';
case {8}
grade='B';
end
输出结果:
A =
0.1068 0.9037 0.0305 0.6099 0.1829 0.1679
0.6538 0.8909 0.7441 0.6177 0.2399 0.9787
0.4942 0.3342 0.5000 0.8594 0.8865 0.7127
0.7791 0.6987 0.4799 0.8055 0.0287 0.5005
C=length(B)
ch='ABedpoFjdlsjTjldk';
subch=find(ch>='A'&ch<='Z');
ch(subch)=[];
char(ch)
输出结果:(1)
C =
43
(2)
ans =
edpojdlsjjldk
实验2选择结构程序设计
1.求下列分段函数的值
程序如下:
x=input('请输入x的值:');
disp('零的个数:'),zn
输出结果:(1)
sum =
-7.4275e+011
max =
case {7}
grade='C';
case {6}
grade='D';
otherwise
grade='E';
end
grade
else
disp('erro')
end
输出结果:(1)
请输入分数:93
d =
A
请输入分数:89
d =
B
请输入分数:78
d =
C
请输入分数:68
d =
D
请输入分数:46
d =
E
f(3)=1;
n=100;
pn=2;
nn=0;
zn=1;
fori=4:n
f(i)=f(i-1)-2*f(i-2)+f(i-3);
iff(i)>0
pn=pn+1;
elseiff(i)==0
zn=zn+1;
else
nn=nn+1;
end
end
disp('正数的个数:'),pn
disp('负数的个数:'),nn
程序如下:
y=1;n=1;
while(y<3)
n=n+2;
y=y+1/n;
end
y=y-1/n
n=(n+1)/2
输出结果:
y =
2.9944
n =
57
3一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。试输出全部的水仙花数。要求
(1)用循环结构实现。
(2)用向量运算实现。
程序如下:
循环结构:
m3=rem(m,10);
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
输出结果:
153
370
371
407
4.已知 ,求f1~f100中:
(1)最大值、最小值、各数之和。
(2)正数、零、负数的个数。
程序如下:(1)
f(1)=1;
f(2)=0;
f(3)=1;
b=input('请输入你打电话的起始时间(分钟)');
c=input('请输入你打电话的终止时间(小时)');
d=input('请输入你打电话的终止时间(分钟)');
ifa>=7&c<=22
x=((c+d/60)-(a+b/60))*60;
ifx<=3
y=0.5;
else
y=0.5+(x-3)*0.15;
68 44 62
309 -72 596
154 -5 241
D2 =
12 102 4
68 0 261
9 -130 49
(3)
E1 =
37226 233824 48604
247370 149188 600766
78688 454142 118820
E2 =
1728 39304 -64
39304 343 658503
Columns 43 through 49
0.3669 0.3998 0.4289 0.4532 0.4719 0.4841 0.4891
Columns 50 through 56
0.4862 0.4748 0.4543 0.4243 0.3846 0.3350 0.2755
Columns 57 through 61
0.1543 0.1162 0.0824 0.0535 0.0299 0.0120 -0.0000
Columns 29 through 35
-0.0060 -0.0060 0 0.0117 0.0288 0.0509 0.0775
Columns 36 through 42
0.1080 0.1418 0.1780 0.2159 0.2547 0.2934 0.3311
423 520 397
588 705 557
753 890 717
D =
520 397
705 557
890 717
4.完成下列操作:
(1)求[100,999]之间能被21整除的数的个数。
(2)建立一个字符串向量,删除其中的大写字母。
程序如下:
A=100:1:999;
B=find(rem(A,21)==0);
d='C';
elseifc>=60&c<=69
d='D';
elseifc>=0&c<=60
d='E';
else
d=c;
end
d
Switch语句:
c=input('请输入分数:');
switchfix(c/10)
case{9,10}
d='A';
case{8}
d='B';
case{7}
d='C';
case{6}
C1=A+6*B
C2=A-B+eye
D1=A*B
D2=A.*B
E1=A^3
E2=A.^3
F1=A/B
F2=B/A
G1=[A,B]
G2=[A([1,3],:);B^2]
输出结果:(1)
C1 =
18 52 -10
46 7 105
21 53 49
C2 =
12 32 -2
33 8 85
1 68 1
(2)
D1 =
ifx<0&x~=-3
y=x^2+x-6
elseifx>=0&x<10&x~=2&x~=3
y=x^2-5*x+6
else
y=x^2-x-1
end
输出结果:
请输入x的值:4
y =
2
2.输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90~100分为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
n=100;
max=f(3);
min=f(2);
sum=2;
fori=4:n
f(i)=f(i-1)-2*f(i-2)+f(i-3);
iff(i)>max
max=f(i);
elseiff(i)<min
min=f(i);
end
sum=sum+f(i);
end
sum
max
min
(2)
f(1)=1;
f(2)=0;
输出结果:z2 =
0.7218 0.7347 + 0.5317i
-0.2180 1.1562
(3) ,
程序如下:
(3)a=-3.0:0.1:3.0;
z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)
输出结果:z3 =
Columns 1 through 7
0.4387 0.5072 0.5640 0.6089 0.6424 0.6648 0.6766
0.7150 0.1978 0.9047 0.5767 0.4899 0.4711
输入你想输出的行数n=4
B =
0.7791 0.6987 0.4799 0.8055 0.0287 0.5005
实验三循环结构程序设计
1.据 ,求π的近似值。当n分别取100、1000、10000时,结果是多少?
程序如下: