MATLAB实习报告_matlab实习报告
MATLAB实习报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“matlab实习报告”。
MATLAB实习报告
MATLAB课程设计报告
摘要
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,代表了当今国际科学计算软件的先进水平。
MATLAB的基本数据单位是矩阵。MATLAB几乎包括了矩阵的所有运算,从简单的矩阵生成及简单的运算到大量的矩阵运算与转换。MATLAB应用于矩阵有很大的必要性和很重要的现实意义。
MATLAB具有强大的二维、三维绘图功能,提供了许多绘图语句。利用MATLAB我们可以画出我们所需要的几乎所有图形。关键词:矩阵;解方程组;画图
MATLAB实习报告
目录一、二、三、四、五、背景…………………………………………………………………………4 第一部分题目………………………………………………………………17 第二部分选做题…………………………………………………………....19 心得体会…………………………………………………………………....19 参考文献……………………………………………………………………19
MATLAB实习报告
一、背景
MATLAB软件功能简介
MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。
MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。
MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。
MATLAB实习报告
二、第一部分
1.求解常微分方程x’’=-x’+x+1,x’(0)=1,x(0)=0(使用函数dsolve)dsolve('D2x=-Dx+x+1','Dx(0)=1','x(0)=0')ans =(5^(1/2)*exp(t*(5^(1/2)/23))/(10*exp(t*(5^(1/2)/2 + 1/2)))– 1
2.请用梯形法、辛普森法分别计算积分值x2x1dx(trapz、quad)
0f=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.3369 3.计算二重积分(x2y2xy2xy1)dxdy(使用函数dblquad)
00dblquad('x.^2+y.^2+x*y+2*x+y+1', 0, 1, 0, 2)ans =
10.3333 4.矩阵M=[1,2,6;4,2,7;8,9,3],求M的LU分解,QR分解,对角阵,特征值分解。
(使用函数lu、qr、shol、eig)M=[1,2,6;4,2,7;8,9,3];lu(M)ans =
8.0000
9.0000
3.0000
0.5000
-2.5000
5.5000
0.1250
-0.3500
7.5500 qr(M)ans = 9.0000
9.1111
6.4444
-0.5000
2.4470
-2.3360
-1.0000
-0.4719
6.8566 [D,X]=eig(M)D =
-0.4111
-0.7719
-0.4992
-0.5484
0.6237
-0.3914 121MATLAB实习报告
-0.7282
0.1229
0.7730 X =
14.2944
0
0
0
-1.5712
0
0
0
-6.7232
5.a=3,A=4,b=a2,B=b2-1,c=a+A-2B,C=a+B+2c,求C。(使用函数solve)>> syms a b c A B C eq1='a=3';eq2='A=4';eq3='b=a^2';eq4='B=b^2-1';eq5='c=a+A-2*B';eq6='C=a+B+2*c';x=solve(eq1,eq2,eq3,eq4,eq5,eq6);>> x.C ans =-223
6.用两种方法求解Ax=b的解。b为四阶向量,(A为四阶随机矩阵,自己创建)。方法一:>> A=rand(4)A =
0.9355
0.0579
0.1389
0.2722
0.9169
0.3529
0.2028
0.1988
0.4103
0.8132
0.1987
0.0153 0.8936
0.0099
0.6038
0.7468 >> B=[1;2;3;4];x=inv(A)*B x =-0.2035
2.3800
5.7042
0.9564 方法二:
>> A(:,5)=B;rref(A)ans = 1.0000
0
0
0
-0.2035
0
1.0000
0
0
2.3800
0
0
1.0000
0
5.7042
0
0
0
1.0000
0.9564
MATLAB实习报告
13237.f(x)x(x0.8)/(x1.25)5(x),用两种方法求函数的根,并求其
x极值与零点。
方法1:
>> solve('x^3+(x-4/5)^2/(x+5/4)^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 方法2:
>> 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 =-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 所以函数f(x)存在一个极大值点x1=-2.4039,极大值为-6.4732;一个极小值点x2=-2.4039,极小值为16.2832
x2x6,x0且x4
28、f(x)的定义如下:f(x)x5x6,0x10,x2且x3,写一个matlab函
x2x1,其它数func1实现该函数。MATLAB实习报告
function func1(x)if x=0&x
y=x.^2-x-1;end
fprintf('%dn',y);
9、写一个MATLAB小程序,求出最小的 n 值,使得 n!> realmax。function f=realmax10()s=1;n=1;while(1)n=n+1;s=s*n;if s>realmax break;end
end
fprintf(' %dn',n)
10、写一个 MATLAB 函式 pifun.m 来计算下列级数:
f(n)= 4*(11/7 + 1/91.5470i 1.4134 0.2539
2xk11yk14.xk13:对于迭代模型yk10.3xk
取初值x0 = 0, y0 = 0, 进行3000次迭代,对于k>1000, 在(xk, yk)处亮一点(注意不要连线)可得所谓Henon引力线图。
x(1)=0;y(1)=0;
for i=1:1:3000;%开始先从一到3000 x(i+1)=1+y(i)-1.4*x(i)^2;y(i+1)=0.3*x(i);hold on
plot(x(i),y(i),'*b')end
14:请设计一个程序,程序完成下列功能:(1)让用户依次输入两个字符串s1和s2;
(2)比较两个字符串的长度并显示比较结果;
(3)判断s1与s2有没有长度在3个字符以上的相同子串,显示判断结果。
MATLAB实习报告
function f=title24()s1=input('please input s1:请以‘要输入的字符串’ 格式输入');s2=input('please input s2:同上');m=length(s1);n=length(s2);t=m;kk=0;if m>n t=n;disp('s1长度>s2长度');elseif ms1长度');else disp('s1长度=s2长度');end for 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 %函数strcmp比较两个字符串长度的l=0;大小
for r=1:kk if strcmp(s1(j:j+i-1),b{r})==1 l=1;break;end end if l==0 kk=kk+1;b{kk}=s1(j:j+i-1);end end end end end if kk>0 for i=1:kk fprintf('第%d个相同字符串:',i);disp(b{i});end
MATLAB实习报告
else disp('没有长度在3字符个以上相同的字符串');end 15:编写程序模拟杨氏双缝干涉
两相干光源到接收屏上P点距离r1=(D2+(y-a/2)2)1/2, r2=(D2+(y+a/2)2)1/2,相位差
Φ=2π(r2-r1)/λ,光强I=4I0cos2(Φ/2)编写程序 function yangshi()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+D^2);r2=sqrt((ys(i)+a/2).^2+D^2);phi=2*pi*(r2-r1)./lam;B(i,:)=sum(4*cos(phi/2).^2);end N=255;Br=(B/4.0)*N;subplot(1,2,1);image(xs,ys,Br);colormap(gray(N));subplot(1,2,2);plot(B,ys);
16:编写程序模拟光栅衍射
公式:I=I0(sinα/α)2(sin(λβ)/sinβ)2
α=(πa/λ)sinΦ β=(πd/λ)sinΦ function guangpu()lam=500e-9;N=2;
MATLAB实习报告
a=2e-4;D=5;d=5*a;ym=2*lam*D/a;xs=ym;n=1001;ys=linspace(-ym,ym,n);for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lam;beta=pi*d*sinphi/lam;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);end NC=255;Br=(B/max(B))*NC;subplot(1,2,1)image(xs,ys,Br);colormap(gray(NC));subplot(1,2,2)plot(B1,ys);
17:绘制三元函数wx2y2z2的可视化图形 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 equal
MATLAB实习报告
18:绘制
zf(x,y)(1x)12ln(xy)的图象
[x,y,z,v] = flow;q=1./sqrt(1-x).*log(x-y)-z;p = patch(isosurface(x, y, z, v, 0));isonormals(x,y,z,q,p)set(p, 'FaceColor', 'blue', 'EdgeColor', view(3)camlight;lighting
19: 试完成matlab 动画 霓虹灯效果动画:一颗花心: clear;clc;close all c=5;t=linspace(-c,c);[x,y]=meshgrid(t);z=17*x.^2-16*abs(x).*y+17*y.^2-225;pcolor(x,y,z);shading interp pause(2);spinmap(10));'none'MATLAB实习报告
20:试完成matlab gui程序
function varargout = ex0(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @ex0_OpeningFcn,...'gui_OutputFcn', @ex0_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});end
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else
gui_mainfcn(gui_State, varargin{:});end
function ex0_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;global i a i=0;a=floor(100*rand);guidata(hObject, handles);function varargout = ex0_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;
MATLAB实习报告
function x1_Callback(hObject, eventdata, handles)function x1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end
function x2_Callback(hObject, eventdata, handles)function x2_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end
function p1_Callback(hObject, eventdata, handles)global i a x1= eval(get(handles.x1,'String'));if x1>a x2='high';set(handles.x2,'string',num2str(x2));elseif x1
x2='YOU ARE WIN';set(handles.x2,'string',num2str(x2));a=floor(100*rand);i=0;end i=i+1;if i==10 x2='YOU ARE LOSE';set(handles.x2,'string',num2str(x2));a=floor(100*rand);i=0;end
function p2_Callback(hObject, eventdata, handles)close = questdlg('ÄúÈ·¶¨Òª¹Ø±ÕÂð?','È·¶¨¹Ø±Õ','ÊÇ','·ñ','ÊÇ');switch close
MATLAB实习报告
case '·ñ'
case 'ÊÇ'
delete(handles.figure1)end
三、第二部分
1:某公司投资2000万元建成一条生产线。投产后,在时刻t 的追加成本和追加收益分别为G(t)= 5t2t2/3(百万元/年), H(t)=180t2/3(百万元/年)。试确定该生产线在合适何时停产可获最大利润?最大利润是多少?
要求:写出数学模型、M函数(如果需要的话)、运算命令和计算结果。解:利润函数R(t)=(H(t)G(t))dt20(百万元)0f(t)=H(t)-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)-20 t = 1.0e+002 * 1.9536-1.0860i 1.9536 + 1.0860i 1.0727 r =8.6397e+003 即在第108年停产可获最大利润,最大利润为8639.7百万元。:一幢楼房的后面是一个很大的花园。在花园中紧靠着楼房建有一个温室,温室高10英尺,延伸进花园7尺。清洁工要打扫温室上方的楼房的窗户。他只有借助于梯子,一头放在花园中,一头靠在楼房的墙上,攀援上去进行工作。他只有一架20米长的梯子,你认为他能否成功?能满足要求的梯子的最小长度是多少?
步骤:
1.先进行问题分析,明确问题;
2.建立模型,并运用Matlab函数求解;
3.对结果进行分析说明;
4.设计程序画出图形,对问题进行直观的分析和了解(主要用画线函数plot,line)
。若梯子能恰好放置,则梯子的长度f与倾角x关系如下:
7abf(x)
(其中a=m, b=3.048m,0
3cosxsinx2接下来用Matlab求该函数的最小值:
L=inline('3.048/sin(x)+2.333/cos(x)','x');x=fminbnd(L,0.01,pi/2-0.01)tMATLAB实习报告
l=subs(L)ezplot('3.048/sin(x)+2.333/cos(x)',[0,pi/2])
由以上可知梯子的最小长度为7.59m。所以他能成功。
3.某大学青年教师从31岁开始建立自己的养老基金,他把已有的积蓄10000元也一次性地存入,已知月利率为0.001(以复利计),每月存入700元,试问当他60岁退休时,他的退休基金有多少?又若,他退休后每月要从银行提取1000元,试问多少年后他的基金将用完? function f=title22()s=10000;t=0;for i=1:360 s=s*(1+0.001)+700;end
fprintf('60岁退休时退休基金,%d.n',s);while s>0 s=(s-1000)*(1+0.001);t=t+1;end
t=ceil(t/12);fprintf('退休后每月要从银行提取1000元,多少年用完,%d.n',t);>> zs22 60岁退休时退休基金有317480.843330元.退休后每月要从银行提取1000元,32年后基金将用完.4.经调查发现,电饭锅销售速度与当时的销量成正比。现在我们来建立一个数学模型以预测销量。
close;fplot(‘exp(0.9*x)’, [0,10]);%模型1解析解 hold on;[t,x]=ode45(inline(‘0.9*x*(1-x/1000)’,‘t’,‘x’),[0 10],1);%模型2数值解 plot(t,x);axis([0 10 0 1500]);
MATLAB实习报告
hold off;
四、心得体会
五、参考文献:
1.姚东.MATLAB及在电子信息课程中的应用[M].第二版.北京:北京电子工业出版社,2000 2.张智星.MATLAB程序设计与应用.北京:清华大学出版社,2002 3.肖伟、刘忠.MATLAB程序设计与应用[M].北京:清华大学出版社 2005