MATLAB实习报告.docx

上传人:b****5 文档编号:11776091 上传时间:2023-04-01 格式:DOCX 页数:32 大小:262.19KB
下载 相关 举报
MATLAB实习报告.docx_第1页
第1页 / 共32页
MATLAB实习报告.docx_第2页
第2页 / 共32页
MATLAB实习报告.docx_第3页
第3页 / 共32页
MATLAB实习报告.docx_第4页
第4页 / 共32页
MATLAB实习报告.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

MATLAB实习报告.docx

《MATLAB实习报告.docx》由会员分享,可在线阅读,更多相关《MATLAB实习报告.docx(32页珍藏版)》请在冰豆网上搜索。

MATLAB实习报告.docx

MATLAB实习报告

1.求f(x)=4x6-x+x3-95在(0,100)上最大值、最小值,根。

(使用函数fminbnd、roots)。

程序:

symsx

f='4*x.^6+x.^3-x-95';

x1=fminbnd(f,0,100)

x2=fminbnd('-4*x.^6-x.^3+x+95',0,100)

x=x1;minf=eval(f)

x=x2;maxf=eval(f)

p=[40010-1-95];

x=roots(p)

结果:

x1=

0.4432

x2=

99.9999

minf=

-95.3258

maxf=

4.0000e+012

x=

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)。

程序:

y=dsolve('D2x=-Dx+x+1','Dx(0)=0,x(0)=0')

结果:

y=

exp(1/2*(5^(1/2)-1)*t)*(1/10*5^(1/2)+1/2)+exp(-1/2*(5^(1/2)+1)*t)*(-1/10*5^(1/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];

试求a和b的值。

程序:

n=[0,1153,2045,2800,3466,4068,4621,5135,5619,6152];

t=[0,20,40,60,80,100,120,140,160,183.5];

A=polyfit(n,t,2);

a=A

(1),b=A

(2)

结果:

a=

2.5083e-006

b=

0.0144

4.请用梯形法、辛普森法分别计算积分值

(trapz、quad)

程序:

F=(x)sqrt(x.^2+x+1);

Q=quad(F,0,1)

x=0:

0.01:

1;

y=sqrt(x.^2+x+1);

q=trapz(x,y)

结果:

Q=

1.3369

q=

1.3369

5.计算二重积分

(使用函数dblquad)

程序:

F=(x,y)x.^2+y.^2+x*y+2*x+y+1;

Q=dblquad(F,0,2,0,1)

结果:

Q=

11.3333

 

6.矩阵M=[1,2,6;4,2,7;8,9,3],求M的LU分解,QR分解,对角阵,特征值分解。

(使用函数lu、qr、shol、eig)

程序:

A=[123;456;789];

[LU]=lu(a)

[QR]=qr(a)

[XD]=eig(a)

结果:

L=

1

U=

2.5083e-006

Q=

1

R=

2.5083e-006

X=

1

D=

2.5083e-006

7.a=3,A=4,b=a2,B=b2-1,c=a+A-2B,C=a+B+2c,求C。

(使用函数solve)

程序:

D=solve('a=3,A=4','b=a^2','B=b^2-1','c=a+A-2*B','C=a+B+2*c');

C=D.C

结果:

C=

-223

8.用两种方法求解Ax=b的解。

(A为四阶随机矩阵,b为四阶向量,自己创建)。

程序:

A=fix(50*rand(4))

B=fix(50*rand(4,1))

ifdet(A)~=0

x=A\B

X=inv(A)*B

else

C=B;

D=[AC]

rref(B)

end

结果:

A=

47444146

11382236

3022308

2403920

B=

46

45

20

44

x=

-0.8583

0.0430

1.3169

0.6621

X=

-0.8583

0.0430

1.3169

0.6621

9.

,用两种方法求函数的根,并求其极值与零点。

程序:

y1='x.^3+(x-0.8).^2/(x+1.25).^3-5*(x+1/x)';

ezplot(y1,[-100,100])

[xmin,ymin]=fminbnd(y1,0,60);

ymin

y2='-x.^3-(x-0.8).^2/(x+1.25).^3+5*(x+1/x)';

[xmax,y]=fminbnd(y2,-50,-20);

ymax=-y

结果:

ymin=

-1.1489e+005

ymax=

-7.8999e+003

10、f(x)的定义如下:

,写一个matlab函数func1实现该函数。

程序:

functiony=hs(x)

x=input('请输入x值:

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

结果:

请输入x值:

x=5.6

ans=

9.3600

11、写一个MATLAB小程序,求出最小的n值,使得n!

>realmax。

程序:

n=1;

whileprod(1:

n)<=realmax

n=n+1;

end

n

结果:

n=

171

12、写一个MATLAB函式myfun.m来计算下列方程式:

y=0.5*exp(x/3)-x*x*sin(x)

其中x是函式的输入,y是函式的输出。

你的函式必须能够处理当x是纯量或是向量的两种情况。

程序:

functiony=myfun(x)

y=0.5*exp(x./3)-x.*x.*sin(x);

end

结果:

myfun([2,3])

ans=

-2.66330.0891

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=pifun(n)

tic

y=0;

fori=0:

n

y=y+(-1)^(i)*1/(2*i+1);

end

f=4*y;

toc

t=toc

end

结果:

pifun(100000)

Elapsedtimeis0.006173seconds.

t=

0.0062

ans=

3.1416

14、写一个MATLAB的递归函式fibo.m来计算Fibonacci数列,其定义如下:

fibo(n+2)=fibo(n+1)+fibo(n)

此数列的启始条件如下:

fibo

(1)=0,fibo

(2)=1.

程序:

functiona=fibo(n)

ifn==1

a=0;

elseifn==2

a=[01];

elseb=fibo(n-1);

a=[b,b(end-1)+b(end)];

end

end

结果:

fibo(6)

ans=

011235

15.求下列函数的极小点:

1)

2)

3)

.

第1),2)题的初始点可任意选取,

第3)题的初始点取为

.

程序:

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])

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])

f='(x

(1)-1)^4+x

(2)^2';

[x,fm]=fminsearch(f,[0,1])

结果:

x=

1.0000-2.25000.0000

fm=

-21.2500

x=

0.50001.0000

fm=

-0.7500

x=

1.0000-0.0000

fm=

4.2415e-017

 

16. 解线性方程组

并求系数矩阵的行列式。

程序:

A=[51-10;103-1;-1-105;0024];

b=[123-1];

x=A\b'

det(A)

结果:

x=

1.4000

-5.9000

0.1000

-0.3000

ans=

70

 

17.设f(x,y)=4sin(x3y),求

程序:

symsxy

f=4*sin(x.^3*y);

y1=diff(f,x);

y2=diff(y1,y);

x=2;y=3;eval(y2)

 

结果:

ans=

1.0636e+003

 

 

18.求方程3x4+4x3-20x+5=0的所有解。

 

程序:

symsx;

p=sym2poly(3*(x.^4)+4*(x.^3)-20*x+5);

x=roots(p)

结果:

x=

-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;

fork=1:

3000

x(k+1)=1+y(k)-1.4*x(k)^2;y(k+1)=0.3*x(k);

end

plot(x(1001:

3001),y(1001:

3001),'.');

结果:

 

20.某公司投资2000万元建成一条生产线。

投产后,在时刻t的追加成本和追加收益分别为G(t)=

(百万元/年),H(t)=

(百万元/年)。

试确定该生产线在合适何时停产可获最大利润?

最大利润是多少?

要求:

写出数学模型、M函数(如果需要的话)、运算命令和计算结果。

 

程序:

fplot('18-t^(2/3)',[0,20]);gridon;holdon;

fplot('5+t+2*t^(2/3)',[0,20],'r');holdoff;

[t,f,h]=fsolve('18-x^(2/3)-5-x-2*x^(2/3)',4)

t=linspace(0,t,100);y=18-t.^(2/3)-5-t-2*t.^(2/3);

trapz(t,y)-20

 

结果:

t=

4.6465

f=

1.1458e-013

h=

1

ans=

6.3232

21.一幢楼房的后面是一个很大的花园。

在花园中紧靠着楼房建有一个温室,温室高10英尺,延伸进花园7尺。

清洁工要打扫温室上方的楼房的窗户。

他只有借助于梯子,一头放在花园中,一头靠在楼房的墙上,攀援上去进行工作。

他只有一架20米长的梯子,你认为他能否成功?

能满足要求的梯子的最小长度是多少?

步骤:

1.先进行问题分析,明确问题;

2.建立模型,并运用Matlab函数求解;

3.对结果进行分析说明;

4.设计程序画出图形,对问题进行直观的分析和了解(主要用画线函数plot,line)

程序:

symsx

a=7;

b=10;

L=a/cos(x)+b/sin(x);

L1=diff(L,'x')

s=solve([char(L1),'=0'],'x')

vpa(s)

x=0.8447,Lmin=eval(L)

结果:

L1=

7/cos(x)^2*sin(x)-10/sin(x)^2*cos(x)

s=

atan(1/7*490^(1/3))

-atan(1/14*490^(1/3)-1/14*i*3^(1/2)*490^(1/3))

-atan(1/14*490^(1/3)+1/14*i*3^(1/2)*490^(1/3))

ans=

.0082

-.7521+.5832*i

-.7521-.5832*i

x=

0.8447

 

Lmin=

23.9159

22.某大学青年教师从31岁开始建立自己的养老基金,他把已有的积蓄10000元也一次性地存入,已知月利率为0.001(以复利计),每月存入700元,试问当他60岁退休时,他的退休基金有多少?

又若,他退休后每月要从银行提取1000元,试问多少年后他的基金将用完?

程序:

functiony=tsum(interest,principal,time,acknowl,basicmoney)

tsum=0;

fori=1:

time

sum=(1+interest)^i;

tsum=tsum+sum;

end

tsum=principal*tsum+basicmoney*(1+interest)^time

i=1;

tsum1=(tsum-acknowl)*(1+interest);

while(tsum1>=1000)

tsum1=(tsum1-acknowl)*(1+interest);

i=i+1;

end

y=i/12;

end

结果:

tsum=

3.1778e+005

ans=

31.8333

29.请设计一个程序,程序完成下列功能:

(1)让用户输入一个矩阵A;

(2)在A中找出小于0的矩阵元素的位置;

(3)在A中统计出等于0的元素的个数;

(4)显示A的行数和列数;

(5)找出矩阵A各元素中的最大值(显示值,不显示元素位置)。

程序:

A=input('¾ØÕóA:

A=');

n=0;MAX=A(1,1);

[pq]=size(A);

fori=1:

p

forj=1:

q

k=A(i,j);

ifk<0

k=A(i,j),disp(i),disp(j)

end

ifk==0

n=n+1;

end

ifMAX

MAX=k;

end

end

end

n

[pq]=size(A)

MAX

结果:

矩阵A:

A=[1,0;-6,5]

k=

-6

2

1

n=

1

p=

2

 

q=

2

MAX=

5

30.请设计一个程序,程序完成下列功能:

(1)让用户依次输入两个字符串s1和s2;

(2)比较两个字符串的长度并显示比较结果;

(3)判断s1与s2有没有长度在3个字符以上的相同子串,显示判断结果。

程序:

s1=input('字符1','s');

s2=input('字符2','s');

l1=length(s1);

l2=length(s2);

ifl1==l2

disp('长度相等')

elseifl1>l2

disp('s1>s2')

else

disp('s1

end

e=strncmp(s1,s2,3);

ife==0

disp('没有')

else

disp('有')

end

结果:

字符1:

asdfgedf

字符2:

asdfwedsfger

s1

31.首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。

根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“Youwon”,同时退出游戏。

用户最多可以猜7次

程序:

N=fix(100*rand

(1))

j=0;

x=input('猜想一个数')

whilex~=N

ifx>N

disp('High')

end

ifx

disp('Low')

end

j=j+1

ifj==7

break

end

x=input('猜想一个数')

end

结果:

N=

5

请猜一个数:

15

x=

15

High

j=

1

请猜一个数:

356

x=

356

High

j=

2

请猜一个数:

1

x=

1

Low

j=

3

请猜一个数:

5

x=

5

 

32.编写程序模拟氏双缝干涉

两相干光源到接收屏上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);

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)

结果:

33.编写程序模拟光栅衍射

公式:

I=I0(sinα/α)2(sin(λβ)/sinβ)2

α=(πa/λ)sinΦ

β=(πd/λ)sinΦ

程序:

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);

结果:

 

34假设汽车系在下列各年度的人口统计如表所示

类别

大一新生

学士毕业生

年份

2004

98

94

2005

105

97

2006

121

110

试用一个二维矩阵A表示上述数据。

由上题矩阵A来算出下列各数值:

(1)汽车系在2004、2005、2006年之间的每年平均新生、毕业生人数。

(2)3年来汽车系共有多少毕业生?

(3)在哪几年,新生数目比毕业生多?

(4)三年来每年的毕业生对新生的比例平均值为何?

程序:

A=[20049894;200510597;2006121110];

m=0;n=0;k=0;

fori=1:

3

m=m+A(i,2);

n=n+A(i,3);

ifA(i,2)>A(i,3)

A(i,1)

end

k=k+A(i,3)/A(i,2);

end

average1=m/3

average2=n/3

n

k/3

结果:

ans=

2004

 

ans=

2005

 

ans=

2006

 

average1=

108

 

average2=

100.3333

 

n=

301

 

ans=

0.9307

 

35.使用randn产生一个10x10的矩阵A

(1)计算B=(A+A’)/2。

请注意,B一定是一个对称矩阵

(2)计算矩阵B的特征向量e1e2…e10(使用函数eig)

(3)验证在i不等于j的情况下,ei和ej的积必定为0

程序:

A=rand(10,10)

B=(A+A')/2

[sf]=eig(A);

S

fori=1:

10

forj=1:

10

ifi~=j

dot(f(i),f(j))

end

end

end

 

结果:

A=

Columns1through7

0.58280.20910.41540.21400.68330.45140.6085

0.42350.37980.30500.64350.21260.04390.0158

0.51550.78330.87440.32000.83920.02720.0164

0.33400.68080.01500.96010.62880.31270.1901

0.43290.46110.76800.72660.13380.01290.5869

0.22590.56780.97080.41200.20710.38400.0576

0.57980.79420.99010.74460.60720.68310.3676

0.76040.05920.78890.26790.62990.09280.6315

0.52980.60290.43870.43990.37050.03530.7176

0.64050.05030.49830.93340.57510.61240.6927

Columns8through10

0.08410.12100.2319

0.45440.45080.2393

0.44180.71590.0498

0.35330.89280.0784

0.15360.27310.6408

0.67560.25480.1909

0.69920.86560.8439

0.72750.23240.1739

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1