matlab实习报告(最新)
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=[4 0 0 1 0 -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.0000 0.0144 0.0631 试求a 和b 的值。
4请用梯形法、辛普森法分别计算积分值?++1
21dx x x (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计算二重积分?
?
+++++1020
22)12(dxdy y x xy y x (使用函数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.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
-0.7282 0.1229 0.7730
X =
14.2944 0 0
0 -1.5712 0
0 0 -6.7232
7 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
8 用两种方法求解Ax=b 的解。(A 为四阶随机矩阵,b 为四阶向量,自己创建)。 方法一:>> 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
9.)1
(5)25.1/()8.0()(323x
x x x x x f +-+-+=,用两种方法求函数的根,并求其
极值与零点。
方法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
10、f(x)的定义如下:
2
2
2
6,04
()56,010,23
1,
x x x x
f x x x x x x
x x
?+-<≠-
?
=-+≤<≠≠
?
?--
?
且
且
其它
,写一个matlab
函数func1实现该函数。
function func1 (x)
if x<0&&x==-4
y=x^2+x-6;
elseif x>=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。
function f=realmax10()
s=1;n=1;
while(1)
n=n+1;
s=s*n;
if s>realmax
break;
end
end
fprintf('nμ??μ?a%d\n',n)
12、写一个 MATLAB 函式 myfun.m 来计算下列方程式:
y = 0.5*exp(x/3)-x*x*sin(x)
其中 x 是函式的输入,y 是函式的输出。你的函式必须能够处理当 x 是纯量或是向量的两种情况。
function f=myfun(x)
n=length(x);
for i=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) 则是函式的输出。此外,你必须进行下列事项:
function f=pifun(n)
l=1;s=0;
for i=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) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的计算机是 Pentium-450,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。
>> tic,pifun(100000),toc f(n)的值是 3.1416
Elapsed time is 0.028928 seconds. Cpu Pentium dual —core e5300
(2)使用 flops 指令来测量 pifun(100000) 所用到 floating point operations 的计算次数。如果你不知道如何使用这个指令,请使用 help flops 来查出它的用法。
14、写一个 MATLAB 的递归函式 fibo.m 来计算 Fibonacci 数列,其定义如下:
fibo(n+2) = fibo(n+1)+fibo(n)
此数列的启始条件如下: fibo(1) = 0, fibo(2) = 1. function f=fibo(n) if n==1 f=0;
elseif n==2 f=1; else
f=fibo(n-1)+fibo(n-2); end
15 求下列函数的极小点:
1) ()2
123222118294x x x x x X f +-++=;
>> 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.0000
fm =
-21.2500
2)
()21212
221
222
3x x x x x x X f -+-+=
; >> 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.000008683829168
fm =
-0.749999998970666
3) ()()22
41
21+-=x X f .
>> 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)题的初始点取为()T X 1,00=.
16. 解线性方程组
??????
?-=+=+--=-+=-+1
4235231543421431321x x x x x x x x x x x 并求系数矩阵的行列式。
a=[5 1 -1 0 1;1 0 3 -1 2;-1 -1 0 5 3;0 0 2 4 -1]; >> rref(a)
ans =
1.0000 0 0 0 1.4000 0 1.0000 0 0 -5.9000 0 0 1.0000 0 0.1000 0 0 0 1.0000 -0.3000
所以 x1=1.4;x2=-5.9;x3=0.1;x4=-0.3
a=[5 1 -1 0;1 0 3 -1;-1 -1 0 5;0 0 2 4]; >> det(a)
ans =
70
17. 设 f(x,y) = 4 sin (x 3
y),求
3
,22==???y x y
x f
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)
>> zs17
ans =
1.0636e+003
18.求方程 3x 4+4x 3-20x+5 = 0 的所有解。
c=[3 4 0 -20 5];roots(c)
>> zs18
ans =
-1.5003 + 1.5470i -1.5003 - 1.5470i 1.4134 0.2539
19:对于迭代模型x y x y x k k k k k ++=+-=??
?
12
111403.. 取初值x 0 = 0, y 0 = 0, 进行3000次迭代,对于k>1000, 在(x k , y k ) 处亮一点(注
意不要连线)可得所谓Henon 引力线图。
x(1)=0; y(1)=0;
for i=1000: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
20:某公司投资2000万元建成一条生产线。投产后,在时刻t 的追加成本和追加收益分别为G(t)= 3/225t t ++(百万元/年), H(t)=2/3180t - (百万元/年)。试确定该生产线在合适何时停产可获最大利润?最大利润是多少?
要求:写出数学模型、M 函数(如果需要的话)、运算命令和计算结果。 解:利润函数t
0R(t)=(()())20H t G t dt --? (百万元)
f(t)=H(t)-G(t)=175-t-3t 2/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 关系如下:
()cos sin a b f x x x =+ (其中a=73m, 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元,试问多少年后他的基金将用完? function f=title22() s=10000;t=0; for i=1:360 s=s*(1+0.001)+700; end fprintf('60?êí?DYê±í?DY?ù?eóD%f?a.\n',s); while s>0 s=(s-1000)*(1+0.001); t=t+1; end t=ceil(t/12); fprintf('í?DYoó????òa′óò?DDìáè?1000?a£?%d?êoó?ù?e??ó?íê.\n',t); >> zs22 60岁退休时退休基金有317480.843330元. 退休后每月要从银行提取1000元,32年后基金将用完. 23.:请设计一个程序,程序完成下列功能: (1)让用户输入一个矩阵A; (2)在A中找出小于0的矩阵元素的位置; (3)在A中统计出等于0的元素的个数; (4)显示A的行数和列数; (5)找出矩阵A各元素中的最大值(显示值,不显示元素位置)。 function 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)<0 p=p+1; fprintf('μú%d??D?óú0μ?????ê?(%d,%d)\n',p,i,j); end if a(i,j)==0 t=t+1; end end end B=a(:); max=B(1); for i=2:m*n if B(i)>max max=B(i); end end if p==0 disp('A?D??óDD?óú0μ??a??.'); end fprintf('A?Dμèóú0μ??a??μ???êy?a%d\n',t); fprintf('Aμ?DDêyoíáDêy·?±e?a%d£?%d\n',m,n); fprintf('A?÷?a???Dμ?×?′ó?μ?a%d\n',max); 24:请设计一个程序,程序完成下列功能: (1) 让用户依次输入两个字符串s1和s2; (2) 比较两个字符串的长度并显示比较结果; (3) 判断s1与s2有没有长度在3个字符以上的相同子串,显示判断结果。function f=title24() s1=input('??ê?è?×?·?′?s1: '); s2=input('??ê?è?×?·?′?s2: '); m=length(s1);n=length(s2); t=m;kk=0; if m>n t=n; disp('s1μ?3¤?è′óóús2μ?3¤?è.'); elseif m disp('s1μ?3¤?èD?óús2μ?3¤?è.'); else disp('s1μ?3¤?èμèóús2μ?3¤?è.'); 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 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 for i=1:kk fprintf('μú%d???àí?×?·?′?£o',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); 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); 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); 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); 的可视化图形 27:绘制三元函数2 2z 2 + = y x w+ 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 28:绘制 ) ln() 1(),(2 1y x x y x f z --==-的图象 [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;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) 30:试完成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; 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));