Matlab上机实验答案.docx

上传人:b****0 文档编号:18178528 上传时间:2023-08-13 格式:DOCX 页数:41 大小:202.41KB
下载 相关 举报
Matlab上机实验答案.docx_第1页
第1页 / 共41页
Matlab上机实验答案.docx_第2页
第2页 / 共41页
Matlab上机实验答案.docx_第3页
第3页 / 共41页
Matlab上机实验答案.docx_第4页
第4页 / 共41页
Matlab上机实验答案.docx_第5页
第5页 / 共41页
Matlab上机实验答案.docx_第6页
第6页 / 共41页
Matlab上机实验答案.docx_第7页
第7页 / 共41页
Matlab上机实验答案.docx_第8页
第8页 / 共41页
Matlab上机实验答案.docx_第9页
第9页 / 共41页
Matlab上机实验答案.docx_第10页
第10页 / 共41页
Matlab上机实验答案.docx_第11页
第11页 / 共41页
Matlab上机实验答案.docx_第12页
第12页 / 共41页
Matlab上机实验答案.docx_第13页
第13页 / 共41页
Matlab上机实验答案.docx_第14页
第14页 / 共41页
Matlab上机实验答案.docx_第15页
第15页 / 共41页
Matlab上机实验答案.docx_第16页
第16页 / 共41页
Matlab上机实验答案.docx_第17页
第17页 / 共41页
Matlab上机实验答案.docx_第18页
第18页 / 共41页
Matlab上机实验答案.docx_第19页
第19页 / 共41页
Matlab上机实验答案.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Matlab上机实验答案.docx

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

Matlab上机实验答案.docx

Matlab上机实验答案

Matlab上机实验答案

实验一MATLAB运算基础

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

(1)

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

(2))

z1=

(2)

,其中

>>x=[21+2i;5];

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

z2=

-+

+-

(3)

>>a=:

:

;

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

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

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

z3=

Columns1through5

+++++

Columns6through10

+++++

Columns11through15

+++++

Columns16through20

+++++

Columns21through25

+++++

Columns26through30

+++++

Columns31through35

+++++

Columns36through40

+++++

Columns41through45

+++++

Columns46through50

+++++

Columns51through55

+++++

Columns56through60

+++++

Column61

+

(4)

,其中t=0:

:

>>t=0:

:

;

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

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=

>>B\A

ans=

(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=

00

00

00

0000

0000

>>A^2

ans=

00

00

00

0000

0000

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

ans=

00

00

00

0000

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=

>>P=pascal(5)

P=

11111

12345

1361015

14102035

15153570

>>Hh=det(H)

Hh=

>>Hp=det(P)

Hp=

1

>>Th=cond(H)

Th=

+05

>>Tp=cond(P)

Tp=

+03

答:

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

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

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

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

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

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

>>A=rand(5)

A=

>>det(A)

ans=

>>trace(A)

ans=

>>rank(A)

ans=

5

>>norm(A)

ans=

4.已知

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

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

A=

-29618

20512

-885

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

V=

 

D=

00

00

00

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

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

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

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

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

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

(1)求方程的解。

(2)将方程右边向量元素b3改为再求解,并比较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=[;;]

b=

>>X=A\b

X=

>>b2=[;;]

b2=

>>X2=A\b2

X2=

>>D=cond(A)

D=

+03

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

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

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

实验三选择结构程序设计

1.求分段函数的值。

用if语句实现,分别输出x=,,,,,,时的y值。

程序设计:

clear;

x=[];

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=

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

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=

n=3

n=

3

B=

实验四循环结构程序设计

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=

 

result=

 

result=

程序设计

(二):

clear;

forn=[100,1000,10000]

x=1:

n;

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

end

运行结果:

result=

 

result=

 

result=

 

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=

 

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=,迭代次数不超过500次。

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

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

程序设计:

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=

 

r1=

 

r2=

a=8

b=3

x1=

 

r1=

 

r2=

a=10

b=

x1=

 

r1=

 

r2=

4.已知

求f1~f100中:

(1)最大值、最小值、各数之和。

(2)正数、零、负数的个数。

程序设计:

clear;

f1=1;f2=0;f3=1;

f=[f1,f2,f3];

forn=4:

100

f4=f3-2*f2+f1;

f=[ff4];

f1=f2;

f2=f3;

f3=f4;

end

maxf=max(f)

minf=min(f)

sumf=sum(f)

positivenum=length(find(f>0))

negtivenum=length(find(f<0))

zeronum=length(find(f==0))

运行结果:

maxf=

+11

 

minf=

+11

 

sumf=

+11

 

positivenum=

49

 

negtivenum=

49

 

zeronum=

2

5.若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数。

例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。

求[2,50]区间内:

(1)亲密数对的对数。

(2)与上述亲密数对对应的所有亲密素数之和。

程序设计

(一):

clear

pair=[];

form=2:

49

f=(m+1)*m-1;

signf=0;%标记为0表示f为素数

fork=2:

sqrt(f)

if(rem(f,k)==0)

signf=1;%标记为1表示f不是素数

end

end

ifsignf==0

pair=[pair;mm+1];%亲密数对矩阵

end

end

num=size(pair);

susum=sum(pair(:

1).*pair(:

2)-1);

disp(['亲密数对的对数',num2str(num

(1))])

disp(['亲密素数之和',num2str(susum)])

运行结果:

亲密数对的对数28

亲密素数之和21066

程序设计:

clear

susum=0;num=0;

form=2:

49

f=(m+1)*m-1;

n=fix(sqrt(f));

fork=2:

n

if(rem(f,k)==0)

break;%f不是素数时跳出循环

end

end

ifk==n

num=num+1;%亲密数对个数

susum=susum+f;%亲密素数和累加

end

end

disp(['亲密数对的对数',num2str(num)])

disp(['亲密素数之和',num2str(susum)])

运行结果:

亲密数对的对数28

亲密素数之和21066

实验五函数文件

1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。

建立函数文件:

function[e,ln,s,c]=fushu(x)

e=exp(x);

ln=log(x);

s=sin(x);

c=cos(x);

建立命令文件

A=input('请输入任意一个复数A');

[a,b,c,d]=fushu(A);%调用的函数文件

a

b

c

d

运行结果:

>>fushu2

请输入任意一个复数A:

4i

a=

-

 

b=

+

 

c=

+

 

d=

2.一物理系统可用下列方程组来表示:

从键盘输入m1、m2和θ的值,求a1、a2、N1和N2的值。

其中g取,输入θ时以角度为单位。

要求:

定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文件。

建立函数文件

function[a1,a2,N1,N2]=xxfcz(m1,m2,t)

t=t*pi/180;

A=[m1*cos(t)-m1-sin(t)0;m1*sin(t)0cos(t)0;0m2-sin(t)0;00-cos(t)1];

g=;

B=[0;m1*g;0;m2*g];

X=inv(A)*B;

a1=X

(1);

a2=X

(2);

N1=X(3);

N2=X(4);

建立命令文件

clear

m1=input('请输入m1:

');

m2=input('请输入m2:

');

t=input('请输入角度t:

');

[a1,a2,N1,N2]=xxfcz(m1,m2,t);

a1

a2

N1

N2

运行结果:

>>xxfcz2

请输入m1:

5

请输入m2:

3

请输入角度t:

90

a1=

 

a2=

 

N1=

 

N2=

3.一个自然数是素数,且它的数字位置经过任意对换后仍为素数。

例如13是绝对素数。

试求所有两位绝对素数。

要求:

定义一个判断素数的函数文件。

建立判断素数的函数文件

function[x]=sushu(m)

%判断数m是否为素数

forM=2:

(m/2)

ifrem(m,M)==0

b=0;

break

else

b=1;

end

end

ifb==1

x=m;%判断数m为素数,并返回

else

x=[];%数m不为素数

end

end

建立命令文件

clear;

js=[];%初始绝对素数

form=10:

99

x=sushu(m);

ifx

x=fix(x/10)+rem(x,10)*10;

y=sushu(x);

js=[js,y];%绝对素数

else

c

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2