MATLAB程序设计与应用.docx

上传人:b****1 文档编号:22981505 上传时间:2023-04-29 格式:DOCX 页数:65 大小:189.31KB
下载 相关 举报
MATLAB程序设计与应用.docx_第1页
第1页 / 共65页
MATLAB程序设计与应用.docx_第2页
第2页 / 共65页
MATLAB程序设计与应用.docx_第3页
第3页 / 共65页
MATLAB程序设计与应用.docx_第4页
第4页 / 共65页
MATLAB程序设计与应用.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

MATLAB程序设计与应用.docx

《MATLAB程序设计与应用.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计与应用.docx(65页珍藏版)》请在冰豆网上搜索。

MATLAB程序设计与应用.docx

MATLAB程序设计与应用

实验一MATLAB运算基础

第二题:

已知

A=

B=

求下列问题:

1)A+6*B和A-B+I

2)A*B和A.*B

3)A^3A.^3

4)A/BB\A

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

B.^2]

解:

>>A=[1234-4;34787;3657];B=[13-1;203;3-27];I=[100;010;001];

(1)

>>A+6*B

ans=

1852-10

467105

215349

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

第三题:

设有矩阵A和B

A=

B=

1)求他们的乘积C

2)将矩阵C的右下角3*2子矩阵赋给D

3)查看matlab工作空间的使用情况

解:

>>A=[12345;678910;1112131415;1617181920;2122232425];B=[3016;17-69;023-4;970;41311];

(1)

>>C=A*B

C=

9315077

258335237

423520397

588705557

753890717

(2)

>>D=C(3:

5,2:

3)

D=

520397

705557

890717

第四题:

完成下列操作:

1)求【100,999】之间能被21的数的个数

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

解:

(1)

>>A=100:

999;

>>B=rem(A,21);

>>C=length(find(B==0))

C=

43

(2)

>>A='lsdhKSDLKklsdkl';

>>k=find(A>='A'&A<='Z');

>>A(k)=[]

A=

Lsdhklsdkl

 

实验二MATLAB矩阵分析与处理

第三题:

建立一个5

5矩阵,求它的行列式的值,迹,秩,和数。

解:

>>A=[18947;458926170;958523136;7565705463;572619112];

>>H=det(A)

H=

13739916

>>Trace=trace(A)

Trace=

169

>>Rank=rank(A)

Rank=

5

>>Norm=norm(A)

Norm=

218.5530

第四题:

已知

A=

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

解:

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

第五题:

下面是一个线性方程组:

(1)求方程的解。

(2)将方程右边向量元素

改为0.53,再求解,并比较

的变化和解的相对变化。

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

解:

(1)

>>A=[1/21/31/4;1/31/41/5;1/41/51/6];

>>b=[0.95,0.67,0.52]';

>>x=inv(A)*b

x=

1.2000

0.6000

0.6000

(2)

>>B=[0.95,0.67,0.53]';

>>x=inv(A)*B

x=

3.0000

-6.6000

6.6000

(3)

>>cond(A)

ans=

1.3533e+003

 

实验三选择程序结构设计

第一题:

求分段函数的值

Y=

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

解:

>>x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];

>>y=[];

>>forx0=x

ifx0<0&x0~=-3

y=[y,x0*x0+x0-6];

elseifx0>=0&x0<5&x0~=2&x0~=3

y=[y,x0*x0-5*x0+6];

else

y=[y,x0*x0-x0-1];

end

end

>>x

x=

-5.0000-3.00001.00002.00002.50003.00005.0000

>>y

y=

14.000011.00002.00001.0000-0.25005.000019.0000

第二题:

输入一个百分制的成绩,要求输出成绩等级ABCDE。

其中90~80为A,80~89为B,70~79为C,60~69为D60以下为E

要求

1)分别写入if语句和switch语句实现

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

解:

>>x=input('请输入一个百分制成绩:

');

请输入一个百分制成绩:

>>ifx>100|x<0

disp('您输入的成绩不是百分制成绩,请重新输入。

');

else

ifx<=100&x>=90

disp('A');

elseifx<=89&x>=80

disp('B');

elseifx<=79&x>=70

disp('C');

elseifx<=69&x>60

disp('D');

else

disp('E');

end

end

第三题:

硅谷公司员工的工资计算方法为

1)工作时间超过120小时者,超过的部分加15%

2)工作时数低于60小时的,扣发700元

3)其余按每小时84元

解:

>>n=input('请输入员工工号:

');

请输入员工工号:

>>h=input('该员工工作时数是:

');

该员工工作时数是:

>>ifh>120

x=(h-120)*84*(1+0.15)+120*84;

elseifh<60

x=h*84-700;

else

x=h*84;

end

disp([num2str(n),'号员工','的应发工资为',num2str(x)]);

号员工的应发工资为

第四题:

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

解:

>>a=fix(10+(99-10)*rand(1,2))

x=a

(1);

y=a

(2);

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

','s');

ift=='+'

z=x+y;

elseift=='-'

z=x-y;

elseift=='*'

z=x*y;

elseift=='/'

z=x/y;

end

disp([num2str(x),t,num2str(y),'=',num2str(z)])

a=

8122

请输入运算符号:

第五题:

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

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

解:

>>a=rand(5,6);

>>n=input('请输入您要输出矩阵的第几行:

');

请输入您要输出矩阵的第几行:

>>ifn>5

disp('超出了矩阵的行数,矩阵的最后一行为:

')

a(5,:

else

disp(['矩阵的第',num2str(n),'行为:

'])

a(n,:

end

矩阵的第行为:

ans=

Emptymatrix:

0-by-6

 

实验四循环结构程序设计

第一题:

根据公式

,求

的近似值。

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

(要:

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

解:

>>s=0;

>>n=100;

>>fori=1:

n

s=s+1/i/i;

end

PI=sqrt(6*s)

pi

PI=

3.1321

>>s=0;

>>n=1000;

>>fori=1:

n

s=s+1/i/i;

end

PI=sqrt(6*s)

pi

PI=

3.1406

>>s=0;

>>n=10000;

>>fori=1:

n

s=s+1/i/i;

end

PI=sqrt(6*s)

pi

PI=

3.1415

第二题:

根据

,求:

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

(2)与

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

解:

>>y=0;

>>n=1;

>>while(y<3)

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

n=n+1;

end

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

n=n-2

y=

2.9944

 

n=

56

第三题:

考虑以下迭代公式:

其中a,b为正的常数。

(1)编写程序求迭代的结果,迭代的终止条件为

,迭代初值

=1.0,迭代次数不超过500次。

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

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

解:

>>a=input('a=?

');

a=?

>>b=input('b=?

');

b=?

>>Xn=1;

Xn1=a/(b+Xn);

n=0;

whileabs(Xn1-Xn)>1e-5

Xn=Xn1;

Xn1=a/(b+Xn);

n=n+1;

ifn==500

break;

end

end

n

Xn1

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

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

n=

0

 

Xn1=

[]

 

r1=

[]

 

r2=

[]

第四题:

已知:

--

中:

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

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

解:

(1)

>>fori=1:

100

ifi==1

f(i)=1;

elseifi==2

f(i)=0;

elseifi==3

f(i)=1;

else

f(i)=f(i-1)-2*f(i-2)+f(i-3);

end

end

>>max(f)

ans=

4.3776e+011

>>min(f)

ans=

-8.9941e+011

>>sum(f)

ans=

-7.4275e+011

(2)

>>length(find(f>0))

ans=

49

>>length(find(f==0))

ans=

2

>>length(find(f<0))

ans=

49

第五题:

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

例如,2

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

求{2,50}区间:

(1)亲密数对的对数。

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

解:

>>s=0;n=0;

>>fori=2:

49

b=i*(i+1)-1;

m=fix(sqrt(b));

forj=2:

m

ifrem(b,j)==0

break

end

end

ifj==m

n=n+1;

s=s+b;

end

end

n

s

n=

28

 

s=

21066

 

实验六高层绘图操作

第二题:

已知y1=x^2,y2=cos(2x),y3=y1*y2,完成下列操作

1)在同一坐标系中的不同颜色和线型绘制三条曲线

2)以子图像绘制三条曲线

3)分别用条形图,阶梯图,杆图和填充图绘制三条曲线

解:

(1)

>>x=linspace(-2*pi,2*pi,100);

>>y1=x.^2;

>>y2=cos(2*x);

>>y3=y1.*y2;

>>plot(x,y1,'b-',x,y2,'r:

',x,y3,'y--');

>>

>>text(4,16,'\leftarrowy1=x^2');

>>text(6*pi/4,-1,'\downarrowy2=cos(2*x)');

>>text(-1.5*pi,-2.25*pi*pi,'\uparrowy3=y1*y2');

(2):

>>x=linspace(-2*pi,2*pi,100);

>>y1=x.^2;

>>y2=cos(2*x);

>>y3=y1.*y2;

>>subplot(1,3,1);

>>plot(x,y1);

>>

>>title('y1=x^2');

>>subplot(1,3,2);

>>plot(x,y2);

>>

>>title('y2=cos(2*x)');

>>subplot(1,3,3);

>>plot(x,y3);

>>

>>title('y3=x^2*cos(2*x)');

(3)

>>x=linspace(-2*pi,2*pi,20);

>>y1=x.^2;

>>subplot(2,2,1);

>>bar(x,y1);

>>

>>title('y1=x^2的条形图');

>>subplot(2,2,2);

>>stairs(x,y1);

>>

>>title('y1=x^2的阶梯图');

>>subplot(2,2,3);

>>stem(x,y1);

>>

>>title('y1=x^2的杆图');

>>subplot(2,2,4);

>>fill(x,y1,'r');

>>

>>title('y1=x^2的填充图');

(2)

>>x=linspace(-2*pi,2*pi,20);

y2=cos(2*x);

subplot(2,2,1);

bar(x,y2);

title('y2=cos(2*x)的条形图');

subplot(2,2,2);

stairs(x,y2);

title('y2=cos(2*x)的阶梯图');

subplot(2,2,3);

stem(x,y2);

title('y2=cos(2*x)的杆图');

subplot(2,2,4);

fill(x,y2,'r');

title('y2=cos(2*x)的填充图');

(3)

>>x=linspace(-2*pi,2*pi,20);

y1=x.^2;

y2=cos(2*x);

y3=y1.*y2;

subplot(2,2,1);%分区

bar(x,y3);

title('y3=y1.*y2;的条形图');%设置标题

subplot(2,2,2);

stairs(x,y3);

title('y3=y1.*y2;的阶梯图');

subplot(2,2,3);

stem(x,y3);

title('y3=y1.*y2;的杆图');

subplot(2,2,4);

fill(x,y3,'r');%如果少了'r'则会出错

title('y3=y1.*y2;的填充图');

第三题:

已知

Y=

在-5《x《5区间绘制曲线。

解:

>>x=-5:

0.01:

5;

>>y=[];

>>forx0=x

ifx0<=0

y=[y,(x0+sqrt(pi))/exp

(2)];

else

y=[y,0.5*log(x0+sqrt(1+x0^2))];

end

end

plot(x,y)

>>

第五题:

绘制函数的曲面图形和等高线。

Z=cosxcosy

其中x的21个值均匀分布在【-5,5】围,y的31的值巨晕分布在【0,10】,要求用subplot(2,1,1)和subpolt(2,1,1)将曲面图画在一个窗口上。

解:

>>x=linspace(-5,5,21);

>>y=linspace(0,10,31);

>>[x,y]=meshgrid(x,y);

>>z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);

>>subplot(2,1,1);

>>surf(x,y,z);

>>

>>subplot(2,1,2);

>>contour3(x,y,z,50);

实验七低层绘图操作

第一题:

建立一个图形窗口,使之背景颜色为红色,并在窗口上保留原有的菜单项,而且按下列鼠标器的左键之后显示出leftbottonpressed字样

解:

>>h=figure('MenuBar','figure','color','r','WindowButtonDownFcn','disp(''LeftButtonPressed'')')

h=

1

LeftButtonPressed

 

第二题:

先利用默认属性绘制曲线y=x^2*e^2x,然后通过图形句柄操作改变曲线的颜色,线性和线宽,并利用文字对象添加文字标注。

解:

>>x=-2:

0.01:

2;

>>y=x.^2.*exp(2*x);

>>h=line(x,y);

>>

>>set(h,'color','r','linestyle',':

','linewidth',2)

>>text(1,exp

(2),'y=x^2*exp(2*x)')

实验八数据处理与多项式运算

第一题:

利用MATLAB提供的rand函数生成30000个符合均匀分布的随机数,然后检验随机数的性质:

(1)均值和标准方差。

(2)最大元素和最小元素。

(3)大于0.5的随机数个数占总数的百分比。

解:

(1)

>>A=rand(1,30000);

>>b=mean(A)

b=

0.4988

>>std(A,0,2)

ans=

0.2890

(2)

>>max(A)

ans=

1.0000

>>min(A)

ans=

4.8345e-005

(3)

>>n=0;

>>fori=1:

30000

ifA(i)>0.5

n=n+1;

end

end

>>p=n/30000

p=

0.5006

第二题:

将100个学生的5门功课的成绩存入矩阵P中,进行如下处理:

(1)分别求每门课的最高分,最低分,以及相应学生序号。

(2)分别求每门课的平均分和标准方差。

(3)5门课总分的最高分,最低分,以及相应的学生序号。

(4)将5门课总分按照从大到小的顺序存入zcj中,相应的学生序号存入xsxh。

提示:

上机调试时,为避免学生输入成绩的麻烦,可用取值围在{45,95}之间的随机矩阵来表示学生成绩。

解:

(1)

>>A=45+51*rand(100,5);

>>[Y,U]=max(A)

Y=

95.998595.965695.502095.703295.5696

 

U=

2966554769

>>[a,b]=min(A)

a=

45.242345.882845.009245.253045.6793

 

b=

368526748

(2)

>>m=mean(A)

s=std(A)

m=

70.917169.785973.535072.828871.6800

 

s=

15.137814.129615.011615.162214.8254

(3)

>>sum(A,2)

[Y,U]=max(ans)

[a,b]=min(ans)

ans=

310.9073

300.1903

381.2853

399.3692

367.1891

360.3795

353.3803

302.8869

399.8438

427.2878

336.4110

358.9261

351.2553

331.9469

413.0334

344.4165

361.9468

337.9836

340.1552

382.3467

337.6998

329.6321

290.0841

335.4717

413.6694

387.8507

348.4086

320.4340

418.2465

416.0586

371.3836

356.8309

384.2258

317.6676

351.3684

342.2732

339.9799

393.7629

401.0900

387.0595

354.1276

398.4044

369.0955

368.0804

358.5997

350.1610

384.3793

340.3847

270.1099

351.2449

390.4362

355.4126

343.7438

34

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

当前位置:首页 > 自然科学 > 天文地理

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

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