matlab实验指导答案详解非常详细正确Word格式文档下载.docx

上传人:b****6 文档编号:20040967 上传时间:2023-01-16 格式:DOCX 页数:31 大小:208.10KB
下载 相关 举报
matlab实验指导答案详解非常详细正确Word格式文档下载.docx_第1页
第1页 / 共31页
matlab实验指导答案详解非常详细正确Word格式文档下载.docx_第2页
第2页 / 共31页
matlab实验指导答案详解非常详细正确Word格式文档下载.docx_第3页
第3页 / 共31页
matlab实验指导答案详解非常详细正确Word格式文档下载.docx_第4页
第4页 / 共31页
matlab实验指导答案详解非常详细正确Word格式文档下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

matlab实验指导答案详解非常详细正确Word格式文档下载.docx

《matlab实验指导答案详解非常详细正确Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《matlab实验指导答案详解非常详细正确Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。

matlab实验指导答案详解非常详细正确Word格式文档下载.docx

(3)_row不合法,首字符必须是字母

(4)for不合法,for为MATLAB的保留关键字

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

(1)a=1:

2:

5;

a=135

(2)b=[a'

a'

];

b=111

333

555

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

c=468

实验二MATLAB语言矩阵运算

掌握基本的矩阵运算及常用的函数。

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

如合法,结果是多少?

(1)result1=a'

(2)result2=a*b

不合法,两矩阵的内阶不相等。

(3)result3=a+b

(4)result4=b*d

(5)result5=[b;

c'

]*d

(6)result6=a.*b

(7)result7=a./b

(8)result8=a.*c

不合法,两矩阵的维数不相等,点乘相求两矩阵的维数相同。

(9)result9=a.\b

(10)result10=a.^2

(11)result11=a^2

不合法,a矩阵不是方阵,方阵才能取平方。

(12)result12=2.^a

以上运算的关键不是结果是多少,而是结果怎么得来的,比如result5=[b;

]*d,要学会将其分解后去理解,可在命令窗口输入以下语句:

c'

t=[b;

]

r5=t*d

2、用MATLAB求下面的的方程组。

(1)

A=[7,2,1,-2;

9,15,3,-2;

-2,-2,11,5;

1,3,2,13]

b=[4;

7;

-1;

0]

x=A\b

x=0.4979

0.1445

0.0629

-0.0813

(2)

A=[1,1,1,0;

1,2,1,-1;

2,-1,0,-3;

3,3,5,-6]

b=[1;

8;

3;

5]

xyzw=inv(A)*b

xyzw=1.0000

5.0000

-5.0000

-2.0000

3、已知

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

rank(A)

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

det(A)

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

inv(A)

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

[v,d]=eig(A)

该题目要求大家学会使用MATLAT的帮助系统,一是知道函数名,怎样查函数用法,二是不知道函数名,怎样查函数名及其用法。

4、关系运算与逻辑运算

已知a=20,b=-2,c=0,d=1

(1)r1=a>

b

(2)r2=a>

b&

c>

d

(3)r3=a==b*(-10)

(4)r4=~b|c

r1=1,r2=0,r3=1,r4=0

三、思考题

求y=?

(用formatlongg查看y的值)

方法一:

n=-10:

1:

10

formatlongg

x=2.^n

y=sum(x)

 

方法二:

y=0;

fort=-10:

y=y+2^t;

end

y

方法三

t=-10

whilet<

=10

y=y+2^t;

t=t+1;

实验三选择结构程序设计及调试

掌握利用if、switch语句编写选择结构程序,学会MATLAB程序编辑、运行及调试方法。

1、求分段函数的值。

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

X

-5

2

5

8

14

6

19

55

clc

clear

x=-5%x=input('

请输入x的值'

ifx<

y=x^2+x-6;

elseifx>

=0&

x<

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

else

y=x^2-x-1;

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

其中[90~100]分为A,[80~90)分为B,[70~80)分为C,[60~70)分为D,60分以下为E。

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

s=input('

请输入百分制成绩:

'

);

ifs<

0|s>

100

g='

ERROR'

;

elseifs>

=90&

s<

=100

A'

=80&

90

B'

=70&

80

C'

=60&

70

D'

E'

g

switchfloor(s/10)

case9

case8

case7

case6

casenum2cell(0:

5)

otherwise

ifs==100

else

3、程序的调试(参考P77):

在以上编写的程序中设置断点,控制程序单步运行,观察程序的执行及变量值的变化情况。

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

x1=10+floor(90*rand

(1))

x2=10+floor(90*rand

(1))

p=input('

输入+-*/运算符:

'

s'

switchp

case'

+'

y=x1+x2;

-'

y=x1-x2;

*'

y=x1*x2;

case'

/'

y=x1/x2;

y='

error'

实验四循环结构程序设计及调试

掌握MATLAB程序编辑、运行及调试方法。

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

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

注:

数论中一个有趣的题目:

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

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

如:

2→1

3→10→5→16→8→4→2→1

6→3→10→5→16→8→4→2→1

运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。

%classic"

3n+1"

problemfromnumbertheory.

n=1%n等于1,2,3,5,7等数

a=n;

whilen>

1

ifrem(n,2)==0

n=n/2;

n=3*n+1;

a=[a,n];

a

2、根据

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

n=100

fork=1:

n

y=y+1/k^2;

x=sqrt(6*y)

3、编程求满足

的最小m值。

以下是三种方法及结果验证方法。

sum_x=0;

n=0;

whilesum_x<

=1e4

n=n+1;

x=2^n;

sum_x=sum_x+x;

re1=n

n=1;

re2=n-1

while1

ifsum_x>

1e4

break;

re3=n

echoon

sum(2.^[1:

12])

13])

echooff

已知y和t的函数关系:

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

t

0.2

0.4

0.6

0.8

1.0

y=1

t=1;

f=1;

forn=1:

20

f=f*n;

y=y+t^n/f

实验五函数的编写及调试

掌握MATLAB函数的编写及调试方法。

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

function[y]=myfun1(x)

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

=0

y=sin(x);

elseifx<

=3

y=x;

y=-x+6;

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

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)之间均匀分布的随机数。

%m_x=mean(x);

%max_x=max(x);

%min_x=min(x);

%rms_x=sqrt(sum(x.^2)/length(x));

N=length(x);

sum_x2=0;

max_x=x

(1);

min_x=x

(1);

N

sum_x=sum_x+x(k);

sum_x2=sum_x2+x(k)^2;

ifx(k)>

max_x

max_x=x(k);

ifx(k)<

min_x

min_x=x(k);

m_x=sum_x/N;

rms_x=sqrt(sum_x2/N);

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

,生成如下范德蒙矩阵。

function[v]=myvander(x)

例如:

v=myvander([2345])

得v=

生成一些数据测试你写的函数。

v(k,:

)=x.^(k-1);

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

,a的值分别为:

3,17,113。

迭代的终止条件为

,迭代初值

迭代次数不超过100次。

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

a=input('

请输入a='

x0=1;

x1=x0/2+a/(2*x0);

if(abs(x1-x0)<

=1e-5)

break

x0=x1;

disp('

sqrt(a)数值解为:

x1

迭代次数:

sqrt(a)的准确解为:

sqrt(a)

请输入a=3

x1=

1.7321

ans=

实验六MATLAB的绘图

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

t=0:

1e-2:

4*pi;

y1=t;

y2=sqrt(t);

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

plot(t,y1,'

r'

t,y2,'

g'

t,y3,'

b'

grid

xlabel('

t/s'

ylabel('

y1y2y3'

legend('

t'

sqrt(t)'

4*pi*exp(-0.1*t).*sin(t)'

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

x=-6:

6;

%设定自变量x的取值范围

leng=length(x);

%计算向量x的长度

form=1:

leng%计算函数值

y(m)=myfun1(x(m));

plot(x,y),grid%绘制函数曲线

x'

),ylabel('

y'

3、用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])

4、三维空间曲线绘制

z=0:

x=cos(z);

y=sin(z);

plot3(x,y,z)

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

[x,y]=meshgrid(-3:

0.5:

3)

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

mesh(x,y,z);

figure

surfc(x,y,z);

附:

画抛物面

theta=linspace(0,2*pi,60)

R=linspace(0,5,20);

X1=R'

*cos(theta);

Y1=R'

*sin(theta);

Z1=X1.*X1/10+Y1.*Y1/10;

mesh(X1,Y1,Z1)

axissquare

用对分法求解方程

在[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),则认为中点即是原方程的解。

x1=0;

x2=1;

len=x2-x1;

whilelen>

1e-10

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

y2=2*exp(-x2)-sin(x2);

xm=(x1+x2)/2;

ym=2*exp(-xm)-sin(xm);

ify1*ym<

x2=xm;

elseify2*ym<

x1=xm;

len=x2-x1;

formatlong

xm,ym,n

实验七MATLAB数值运算

掌握MATLAB常用的数值运算函数。

1、求代数方程

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

(用roots和plot函数)。

p=[3472912];

r=roots(p)

plot(r,'

RealAxis'

ImagAxis'

r=

-0.8612+1.4377i

-0.8612-1.4377i

0.6737+1.0159i

0.6737-1.0159i

-0.9583

2、求代数方程

p=[10000-1];

axisequal

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

(用fzero函)

fplot('

x^3-2*x^2*sin(x)+5*x*cos(x)+1/x'

[0.5,4])

x1=fzero('

[0.5,2])

x2=fzero('

[2,4])

x1=1.5117

x2=2.6095

4、

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

其中:

Ud为二极管正向电压

Is为反向饱合电流,取10-12A

K为玻尔茨曼常数,1.38*10-23

T为绝对温度,取300开尔文(27摄氏度)

q为电子电荷1.6*10-19C

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

R=50;

U=4;

Is=1e-12;

K=1.38e-23;

T=300;

q=1.6e-19;

%Ud+Id*R-U=0;

%Id-Is*exp(Ud*q/(K*T)-1)=0;

Ud=0:

0.7;

Id=Is*exp(Ud*q/(K*T)-1);

Ud1=0:

4;

Id1=(U-Ud1)/R

plot(Ud,1000*Id,'

holdon

plot(Ud1,1000*Id1,'

holdoff

二极管伏安特性'

负载线'

x=fsolve(@UdId,[10.05])

functionf=UdId(x)

Ud=x

(1);

Id=x

(2);

f=[Ud+Id*R-U

Id-Is*exp(Ud*q/(K*T)-1)];

x=

0.67070.0666

UdId

5、实验数据处理:

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

p

0.0

1.1

2.1

2.8

4.2

5.0

6.1

6.9

8.1

9.0

9.9

u

11

13

17

18

22

24

29

34

39

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

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

p=[0.01.12.12.84.25.06.16.98.19.09.9];

u=[1011131417182224293439];

plot(p,u,'

r+'

abcd=polyfit(p,u,3)

p1=0:

10;

u1=polyval(abcd,p1);

plot(p1,u1,'

axis([-111841]);

p'

u'

p-u'

u(p)=a*p^3+b*p^2+c*p+d'

2)

实验八MATLAB应用

1、用Simulink求解下图所示电路0~100微秒内的响应。

已知R=6*10-4欧,C=1700微法,L=6*10-9享,uc(0)=15kV。

●模块参数设置:

Integrator1的Initialcondition:

15kV

在命令窗口为R,L,C赋值。

●仿真参数设置如下:

Starttime:

Stoptime:

100e-6

SolverType:

Variable-step

Solver:

ode45

Maxstepsize:

1e-7

Minstepsize:

auto

Initialstepsize:

Relativetolerance:

1e-3

Absolutetolerance:

1e-6

实验四MATLAB数值运算

p=[3472912]

roots(p)

0.6737+1.0159i

p2=[10000-1]

roots(p2)

-0.8090+0.5878i

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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