1、Matlab 软件应用与开发实验指导书实验一 Matlab 操作基础及矩阵运算(一)实验目的:(1)熟悉 MATLAB 软件中关于矩阵运算的各种命令;(2)学会运用 MATLAB 软件自定义函数,并求出函数值;(3)学会在 MATLAB 环境下编写函数。(二)预备知识:计算机操作基础,Matlab 软件操作基础。(三)实验内容:3.1 Matlab 软件操作(具体内容见专题讲座 PPT)3.1.1 建立随机矩阵:(1) 在区间20,50内均匀分布的 5 阶随机矩阵。(2) 均值为 0.6、方差为 0.1 的 5 阶正态分布随机矩阵。命令如下:x=20+(50-20)*rand(5)y=0.6+
2、sqrt(0.1)*randn(5)3.1.2 建立一个字符串向量,然后对该向量做如下处理:(1) 取第 15 个字符组成的子字符串。(2) 将字符串倒过来重新排列。(3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。(4) 统计字符串中小写字母的个数。在 Editor 里输入如下源代码,并保存为 m 文件 char_1.m,再点击 运行。ch=ABc123d4e56Fg9subch=ch(1:5) %取子字符串revch=ch(end:-1:1) %将字符串倒排k=find(ch=a%某些行少了数据会报错,该行可改写为。elsem=str2num(str);endendfclose
3、(fid);m3.2 矩证运算与 M 文件使用(1) 线性代数中的矩阵运算;(2) 本实验所用 MATLAB 命令(3) 矩阵输入格式:A=a11 a12;a21 a22;b=初始值:步长:终值(4) 求 A 的转置:A(5) 求 A 加 B: A+B(6) 求 A 减 B: A-B(7) 求 A 乘 B: A*B(8) 求 A 的行列式: det(A)(9) 求 A 的逆: inv(A)(10) 求 A 的秩: rank(A)(11) 建立函数文件:fun.m ,建立主函数文件 main_fun.m(四)实验操作(1) 输入矩阵 A,B,b;, , 52172438A23561874B275
4、31b(2) C1=A,C2=A+B,C3=A-B,C4=AB(3) D1=|A|,D2=|B|(4) E1=R(A),E2=R(B)(5) 定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2 并计算 f(1,2)(五)、源代码(1) A=21 24 85 4;2 35 15 34;21 35 31 54;21 72 15 52 B=12 45 1 24;18 72 53 35;48 1 15 35;46 56 25 23 b=21:2:27(2) C1=A,C2=A+B,C3=A-B,C4=A*B(3) D1=det(A),D2=det(B)(4) E1=rank(A),E
5、2=rank(B);(5) F H=eig(A),G=inv(rand(3)(6) 第一步:建立函数文件:fun.mfunction f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;第二步:建立主程序文件 main_fun.mx=1 2fun(x)第三步:在 Command Window 输入 main_fun 回车运行主程序。(六)结果分析对求解的不同方法与速度进行分析,检验结果地正确性。(七)总结(1)实验中出现的问题,自己的解决方案。(2)对自己的实验成果评价和实验心得实验二 Matlab 程序设计(一)实验目的:(1) 、学会用 Matlab 软件中 M 文件
6、的编写程序(2) 、学会运用 Matlab 软件解决线性规划中的实际问题(二)预备知识:计算机操作基础,Matlab 软件程序设计基础。(三)实验内容:3.1 Matlab 软件程序设计操作(具体内容见专题讲座 PPT)3.1.1 利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。方法 1:在主程序里调用另一个函数函数文件 tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用 tran.m 的命令文件 main.m:x=input(Please input x=:);y=input(Pleas
7、e input y=:);rho,the=tran(x,y);rhothe方法 2:在如下 test.m 函数文件里调用子程序function rho,the=testx=input(Please input x=:);y=input(Please input y=:);rho,the=tran_1(x,y);rhothefunction rho,theta=tran_1(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);再在 Command Window 里面输入命令:r,t=test3.1.2 猜数游戏。首先由计算机产生1,100之间的随机整数,然后由用户猜测所产
8、生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High” ,小于则显示“Low” ,等于则显示“You won” ,同时退出游戏。用户最多可以猜 7 次。猜数游戏源代码 guess.m 如下:x=fix(1+rand(1)*(100-1);for i=1:7y=input(请输入你猜的数:);if y=xdisp(You won)break;elseif yxdisp(high)if i=7disp(Game over!); endendend3.2 具体实例3.2.1 问题任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为
9、 800 和 900,三种工件的数量分别为 400、600 和 500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?工件 1 工件 2 工件 3甲 加工费:13台时数:0.4 加工费:9台时数:1.1 加工费:10台时数:1乙 加工费:11台时数:0.5 加工费:12台时数:1.2 加工费:8台时数:1.3工件机床3.2.2 实验操作(1)数学模型设在甲车床上加工工件 1、2、3 的数量分别为 x1、x 2、x 3,在乙车床上加工工件1、2、3 的数量分别为 x4、x 5、x 6。可建立以下线性规划
10、模型: 654321 812110913min xxxxxxz 6,2,1,0 903.12.15.0 801.4.0506040x . 654 321635241 ix xxx xxxxxxxxtsi mn98zXs.t. 903.125.0.4(2)源程序f = 13 9 10 11 12 8;A = 0.4 1.1 1 0 0 00 0 0 0.5 1.2 1.3;b = 800; 900;Aeq=1 0 0 1 0 00 1 0 0 1 00 0 1 0 0 1;beq=400 600 500;vlb = zeros(6,1);vub=;x,fval = linprog(f,A,b,A
11、eq,beq,vlb,vub)(3)结果x =0.0000600.00000.0000400.00000.0000500.00005641X, 0654321xxfval =1.3800e+004即在甲机床上加工 600 个工件 2,在乙机床上加工 400 个工件 1、500 个工件 3,可在满足条件的情况下使总加工费最小为 13800。(4)结果分析对求解的不同方法与速度进行分析,检验结果地正确性。(四)实验总结(1)实验中出现的问题,自己的解决方案。(2)对自己的实验成果评价和实验心得实验三 Matlab 绘图与数据模拟(一)实验目的:(1) 、掌握 Matlab 软件中的数据拟合(2)
12、、熟练运用 Matlab 软件进行绘图(二)预备知识:计算机操作基础,Matlab 软件绘图操作基础。(三)实验内容:3.1 Matlab 软件绘图操作(具体内容见专题讲座 PPT)3.1.1 用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4x) 和 y2=2e-0.5xcos(x)。程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2);3.1.2 在同一坐标内,分别用不同线型和颜色绘制曲线 y1=0.2e-0.5xcos(4x) 和
13、y2=2e-0.5xcos(x),标记两曲线交叉点。程序如下:x=linspace(0,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);k=find(abs(y1-y2)1e-2); %查找 y1 与 y2 相等点(近似相等)的下标x1=x(k); %取 y1 与 y2 相等点的 x 坐标y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求 y1 与 y2 值相等点的 y 坐标plot(x,y1,x,y2,k:,x1,y3,bp);3.1.3 绘制 y=10x2 的对数坐标图并与
14、直角线性坐标图进行比较程序如下:clear;x=0.1:0.1:10;subplot(2,2,1);y=10.*x.2;plot(x,y)pause; subplot(2,2,2);semilogx(x,y)pause;subplot(2,2,3);semilogy(x,y)pause;subplot(2,2,4);loglog(x,y) 3.1.4 绘制 r=sin(t)cos(t)的极坐标图,并标记数据点。程序如下:t=0:pi/50:2*pi;r=sin(t).*cos(t);polar(t,r,-*);3.1.5 绘制三维曲线。程序如下:t=0:pi/100:20*pi;x=sin(t
15、);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,z);title(Line in 3-D Space);xlabel(X);ylabel(Y);zlabel(Z);grid on;3.1.6 在 xy 平面内选择区域-8,8-8,8,绘制 4 种三维曲面图。程序如下:x,y=meshgrid(-8:0.5:8);z=sin(sqrt(x.2+y.2)./sqrt(x.2+y.2+eps);subplot(2,2,1);mesh(x,y,z);title(mesh(x,y,z)subplot(2,2,2);meshc(x,y,z);title(meshc(x,y
16、,z)subplot(2,2,3);meshz(x,y,z)title(meshz(x,y,z)subplot(2,2,4);surf(x,y,z);title(surf(x,y,z)3.1.7 绘制了 peaks 函数曲面并且将它绕 z 轴旋转。程序如下:X,Y,Z=peaks(30); surf(X,Y,Z)axis(-3,3,-3,3,-10,10)axis off;shading interp;colormap(hot);m=moviein(20); %建立一个 20 列大矩阵for i=1:20view(-37.5+24*(i-1),30) %改变视点m(:,i)=getframe;
17、 %将图形保存到 m 矩阵end movie(m,2); %播放画面 2 次3.2 具体实例3.2.1 问题(1)对下面一组数据作二次多项式拟合xi 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0yi -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.58 9.48 9.30 11.2A =-9.8108 20.1293 -0.0317(2)绘制如下饼状图形,标签math,english,chinese,music分别是 2,4,6,8;(3)在区间0,2*pi画 sin(x)的图形,并加注图例“自变量 X”、 “函数 Y”、
18、“示意图”, 并加格栅.3.2.2 实验操作(1)输入以下命令:x=0:0.1:1;y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;A=polyfit(x,y,2)z=polyval(A,x);plot(x,y,k+,x,z,r) %作出数据点和拟合曲线的图形(2)x=2,4,6,8;pie(x,math,english,chinese,music)(3)x=linspace(0,2*pi,30);y=sin(x);plot(x,y)xlabel(自变量 X)ylabel(函数 Y)title(示意图)grid on3.2
19、.3 结果分析对求解的不同方法与速度进行分析,检验结果地正确性。(四)实验总结(1)实验中出现的问题,自己的解决方案。(2)对自己的实验成果评价和实验心得实验上机要求1、 遵守实验室一切规章制度,爱护设备;2、 认真完成每次实验任务,并按要求写好实验报告;3、 报告内容:认真填写报告前面的内容院:XXXX 课程名称:Matlab 软件应用与开发 日期:2012 年 XX 月 XX日姓名 XXXX 学号 XXXX 实验室 统计实验 室老师签名专业 XXXX组号 序号班号 XXXX 成绩评定实验器材 一台计算机第一次实验报告的书写格式:一、实验目的:二、预备知识:三、实验内容与操作结果:四、实验总结:第二、三次实验报告的书写格式:一、实验目的:二、预备知识:三、实验内容与操作结果:1 基础操作与结果2 应用实例2.1 问题的提出2.2 问题的分析与模型的建立2.3 计算过程(源程序)及结果2.4 结果分析与模型的推广四、实验总结