matlab平时作业.doc
《matlab平时作业.doc》由会员分享,可在线阅读,更多相关《matlab平时作业.doc(14页珍藏版)》请在装配图网上搜索。
《MATLAB程序设计基础》平时作业 说明:1-17题为必做题,须分别提交纸质文档及与纸质文档对应的电子文档.doc版。 1. 对于每输入的一个百分制成绩,要求输出对应的成绩等级A、B、C、D、E。其中A的分值在区间[90,100)内;B的分值在区间[80,90)内;C的分值在区间[70,80)内;D的分值在区间[60,70)内;E的分值在区间[0,60)内;要求: 1)要有对输入成绩是否合理的判断: ①输入成绩如果含有小数,只能是“x.5”的形式,其实x为合理的整数。 ②成绩必须在百分制范围内。 ③如果输入的成绩不合理,应向命令窗口输出报错信息“输入的成绩不合理” 2)用if语句实现题目要求 x=input(输入一个数值:); %输入 if mod(x,0.5)==0&&x>=0&&x<100; %mod(x,0.5)表示x除以0.5的余数,用以判断成绩含小数是否为x.5 if x<0&x>=100 %不合理成绩 disp(输入的成绩不合理) elseif x<100&x>=90%成绩[90 100) disp(成绩等级为:A) elseif x<90&x>=80 %成绩[80 90) disp(成绩等级为:B) elseif x<80&x>=70%成绩[70 80) disp(成绩等级为:C) elseif x<70&x>=60%成绩[60 70) disp(成绩等级为:D) else disp(成绩等级为:E)%成绩[0 60) end else disp(输入的成绩不合理) end 运行结果: 输入一个数值:57 成绩等级为:E 输入一个数值:93.3 输入的成绩不合理 3)用switch语句实现题目要求 x=input(请输入一个成绩:); %输入 if mod(x,0.5)==0&&x>=0&&x<100 %mod(x,0.5)表示x除以0.5的余数,用以判断成绩含小数是否为x.5 switch floor(x/10) %x除以10向下取整 case 9 disp(成绩等级为:A); case 8 disp(成绩等级为:B); case 7 disp(成绩等级为:C); case 6 disp(成绩等级为:D); case {5,4,3,2,1,0} disp(成绩等级为:E); otherwise disp(输入的成绩不合理); end else disp(输入的成绩不合理); end 运行结果: 请输入一个成绩:0 成绩等级为:E 请输入一个成绩:120 输入的成绩不合理 请输入一个成绩:95.5 成绩等级为:A 2. 设计程序,完成[10,99]之间两位整数的加、减、乘、除四则运算。要求: 1)随机产生区间[10,99]之内的两位随机整数 2)在产生符合要求的随机数后,输入一个运算符号,做相应的运算 3)运算结果显示在命令窗口,其显示类似于“a=x+y=68”的形式。 x=round((99-10)*rand(1)+10); %在区间[10 99]随机选一个数x y=round((99-10)*rand(1)+10); %在区间[10 99]随机选一个数y sym=input(请输入运算符号(+-*/):,s); switch sym %switch语句 case{+} a=x+y; disp([输入的两数之和b=,num2str(x),+,num2str(y),=,num2str(a)]); %输出显示类似于“a=x+y=68”的形式 case{-} a=x-y; disp([输入的两数之差c=,num2str(x),-,num2str(y),=,num2str(a)]); case{*} a=x*y; disp([输入的两数之积d=,num2str(x),*,num2str(y),=,num2str(a)]); case{/} a=x/y; disp([输入的两数之商e=,num2str(x),/,num2str(y),=,num2str(a)]); otherwise disp(输入符号错误) end 运行结果: 请输入运算符号(+-*/):+ 输入的两数之和b=95+31=126 请输入运算符号(+-*/):- 输入的两数之差c=64-53=11 请输入运算符号(+-*/):* 输入的两数之积d=89*78=6942 请输入运算符号(+-*/):/ 输入的两数之商e=51/12=4.25 3. 求下列分段函数的值并绘制函数曲线。 要求: 1)x的值以向量的形式从键盘输入。 2)用if语句实现,分别输出x =﹣5.0,﹣3.0,1.0,2.0,2.5,3.0,5.0时的y值。 x=input(please input x=); if x<0 & x~=3 y=x.^2+x-6; elseif x>=0 & x<10 & x~=2 & x~=3 y=x.^2-5.*x+6; else y=x.^2-x-1; end disp([y=,num2str(y)]) 运行结果: please input x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0 ] y=14 11 -1 1 2.75 5 19 3)自行拟定自变量的取值,绘制该分段函数的二维曲线。 x=-10:1:15; %自拟自变量的取值 if x<0 & x~=3 y=x.^2+x+6; elseif x>=0 & x<10 & x~=2 & x~=3 y=x.^2-5.*x+6; else y=x.^2-x-1; end plot(x,y,r-) %绘制分段函数 title(分段函数) xlabel(x) ylabel(y) hold on 图3(3)分段函数的二维曲线 4. 分别使用for循环语句和while循环语句找出最小的n值,使得n!>10100,并求出n!。 for循环语句如下: s=1; %对s赋初值 for n=1:100 %默认步长为1 s=s*n; %s=n! if(s>10100) break; %如果s>10100,结束运行 end end disp([n=,num2str(n)]) %输出n disp([s=,num2str(s)]) %输出s 运行结果: n=8 s=40320 while循环语句如下: s=1; %对s赋初值 n=0; %循环次数赋初值 while(s<=10100) n=n+1; %不能使用++ s=s*n; end disp([n=,num2str(n)]); disp([s=,num2str(s)]); %组合字符串 运行结果: n=8 s=40320 5. 已知 f1=1,n=1 f2=0,n=2 f3=1,n=3 fn=fn-1-2fn-2+fn-3,n>3 求f1 ~ f50中: 1) 最大值和最小值及它们的位置、各数之和 (最大值给变量MAX,其位置给变量x, 最小值给变量MIN,其位置给变量y,各数之和给变量SUM)。 2) 正数、零、负数的个数 (依次赋值给变量N_positive,N_zero,N_negative)。 f(1)=1; f(2)=0; f(3)=1; %输入 n=3; %赋值 while (n<50) n=n+1; f(n)=f(n-1)-2*f(n-2)+f(n-3); end [MAX,x]=max(f) %MAX为向量f中最大值元素,x为最大值元素的索引号 [MIN,y]=min(f) %MAX为向量f中最小值元素,y为最小值元素的索引号 SUM=sum(f) N_positive=numel(find(f>0)) %numel表示返还数组中的元素个数, N_zero=numel(find(f==0)) %返还f中等于0的位置 N_negative=numel(find(f<0)) 运行结果: MAX =406631 x = 49 MIN =-403795 y =50 SUM =76861 N_positive =25 N_zero =2 N_negative =23 6. Fibonacci数组的元素满足Fibonacci规则: ak+2=ak+ak+1,(k=1,2,3,…);且a1= a2=1。 请设计一段程序,求出该数组中第一个大于10000的元素对应的k值以及该元素值。 a(1)=1; a(2)=1; k=1; while a(k)<=10000 a(k+2)=a(k)+a(k+1); k=k+1; end disp([k=,num2str(k)]) disp([a(k)=,num2str(a(k))]) 运行结果: k=21 a(k)=10946 7. 定义自变量x的取值区间为[﹣5,5],编写一个函数文件,实现绘制函数y=ax3+bx2+cx+d的曲线,其中给定各系数值分别为 ①a=﹣1,b=2, c=﹣5,d=3; ②a=3, b=﹣7,c=1, d=4; ③a=0, b=4, c=0, d=﹣5 要另外编写调用该函数文件的m文件,实现调用。 function my1(a,b,c,d) %定义主函数,函数文件名为my1.m x=-5:1:5; %输入x y=a*x.^3+b*x.^2+c*x+d; plot(x,y); %绘制曲线 xlabel(x轴); %标志x轴 ylabel(y轴); %标志y轴 title(函数图像); %设置图名称 a=input(please input a=); %子函数 b=input(please input b=); c=input(please input c=); d=input(please input d=); %利用输出参数a,b,c,d向my1传递数据 my1(a,b,c,d); %调用的是啊,a,b,c,d四个参数 图7(1) 图7(2) 图7(3) 8. 设计程序,在一个图形窗体中画出函数y=ex和y=logx的特性曲线。其中y=ex中x取值区间为(﹣2,2),y=logx中x取值区间为(0.1,5)。 要求: 1)要有图例、标题(二维图)、坐标轴标签(x轴数据和y轴数据); 2)每条曲线的属性自己设置,但不能全用默认值。 x1=-2:0.1:2; y1=exp(x1); x2=0.1:0.1:5; y2=log(x2); plot(x1,y1,r*--,x2,y2,ko-) legend(函数y=exp(x)的特性曲线,函数y=logx的特性曲线) title(二维图) xlabel(x轴数据) ylabel(y轴数据) 图8 9. 采用2行2列子图的方式进行二维图形绘制,要求: 1)自变量x的取值区间为[0,2π] 2)三个函数分别为:y1=sin(x),y2=cos(x),y3=sin(x)+cos(x) 3)在第1幅子图绘制y1的曲线;在第2幅子图绘制y2的曲线;在第3幅子图绘制y3的曲线;在第4幅子图中绘制所有3条曲线 4)对每一幅子图,都要有图例、坐标轴标签;曲线的属性自己设置,不能全用默认值。 x=0:0.1:2*pi; y1=sin(x); y2=cos(x); y3=sin(x)+cos(x); subplot(2,2,1); plot(x,y1,ro-); legend(sin曲线); title(y=sin(x)); xlabel(横坐标1); ylabel(纵坐标1); subplot(222); plot(x,y2,g*-); legend(cos曲线); title(y=cos(x)); xlabel(横坐标2); ylabel(纵坐标2); subplot(223); plot(x,y3,b-p); legend(sin(x)+cos(x)曲线); title(y=sin(x)+cos(x)); xlabel(横坐标3); ylabel(纵坐标3); subplot(224); plot(x,y1,ro-,x,y2,g*-,x,y3,b-p); %同时绘制三个函数的图像 legend(sin曲线,cos曲线,sin(x)+cos(x)曲线); title(三个函数的曲线); xlabel(横坐标); ylabel(纵坐标); 图(9) 10. 采用1行2列子图的方式进行二维图形绘制,要求: 1)在第1幅子图绘制三维曲线: x∈[0,20] y=sin(x) z=cos(x) 2)在第2幅子图绘制三维曲面: x∈[﹣20,20] y∈[﹣10,10] 3) 对每一幅子图,都要有标题、坐标轴标签;曲线的属性自己设置,不能全用默认值。 subplot(121); %在第一个子图中绘图 x1=0:0.1:20; y1=sin(x1); z1=cos(x1); plot(x1,y1,ro-,x1,z1,b*-); legend(sin曲线,cos曲线); %设置图例 title(图1); xlabel(x1); ylabel(y1); subplot(122); %在第二个子图中绘图 x2=-20:1:20; y2=0.5*x2; [X,Y]=meshgrid(x2,y2); %生成X和Y网络坐标矩阵 z=(X.^2)/9-(Y.^2)/4; %网格化后直接输入z mesh(X,Y,z); %曲面绘图 legend(双曲面); title(图2); xlabel(x2); ylabel(y2); zlabel(z) grid on; 图(10) 11. 已知函数,其中x的取值区间为[﹣2,2],试编程绘制该二维曲线,要求:要有标题、坐标轴标签,曲线颜色用红色。 p=ezplot((x.^2+y.^2-1).^3-x.^2.*y.^3,[-2 2]); %在区间[-2 2]绘制(x2+y2-1)^3-x2y2=0的图像 set(p,color,r); %指定曲线颜色为红色 title(曲线图); xlabel(x轴); ylabel(y轴); 图(11) 12. 已知原始数据,,插值点为,试用4种不同的插值方法进行插值,并在一幅图的4个子图中分别绘出4种插值曲线,并各自注明所使用的插值方法。 x=0:1:4*pi; y=sin(x).*exp(-x/5); xi=0:0.3:4*pi; %设置新的插点 subplot(221) yi=interp1(x,y,xi,nearset); %使用最近点插值 plot(xi,yi) title(最近点插值) subplot(222) yi=interp1(x,y,xi); %默认为线性插值 plot(xi,yi) title(线性插值) subplot(223) yi=interp1(x,y,xi,cubic); %使用三次立方插值 plot(xi,yi) title(三次立方插值) subplot(224) yi=interp1(x,y,xi,spline); %使用三次样条插值 plot(xi,yi) title(三次样条插值) 图(12) 13.考虑表1中的数据: 表1 一周气温温度数据 周一 周二 周三 周四 周五 周六 周日 早晨 15 15 18 13 13 15 16 中午 20 21 25 19 20 22 25 夜晚 16 17 12 14 16 18 19 完成以下功能: 1)将一周的气温温度数据,使用一个矩阵A进行保存。 2)取出周二中午、周四上午、周日中午和夜晚的温度值,组成新的温度值向量。 3)取出矩阵A中的前六个数值,组成新的温度值向量。 4)取出周二、周三、周四及周六的数据,组成新的温度值矩阵。 5)求每天温度的平均值 6)求一周的早晨、中午和夜晚温度的平均值 7)求一周的温度平均值及最高温度及最低温度 A=[15 15 18 13 13 15 16;20 21 25 19 20 22 25;16 17 12 14 16 18 19] %将一周的气温温度数据使用A矩阵保存 B=A([5 10 20 21]) %取出周二中午周四上午周日中午和夜晚的温度组成新矩阵 C=A(1:1:6) %取出A中的前六个组成新的矩阵 D=A(:,[2 3 4 6]) %取出周二周三周四和周六的数据组成新的矩阵 everyday=mean(A) %表示每一列的平均值,即每天气温的平均值 mae=mean(A) %一周早上,中午,晚上的平均值 all=mean(A(:)) %一周的温度平均值 MAX=max(A(:)) %一周的最高温度 MIN=min(A(:)) %一周的最低温度 14.考虑表2中的数据,这是一位举重教练收集的不同性别的举重动员每个年龄的最大举重磅数,据信这三者之间存在着某种函数关系,请估算当前队伍中队员(要求13~20岁每一岁都有)的最大举重磅数。 表2 不同性别的举重动员每个年龄的最大举重磅数 性别 年龄 重 举 大 最 13 15 17 19 20 男 270 290 330 350 380 女 250 270 310 330 360 t=[13 15 17 19 20]; y=[270 290 330 350 380;250 270 310 330 360]; X=[ones(size(t)) t t.^2];%ones(size(t))以t的长度为矩阵的大小设置全1矩阵 Z=X\y; %得到系数 T=(13:20); Y=[ones(size(T)) T T.^2]*Z; MAXT=max(Y) 运行结果: MAXT =[14305/38 13545/38] 15.某乡镇企业2009-2015年的生产利润如表3所示。 表3 过去7年生产利润 年份 2009 2010 2011 2012 2013 2014 2015 利润(万元) 70 122 144 152 174 196 202 要求用多项式拟合法预测出该企业2016年和2017年的利润,并绘出拟合图。 x=2009:2015; %x在[2009 2015]取值,间隔为1 y=[70 122 144 152 174 196 202]; %得到数据(x,y) p=polyfit(x,y,1); %对(x,y)数据进行1阶多项式拟合,得到多项式系数p x1=2009:2018; y1=polyval(p,x1); %根据得到的多项式,计算x处的函数值y plot(x,y,-ro,x1,y1,-b*); %样本点用红色线和o表示,拟合曲线用蓝色线和*表示 title(某乡镇企业2009-2018年的生产利润) %设置图的标题 legend(09-15年的利润,09-18年的利润趋势线) %legend表示为图例做标注 xlabel(年份) %x轴表示年份 ylabel(利润) %y轴表示利润 text(2016,polyval(p,2016),<---2016年的利润) %在指定2016位置显示字符串 text(2017,polyval(p,2017),<---2017年的利润) grid on 图(15) 16. 求下列方程组的解。 1) A=[2 -1 3;3 0 -5;4 -1 1]; b=[5;6;9]; B=[A b]; ra=rank(A) rb=rank(B) %ra=rb=3,方程组有唯一解 x=inv(A)*b %AX=b,X=A-1b 运行结果: ra =3 rb =3 x = [2;-1;0] 2) A=[4 0 -6 3;3 -1 -3 4;1 5 -9 -8]; b=[5;4;0]; B=[A b]; ra=rank(A) rb=rank(B) %ra=rb=2<4,所以方程有无穷解 format rat %用有理数的形式显示数据(分数表示) R=rref(B) %计算B的最简行矩阵 ra =2 rb =2 R =1 0 -3/2 3/4 5/4 0 1 -3/2 -7/4 -1/4 0 0 0 0 0 17.已知用来描述系统的微分方程为 其中,是幅值为1、频率为1rad/s的方波信号,试建立该系统的SIMULINK模型(如图1所示,须理解为什么是这样的模型)并进行仿真,给出仿真结果。 图1 图(17)scope仿真结果 说明:18-19题为选作题,如果完成(须提交设计的所有原始文件电子稿)可提高平时成绩。 18.利用GUI编程设计一个能够实现两个实数加减乘除四则运算的计算器。 19.利用GUI编程设计一个能够实现两个复数加减乘除四则运算的计算器。 14- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 平时 作业

链接地址:https://www.zhuangpeitu.com/p-12742801.html