您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Matlab语言程序设计
MATLAB语言程序设计1、应用题(20分)某工厂生产A和B两种产品,它们需要经过三种设备的加工,工时如表1所列。设备一、二、三每天可使用的时间分别不超过12、10和8小时。产品A和B的利润随市场的需求有所波动,如果预测未来某个时期内A和B的利润分别为4000元/吨和3000元/吨,问每天应安排产品A、B各多少吨,才能使工厂获利最大?表1生产产品工时表产品设备一设备二设备三A/(小时/吨)334B/(小时/吨)432设备每天最多可工作时数/小时12108请写出具体解决方案,并编写该解决方案的具体MATLAB程序代码。假设每天应安排生产产品A和B分别为和吨,依题意可建数学模型如下:maxz=4000x1+3000x23x1+4x2≤123x1+3x2≤104x1+2x2≤8x1≥0,x2≥0首先将目标函数转换为标准形式:minz=-4000-3000M文件如下:f=[-4000;-3000];A=[34;33;42];b=[12;10;8];lb=zeros(2,1);[x,fval]=linprog(f,A,b,[],[],lb)结果如下图1所示:图12、结合MATLAB图像的读写知识,请你写出具体MATLAB图像读写方法,结合实例,给出图像读写步骤。(20分)读写方法:imfinfo(FileNAme)%从FileNAme中获取或显示图像文件的特征数据[X,cmap]=imread(FileNAme)%读取变址图像的数据矩阵与伴随色图,并分别送给X和cmapX=imread(FileNAme)%从FileNAme中读取强度图像或真彩图像的数据矩阵并送给Ximwrite(X,cmap,FileName,Parameter,Value)%将变址图像写入文件imwrite(X,FileName,Parameter,Value)%将强度图像或真彩图像写入文件[例2-1]M文件如下:I=imread('m2.png');imwrite(I,'m2.tif');[X,cmap]=imread('m2.tif');image(X);colormap(cmap);axisimageoff;结果如下图2所示:图23、结合课本第四章所提供的18种绘图方法,请实现其中8种绘图,提供程序代码及所绘制的图形。(30分)(1)面域图面域图特别适合表达一个数据在总数中占据的比例。[例3-1]某公司1998年-2002年的销售额、成本、利润如下表1所示,试用面域图表达之。表1某公司1998年-2002年的销售额、成本、利润一览表(单位:万元)年度19981999200020012002销售额520.8824.9931.7920.8901.8成本190.5367.9450.3403.2397.5利润330.3457.0481.3517.6504.3M文件如下:sales=[520.8824.9931.7920.8901.8];expence=[190.5367.9450.3403.2397.5];x=1998:2002;area(x,sales,'FaceColor',[0.50.50.9],'EdgeColor','b','LineWidth',5);holdon;area(x,expence,'FaceColor',[0.50.90.5],'EdgeColor','b','LineWidth',3);holdoff;set(gca,'XTick',[1998:2002]);set(gca,'Layer','top');gtext('\leftarrow销售额');gtext('成本');gtext('利润');xlabel('年份','FontSize',18);ylabel('利润=销售额-成本','FontSize',18);结果如下图3所示,用鼠标选择合适的位置后,文字会自动标注:图3(2)饼图饼图便于比较各个元素在一个整体中的比例。销售额成本利润年份利润=销售额-成本1998199920002001200201002003004005006007008009001000[例3-2]某年级学生成绩为:优秀12人,良好87人,中等75人,及格64人,不及格20人。试利用饼图予以表达和分析。M文件如下所示:X=[2187756420];subplot(2,2,1);pie(X,[10000]);legend({'优秀','良好','中等','及格','不及格'});subplot(2,2,2);pie(X,[00001]);subplot(2,2,3);pie3(X,[10000]);subplot(2,2,4);pie3(X,[00001]);饼图如下图4所示:图4(3)火柴杆图火柴杆图把图中每个数据点画成一根曲线,且数据点处用圆圈表示,看起来很像火柴杆。[例3-3]横坐标在0~2π之间均匀生成30个点,用不同颜色绘制a=sin(x),b=cos(x)以及(a+b)的图形,其中(a+b)用火柴杆图绘制。M文件如下:x=linspace(0,2*pi,30);a=sin(x);b=cos(x);plot_handle=plot(x,a,'-r',x,b,'-g');holdon;stem_handle=stem(x,a+b);holdoff;8%33%28%24%7%优秀良好中等及格不及格8%33%28%24%7%28%24%7%33%8%28%24%7%8%33%legend_handle=[plot_handle;stem_handle];legend(legend_handle,'a=sin(x)','b=cos(x)','a+b');xlabel('时间(单位:秒)');ylabel('幅值');title('a,b,a+b');结果如下图5所示:图5(4)阶梯图所谓阶梯图是指相邻两点之间的区间的所有值均为两点中起点的值,两点间应用阶梯线连接。阶梯图主要用于表达数字系统的时程曲线等。[例3-4]绘制区间[0,2π]内sin(x)的阶梯图,步长取0.25。M文件如下:x=0:0.25:2*pi;y=sin(x);stairs(x,y,'-b');%绘制阶梯图xlabel('sin(x)阶梯图');holdon;plot(x,y,'-r');%绘制曲线holdoff;结果如下图6所示:01234567-1.5-1-0.500.511.5时间(单位:秒)幅值a,b,a+ba=sin(x)b=cos(x)a+b图6(5)误差图误差图适于表现数据可信度或者相对于标准的偏离程度。[例3-5]假设误差函数为5/length(x),区间[0,1],试绘制函数sin(x)在区间[0,10]内的误差图。M文件如下:x=[0:0.5:10];y=10+x.^2;e=5*[0:1/(length(x)-1):1];errorbar(y,e);结果如下图7所示:图7(6)voronoi(沃若尼)图01234567-1-0.8-0.6-0.4-0.200.20.40.60.81sin(x)阶梯图0510152025020406080100120所谓voronoi图是指用voronoi多边形勾画每个点的最近邻范围。[例3-6]voronoi图实例M文件如下:n=30;A=rand(n,1)-0.5;B=rand(n,1)-0.5;voronoi(A,B);结果如下图8所示:图8(7)“二维半”图所谓“二维半”图是指在二维图形中增加色彩,以区分不同特征,也称伪彩图。[例3-7]绘制peaks函数的“二维半”图。M文件如下:[X,Y,Z]=peaks(30);n=3;subplot(1,2,1);pcolor(X,Y,Z);colormapsummer;shadinginterp;holdon;subplot(1,2,2);C=contour(X,Y,Z,n,'k:');clabel(C);zmax=max(max(Z));zmin=min(min(Z));caxis([zmin,zmax]);colorbar;holdoff;结果如下图9所示:-0.4-0.3-0.2-0.100.10.20.30.4-0.4-0.3-0.2-0.100.10.20.30.4图9(8)泛涵图MATLAB提供函数fplot用来绘制泛涵图。该函数具有数据点自适应产生功能,在函数剧烈变化出,自动加密数据点,反之,则减少。[例3-8]分别用泛涵图和通常的采样图绘制函数y=cos(tan(πx)),并加以比较。M文件如下:y=cos(tan(pi*x));n=length(x);%测算数据点,为图形对比做准备subplot(1,2,1);fplot('cos(tan(pi*x))',[-0.4,1.4],2e-3);%用fplot绘制泛涵图xlabel('泛涵图效果');t=(-0.4:5/n:1.4)';%等分采样subplot(1,2,2);plot(t,cos(tan(pi*t)));%通常的绘图效果xlabel('采样图效果');结果如下图10所示:-202-3-2-10123-6.430.7950.7958.02-202-3-2-10123-6-4-20246图104、请在下列21个函数中,任意挑选3个函数进行MATLAB三维作图。要求:①要给出每个函数作图的原始MATLAB程序及最终所绘的图;②任何两同学不得在函数选择上、作图原程序以及最后所绘的图完全一样。(30分)(1)F1:f(x,y)100(x2−y)2(1−x)2,−2.048x,y2.048M文件如下:x=-2.048:0.5:2.048;y=x;[X,Y]=meshgrid(x,y);Z=100*(X.^2-Y).^2+(1-X).^2;mesh(Z);colormappink;hiddenoff;结果如下图11所示:图11(2)F4:f(x,y)(4−2.1x2xy(−44y2)y2,−3≤x≤3,−2≤y≤2M文件如下:00.51-1-0.8-0.6-0.4-0.200.20.40.60.81泛涵图效果-0.500.511.5-1-0.8-0.6-0.4-0.200.20.40.60.81采样图效果0246810051001000200030004000x=-2:0.5:2;y=-2:0.5:2;[X,Y]=meshgrid(x,y);Z=(4-2.1*X.^2+X.^4/3)*X.^2+X*Y+(-4+4*Y.^2)*Y.^2;mesh(Z);colormappink;hiddenoff;结果如下图12所示:图12(3)F8:f(x,y)=peaks(x,y)x=acosucosvM文件如下:x=-2:0.1:2;y=-2:0.1:2;[X,Y]=meshgrid(x,y);Z=peaks(X,Y);surf(X,Y,Z);结果如下图13所示:图1302468100510-1000100200300-2-1012-2-1012-10-50510
本文标题:Matlab语言程序设计
链接地址:https://www.777doc.com/doc-2887881 .html