Matlab上机实验答案.docx

上传人:b****5 文档编号:28496477 上传时间:2023-07-15 格式:DOCX 页数:42 大小:204.62KB
下载 相关 举报
Matlab上机实验答案.docx_第1页
第1页 / 共42页
Matlab上机实验答案.docx_第2页
第2页 / 共42页
Matlab上机实验答案.docx_第3页
第3页 / 共42页
Matlab上机实验答案.docx_第4页
第4页 / 共42页
Matlab上机实验答案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

Matlab上机实验答案.docx

《Matlab上机实验答案.docx》由会员分享,可在线阅读,更多相关《Matlab上机实验答案.docx(42页珍藏版)》请在冰豆网上搜索。

Matlab上机实验答案.docx

Matlab上机实验答案

Matlab上机实验答案

实验一MATLAB运算基础

1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。

(1)

>>z1=2*sin(85*pi/180)/(1+exp

(2))

z1=

0.2375

(2)

,其中

>>x=[21+2i;-0.455];

>>z2=1/2*log(x+sqrt(1+x^2))

z2=

0.7114-0.0253i0.8968+0.3658i

0.2139+0.9343i1.1541-0.0044i

(3)

>>a=-3.0:

0.1:

3.0;

>>z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)

(>>z33=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)

可以验证z3==z33,是否都为1)

z3=

Columns1through5

0.7388+3.1416i0.7696+3.1416i0.7871+3.1416i0.7913+3.1416i0.7822+3.1416i

Columns6through10

0.7602+3.1416i0.7254+3.1416i0.6784+3.1416i0.6196+3.1416i0.5496+3.1416i

Columns11through15

0.4688+3.1416i0.3780+3.1416i0.2775+3.1416i0.1680+3.1416i0.0497+3.1416i

Columns16through20

-0.0771+3.1416i-0.2124+3.1416i-0.3566+3.1416i-0.5104+3.1416i-0.6752+3.1416i

Columns21through25

-0.8536+3.1416i-1.0497+3.1416i-1.2701+3.1416i-1.5271+3.1416i-1.8436+3.1416i

Columns26through30

-2.2727+3.1416i-2.9837+3.1416i-37.0245+0.0000i-3.0017+0.0000i-2.3085+0.0000i

Columns31through35

-1.8971+0.0000i-1.5978+0.0000i-1.3575+0.0000i-1.1531+0.0000i-0.9723+0.0000i

Columns36through40

-0.8083+0.0000i-0.6567+0.0000i-0.5151+0.0000i-0.3819+0.0000i-0.2561+0.0000i

Columns41through45

-0.1374+0.0000i-0.0255+0.0000i0.0792+0.0000i0.1766+0.0000i0.2663+0.0000i

Columns46through50

0.3478+0.0000i0.4206+0.0000i0.4841+0.0000i0.5379+0.0000i0.5815+0.0000i

Columns51through55

0.6145+0.0000i0.6366+0.0000i0.6474+0.0000i0.6470+0.0000i0.6351+0.0000i

Columns56through60

0.6119+0.0000i0.5777+0.0000i0.5327+0.0000i0.4774+0.0000i0.4126+0.0000i

Column61

0.3388+0.0000i

(4)

,其中t=0:

0.5:

2.5

>>t=0:

0.5:

2.5;

>>z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^2-2.*t+1)

z4=

00.250001.25001.00002.2500

2.已知:

求下列表达式的值:

(1)A+6*B和A-B+I(其中I为单位矩阵)

(2)A*B和A.*B

(3)A^3和A.^3

(4)A/B及B\A

(5)[A,B]和[A([1,3],:

);B^2]

>>A=[1234-4;34787;3657];

>>B=[13-1;203;3-27];

>>A+6*B

ans=

1852-10

467105

215349

>>I=eye(3);

>>A-B+I

ans=

1231-3

32884

0671

(2)

>>A*B

ans=

684462

309-72596

154-5241

>>A.*B

ans=

121024

680261

9-13049

(3)

>>A^3

ans=

3722623382448604

247370149188600766

78688454142118820

>>A.^3

ans=

172839304-64

39304343658503

27274625343

(4)

>>A/B

ans=

16.4000-13.60007.6000

35.8000-76.200050.2000

67.0000-134.000068.0000

>>B\A

ans=

109.4000-131.2000322.8000

-53.000085.0000-171.0000

-61.600089.8000-186.2000

(5)

>>[A,B]

ans=

1234-413-1

34787203

36573-27

>>[A([1,3],:

);B^2]

ans=

1234-4

3657

451

11019

20-540

3.设有矩阵A和B

(1)求它们的乘积C。

(2)将矩阵C的右下角3×2子矩阵赋给D。

(3)查看MATLAB工作空间的使用情况。

>>A=(reshape(1:

25,5,5))';

>>B=[3016;17-69;023-4;970;41311];

>>C=A*B

C=

9315077

258335237

423520397

588705557

753890717

>>D=C(3:

5,2:

3)

D=

520397

705557

890717

>>whos

NameSizeBytesClassAttributes

A5x5200double

B5x3120double

C5x3120double

D3x248double

4.完成下列操作:

(1)求[100,999]之间能被21整除的数的个数。

(2)建立一个字符串向量,删除其中的大写字母。

>>n=100:

999;

>>l=find(rem(n,21)==0);

>>length(l)

ans=

43

>>ch='aegbBOIEG0je23RGnc';

>>wz=find(ch>='A'&ch<='Z');

>>ch(wz)=[]

ch=

aegb0je23nc

实验二MATLAB矩阵分析与处理

1.设有分块矩阵

,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证

>>E=eye(3);

>>R=rand(3,2);

>>O=zeros(2,3);

>>S=diag(1:

2);

>>A=[E,R;O,S]

A=

1.0000000.81470.9134

01.000000.90580.6324

001.00000.12700.0975

0001.00000

00002.0000

>>A^2

ans=

1.0000001.62942.7401

01.000001.81161.8971

001.00000.25400.2926

0001.00000

00004.0000

>>[E,R+R*S;O,S^2]

ans=

1.0000001.62942.7401

01.000001.81161.8971

001.00000.25400.2926

0001.00000

00004.0000

>>A^2==[E,R+R*S;O,S^2]

ans=

11111

11111

11111

11111

11111

通过验证,矩阵

成立。

2.产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th和Tp,判断哪个矩阵性能更好。

为什么?

>>H=hilb(5)

H=

1.00000.50000.33330.25000.2000

0.50000.33330.25000.20000.1667

0.33330.25000.20000.16670.1429

0.25000.20000.16670.14290.1250

0.20000.16670.14290.12500.1111

>>P=pascal(5)

P=

11111

12345

1361015

14102035

15153570

>>Hh=det(H)

Hh=

3.7493e-12

>>Hp=det(P)

Hp=

1

>>Th=cond(H)

Th=

4.7661e+05

>>Tp=cond(P)

Tp=

8.5175e+03

答:

5阶帕斯卡矩阵P的性能好。

矩阵的性能是由条件数决定的,条件数越接近于1其性能就越好。

由上机操作求得Th=4.7661e+005,Tp=8.5175e+003。

Tp的值更接近于1则其性能要好。

所以5阶帕斯卡矩阵P的性能好。

3.建立一个5×5矩阵,求它的行列式值、迹、秩和范数。

>>A=rand(5)

A=

0.27850.97060.42180.03570.7431

0.54690.95720.91570.84910.3922

0.95750.48540.79220.93400.6555

0.96490.80030.95950.67870.1712

0.15760.14190.65570.75770.7060

>>det(A)

ans=

-0.1322

>>trace(A)

ans=

3.4127

>>rank(A)

ans=

5

>>norm(A)

ans=

3.2759

4.已知

求A的特征值及特征向量,并分析其数学意义。

>>A=[-29,6,18;20,5,12;-8,8,5]

A=

-29618

20512

-885

>>[V,D]=eig(A)

V=

0.71300.28030.2733

-0.6084-0.78670.8725

0.34870.55010.4050

 

D=

-25.316900

0-10.51820

0016.8351

在数学上,特别是线性代数中,对于一个给定的线性变换,它的特征向量(本征向量或称正规正交向量)是这样一个非零的向量v:

当v经过这个线性变换的作用之后,得到的新向量(长度也许改变)仍然与原来的v保持在同一条线上。

一个特征向量的长度在该线性变换下缩放的比例称为其特征值(本征值)。

如果特征值为正,则表示v在经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为0,则是表示缩回零点。

但无论怎样,仍在同一条直线上。

5.下面是一个线性方程组:

(1)求方程的解。

(2)将方程右边向量元素b3改为0.53再求解,并比较b3的变化和解的相对变化。

(3)计算系数矩阵A的条件数并分析结论。

>>formatrat%用分数格式显示

>>A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]

A=

1/21/31/4

1/31/41/5

1/41/51/6

>>format%恢复默认格式

>>b=[0.95;0.67;0.52]

b=

0.9500

0.6700

0.5200

>>X=A\b

X=

1.2000

0.6000

0.6000

>>b2=[0.95;0.67;0.53]

b2=

0.9500

0.6700

0.5300

>>X2=A\b2

X2=

3.0000

-6.6000

6.6000

>>D=cond(A)

D=

1.3533e+03

矩阵的条件数决定矩阵的性能,条件数越接近于1其性能越好,系数矩阵A的条件数为1.3533e+003,和1相差很大,则其性能不好。

因此b矩阵个别元素的微小变动,对方程的解(X值)影响很大。

6.建立A矩阵,试比较sqrtm(A)和sqrt(A),分析它们的区别。

实验三选择结构程序设计

1.求分段函数的值。

用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。

程序设计:

clear;

x=[-5.0-3.01.02.02.53.05.0];

ifx<0&x~=-3

y=x.^2+x-6;

elseifx>=0&x<5&x~=2&x~=3

y=x.^2-5*x+6;

else

y=x.^2-x-1;

end

y

运行结果:

y=

29.000011.0000-1.00001.00002.75005.000019.0000

2.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。

其中90分~100分为A,80分~89分为B,79分~79分为C,60分~69分为D,60分以下为E。

要求:

(1)分别用if语句和switch语句实现。

程序设计:

(一)用if语句

clear;

score=input('请输入百分制成绩:

');

a=fix(score/10);

ifa==9|a==10

grade='A';

elseifa==8

grade='B';

elseifa==7

grade='C';

elseifa==6

grade='D';

else

grade='E';

end

grade

(二)用if语句

clear;

score=input('请输入百分制成绩:

');

ifscore>=90&score<=100

grade='A';

elseifscore>=80&score<90

grade='B';

elseifscore>=70&score<80

grade='C';

elseifscore>=60&score<70

grade='D';

else

grade='E';

end

grade

(三)用switch语句

clear;

score=input('请输入百分制成绩:

');

switchfix(score/10)

case{9,10}

grade='A';

case8

grade='B';

case7

grade='C';

case6

grade='D';

otherwise

grade='E';

end

grade

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

clear;

score=input('请输入百分制成绩:

');

ifscore>=0&score<=100%判断成绩合理性

switchfix(score/10)

case{9,10}

grade='A';

case8

grade='B';

case7

grade='C';

case6

grade='D';

otherwise

grade='E';

end

grade

else

disp('error')%成绩不合理时输出出错信息

end

 

3.硅谷公司员工的工资计算方法如下:

(1)工作时数超过120小时者,超过部分加发15%。

(2)工作时数低于60小时者,扣发700元。

(3)其余按每小时84元计发。

试编程按输入的工号和该号员工的工时数,计算应发工资。

程序设计:

clear;

num=input('请输入员工工号:

');

time=input('请输入员工工时数:

');

iftime<60

wages=time*84-700;

elseiftime>120

wages=84*120+(time-120)*84*(1+0.15);

else

wages=time*84;

end

disp=(['员工工号:

'num2str(num)'应发工资:

'num2str(wages)])

运行结果:

请输入员工工号:

4

请输入员工工时数:

35

disp=

员工工号:

4应发工资:

2240

4.设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。

解:

程序设计:

clear;

a=floor(rand

(1)*90+10)

b=floor(rand

(1)*90+10)

c=input('请输入运算符号:

','s');

ifc=='+'

s=a+b

elseifc=='-'

s=a-b

elseifc=='*'

s=a*b

elseifc=='\'

s=a\b

else

disp('error')

end

运行结果:

a=

30

b=

77

请输入运算符号:

-

s=

-47

5.建立5×6矩阵,要求输出矩阵第n行元素。

当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。

程序设计:

clear;

A=rand(5,6)

n=input('n=?

')

ifn>=1&n<=5

B=A(n,1:

6);

else

disp('erro!

')

B=A(5,1:

6);

end

B

运行结果:

A=

0.77920.01190.52850.68920.91330.0782

0.93400.33710.16560.74820.15240.4427

0.12990.16220.60200.45050.82580.1067

0.56880.79430.26300.08380.53830.9619

0.46940.31120.65410.22900.99610.0046

n=?

3

n=

3

B=

0.12990.16220.60200.45050.82580.1067

实验四循环结构程序设计

1.根据

,求π的近似值。

当n分别取100、1000、10000时,结果是多少?

要求:

分别用循环结构和向量运算(使用sum函数)来实现。

程序设计

(一):

clear;

forn=[100,1000,10000]

sum=0;

forx=1:

n

sum=sum+1/(x.^2);

end

result=sqrt(6*sum)

end

运行结果:

result=

3.1321

 

result=

3.1406

 

result=

3.1415

程序设计

(二):

clear;

forn=[100,1000,10000]

x=1:

n;

result=sqrt(6*sum(1./x./x))

end

运行结果:

result=

3.1321

 

result=

3.1406

 

result=

3.1415

2.根据

,求:

(1)y<3时的最大n值。

(2)与

(1)的n值对应的y值。

程序设计:

y=0;n=1;

whiley<3

y=y+1/(2*n-1);

n=n+1;

end

n=n-1;

y=y-1/(2*n-1)

n=n-1

运行结果:

y=

2.9944

 

n=

56

%验证n=56时的y值

clearall;clc;

n=56;

i=1:

n;

f=1./(2*i-1);

y=sum(f)

3.考虑以下迭代公式:

其中a、b为正的学数。

(1)编写程序求迭代的结果,迭代的终止条件为|xn+1-xn|≤10-5,迭代初值x0=1.0,迭代次数不超过500次。

(2)如果迭代过程收敛于r,那么r的准确值是

,当(a,b)的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。

程序设计:

clear;

a=input('a=?

');

b=input('b=?

');

x0=1;

x1=a/(b+x0);

y=abs(x1-x0);

n=1;

whiley>10^(-5)&n<=499

x0=x1;

x1=a/(b+x0);

y=abs(x1-x0);

n=n+1;

end

x1

%比较收敛准确值和迭代结果

r1=(-b+sqrt(b^2+4*a))/2

r2=(-b-sqrt(b^2+4*a))/2

运行结果:

a=?

1

b=?

1

x1=

0.6180

 

r1=

0.6180

 

r2=

-1.6180

a=?

8

b=?

3

x1=

1.7016

 

r1=

1.7016

 

r2=

-4.7016

a=?

10

b=?

0.1

x1=

3.1127

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

当前位置:首页 > 自然科学 > 物理

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

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