1、常州大学MATLAB实习报告序号: 41 学号: 11461215 常 州 大 学实 习 资 料 袋 数理学院 学院; 2013 2014 学年第 一 学期实习名称 MATLAB应用软件实习 指导教师 张燕新 学生姓名 段 旭 专业班级 电科112 实习单位 常州大学 W3机房 成 绩 实习时间2013年 12 月 30 日 2014 年 1月10日目 录 清 单序号材 料 名 称有“”备 注1实 习 日 记2实 习 报 告345 指导教师(签字): 序号: 41 学号: 11461215 实 习 报 告实习课程名称: Matlab应用软件实习 实 习 题 目: Matlab综合应用 学 生
2、姓 名: 段 旭 学 院(系): 数理学院 专 业 班 级: 电科112 校内指导教师: 张燕新 专业技术职务: 讲师 实习时间: 2013 年 12 月 30 日 2014 年 1 月 10 Matlab应用软件实习摘 要:MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C+和
3、FORTRAN)编写的程序。本次实习,针对MATLAB的一些计算功能进行了一些浅显的实验与研究,主使用了MATLAB的函数计算、数值模拟和一些常用的画图功能。最后,用MATLAB进行了几个简单的数学建模实验。关键词:Matlab;实习;应用;目录摘要 I目录 II1 背景 11.1 MATLAB简介 11.2 MATLAB历史 12 详细求解 22.1必做题 22.2 选做题 113 总结 15参考文献 161 背景1.1 MATLAB简介MATLAB是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性
4、动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是
5、矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。1.2 MATLAB历史1970年代末到80年代初,时任美国新墨西哥大学教授的克里夫莫勒尔为了让学生更方便地使用LINPACK及EISPACK(
6、需要通过FORTRAN编程来实现,但当时学生们并无相关知识),独立编写了第一个版本的MATLAB。这个版本的MATLAB只能进行简单的矩阵运算,例如矩阵转置、计算行列式和本征值,此版本软件分发出大约两三百份。1984年,杰克李特、克里夫莫勒尔和斯蒂夫班格尔特(Steve Bangert)合作成立了MathWorks公司,正式把MATLAB推向市场。MATLAB最初是由莫勒尔用FORTRAN编写的,李特和班格尔特花了约一年半的时间用C重新编写了MATLAB并增加了一些新功能,同时,李特还开发了第一个系统控制工具箱,其中一些代码到现在仍然在使用。C语言版的面向MS-DOS系统的MATLAB 1.0
7、在拉斯维加斯举行的IEEE决策与控制会议(IEEE Conference on Decision and Control)正式推出,它的第一份订单只售出了10份拷贝,而到了现在,根据MathWorks自己的数据,目前世界上100多个国家的超过一百万工程师和科学家在使用MATLAB和Simulink。1992年,学生版MATLAB推出;1993年,Microsoft Windows版MATLAB面世;1995年,推出Linux版。2 详细求解2.1必做题2.1.2 求解常微分方程x=-x+x+1,x(0)=1,x(0)=0(使用函数dsolve)dsolve(D2x=-Dx+x+1,Dx(0)=
8、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 - 12.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的值。t0=0,20,40,60,80,100,120,140,160,183.5;n0=0,1153,2045,
9、2800,3466,4068,4621,5135,5619,6152;n=0:0.001:6152;t=interp1(n0,t0,n,spline);p=polyfit(n,t,2)p = 0.0000 0.0144 0.06312.1.4 请用梯形法、辛普森法分别计算积分值 (trapz、quad)dblquad(x.2+y.2+x*y+2*x+y+1, 0, 1, 0, 2)ans = 10.3333f=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
10、.33692.1.5 计算二重积分(使用函数dblquad)2.1.6 矩阵M=1,2,6; 4,2,7; 8,9,3,求M的LU分解,QR分解,对角阵,特征值分解。(使用函数lu、qr、shol、eig) 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 = 1 2 3M=1,2,6; 4,2,7; 8,9,3; lu(M)ans = 8.0000 9.0000 3.00
11、00 0.5000 -2.5000 5.5000 0.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.7719 -0.4992 -0.5484 0.6237 -0.3914 -0.7282 0.1229 0.7730X = 14.2944 0 0 0 -1.5712 0 0 0 -6.72322.1.7 a=3,A=4,b=a2,B=b2-1,c=a+A-2B,C=a+B+2c,求C。(使用函数sol
12、ve)2.1.8用两种方法求解Ax=b的解。(A为四阶随机矩阵,b为四阶向量,自己创建)。 B=1;2;3;4;x=inv(A)*Bx = -6.4970 1.9163 10.9584 -3.8362 A=rand(4)A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057方法一:方法二: A(:,5)=B;rref(A)ans = 1.0000 0 0 0 -6.4970 0 1.0000 0 0 1.9163 0 0
13、 1.0000 0 10.9584 0 0 0 1.0000 -3.83622.1.9,用两种方法求函数的根,并求其极值与零点。方法一: solve(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 x=t(1);y1=subs(y)y1 = 16.2832 x=t(2);y2=subs(y)y2 = -6.4732 z=
14、diff(diff(y); x=t(1);z1=subs(z)z1 = 205.8164 x=t(2);z2=subs(z)z2 = -53.5382 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 = -0.4694 -2.4039求极值:所以函数f(x)存在一个极大值点x1=-2.4039,极大值为-6.4732;一个极小值点x2=-2.4039,极小值为16.28
15、322.1.10 f(x)的定义如下:,写一个matlab函数func1实现该函数。2.1.11 写一个MATLAB小程序,求出最小的 n 值,使得 n! realmax。function func1 (x)if x=0&xrealmax break; endendfprintf(最小的整数为:%dn,n)2.1.12 写一个 MATLAB 函式 myfun.m 来计算下列方程式: y = 0.5*exp(x/3)-x*x*sin(x) 其中 x 是函式的输入,y 是函式的输出。你的函式必须能够处理当 x 是纯量或是向量的两种情况。function f=myfun(x)n=length(x);
16、for i=1:n f(i)=0.5*exp(x(i)/3)-x(i)*x(i)*sin(x(i);end2.1.13 写一个 MATLAB 函式 pifun.m 来计算下列级数: f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + .) 其中 n 为函式的输入,级数和 f(n) 则是函式的输出。此外,你必须进行下列事项: (1) 使用 tic 和 toc 指令来测量 pifun(100000) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的计算机是 Pentium-450,所得的计算时间
17、约为 2 秒。请说明你的计算机规格以及其计算时间。 (2)使用 flops 指令来测量 pifun(100000) 所用到 floating point operations 的计算次数。如果你不知道如何使用这个指令,请使用 help flops 来查出它的用法。 function 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;endtime=toc2.1
18、.15 求下列函数的极小点: 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 1) 2) 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.7499999989706663) f= (x(1)-1)4+x(2)2; x,fm=fminsearch(f,0;1)x =
19、0.999965270122533 -0.000000006400016fm = 4.241503967641482e-017 4.241503967641482e-0172.1.17 设 f(x,y) = 4 sin (x 3y),求 2.1.19 对于迭代模型x(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取初值x0 = 0, y0 = 0, 进行3000次迭代,对于k1000, 在(xk, yk) 处亮一点(注意不要连线)
20、可得所谓Henon引力线图。syms f s y; syms f x y; f=4*sin(x.3*y); z=diff(diff(f,x),y); x=2;y=3;subs(z)ans = 1.0636e+0032.1.20 请设计一个程序,程序完成下列功能:(1)让用户输入一个矩阵A;(2)在A中找出小于0的矩阵元素的位置;(3)在A中统计出等于0的元素的个数;(4)显示A的行数和列数;(5)找出矩阵A各元素中的最大值(显示值,不显示元素位置)。2.11.21 请设计一个程序,程序完成下列功能:(1) 让用户依次输入两个字符串s1和s2;(2) 比较两个字符串的长度并显示比较结果;func
21、tion f=title21()s1=input(请输入字符串s1: , s);s2=input(请输入字符串s2: , s);m=length(s1);n=length(s2);t=m;kk=0;if mn t=n;disp( s1大于s2.);elseif mn disp(s1小于s2.);else disp(字符串相等.);endfor i=4:t for j=1:m-i+1 for k=1:n-i+1 if strcmp(s1(j:j+i-1),s2(k:k+i-1)=1 l=0; for r=1:kk if strcmp(s1(j:j+i-1),br)=1 l=1; break; e
22、nd end if l=0 kk=kk+1; bkk=s1(j:j+i-1); end end end endendfor i=1:kk fprintf(有%d个相同字符串,i); disp(bi); endfunction f=title20()a=input(请输入矩阵A: );m,n=size(a);t=0;p=0;for i=1:m for j=1:n if a(i,j)max max=B(i); endend if p=0 disp(小于0.);endfprintf(A中0的个数为%dn,t);fprintf(A的行数为%d列数为%dn,m,n);fprintf(A中元素最大值为%d
23、n,max);(3) 判断s1与s2有没有长度在3个字符以上的相同子串,显示判断结果。2.1.22 编写程序模拟杨氏双缝干涉 两相干光源到接收屏上P点距离r1=(D2+(y-a/2)2)1/2, r2=(D2+(y+a/2)2)1/2,相位差=2(r2-r1)/,光强I=4I0cos2(/2)编写程序clear lam=500e-9;a=2e-3;D=1;ym=5*lam*D/a;xs=ym;n=101;ys=linspace(-ym,ym,n);for i=1:n r1=sqrt(ys(i)-a/2).2+D2); r2=sqrt(ys(i)+a/2).2+D2); phi=2*pi*(r2
24、-r1)./lam; B(i,:)=sum(4*cos(phi/2).2);endN=255;Br=(B/4.0)*N;subplot(1,2,1);image(xs,ys,Br);colormap(gray(N);subplot(1,2,2);plot(B,ys);2.1.24 绘制三元函数的可视化图形x=-5:0.05:5;y=-5:0.05:5;z=-5:0.05:5;x,y,z=meshgrid(x,y,z);v=x.2+y.2+z.2;isosurface(x,y,z,v,10);axis equalx,y,z,v = flow;q=1./sqrt(1-x).*log(x-y)-z;
25、p = patch(isosurface(x, y, z, v, 0);isonormals(x,y,z,q,p)set(p, FaceColor, blue, EdgeColor, none);view(3)camlight; lighting2.1.25 绘制的图象2.2 选做题2.2.28 某公司投资2000万元建成一条生产线。投产后,在时刻t 的追加成本和追加收益分别为G(t)= (百万元/年), H(t)= (百万元/年)。试确定该生产线在合适何时停产可获最大利润?最大利润是多少?要求:写出数学模型、M函数(如果需要的话)、运算命令和计算结果。解:利润函数(百万元)f(t)=H(t)
26、-G(t)=175-t-3t2/3,f(t)单调递减,则当f(t)=0时利润最大f=175-t-3*t(2/3);t=double(solve(f)f=inline(175-t-3*t.(2./3);r=quad(f,0,107.2708)-20t = 1.0e+002 * 1.9536 - 1.0860i 1.9536 + 1.0860i 1.0727 r = 8.6397e+003即在第108年停产可获最大利润,最大利润为8639.7百万元。2.2.29 一幢楼房的后面是一个很大的花园。在花园中紧靠着楼房建有一个温室,温室高10英尺,延伸进花园7尺。清洁工要打扫温室上方的楼房的窗户。他只有借助于梯子,一头放在花园中,一头靠在楼房的墙上,攀援上去进行工作。他只有一架20米长的梯子,你认为他能否成功?能满足要求的梯子的最小长度是多少?步骤: 1先进行问题分析,明确问题;2建立模型,并运用Matlab函数求解;3对结果进行分析说明;4设计程序画出图形,对问题进行直观的分析和了解(主要用画线函数plot,line)。若梯子能恰好放置,则梯子的长度f与倾角x关系如下: (其中a=m, b=3.048m,0x0 s=(s-10
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1