南昌大学matlab实验报告_第1页
南昌大学matlab实验报告_第2页
南昌大学matlab实验报告_第3页
南昌大学matlab实验报告_第4页
南昌大学matlab实验报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB实验报告姓 名 学 号 班 级 机制 目录实验一 熟悉MATLAB环境认识MATLAB3实验二 MATLAB运算基础 5实验三 MATLAB矩阵分析和处理7实验四 求余弦的积分并绘出图像 10实验五、六 用matlab求解多项式并用plot绘制函数图象(常微分方程)12实验七 函数文件 14实验八、九 MATLAB程序设计(循环、选择) 16实验十 采用SIMULINK的系统仿真 18实验十一 菜单设计 20实验一 熟悉MATLAB环境认识MATLAB一、 实验目的熟悉matlab的安装与启动;熟悉matlab用户界面;熟悉matlab功能、建模元素;熟悉matlab优化建模过程。

2、二、 实验设备与仪器1.微机2.matlab仿真软件三、 实验步骤1. 了解matlab的硬件和软件必备环境;2. 启动matlab;3. 熟悉标题栏,菜单栏,工具栏,元素选择窗口,状态栏,控制栏以及系统布局区;4. 学习优化建模过程。四、 实验报告要求1. 写出matlab系统界面的各个构成;以及系统布局区的组成;以及每一部分的功能;2. 优化建模过程应用举例五、实验内容(一)、Matlab操作界面1. 命令窗口(command window)2. 命令历史窗口(command history)3. 工作空间管理窗口(workspace)4. 当前路径窗口(current directory

3、)(二)、实现下列优化建模过程1、简单矩阵的输入步骤。A=1 2 3;4 5 6;7 8 9;2、矩阵的分行输入。A=1,2,34,5,67,8,9 3、指令的续行输入S=1-1/2+1/3-1/4+ .1/5-1/6+1/7-1/8 4、画出衰减振荡曲线及其它的包络线。的取值范围是> t=0:pi/100:2*pi;>> y=exp(-t/3).*sin(3*t);>> plot(y)>> hold on>> y0=exp(-t/3);>> plot(y0)5、画出所表示的三维曲面。的取值范围是。>> x,y=me

4、shgrid(-8:0.1:8);>> z=sin(sqrt(x.*x+y.*y)./sqrt(x.*x+y.*y);>> subplot(1,3,1);>> plot3(x,y,z)>> subplot(1,3,2);>> mesh(x,y,z)>> subplot(1,3,3);>> surf(x,y,z)6、复数矩阵的生成及运算A=1,3;2,4-5,8;6,9*iB=1+5i,2+6i;3+8*i,4+9*i C=A*B 程序:>> A=1,3;2,4-5,8;6,9*iA = 1.0000

5、 - 5.0000i 3.0000 - 8.0000i 2.0000 - 6.0000i 4.0000 - 9.0000i>> B=1+5i,2+6i;3+8*i,4+9*i B = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 8.0000i 4.0000 + 9.0000i>> C=A*BC = 1.0e+002 * 0.9900 1.1600 - 0.0900i 1.1600 + 0.0900i 1.3700 实验二 MATLAB运算基础一、实验目的及要求:1.掌握建立矩阵的方法。2.掌握MATLAB各种表达式的书写规则以及

6、常用函数的使用。二、实验内容及程序:计算表达式的值 ,程序:>> x=(sin(pi*48/180)+sqrt(7)/(1+log2(15)-2i);>> y=abs(1+3i)/(1+exp(2);>> z=x2+y2z = 0.4346 + 0.2859i2. 矩阵的直接建立及矩阵的运算(1)请利用直接建立矩阵的方法,采用两种方式建立如下矩阵:;(2)将矩阵A第2至3行中第1,3,4列元素赋给矩阵B;(3)将矩阵A的每个元素加30,并且将第1行和第3行进行交换。程序:(1)方法一 >> A=1 2 3 10;4 5 6 12;7 8 9 14

7、A = 1 2 3 10 4 5 6 12 7 8 9 14方法二>> A=1 2 3 104 5 6 127 8 9 14A = 1 2 3 10 4 5 6 12 7 8 9 14(2) >> B=A(2:3,1 3 4)B = 4 6 12 7 9 14(3) >> C=ones(3,4);>> A=1 2 3 10;4 5 6 12;7 8 9 14;>> A=A+30.*C>> A(1 3,:)=A(3 1,:) A = 37 38 39 44 34 35 36 42 31 32 33 403(1)建立一个的零矩

8、阵、单位矩阵和元素全为1的方阵。 (2)请使用直接建立矩阵的方法,并结合MATLAB中建立矩阵的函数,生成如下矩阵。程序:(1)>> B=zeros(4,5)B = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>> B=eye(4,5)B = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0>> B=ones(4,5)B = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1(2) >> d=0 1 3,;0 1 4;0 1 5d = 0 1 3 0 1

9、4 0 1 54当x=0.2,0.4,0.6,0.8时,分别求的值。程序:>> x=0.2 0.4 0.6 0.8;>> y=sin(x).*cos(x)y = 0.1947 0.3587 0.4660 0.4998三、实验结果讨论1. 如何访问数组中的元素?设一个矩阵a,访问其第i个元素则为ai-1,其中以列为主顺序依次查询2. 如何输出显示字符型变量?Sprintf(%c,x)实验三 MATLAB矩阵分析和处理一、实验目的1掌握生成特殊矩阵的方法。2掌握矩阵分析的方法。4用矩阵求逆法解线性方程组。二、实验内容1产生3行二列的单位矩阵、随机矩阵、零矩阵和对角矩阵。程序

10、:>> E=eye(3); >> R=rand(3,2); >> O=zeros(2,3);>> S=diag(2,2);>> A=E R;O S;>> B1=A2 B1 = 1.0000 0 0 2.4442 2.7401 0 1.0000 0 2.7174 1.8971 0 0 1.0000 0.3810 0.2926 0 0 0 4.0000 0 0 0 0 0 4.0000>> B2=E R+R*S;O S2B2 = 1.0000 0 0 2.4442 2.7401 0 1.0000 0 2.7174

11、1.8971 0 0 1.0000 0.3810 0.2926 0 0 0 4.0000 0 0 0 0 0 4.00002产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,求其行列式的值Hh和Hp以及他们的条件数Th和Tp,判断哪个矩阵性能更好,为什么?程序:>> H=hilb(5);>> P=pascal(5);>> Hh=det(H)Hh = 3.7493e-12>> Hp=det(P)Hp = 1>> Th=cond(H) Th = 4.7661e+05>> Tp=cond(P) Tp = 8.5175e+03所以,希尔伯

12、特矩阵H的性能更好。因为H的条件数Th更接近1。3建立一个5x5矩阵,求它的行列式的值、迹、秩和范数程序:>> a=rand(5)a = 0.2785 0.9706 0.4218 0.0357 0.7431 0.5469 0.9572 0.9157 0.8491 0.3922 0.9575 0.4854 0.7922 0.9340 0.6555 0.9649 0.8003 0.9595 0.6787 0.1712 0.1576 0.1419 0.6557 0.7577 0.7060>> b=det(a)b = -0.1322>> c=trace(a)c =

13、3.4127>> d=rank(a)d = 5>> e=norm(a)e =3.27594已知,求特征值和特征向量,并分析其数学意义程序:>> A=-29 8 1820 5 12-8 8 5;>> v d=eig(A)v = 0.7438 0.1995 0.3004 -0.5822 -0.7924 0.8747 0.3282 0.5765 0.3803 %列向量分别为相应的特征向量d = -27.3185 0 0 0 -8.7656 0 0 0 17.0841 %特征值构成的对角矩阵5下面是一个线性方程组(1) 求方程的解(2)将方程右边向量第三

14、个元素0.52改为0.53,并比较解的变化(3)计算系数矩阵A的条件数并分析结论程序:(1)>> A=1/2 1/3 1/4;1/3 1/4 1/5;1/4 1/5 1/6;>> P=0.95 0.67 0.52'>> x=AP %求方程的解x = 1.2000 0.60000.6000(2)>> P(3)=0.53 %将0.52变为0.53P = 0.9500 0.6700 0.5300>> x2=APx2 = 3.0000 -6.6000 6.6000>> t=cond(A)t = 1.3533e+0036建立

15、A矩阵,试比较sqrtm(A)和sqrt(A),并分析他们的区别程序:>> A=4 2;3 9;>> B1=sqrtm(A) %矩阵A的平方根B1 = 1.9364 0.4086 0.6130 2.9580>> B2=sqrt(A)B2 = 2.0000 1.41421.7321 3.0000Sqrtm(A)求出的是矩阵A的平方根,即:AA=A,求出的是A1Sqrt(A)求出的是A中每个元素的平方根,即A2. A2=A,求出的是A2 实验四 求余弦的积分并绘出图像一、实验目的 1、了解绘图工具的使用。二、实验要求 1(不定积分)用int计

16、算下列不定积分,并用diff验证,程序:(1)>> x=sym('x');>> f=x*sin(x2);>> int(f) ans = -1/2*cos(x2)(2)>> x=sym('x');>> f=1/(1+cos(x);>> int(f)ans = tan(1/2*x)验证: (1)>> syms x y;>> f=-1/2*cos(x2);>> diff(f) ans = sin(x2)*x(2)>> syms x y;>>

17、; f=tan(1/2*x);>> diff(f) ans = 1/2+1/2*tan(1/2*x)22(定积分)用trapz,int计算下列定积分(2个),程序:>> x=sym('x);>> int(sin(x)/x,0,1) ans = sinint(1)>> syms x;>> s=exp(x).*sin(2*x);>> int(s,0,2*pi) 2/5 - (2*exp(2*pi)/5 >> x=0:2*pi/100:2*pi;>> s=exp(x).*sin(2*x);>

18、> trapz(x,s) -213.44503(椭圆的周长) 用定积分的方法计算椭圆的周长>> t=0:0.001:pi/2;a=3;b=2;x=a*cos(t); %x即为椭圆周上的点的横坐标y=b*sin(t); %y即为椭圆周上的点的纵坐标X=x(2:end);Y=y(2:end);x(end)=;y(end)=;x=X-x;y=Y-y;d=sqrt(x.2+y.2);d=4*sum(d)d = 15.8559 4(二重积分)计算积分>> syms p t;f=sym('p+cos(t)*p2+sin(t)*p2');f1=int(f,p,0

19、,2*sin(t);f2=int(f1,t,0,pi)f2 = 2*pi5 (广义积分)计算广义积分>> syms x;s=exp(-x2)/(1+x4);int(s,-inf,inf)ans = pi(1/2)*LommelS2(0,1/2,1) 实验五、六  用matlab求解多项式并用plot绘制函数图象(常微分方程)  一、实验目的 1、 了解MATLAB中主要用dsolve求符号解析解,ode45,ode23,ode15s求数值解。2、 s=dsolve(方程1, 方程2,初始条件1,初始条件2 ,自变量)  用

20、字符串方程表示,自变量缺省值为t。导数用D表示,2阶导数用D2表示,以此类推。S返回解析解。在方程组情形,s为一个符号结构。tout,yout=ode45(yprime,t0,tf,y0) 采用变步长四阶Runge-Kutta法和五阶Runge-Kutta-Felhberg法求数值解,yprime是用以表示f(t,y)的M文件名,t0表示自变量的初始值,tf表示自变量的终值,y0表示初始向量值。输出向量tout表示节点(t0,t1, ,tn)T,输出矩阵yout表示数值解,每一列对应y的一个分量。若无输出参数,则自动作出图形。ode45是最常用的求解微分方程数值解的命令,对于刚性方程组不宜采用

21、。ode23与ode45类似,只是精度低一些。ode12s用来求解刚性方程组,是用格式同ode45。可以用help dsolve, help ode45查阅有关这些命令的详细信息.3、熟悉plot绘图二、实验内容   1求下列微分方程的解析解(2个) 程序:>> y=dsolve('D2y+2*Dy-3*y=exp(-3*x)','x')y =exp(-3*x)*C2+exp(x)*C1-1/4*x*exp(-3*x)>> y=dsolve('D2y+Dy+y=cos(x)','y(0

22、)=0','Dy(0)=3/2','x')y =1/3*exp(-1/2*x)*sin(1/2*3(1/2)*x)*3(1/2)+sin(x)2求方程的解析解和数值解,并进行比较(用plot绘图)y=dsolve('(1+x2)*D2y=2*x*Dy','y(0)=1','Dy(0)=3','x')y输出结果:x3 + 3*x + 1x=-2*pi:0.01:2*pi; plot(x,eval(y)建立m文件function dy=myfun(x,y)dy=zeros(2,1);dy(1)=

23、y(2);dy(2)=2*x*y(2)/(1+x2);endx45,y45=ode45('myfun',0 10,1 3); hold on;plot(x45,y45(1:49),'r')3分别用ode45和ode15s求解Van-del-Pol方程的数值解,并进行比较.(用plot绘图)建m文件function dy=qq(x,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=1000*(1-x2)*y(2)+x;end%0de45算法x45,y45=ode45('qq',0 3,0 1); plot(x45,y45(

24、:,1)%0de15s算法x45,y45=ode15s('qq',0 3,0 1);hold on;plot(x45,y45(:,1),r)实验七 函数文件 一、实验目的1、理解函数文件的概念。2、掌握定义和调用MATLAB函数的方法。二、实验内容(选作2题)1、定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。33function f1=fushu(a)a1=exp(a);disp('它的e指数为:')disp(a1);a2=log(a);disp('它的对数为:')disp(a2);a3=sin(a);dis

25、p('它的正弦值为:')disp(a3);a4=cos(a);disp('它的余弦值为:')disp(a4);end2、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称是绝对素数。例如13是绝对素数。试求所有两位绝对素数。要求:定义一个判断素数的函数文件。function f2=sushu(a)disp('所有两位的素数:');for i=10:1:99 for j=3:1:i b1=rem(i,j-1); if(b1=0) if(j<i) continue; else end else break; end m1=rem(i,

26、10); m2=floor(i/10); m3=m1*10+m2; for j=3:1:m3 b2=rem(m3,j-1); if(b2=0) if(j<m3) continue; else end else break; end fprintf('%d ',i); end end endfprintf('n');for i=3:a b1=rem(a,i-1); if(b1=0) fprintf('您输入%d不是绝对素n',a); break; else if(i=a) m1=rem(i,10); m2=floor(i/10); m3=m1

27、*10+m2; for j=3:1:m3 b2=rem(m3,j-1); if(b2=0) if(j<m3) continue; else end else break; end fprintf('您输入%d是绝对素n',a); end fprintf('您输入%d不是绝对素n',a); else end endendend 3、已知(1)当f(n)=n+10ln时,求y的值。(2)当时,求y的值。function f2=yz(a)sum=0;d=0 0 0;sum=0;d=0 0 0;c=a+10.*log(a.2+5);y=c(1)/(c(2)+c(3

28、);disp('第一问的y的值为:');disp(y);for i=1:3 for j=1:a(i) sum=sum+j*(j+1); end d(i)=sum;endy=d(1)/(d(2)+d(3);disp('第二问的y的值为:');disp(y);end实验八,九 MATLAB程序设计(循环、选择)一、实验目的1、掌握利用if语句实现选择结构的方法;2、掌握利用switch语句实现多分支选择结构的方法;3、掌握循环结构的程序书写方法。二、实验内容1、硅谷公司员工的工资计算方法如下:(1)工作时数超过120小时者,超过部分加发15%;(2)工作时数低于60

29、小时者,扣发700元;(3)其余按每小时84元计发。编程按输入的工号和该号员工的工作时数,计算应发工资。function f1=gz(a,b)if(b>120) gz=84*120+(1+0.15)*84*(b-120);elseif(b<60) gz=84*b-700; if(gz<=0) gz=0; else endelse gz=b*84;endc=num2str(a);fprintf('工号为 %s 的员工应发工资为:%f元n',c,gz);end2、用switchcase语句得出各月份的季节(如3,4,5月输出为春季)。function f1=jij

30、ie()for i=1:12 switch(i) case 3,4,5 fprintf('%d月份是春季n',i); case 6,7,8 fprintf('%d月份是夏季n',i); case 9,10,11 fprintf('%d月份是秋季n',i); case 12,1,2 fprintf('%d月份是春冬季n',i); endendend3、计算1+3+5+99的值,当和大于1000的时候终止计算,要求显示终止时候的求和结果以及最后一位计算的整数值。function f1=jiafa()sum=0;for i=1:99 s

31、um=sum+i; if(sum>1000) fprintf('终止时候的求和结果为: %dn',sum); fprintf('最后一位计算的整数为: %dn',i); break else endendend4、分别采用循环语句和sum语句实现的计算。采用sum语句:a=zeros(1,64);for i=1:64a(i)=2(i-1);endsum(a,2)ans = 1.8447e+019采用循环语句:sum=0;for i=0:63sum=sum+2i;end sumsum = 1.8447e+019三、思考题1、break语句和continue语句有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论