1、序号: 41 学号: 11461215 常 州 大 学实 习 资 料 袋数理学院 学院; 2013 2014 学年第 一 学期实习名称 MATLAB应用软件实习 指导教师 张燕新 学生姓名 段 旭 专业班级 电科 112 实习单位 常州大学 W3机房 成 绩 实习时间 2013年 12 月 30 日 2014 年 1月 10日目 录 清 单序号 材 料 名 称 有 “” 备 注1 实 习 日 记2 实 习 报 告 345指导教师(签字): 序号 : 41 学号 : 11461215 CHANGZHOUNIVERSITY 实 习 报 告实习课程名称: Matlab 应用软件实习 实 习 题 目:
2、 Matlab 综合应用 学 生 姓 名 : 段 旭 学 院(系): 数理学院 专 业 班 级 : 电科 112 校内指导教师: 张燕新 专业技术职务: 讲师 实习时间: 2013 年 12 月 30 日 2014 年 1 月 10 常州大学实习报告IMatlab应用软件实习摘 要:MATLAB(矩阵实验室)是 MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,除了矩阵运算、绘制函数/数据图像等常用功能外,MAT
3、LAB 还可以用来创建用户界面及与调用其它语言(包括 C,C+和FORTRAN)编写的程序。本次实习,针对 MATLAB的一些计算功能进行了一些浅显的实验与研究,主使用了 MATLAB的函数计算、数值模拟和一些常用的画图功能。最后,用 MATLAB进行了几个简单的数学建模实验。关键词:Matlab;实习;应用;常州大学实习报告II目录摘要 I目录 .II1 背景 11.1 MATLAB简介 .11.2 MATLAB历史 .12 详细求解 22.1必做题 .22.2 选做题 .113 总结 15参考文献 16常州大学实习报告第 1 页 共 16 页1 背景1.1 MATLAB简介MATLAB是由
4、美国 MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如 C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和 Mathematica、Maple 并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界
5、面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB来解算问题要比用 C,FORTRAN 等语言完成相同的事情简捷得多,并且 MATLAB也吸收了像 Maple等软件的优点,使 MATLAB成为一个强大的数学软件。在新的版本中也加入了对 C,FORTRAN,C+,JAVA 的支持。可以直接调用,用户也可以将自己编写的实用程序导入到 MATLAB函数库中方便自己以后调用,此外许多的 MATLAB爱好者都编写了一些经典的程序,用户
6、可以直接进行下载就可以用。1.2 MATLAB历史1970年代末到 80年代初,时任美国新墨西哥大学教授的克里夫莫勒尔为了让学生更方便地使用 LINPACK及 EISPACK(需要通过 FORTRAN编程来实现,但当时学生们并无相关知识) ,独立编写了第一个版本的 MATLAB。这个版本的MATLAB只能进行简单的矩阵运算,例如矩阵转置、计算行列式和本征值,此版本软件分发出大约两三百份。1984年,杰克李特、克里夫莫勒尔和斯蒂夫班格尔特(Steve Bangert)合作成立了 MathWorks公司,正式把 MATLAB推向市场。MATLAB 最初是由莫勒尔用 FORTRAN编写的,李特和班格
7、尔特花了约一年半的时间用 C重新编写了 MATLAB并增加了一些新功能,同时,李特还开发了第一个系统控制工具箱,其中一些代码到现在仍然在使用。C 语言版的面向 MS-DOS系统的 MATLAB 1.0在拉斯维加斯举行的 IEEE决策与控制会议(IEEE Conference on Decision and Control)正式推出,它的第一份订单只售出了 10份拷贝,而到了现在,根据 MathWorks自己的数据,目前世界上 100多个国家的超过一百万工程师和科学家在使用 MATLAB和 Simulink。1992年,学生版 MATLAB推出;1993 年,Microsoft Windows版
8、 MATLAB面常州大学实习报告第 2 页 共 16 页世;1995 年,推出 Linux版。常州大学实习报告第 3 页 共 16 页2 详细求解2.1必做题2.1.2 求解常微分方程 x=-x+x+1,x(0)=1,x(0)=0(使用函数 dsolve)2.1.3 已知 t=an2+bn,测得对应数据如下:(多项式插值 interp1)t=0,20,40,60,80,100,120,140,160,183.5;n=0,1153,2045,2800,3466,4068,4621,5135,5619,6152;试求 a和 b的值。2.1.4 请用梯形法、辛普森法分别计算积分值 (trapz、qu
9、ad)2.1.5 计算二重积分 (使用函数 dblquad)1022)1(dxyxydsolve(D2x=-Dx+x+1,Dx(0)=1,x(0)=0)ans =exp(t*(5(1/2)/2 - 1/2)*(3*5(1/2)/10 + 1/2) + (5(1/2)*exp(-t*(5(1/2)/2 + 1/2)*(5(1/2) - 3)/10 - 1t0=0,20,40,60,80,100,120,140,160,183.5;n0=0,1153,2045,2800,3466,4068,4621,5135,5619,6152;n=0:0.001:6152;t=interp1(n0,t0,n,s
10、pline);p=polyfit(n,t,2)p =0.0000 0.0144 0.0631f=inline(sqrt(x.2+x+1),x); quad(f,0,1)ans =1.3369 x=0:0.01:1;y=sqrt(x.2+x+1);trapz(x,y)ans =1.3369dblquad(x.2+y.2+x*y+2*x+y+1, 0, 1, 0, 2)ans =10.3333常州大学实习报告第 4 页 共 16 页2.1.6 矩阵 M=1,2,6; 4,2,7; 8,9,3,求 M的 LU分解,QR 分解,对角阵,特征值分解。 (使用函数 lu、qr、shol、eig)2.1.7
11、 a=3,A=4,b=a2,B=b2-1,c=a+A-2B,C=a+B+2c,求 C。 (使用函数 solve)2.1.8用两种方法求解 Ax=b的解。 (A 为四阶随机矩阵,b 为四阶向量,自己创建) 。方法一:M=1,2,6; 4,2,7; 8,9,3; lu(M)ans =8.0000 9.0000 3.00000.5000 -2.5000 5.50000.1250 -0.3500 7.5500qr(M)ans =9.0000 9.1111 6.4444-0.5000 2.4470 -2.3360-1.0000 -0.4719 6.8566D,X=eig(M) D =-0.4111 -0
12、.7719 -0.4992-0.5484 0.6237 -0.3914-0.7282 0.1229 0.7730X =14.2944 0 00 -1.5712 00 0 -6.7232 syms a b c A B Ceq1=a=3;eq2=A=4;eq3=b=a2;eq4=B=b2-1;eq5=c=a+A-2*B;eq6=C=a+B+2*c;x=solve(eq1,eq2,eq3,eq4,eq5,eq6); x.Cans =-223diag(M)ans =123 A=rand(4)A =0.9501 0.8913 0.8214 0.92180.2311 0.7621 0.4447 0.738
13、20.6068 0.4565 0.6154 0.17630.4860 0.0185 0.7919 0.4057 B=1;2;3;4;x=inv(A)*Bx =-6.49701.916310.9584-3.8362常州大学实习报告第 5 页 共 16 页方法二:2.1.9 ,用两种方法求函数的根,并求)1(5)2.1/()8.0()( 323 xxxf 其极值与零点。方法一: 方法二:求极值: A(:,5)=B;rref(A)ans =1.0000 0 0 0 -6.49700 1.0000 0 0 1.91630 0 1.0000 0 10.95840 0 0 1.0000 -3.8362 s
14、olve(x3+(x-0.8)2/(x+1.25)3-5*x-5/x);x=double(ans); for i=1:length(x)xx(i)=isreal(x(i);end x=x(xx)x =2.4156 fzero(x.3+(x-0.8).2/(x+1.25).3-5*(x+1/x),3)ans =2.4156 syms x y y=x.3+(x-0.8).2/(x+1.25).3-5*(x+1/x); dydx=diff(y); solve(dydx);x=double(ans); for i=1:length(x)xx(i)=isreal(x(i);end t=x(xx)t =-
15、0.4694-2.4039 x=t(1);y1=subs(y)y1 =16.2832 x=t(2);y2=subs(y)y2 =-6.4732 z=diff(diff(y); x=t(1);z1=subs(z)z1 =205.8164 x=t(2);z2=subs(z)z2 =-53.5382常州大学实习报告第 6 页 共 16 页所以函数 f(x)存在一个极大值点 x1=-2.4039,极大值为-6.4732 ;一个极小值点x2=-2.4039,极小值为 16.28322.1.10 f(x)的定义如下: ,写一个26,04()5123,xxf且 且其 它matlab 函数 func1 实现该
16、函数。2.1.11 写一个MATLAB小程序,求出最小的 n 值,使得 n! realmax。2.1.12 写一个 MATLAB 函式 myfun.m 来计算下列方程式: y = 0.5*exp(x/3)-x*x*sin(x) 其中 x 是函式的输入,y 是函式的输出。你的函式必须能够处理当 x 是纯量或是向量的两种情况。2.1.13 写一个 MATLAB 函式 pifun.m 来计算下列级数: f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + .) 其中 n 为函式的输入,级数和 f(n) 则是函式的输出。此外,你必须进行下列事项: (1) 使用 ti
17、c 和 toc 指令来测量 pifun(100000) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用function func1 (x)if x=0endendfprintf(最小的整数为: %dn,n)function f=myfun(x)n=length(x);for i=1:nf(i)=0.5*exp(x(i)/3)-x(i)*x(i)*sin(x(i);end常州大学实习报告第 7 页 共 16 页法。我的计算机是 Pentium-450,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。 (2)使用 flop
18、s 指令来测量 pifun(100000) 所用到 floating point operations 的计算次数。如果你不知道如何使用这个指令,请使用 help flops 来查出它的用法。 2.1.15 求下列函数的极小点:1) 221312498fXxx2) 211223fXxxfunction sum,time,flop=pifun(n)%f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + .)ticsum=0;i=0;flag=1;for i=0:1:n sum = sum + 4*(flag/(2*i+1); flag = -flag;endt
19、ime=toc f=x(1)2+4*x(2)2+9*x(3)2-2*x(1)+18*x(2) ;x,fm=fminsearch(f,0,0,0)x = 1.0000 -2.2500 0.0000fm = -21.2500 f=x(1)2+3/2*x(2)2-2*x(1)*x(2)+x(1)-2*x(2) ;x,fm=fminsearch(f,0,0)x =0.499977193672681 1.000008683829168fm =-0.749999998970666常州大学实习报告第 8 页 共 16 页3) 421fXx2.1.17 设 f(x,y) = 4 sin (x 3y),求 3,
20、22yxf2.1.19 对于迭代模型xyxkkk12140.取初值 x0 = 0, y0 = 0, 进行 3000次迭代,对于 k1000, 在(x k, yk) 处亮一点(注意不要连线)可得所谓 Henon引力线图。 f= (x(1)-1)4+x(2)2; x,fm=fminsearch(f,0;1)x =0.999965270122533-0.000000006400016fm =4.241503967641482e-0174.241503967641482e-017syms f s y;syms f x y;f=4*sin(x.3*y);z=diff(diff(f,x),y);x=2;y
21、=3;subs(z)ans =1.0636e+003x(1)=0;y(1)=0;for i=1:1:3000;%开始先从 1到3000x(i+1)=1+y(i)-1.4*x(i)2;y(i+1)=0.3*x(i);hold onplot(x(i),y(i),*b)end常州大学实习报告第 9 页 共 16 页2.1.20 请设计一个程序,程序完成下列功能:(1)让用户输入一个矩阵 A;(2)在 A中找出小于 0的矩阵元素的位置;(3)在 A中统计出等于 0的元素的个数;(4)显示 A的行数和列数;(5)找出矩阵 A各元素中的最大值(显示值,不显示元素位置)。2.11.21 请设计一个程序,程序
22、完成下列功能:(1) 让用户依次输入两个字符串 s1和 s2;(2) 比较两个字符串的长度并显示比较结果;(3) 判断 s1与 s2有没有长度在 3个字符以上的相同子串,显示判断结果。function f=title20()a=input(请输入矩阵A: );m,n=size(a);t=0;p=0;for i=1:mfor j=1:nif a(i,j)maxmax=B(i);endend if p=0disp(小于0. );endfprintf(A中0的个数为 %dn,t);fprintf(A的行数为 %d列数为%dn,m,n);fprintf(A中元素最大值为%dn,max);functio
23、n f=title21()s1=input(请输入字符串s1: , s);s2=input(请输入字符串s2: , s);m=length(s1);n=length(s2);t=m;kk=0;if mnt=n;disp( s1大于s2.);elseif m0s=(s-1000)*(1+0.001);t=t+1;endt=ceil(t/12);fprintf(%d年后他的退休金将用完.n,t); title3360 岁时退休金为:3.174808e+005.32 年后他的退休金将用完.常州大学实习报告第 16 页 共 16 页2.2.34 一半径为 5m 的球形水罐充满了水,底部有一半径为 b=
24、0.1m 的小孔漏水,问多少时间以后,水面下降至离底部 0.5m?解:水从孔漏出的速度由下列能量方程决定 ,u 是速度, z表示从2Rzg球心测量的水面高度, g 为重力加速度。考虑在时间 dt内水面变化 dz,漏水的体积为 ,其中 x为高度,z 为水面的半径, 。dzxuAt2 2bA由于 R得: zRgbt)(2在顶部 z=R水降到 0.5m时, ,从而:R5.0 R dzRgbdzt .0225.022 )()(I = 0.5144clear;R=5; b=0.1; g= 9.81; z1=0.5-R; z2=R;n=100;h=(z2-z1)/n; z =z1 : h : z2;f =
25、 (R2 - z.2)./ (b2 * sqrt(2*g*(z+R);I = trapz(z,f)/(60*60)常州大学实习报告第 17 页 共 16 页3 总结通过这次实习,我了解到了一些关于 Matlab的基础知识,见识到了Matlab作为一款计算工具的强大之处。当然,还有很多很多的功能是我没有接触到了,我会努力学习,越来越娴熟的去掌握这款工具。作为新时代的大学生,要珍惜这些难得的环境,努力学习,将来报效祖国。Matlab是一个强大的数学工具,它的应用广泛,涉及到各个领域。它使用起来十分方便,不用麻烦去定义变量,它的绘图能力很强,甚至可以模拟出三维视图。矩阵是它应用的核心,许多工程繁琐的
26、运算都需要靠矩阵来化简,这正是它的生命力所在。但是,他的函数很多,开始学时记的比较痛苦,我已经深深感觉到了。不过看多了也就熟了,感觉和学五笔差不多。它的语法简单,像我学过 C语言的学起来还是蛮容易的,尤其是他支持 C语言的混编,让我能够快速的掌握他的语法。它的数组定义十分符合自然,是从 1开始的,数组元素的调用也很接近数学的表达。此外,函数的名字也很符合英文规则,让我使用起来得心应手。Simulink动态仿真功能,主要用于仿真、验证、算法思想是否正确。在这段时间里,我们主要学习 MATLAB的工具的使用,熟悉其最基础的功能,锻炼了我的实际动手能力。Help 是 MATLAB中最有效的命令。遇到
27、问题,通常都可以借助 help解决问题。老师一再给我们强调了 help的重要性。下面是我对 help的一些常用方法的总结: (1)命令窗口直接敲“help”,你就可以得到本地机器上 matlab的基本的帮助信息。(2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入 help toolboxname,一帮可以得到本工具箱有关的信息:版本号,函数名等。 (3)知道函数名,直接用 help funname就可以得到相应的帮助信息。我觉得想要学好 MATLAB是不容易的,这是一件需要持之以恒的事,必须要坚持不懈的学习,还需要敢于开口向别人请教,更需要我们勤于思考,
28、勤于记忆,勤于动手。程序设计是实践性和操作性很强的事情,需要我们亲自动手。因此,我们应该经常自己动手实际操作设计程序,熟悉 MATLAB的操作,这对提高我们的操作能力非常有效。通过学习 matlab,我又一次锻炼了自己的思维。它学起来得心应手也让我明白了学习一门语言(c 语言)对学习其他语言的帮助指导作用。同时,它也加强了我理论联系实际的能力。这是一个专业课的基础工具,学好它是必要的。在这几天时间里,我仅仅是学了一点点皮毛,想要进一步的学习,还需要我在以后的的实际运用里不断地学习,改进自己的不足之处,让自己能够有所进步,有所成长。常州大学实习报告第 18 页 共 16 页参考文献1 Thoma
29、s Haigh. The History of Numerical Analysis and Scientific Computing (PDF). Santa Barbara, California. 2004-03-08: (6465) 2010-04-29. 2 Cleve Moler. The Growth of MATLAB and The MathWorks over Two Decades (PDF). January 2006 2010-04-30 3 MathWorks Founders. MathWorks. 2010-04-29. 4 Schrader, C.B.; Sp
30、ong, M.W. The IEEE Conference on Decision and Control - tracing CDC history. IEEE Control Systems Magazine. Dec. 2004, 24 (6): 56 66 Jan. 14, 2011. doi:10.1109/MCS.2004.1368481. 5 About The MathWorks. MathWorks. 2010-04-29. 6 MATLAB 7.10简介及主要功能. MathWorks 中国. 2010-04-29. 7 MATLAB 附加产品. MathWorks 中国. 2010-04-29. 8 Matlab 的简明基础教程 http:/ Matlab 软件应用与开发http:/