资源描述
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&x100; %mod(x,0.5)表示x除以0.5的余数,用以判断成绩含小数是否为x.5 if x=100 %不合理成绩disp(输入的成绩不合理) elseif x=90%成绩90 100)disp(成绩等级为:A)elseif x=80 %成绩80 90)disp(成绩等级为:B) elseif x=70%成绩70 80) disp(成绩等级为:C) elseif x=60%成绩60 70)disp(成绩等级为:D)elsedisp(成绩等级为:E)%成绩0 60) endelse disp(输入的成绩不合理) end运行结果:输入一个数值:57成绩等级为:E输入一个数值:93.3输入的成绩不合理3)用switch语句实现题目要求x=input(请输入一个成绩:); %输入if mod(x,0.5)=0&x=0&x100 %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(输入的成绩不合理); endelse disp(输入的成绩不合理);end运行结果:请输入一个成绩:0成绩等级为:E请输入一个成绩:120输入的成绩不合理请输入一个成绩:95.5成绩等级为:A2. 设计程序,完成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随机选一个数ysym=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.253. 求下列分段函数的值并绘制函数曲线。 要求: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 & x10 & x=2 & x=3 y=x.2-5.*x+6;else y=x.2-x-1;enddisp(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 193)自行拟定自变量的取值,绘制该分段函数的二维曲线。x=-10:1:15; %自拟自变量的取值if x=0 & x10100,并求出n!。for循环语句如下:s=1; %对s赋初值for n=1:100 %默认步长为1 s=s*n; %s=n! if(s10100) break; %如果s10100,结束运行 endenddisp(n=,num2str(n) %输出n disp(s=,num2str(s) %输出s运行结果:n=8s=40320while循环语句如下:s=1; %对s赋初值n=0; %循环次数赋初值while(s3求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 (n0) %numel表示返还数组中的元素个数,N_zero=numel(find(f=0) %返还f中等于0的位置N_negative=numel(find(f0)运行结果:MAX =406631x = 49MIN =-403795y =50SUM =76861N_positive =25N_zero =2N_negative =236. 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;enddisp(k=,num2str(k)disp(a(k)=,num2str(a(k)运行结果:k=21a(k)=109467. 定义自变量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.mx=-5:1:5; %输入xy=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轴数据)图89. 采用2行2列子图的方式进行二维图形绘制,要求:1)自变量x的取值区间为0,22)三个函数分别为: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幅子图绘制三维曲线:x0,20y=sin(x)z=cos(x)2)在第2幅子图绘制三维曲面:x20,20y10,103) 对每一幅子图,都要有标题、坐标轴标签;曲线的属性自己设置,不能全用默认值。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; %网格化后直接输入zmesh(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 一周气温温度数据周一周二周三周四周五周六周日早晨15151813131516中午20212519202225夜晚16171214161819完成以下功能: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中的数据,这是一位举重教练收集的不同性别的举重动员每个年龄的最大举重磅数,据信这三者之间存在着某种函数关系,请估算当前队伍中队员(要求1320岁每一岁都有)的最大举重磅数。表2 不同性别的举重动员每个年龄的最大举重磅数性别年龄重举大最1315171920男270290330350380女250270310330360t=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=Xy; %得到系数T=(13:20);Y=ones(size(T) T T.2*Z;MAXT=max(Y)运行结果:MAXT =14305/38 13545/3815.某乡镇企业2009-2015年的生产利润如表3所示。表3 过去7年生产利润年份2009201020112012201320142015利润(万元)70122144152174196202要求用多项式拟合法预测出该企业2016年和2017年的利润,并绘出拟合图。x=2009:2015; %x在2009 2015取值,间隔为1y=70 122 144 152 174 196 202; %得到数据(x,y)p=polyfit(x,y,1); %对(x,y)数据进行1阶多项式拟合,得到多项式系数px1=2009:2018;y1=polyval(p,x1); %根据得到的多项式,计算x处的函数值yplot(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 =3rb =3x = 2;-1;02)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=24,所以方程有无穷解format rat %用有理数的形式显示数据(分数表示)R=rref(B) %计算B的最简行矩阵ra =2rb =2R =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
展开阅读全文