常州大学MATLAB实习报告Word格式文档下载.docx
《常州大学MATLAB实习报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《常州大学MATLAB实习报告Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
详细求解
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,2800,3466,4068,4621,5135,5619,6152];
n=0:
0.001:
6152;
t=interp1(n0,t0,n,'
spline'
);
%interp1函数进行多项式插直
p=polyfit(n,t,2)%polyfit函数进行多项拟合
p=
0.00000.01440.0631
4.请用梯形法、辛普森法分别计算积分值
(trapz、quad)
f=inline('
sqrt(x.^2+x+1)'
'
x'
%inline定以内置函数
>
quad(f,0,1)%辛普森法
ans=
1.3369
x=0:
0.01:
1;
y=sqrt(x.^2+x+1);
trapz(x,y)%trapz为梯形法
5计算二重积分
(使用函数dblquad)
dblquad('
x.^2+y.^2+x*y+2*x+y+1'
0,1,0,2)%函数求解二重积分
10.3333
8用两种方法求解Ax=b的解。
(A为四阶随机矩阵,b为四阶向量,自己创建)。
方法1.A=rand(4)
A=
0.81470.63240.95750.9572
0.90580.09750.96490.4854
0.12700.27850.15760.8003
0.91340.54690.97060.1419
B=[1;
2;
3;
4];
x=inv(A)*B%求矩阵的逆
x=
73.6009
6.6966
-69.4126
3.4100
方法2.A(:
5)=B;
rref(A)%将A化为阶梯状
1.000000073.6009
01.0000006.6966
001.00000-69.4126
0001.00003.4100
9.
,用两种方法求函数的根,并求其极值与零点。
求根.
solve('
x^3+(x-4/5)^2/(x+5/4)^3-5*x-5/x'
x=double(ans);
fori=1:
length(x)
xx(i)=isreal(x(i));
end
x=x(xx)
2.4156
零点fzero('
x.^3+(x-0.8).^2/(x+1.25).^3-5*(x+1/x)'
3)
极值:
symsxy
y=x.^3+(x-0.8).^2/(x+1.25).^3-5*(x+1/x);
dydx=diff(y);
solve(dydx);
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));
z1=subs(z)
z1=
205.8164
z2=subs(z)
z2=
-53.5382
函数f(x)有一个极大值点x1=-2.4039,极大值为-6.4732;
一个极小值点x2=-2.4039,极小值为16.2832
10.f(x)的定义如下:
,写一个matlab函数func1实现该函数。
Functions11461101_10(x)
ifx<
0&
&
x==-4
y=x^2+x-6;
elseifx>
=0&
x<
10&
x~=2&
x~=3
y=x^2-5*x+6;
else
y=x.^2-x-1;
end
fprintf('
%d\n'
y);
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)的计算时间。
如果你不知道如何使用这两个指令,请使用helptic及helptoc来查出它们的用法。
我的计算机是Pentium-450,所得的计算时间约为2秒。
请说明你的计算机规格以及其计算时间。
functionf=11461101_13(n)
l=1;
s=0;
fori=1:
n
s=s+l/(2*i-1);
l=-l;
s=4*s;
disp('
f(n)的值是'
disp(num2str(s))
tic,s11461101_13(100000),toc
f(n)的值是
3.1416
Elapsedtimeis0.028928seconds.
(2)使用flops指令来测量pifun(100000)所用到floatingpointoperations的计算次数。
如果你不知道如何使用这个指令,请使用helpflops来查出它的用法。
14.写一个MATLAB的递归函式fibo.m来计算Fibonacci数列,其定义如下:
fibo(n+2)=fibo(n+1)+fibo(n)
此数列的启始条件如下:
fibo
(1)=0,fibo
(2)=1.
functionf=fibo(n)
ifn==1
f=0;
elseifn==2
f=1;
f=fibo(n-1)+fibo(n-2);
15.求下列函数的极小点:
1)
;
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])
1.0000-2.25000.0000
fm=
-21.2500
2)
x
(1)^2+3/2*x
(2)^2-2*x
(1)*x
(2)+x
(1)-2*x
(2)'
[x,fm]=fminsearch(f,[0,0])
0.50001.0000
-0.7500
3)
.
(x
(1)-1)^4+x
(2)^2'
[x,fm]=fminsearch(f,[0;
1])
1.0000
-0.0000
4.2415e-17
第1),2)题的初始点可任意选取,
第3)题的初始点取为
16.解线性方程组
并求系数矩阵的行列式。
a=[51-101;
103-12;
-1-1053;
0024-1];
rref(a)
1.00000001.4000
01.000000-5.9000
001.000000.1000
0001.0000-0.3000
17.设f(x,y)=4sin(x3y),求
。
symsfxy;
f=4*sin(x.^3*y);
z=diff(diff(f,x),y);
%diff函数进行求导
x=2;
y=3;
subs(z)%subs函数进行元素替换
1.0636e+03
18.求方程3x4+4x3-20x+5=0的所有解。
c=[340-205];
roots(c)
-1.5003+1.5470i
-1.5003-1.5470i
1.4134
0.2539
19.对于迭代模型
取初值x0=0,y0=0,进行3000次迭代,对于k>
1000,在(xk,yk)处亮一点(注意不要连线)可得所谓Henon引力线图。
x
(1)=0;
y
(1)=0;
3000;
x(i+1)=1+y(i)-1.4*x(i)^2;
y(i+1)=0.3*x(i);
holdon
plot(x(i),y(i),'
*b'
)
20.:
请设计一个程序,程序完成下列功能:
(1)让用户输入一个矩阵A;
(2)在A中找出小于0的矩阵元素的位置;
(3)在A中统计出等于0的元素的个数;
(4)显示A的行数和列数;
(5)找出矩阵A各元素中的最大值(显示值,不显示元素位置)。
functionf=s11461101_20()
a=input('
输入一个矩阵A:
'
[m,n]=size(a);
t=0;
p=0;
m
forj=1:
ifa(i,j)<
0p=p+1;
fprintf('
(矩阵中小于0的矩阵元素的位置%d,%d)\n'
p,i,j);
ifa(i,j)==0t=t+1;
B=a(:
max=B
(1);
fori=2:
m*n
ifB(i)>
maxmax=B(i);
end
ifp==0disp('
.'
矩阵中等于0的元素的个数%d\n'
t);
矩阵的行数和列数%d\n'
m,n);
矩阵中各元素的最大值%d\n'
max);
21.请设计一个程序,程序完成下列功能:
(1)让用户依次输入两个字符串s1和s2;
(2)比较两个字符串的长度并显示比较结果;
(3)判断s1与s2有没有长度在3个字符以上的相同子串,显示判断结果。
s1=input('
输入字符s1'
s'
s2=input('
输入字符s2'
l1=length(s1);
l2=length(s2);
ifl1==l2
长度相等'
elseifl1>
l2
s1>
s2'
s1<
e=strncmp(s1,s2,3);
ife==0
没有长度在3个字符以上的相同子串'
有长度在3个字符以上的相同子串'
22.编写程序模拟杨氏双缝干涉
两相干光源到接收屏上P点距离r1=(D2+(y-a/2)2)1/2,r2=(D2+(y+a/2)2)1/2,相位差
Φ=2π(r2-r1)/λ,光强I=4I0cos2(Φ/2)编写程序
lam=500e-9;
a=2e-3;
D=1;
ym=5*lam*D/a;
xs=ym;
n=101;
ys=linspace(-ym,ym,n);
%linspace用于产生-ymym之间的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);
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);
24.绘制三元函数
的可视化图形
x=-5:
0.05:
5;
y=-5:
z=-5:
[x,y,z]=meshgrid(x,y,z);
v=x.^2+y.^2+z.^2;
isosurface(x,y,z,v,10);
axisequal
25.绘制
的图象
[x,y,z,v]=flow;
q=1./sqrt(1-x).*log(x-y+eps)-z;
p=patch(isosurface(x,y,z,v,0));
isonormals(x,y,z,q,p)
set(p,'
FaceColor'
'
blue'
EdgeColor'
none'
view(3)
camlight
26:
试完成matlab动画
霓虹灯效果动画:
一颗花心:
c=8;
t=linspace(-c,c);
[x,y]=meshgrid(t);
z=16*x.^2-15*abs(x).*y+16*y.^2-225;
pcolor(x,y,z);
shadinginterp
pause(3);
spinmap(8)
27:
试完成matlabgui程序
functionvarargout=untitled(varargin)
%UNTITLEDMATLABcodeforuntitled.fig
%UNTITLED,byitself,createsanewUNTITLEDorraisestheexisting
%singleton*.
%
%H=UNTITLEDreturnsthehandletoanewUNTITLEDorthehandleto
%theexistingsingleton*.
%UNTITLED('
CALLBACK'
hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinUNTITLED.Mwiththegiveninputarguments.
Property'
Value'
...)createsanewUNTITLEDorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeuntitled_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtountitled_OpeningFcnviavarargin.
%*SeeGUIOptionsonGUIDE'
sToolsmenu.Choose"
GUIallowsonlyone
%instancetorun(singleton)"
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpuntitled
%LastModifiedbyGUIDEv2.506-Jan-201417:
25:
34
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('
gui_Name'
mfilename,...
gui_Singleton'
gui_Singleton,...
gui_OpeningFcn'
@untitled_OpeningFcn,...
gui_OutputFcn'
@untitled_OutputFcn,...
gui_LayoutFcn'
[],...
gui_Callback'
[]);
ifnargin&
ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
gui_mainfcn(gui_State,varargin{:
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforeuntitledismadevisible.
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstountitled(seeVARARGIN)
%Createthedatatoplot.
handles.peaks=peaks(35);
handles.membrane=membrane;
[x,y]=meshgrid(-8:
.5:
8);
r=sqrt(x.^2+y.^2)+eps;
sinc=sin(r)./r;
handles.sinc=sinc;
%setthecurrentdatavalue.
handles.current_data=handles.peaks;
contour(handles.current_data)
%Choosedefaultcommandlineoutputforuntitled
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesuntitledwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=untitled_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%handlesstructurewithhan