MATLAB实验题答案.docx

上传人:b****8 文档编号:30618627 上传时间:2023-08-18 格式:DOCX 页数:19 大小:76.97KB
下载 相关 举报
MATLAB实验题答案.docx_第1页
第1页 / 共19页
MATLAB实验题答案.docx_第2页
第2页 / 共19页
MATLAB实验题答案.docx_第3页
第3页 / 共19页
MATLAB实验题答案.docx_第4页
第4页 / 共19页
MATLAB实验题答案.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

MATLAB实验题答案.docx

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

MATLAB实验题答案.docx

MATLAB实验题答案

1、求以下变量的值,并在MATLAB中验证。

(1)a=1:

2:

5

a=

135

(2)b=[a',a',a';a]

b=

111

333

555

135

(3)c=a+b(2,:

c=

468

2、下列运算是否合法,为什么?

如合法,结果是多少?

>>result2=a*b

Errorusing*

Innermatrixdimensionsmustagree.

>>result3=a+b

result3=

362

5811

>>result4=b*d

result4=

312222

404913

>>result5=[b;c']*d

result5=

312222

404913

-5-87

>>result6=a.*b

result6=

28-3

41530

>>result7=a./b

result7=

0.50000.5000-3.0000

4.00001.66671.2000

>>result8=a.c

Attempttoreferencefieldofnon-structurearray.

>>result9=a.\b

result9=

2.00002.0000-0.3333

0.25000.60000.8333

>>result10=a.^2

result10=

149

162536

>>result11=2.^a

result11=

248

163264

3、用MATLAB求解下面的的方程组。

(1)

>>A=[721-2;9153-2;-2-2115;13213]

>>B=[47-10]

>>B=B'

>>x=inv(A)*B

(2)

>>A1=[1110;121-1;2-10-3;335-6]

>>B2=[1;8;3;5]

>>x2=inv(A1)*B2

4、已知

(1)求矩阵A的秩(rank)

(2)求矩阵A的行列式(determinant)

(3)求矩阵A的逆(inverse)

(4)求矩阵A的特征值及特征向量(eigenvalueandeigenvector)

>>A3=[721-2;9153-2;-2-2115;13213]

>>r=rank(A3)

>>b=inv(A3)

>>a=det(A3)

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

5、

求y=?

(运行formatlongg命令后,查看y的值)

m1=0;

form=-10:

10

m1=m1+2^m;

end

m1

m1=

2047.9990234375

6、求分段函数的值。

用if语句实现,算出下列表中x对应的y值。

x=input('enterx=');

ifx<0

y=x^2+x-6;

elseifx>=0&&x<5

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

else

y=x^2-x-1;

end

y

7、分别用if和switch语句实现,将百分制成绩转换为成绩等级A、B、C、D、E。

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

对超出百分制范围的成绩,给出错误提示信息。

if结构程序:

x=input('pleaseenterscore=');

ifx>=90&&x<=100

disp('A')

elseifx<90&&x>=80

disp('B')

elseifx<80&&x>=70

disp('C')

elseifx<70&&x>=60

disp('D')

elseifx<60&&x>=0

disp('E')

else

disp('error')

end

switch结构程序:

x=input('pleaseenterscore=');

switchfix(x/10)

case{10,9}

ifx>100

disp('error')

else

disp('A')

end

case{8}

disp('B')

case{7}

disp('C')

case{6}

disp('D')

case{0,1,2,3,4,5}

disp('E')

otherwise

disp('error')

end

8、思考题

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

x=input('请输入运算符')

a=num2str(floor(rand

(1)*90+10));

a

b=num2str(floor(rand

(1)*90+10));

b

ifx=='+'

y=a+b;

elseifx=='-'

y=a-b;

elseifx=='*'

y=a*b;

elseifx=='/'

y=a/b;

else

disp('error')

end

y

9、启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。

点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。

注:

数论中一个有趣的题目:

任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。

重复此过程,最终得到的结果为1。

n=input('请输入n值:

');

a=n;

whilen>1

ifrem(n,2)==0

n=n/2;

else

n=3*n+1;

end

a=[a,n];

end

a

10、根据

,当n分别取100、1000、10000时,求x的值分别是多少?

a=input('请输入数值')

n=0;

form=1:

100

n=n+1/(m*m);

end

n=6*n;

x=sqrt(n);

x

11、编程求满足

的最小m值。

sum=0;

m=2;

a=1;

whilea

fori=1:

m

sum=sum+2^i;

ifsum>10000

a=0;

end

end

m=m+1;

end

m

12、思考题

已知y和t的函数关系:

求下面表格中与t对应的y值

t

0.2

0.4

0.6

0.8

1.0

y

t=input('请输入t值:

')

sum=0;

fori=1:

20

b=factorial(i);

sum=sum+t^i/b;

end

sum=sum+1;

sum

13、编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。

function[y]=myfun1(x)

选择一些数据测试你编写的函数。

function[y]=myfun1(x)

ifx<=0

y=sin(x);

elseifx>0&x<=3

y=x;

elseifx>3

y=-x+6;

end

14、编写一个函数求向量x中元素的平均值、最大值、最小值、均方根值。

function[m_x,max_x,min_x,rms_x]=myfun2(x)

方均根值(RootMeanSquare)的计算公式为:

用下面数据测试你写的函数:

(1)x=sin(0:

0.01:

6*pi)

(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。

function[m_x,max_x,min_x,rms_x]=myfun2(x)%求平均值

sum_x=sum(x);%向量元素求和

[m,n]=size(x);%最好用n=length(x);

m_x=sum_x/n;

%求最大值采用逐个比较方式

ifx

(1)>x

(2)

max_x=x

(1);

else

max_x=x

(2);

end

fork=3:

n

ifmax_x

max_x=x(k);

else

max_x=max_x;%可省略

end

end

%求最小值

ifx

(1)

(2)

min_x=x

(1);

else

min_x=x

(2);

end

fork=3:

n

ifmin_x>x(k)

min_x=x(k);

else

min_x=min_x;%可省略

end

end

%求均方根值

sum_x2=0;

fork=1:

n

sum_x2=sum_x2+x(k).^2;

rms_x=sqrt(sum_x2/n);

end

m_x;

max_x;

min_x;

rms_x;%按照函数值行参顺序输出结果

15、编写一个函数,给出一个向量

,生成如下范德蒙矩阵。

function[v]=myvander(x)

例如:

>>v=myvander([2345])

得v=

function[v]=myvander(x)

v1=vander(x);%生成范德蒙矩阵

v2=v1';

v=flipud(v2);%实现矩阵上下翻转

16、思考题

编写程序,用如下迭代公式求

,a的值分别为:

3,17,113。

迭代的终止条件为

,迭代初值

迭代次数不超过100次。

分别对迭代结果和准确值进行比较,并统计迭代次数。

function[x,n]=sqrt_a(a)

x=1.0;

fork=1:

100

m=x;

x=x/2+a/(2*x);

ifabs(x-m)<=10^(-5)

break

end

end

x;

n=k;

s=(x-sqrt(a));

ifs<=10^(-5)

disp('正确');

else

disp('错误');

end

17、在同一坐标系下绘制下面三个函数在t[0,4]的图象。

>>t=0:

0.1:

4*pi;

>>y1=t;

>>y2=t^(0.5);

>>y2=sqrt(t);

>>y3=4*pi*eps(-0.1*t).*sin(t);

>>plot(t,y1,t,y2,t,y3)

18、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。

functiony=fun1(x)

y=[];

forx0=x

ifx0<=0

y=[y,sin(x0)];

elseifx0>0&&x0<=3

y=[y,x0];

elseifx0>3

y=[y,6-x0];

end

end

>>x=-6:

0.1:

6;

>>y=fun1(x);

>>plot(x,y)

19、用compass函数画下面相量图

ua=1;ub=cos(-2*pi/3)+sin(-2*pi/3)*i;uc=cos(2*pi/3)+sin(2*pi/3)*i;

compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])

>>ua=1;

>>ob=cos(-2*pi/3)

>>ob=cos(-2*pi/3)+sin(-2*pi/3)*i;

>>ub=cos(-2*pi/3)+sin(-2*pi/3)*i;

>>uc=cos(2*pi/3)+sin(2*pi/3)*i;

>>compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])

20、三维空间曲线绘制

z=0:

0.1:

4*pi;

x=cos(z);

y=sin(z);

plot3(x,y,z)

>>z=0:

0.1:

4*pi;

>>x=cos(z);

>>y=sin(z);

>>plot3(x,y,z)

21、用mesh或surf函数,绘制下面方程所表示的三维空间曲面,x和y的取值范围设为[-3,3]。

>>x=-3:

0.01:

3;

>>y=-3:

0.01:

3;

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

>>z=-x.*x/10+y.*y/10;

>>mesh(x,y,z)

>>z=x.*x/10+y.*y/10;

>>mesh(x,y,z)

22、思考题

用对分法求解方程

在[0,1]内的解,并验证,在程序中统计出对分次数。

提示:

先将原方程转化成

的形式。

对分法的基本思想是:

一个一元方程f(x)=0,若f(x1)*f(x2)<0,则在[x1,x2]区间内有实数解。

取该区间的中点xm=(x1+x2)/2,判定f(x1)和f(x2)二者中哪一个与f(xm)异号,若f(x1)*f(xm)<0,则解存在的区间缩小为[x1,xm],否则解存在的区间缩小为[xm,x2]。

重复这样的步骤,直到区间的长度小于一个可以接受的小数(比如1e-10),则认为中点即是原方程的解。

>>x0=0;

x1=1;

y=1;

i=0;

whiley~=0

i=i+1;

x3=(x0+x1)/2;

y=2*eps(-x3)-sin(x3);

y0=2*eps(-x0)-sin(x0);

y1=2*eps(-x1)-sin(x1);

ify*y0<0

x0=x3;

elseify*y1<0

x1=x3;

elseify==0

x3=x3;

end

ifi==1000000

y=0;

end

End

 

23、求代数方程

的5个根,并将其用星号(*)标记在复平面图上。

(用roots和plot函数)

>>a=[3,4,7,2,9,12];

>>y=roots(a)

>>plot(y,'*')

求代数方程

的5个根,并将其用星号(*)标记在复平面图上。

(用roots和plot函数)

程序:

>>a1=[1,0,0,0,0,-1];

>>y1=roots(a1)

>>plot(y1,'*')

24、求下面函数在[0.5,4]区间内的过零点。

(用fzero函)

>>x=0.5:

0.01:

4;

>>y2=x.^3-2*x.^2.*sin(x)+5*x.*cos(x)+1./x;

>>plot(x,y2)

函数:

functiony2=fz(x)

y2=x.^3-2*x.^2.*sin(x)+5*x.*cos(x)+1./x;

分析:

根据图像可知零点在x=1和x=3附近

所以

>>fzero('fz',1)

ans=

1.5117

>>fzero('fz',3)

ans=

2.6095

25、

已知R=50欧姆,U=4V,二极管D正向电流与电压的关系为:

求此电路中的电流Id和二极管正向电压Ud(要求用fsolve函数求解)

程序:

>>x=fsolve('fun',0,optimset('Display','off'))

>>y3=5*10^(-11)*exp(1.6*x/(1.38*10^(-4)*27)-1)

函数:

functiony=fun(x)

y=5*10^(-11)*exp(1.6*x/(1.38*10^(-4)*27)-1)+x-4;

26、实验数据处理:

已知某压力传感器的测试数据如下表

p

0.0

1.1

2.1

2.8

4.2

5.0

6.1

6.9

8.1

9.0

9.9

u

10

11

13

14

17

18

22

24

29

34

39

p为压力值,u为电压值,试用多项式

来拟合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。

程序:

>>n=3;

>>p=[0.01.12.12.84.25.06.16.98.19.09.9];

>>u=[1011131417182224293439];

>>f=polyfit(p,u,n)

>>p1=0:

10;

>>u1=polyval(f,p1);

>>plot(p,u,'*',p1,u1,'-')

 

(注:

可编辑下载,若有不当之处,请指正,谢谢!

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

当前位置:首页 > 高中教育 > 理化生

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

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