matlab实习报告.docx
- 文档编号:10555623
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:28
- 大小:218KB
matlab实习报告.docx
《matlab实习报告.docx》由会员分享,可在线阅读,更多相关《matlab实习报告.docx(28页珍藏版)》请在冰豆网上搜索。
matlab实习报告
学号:
09461133
常州大学
实习报告
课程名称:
matlab软件实习
学生姓名:
sherryzhang
学院:
数理学院专业班级:
电科091
教师:
忠义专业技术职务:
讲师
时间:
2011年9月2011年12月
1.求f(x)=4x6-x+x3-95在(0,100)上最大值、最小值,根。
(使用函数fminbnd、roots)
>>[x,y]=fminbnd('4*x.^6-x+x.^3-95',0,100)
x=
0.4432
y=
-95.3258
>>[x,y]=fminbnd('-4*x.^6+x-x.^3+95',0,100)
x=
99.9999
y=
-4.0000e+012
>>a=[40010-1-95];
roots(a)
ans=
1.6860
0.8525+1.4852i
0.8525-1.4852i
-1.7050
-0.8431+1.4514i
-0.8431-1.4514i
2求解常微分方程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)/2-1/2))*(5^(1/2)+3))/10+(5^(1/2)*(5^(1/2)-3))/(10*exp(t*(5^(1/2)/2+1/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];
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');
p=polyfit(n,t,2)
p=
0.00000.01440.0631
试求a和b的值。
4请用梯形法、辛普森法分别计算积分值
(trapz、quad)
f=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
5计算二重积分
(使用函数dblquad)
dblquad('x.^2+y.^2+x*y+2*x+y+1',0,1,0,2)
ans=
10.3333
6矩阵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.00009.00003.0000
0.5000-2.50005.5000
0.1250-0.35007.5500
qr(M)
ans=
9.00009.11116.4444
-0.50002.4470-2.3360
-1.0000-0.47196.8566
[D,X]=eig(M)
D=
-0.4111-0.7719-0.4992
-0.54840.6237-0.3914
-0.72820.12290.7730
X=
14.294400
0-1.57120
00-6.7232
7a=3,A=4,b=a2,B=b2-1,c=a+A-2B,C=a+B+2c,求C。
(使用函数solve)
>>symsabcABC
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
8用两种方法求解Ax=b的解。
(A为四阶随机矩阵,b为四阶向量,自己创建)。
方法一:
>>A=rand(4)
A=
0.93550.05790.13890.2722
0.91690.35290.20280.1988
0.41030.81320.19870.0153
0.89360.00990.60380.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.0000000-0.2035
01.0000002.3800
001.000005.7042
0001.00000.9564
9.
,用两种方法求函数的根,并求其极值与零点。
方法1:
>>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)
x=
2.4156
方法2:
>>fzero('x.^3+(x-0.8).^2/(x+1.25).^3-5*(x+1/x)',3)
ans=
2.4156
求极值:
>>symsxy
>>y=x.^3+(x-0.8).^2/(x+1.25).^3-5*(x+1/x);
>>dydx=diff(y);
>>solve(dydx);x=double(ans);
>>fori=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
10、f(x)的定义如下:
,写一个matlab函数func1实现该函数。
functionfunc1(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);
11、写一个MATLAB小程序,求出最小的n值,使得n!
>realmax。
functionf=realmax10()
s=1;n=1;
while
(1)
n=n+1;
s=s*n;
ifs>realmax
break;
end
end
fprintf('nµÄֵΪ%d\n',n)
12、写一个MATLAB函式myfun.m来计算下列方程式:
y=0.5*exp(x/3)-x*x*sin(x)
其中x是函式的输入,y是函式的输出。
你的函式必须能够处理当x是纯量或是向量的两种情况。
functionf=myfun(x)
n=length(x);
fori=1:
n
y(i)=0.5*exp(x(i)/3)-x(i)*x(i)*sin(x(i));
end
y
13、写一个MATLAB函式pifun.m来计算下列级数:
f(n)=4*(1-1/3+1/5-1/7+1/9-1/11+...)
其中n为函式的输入,级数和f(n)则是函式的输出。
此外,你必须进行下列事项:
functionf=pifun(n)
l=1;s=0;
fori=1:
n
s=s+l/(2*i-1);
l=-l;
end
s=4*s;
disp('f(n)的值是');disp(num2str(s))
(1)使用tic和toc指令来测量pifun(100000)的计算时间。
如果你不知道如何使用这两个指令,请使用helptic及helptoc来查出它们的用法。
我的计算机是Pentium-450,所得的计算时间约为2秒。
请说明你的计算机规格以及其计算时间。
>>tic,pifun(100000),toc
f(n)的值是
3.1416
Elapsedtimeis0.028928seconds.
CpuPentiumdual—coree5300
(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;
else
f=fibo(n-1)+fibo(n-2);
end
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])
x=
1.0000-2.25000.0000
fm=
-21.2500
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.4999771936726811.000008683829168
fm=
-0.749999998970666
3)
.
>>f='(x
(1)-1)^4+x
(2)^2';
>>[x,fm]=fminsearch(f,[0;1])
x=
0.999965270122533
-0.000000006400016
fm=
4.241503967641482e-017
第1),2)题的初始点可任意选取,
第3)题的初始点取为
.
16. 解线性方程组
并求系数矩阵的行列式。
a=[51-101;103-12;-1-1053;0024-1];
>>rref(a)
ans=
1.00000001.4000
01.000000-5.9000
001.000000.1000
0001.0000-0.3000
所以x1=1.4;x2=-5.9;x3=0.1;x4=-0.3
a=[51-10;103-1;-1-105;0024];
>>det(a)
ans=
70
17.设f(x,y)=4sin(x3y),求
symsfsy;
symsfxy;
f=4*sin(x.^3*y);
z=diff(diff(f,x),y);
x=2;y=3;subs(z)
>>zs17
ans=
1.0636e+003
18.求方程3x4+4x3-20x+5=0的所有解。
c=[340-205];roots(c)
>>zs18
ans=
-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;
fori=1000:
3000;%开始先从一到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')
end
20:
某公司投资2000万元建成一条生产线。
投产后,在时刻t的追加成本和追加收益分别为G(t)=
(百万元/年),H(t)=
(百万元/年)。
试确定该生产线在合适何时停产可获最大利润?
最大利润是多少?
要求:
写出数学模型、M函数(如果需要的话)、运算命令和计算结果。
解:
利润函数
(百万元)
f(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))
t
f=inline('175-t-3*t.^(2./3)');
r=quad(f,0,107.2708)-20
r
t=
1.0e+002*
1.9536-1.0860i
1.9536+1.0860i
1.0727
r=
8.6397e+003
即在第108年停产可获最大利润,最大利润为8639.7百万元。
21。
一幢楼房的后面是一个很大的花园。
在花园中紧靠着楼房建有一个温室,温室高10英尺,延伸进花园7尺。
清洁工要打扫温室上方的楼房的窗户。
他只有借助于梯子,一头放在花园中,一头靠在楼房的墙上,攀援上去进行工作。
他只有一架20米长的梯子,你认为他能否成功?
能满足要求的梯子的最小长度是多少?
步骤:
1.先进行问题分析,明确问题;
2.建立模型,并运用Matlab函数求解;
3.对结果进行分析说明;
4.设计程序画出图形,对问题进行直观的分析和了解(主要用画线函数plot,line)
。
若梯子能恰好放置,则梯子的长度f与倾角x关系如下:
(其中a=
m,b=3.048m,0 ) 接下来用Matlab求该函数的最小值: L=inline('3.048/sin(x)+2.333/cos(x)','x'); x=fminbnd(L,0.01,pi/2-0.01) l=subs(L) ezplot('3.048/sin(x)+2.333/cos(x)',[0,pi/2]) 由以上可知梯子的最小长度为7.59m。 所以他能成功。 22.某大学青年教师从31岁开始建立自己的养老基金,他把已有的积蓄10000元也一次性地存入,已知月利率为0.001(以复利计),每月存入700元,试问当他60岁退休时,他的退休基金有多少? 又若,他退休后每月要从银行提取1000元,试问多少年后他的基金将用完? functionf=title22() s=10000;t=0; fori=1: 360 s=s*(1+0.001)+700; end fprintf('60ËêÍËÐÝʱÍËÐÝ»ù½ðÓÐ%fÔª.\n',s); whiles>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年后基金将用完. 23.: 请设计一个程序,程序完成下列功能: (1)让用户输入一个矩阵A; (2)在A中找出小于0的矩阵元素的位置; (3)在A中统计出等于0的元素的个数; (4)显示A的行数和列数; (5)找出矩阵A各元素中的最大值(显示值,不显示元素位置)。 functionf=title20() a=input('ÇëÊäÈë¾ØÕóA: '); [m,n]=size(a); t=0;p=0; fori=1: m forj=1: n ifa(i,j)<0 p=p+1; fprintf('µÚ%d¸öСÓÚ0µÄλÖÃÊÇ(%d,%d)\n',p,i,j); end ifa(i,j)==0 t=t+1; end end end B=a(: ); max=B (1); fori=2: m*n ifB(i)>max max=B(i); end end ifp==0 disp('AÖÐûÓÐСÓÚ0µÄÔªËØ.'); end fprintf('AÖеÈÓÚ0µÄÔªËصĸöÊýΪ%d\n',t); fprintf('AµÄÐÐÊýºÍÁÐÊý·Ö±ðΪ%d£¬%d\n',m,n); fprintf('A¸÷ÔªËØÖеÄ×î´óֵΪ%d\n',max); 24: 请设计一个程序,程序完成下列功能: (1)让用户依次输入两个字符串s1和s2; (2)比较两个字符串的长度并显示比较结果; (3)判断s1与s2有没有长度在3个字符以上的相同子串,显示判断结果。 functionf=title24() s1=input('ÇëÊäÈë×Ö·û´®s1: '); s2=input('ÇëÊäÈë×Ö·û´®s2: '); m=length(s1);n=length(s2); t=m;kk=0; ifm>n t=n; disp('s1µÄ³¤¶È´óÓÚs2µÄ³¤¶È.'); elseifm disp('s1µÄ³¤¶ÈСÓÚs2µÄ³¤¶È.'); else disp('s1µÄ³¤¶ÈµÈÓÚs2µÄ³¤¶È.'); end fori=4: t forj=1: m-i+1 fork=1: n-i+1 ifstrcmp(s1(j: j+i-1),s2(k: k+i-1))==1 l=0; forr=1: kk ifstrcmp(s1(j: j+i-1),b{r})==1 l=1; break; end end ifl==0 kk=kk+1; b{kk}=s1(j: j+i-1); end end end end end fori=1: kk fprintf('µÚ%d¸öÏàͬ×Ö·û´®£º',i); disp(b{i}); end 25: 编写程序模拟杨氏双缝干涉 两相干光源到接收屏上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); fori=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); 26: 编写程序模拟光栅衍射 公式: I=I0(sinα/α)2(sin(λβ)/sinβ)2 α=(πa/λ)sinΦ β=(πd/λ)sinΦ clear lam=500e-9;N=2; a=2e-4;D=5;d=5*a; ym=2*lam*D/a;xs=ym; n=1001; ys=linspace(-ym,ym,n); fori=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); 27: 绘制三元函数 的可视化图形 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); axisequal 28: 绘制 的图象 [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','none'); view(3) camlight;lighting 29: 试完成matlab动画 霓虹灯效果动画: 一颗花心: clear;clc;closeall 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); shadinginterp pause (2); spinmap(10) 30: 试完成matlabgui程序 functionvarargout=ex0(varargin) gui_Singleton=1; gui_State=struct('gui_Name',mfilename,... 'gui_Singleton',gui_Singleton,... 'gui_OpeningFcn',@ex0_OpeningFcn,... 'gui_OutputFcn',@ex0_OutputFcn,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实习 报告