当前位置:文档之家› MATLAB实习报告

MATLAB实习报告

MATLAB实习报告
MATLAB实习报告

1.求f(x)=4x6-x+x3-95在(0,100)上最大值、最小值,根。(使用函数fminbnd、roots)。程序:

syms x

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=[4 0 0 1 0 -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=an 2+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.请用梯形法、辛普森法分别计算积分值

?++1021dx x x (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.计算二重积分??+++++102

022)12(dxdy y x xy y x (使用函数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=[1 2 3;4 5 6;7 8 9];

[L U]=lu(a)

[Q R]=qr(a)

[X D]=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))

if det(A)~=0

x=A\B

X=inv(A)*B

else

C=B;

D=[A C]

rref(B)

end

结果:

A =

47 44 41 46

11 38 22 36

30 22 30 8

24 0 39 20

B =

46

45

20

44

x =

-0.8583

0.0430

1.3169

0.6621

X =

-0.8583

0.0430

1.3169

0.6621

9.)1(5)25.1/()8.0()(323x

x x x x x f +

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

程序:

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)的定义如下:

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 y=hs(x)

x=input('请输入x值: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

结果:

请输入x值:x=5.6

ans =

9.3600

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

程序:

n=1;

while prod(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 是纯量或是向量的两种情况。

程序:

function y=myfun(x)

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

end

结果:

myfun([2,3])

ans =

-2.6633 0.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) 的计算时间。如果你不知道如何使用这两个指令,请使用help tic 及help toc 来查出它们的用法。我的计算机是Pentium-450,所得的计算时间约为2 秒。请说明你的计算机规格以及其计算时间。

程序:

function f=pifun(n)

tic

y=0;

for i=0:n

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

end

f=4*y;

toc

t=toc

end

结果:

pifun(100000)

Elapsed time is 0.006173 seconds.

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.

程序:

function a=fibo(n)

if n==1

a=0;

elseif n==2

a=[0 1];

else b=fibo(n-1);

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

end

end

结果:

fibo(6)

ans =

0 1 1 2 3 5

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

1) ()2123222118294x x x x x X f +-++=;

2) ()21212221222

3x x x x x x X f -+-+=; 3) ()()224121+-=x X f . 第1),2)题的初始点可任意选取,

第3)题的初始点取为()T X 1,00=.

程序:

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

相关主题
文本预览
相关文档 最新文档