您的当前位置:首页实验解答20110530

实验解答20110530

2022-06-17 来源:小侦探旅游网
实验一 MATLAB工作环境熟悉及简单命令的执行

一、实验目的:熟悉MATLAB的工作环境,学会使用MATLAB进行一些简单的运算。 二、实验内容:MATLAB的启动和退出,熟悉MATLAB的桌面(Desktop),包括菜单

(Menu)、工具条 (Toolbar)、命令窗口(Command Window)、历史命令窗口、工作

空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。

三、实验步骤:

1、启动MATLAB,熟悉MATLAB的桌面。

2、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。 (1)(365-522-70)3 >>(365-52*2-70)/3 ans = 63.6667

(2)>>area=pi*2.5^2 area = 19.6350

(3)已知x=3,y=4,在MATLAB中求z:

x2y3 z2xy>>x=3 >>y=4

>>z = x ^2 * y ^3 / (x - y) ^2 z = 576

(4)将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字节数。

162313511108 m1=97612414151执行以下命令

>>m1 =[16 2 3 13 ; 5 11 10 8 ; 9 7 6 12 ; 4 14 15 1 ] >>m1( 2 , 3 ) ans = 10 >>m1( 11 ) ans = 6

>>m1( : , 3 ) ans =3 10 6 15

>>m1( 2 : 3 , 1 : 3 ) ans =5 11 10 9 7 6

>>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) ans = 34

(5)执行命令>>help abs

查看函数abs的用法及用途,计算abs( 3 + 4i ) (6)执行命令

>>x=0:0.1:6*pi; >>y=5*sin(x); >>plot(x,y)

(6)运行MATLAB的演示程序,>>demo,以便对MATLAB有一个总体了解。

四、思考题

1、以下变量名是否合法?为什么? (1)x2 合法

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

(4)for 不合法,for为MATLAB的保留关键字 2、求以下变量的值,并在MATLAB中验证。 (1)a = 1 : 2 : 5 ;

a = 1 3 5 (2)b = [ a' a' a' ] ;

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

c =4 6 8

实验二 MATLAB语言矩阵运算

一、实验目的:掌握基本的矩阵运算及常用的函数。 二、实验内容:

a123241114456 b135 c0  d852361、下列运算是否合法,为什么?如合法,结果是多少? (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

720

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

(12) result12 = 2 . ^ a

以上运算的关键不是结果是多少,而是结果怎么得来的,比如result5 = [b ; c' ] * d,要学会将其分解后去理解,可在命令窗口输入以下语句: >>c'

>>t=[b;c'] >>r5=t * d

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

212x14791532x72 (1)22115x3113213x40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

xyz1x2yzw8(2) 2xy3w33x3y5z6w5 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

212791532 3、已知A2211532131A=[7,2,1,-2;9,15,3,-2;-2,-2,11,5;1,3,2,13]

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

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

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

(4)求矩阵A的特征值及特征向量(eigenvalue and eigenvector) >>[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n10n10991022222,求y=?(用format long g查看y的

10值)

方法一: n=-10:1:10 format long g x=2 .^n y=sum(x)

方法二: y=0;

for t=-10:10 y=y+2^t; end y 方法三

y=0; t=-10 while t<=10 y=y+2^t; t=t+1; end y

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

一、实验目的:掌握利用if、switch语句编写选择结构程序,学会MATLAB程序编辑、

运行及调试方法。

二、实验内容:

1、求分段函数的值。

x2x6x02yx5x60x5

x2x1x5用if语句实现,算出下列表中x对应的y值。

X y -5 14 0 6 2 0 5 19 8 55 clc clear

x=-5 % x=input('请输入x的值') if x<0

y=x^2+x-6; elseif x>=0&x<5

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

y=x^2-x-1; end y

2、分别用if和swith语句实现,将百分制成绩转换为成绩等级A、B、C、D、E。其中[90~100]分为A,[80~90)分为B,[70~80)分为C,[60~70)分为D,60分以下为E。对超出百分制范围的成绩,给出错误提示信息。 clc clear

s=input('请输入百分制成绩:'); if s<0|s>100 g='ERROR'; elseif s>=90&s<=100 g='A';

elseif s>=80&s<90 g='B';

elseif s>=70&s<80 g='C';

elseif s>=60&s<70 g='D'; else

g='E'; end g clc clear

s=input('请输入百分制成绩:'); switch floor(s/10) case 9 g='A'; case 8 g='B'; case 7 g='C'; case 6 g='D';

case num2cell(0:5) g='E'; otherwise if s==100 g='A';

else

g='ERROR'; end end g

3、程序的调试(参考P77):在以上编写的程序中设置断点,控制程序单步运行,观察程序的执行及变量值的变化情况。

三、思考题

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

x1=10+floor(90*rand(1)) x2=10+floor(90*rand(1)) p=input('输入+-*/运算符:','s'); switch p case '+'

y=x1+x2; case '-'

y=x1-x2; case '*'

y=x1*x2; case '/'

y=x1/x2; otherwise y='error'; end y

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

一、实验目的:掌握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\" problem from number theory. n=1 %n等于1,2,3,5,7等数 a=n;

while n>1

if rem(n,2)==0 n=n/2; else

n=3*n+1; end a=[a,n]; end a

x2111122222、根据

6123n分别是多少?

clc clear y=0; n=100 for k=1:n

y=y+1/k^2; end

x=sqrt(6*y)

i2100003、编程求满足i1m,当n分别取100、1000、10000时,求x的值

的最小m值。

re2=n-1

sum_x=0; n=1; while 1 x=2^n;

sum_x=sum_x+x; if sum_x>1e4 break; end n=n+1; end re3=n

echo on

sum(2.^[1:12]) sum(2.^[1:13]) echo off

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

sum_x=0; n=0;

while sum_x<=1e4 n=n+1; x=2^n;

sum_x=sum_x+x; end re1=n

sum_x=0; n=1;

while sum_x<=1e4 x=2^n;

sum_x=sum_x+x; n=n+1; end

三、思考题

已知y和t的函数关系:y(t)下面表格中与t对应的y值 t y 0.2 0.4 1tt2/2!t3/3!...t20/20!求

0.6 0.8 1.0 clc

clear y=1 t=1; f=1;

for n=1:20 f=f*n; y=y+t^n/f end y

实验五 函数的编写及调试

一、实验目的:掌握MATLAB函数的编写及调试方法。 二、实验内容:

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

function [y]=myfun1(x)

sinx,y(x)x,x6,x00x3x3

选择一些数据测试你编写的函数。 function [y]=myfun1(x) if x<=0

y=sin(x); elseif x<=3 y=x; else

y=-x+6; end

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

function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root

Mean Square)的计算公式为:

1N2rmsxiNi1

用下面数据测试你写的函数: (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) % m_x=mean(x); % max_x=max(x); % min_x=min(x);

% rms_x=sqrt(sum(x.^2)/length(x)); N=length(x); sum_x=0; sum_x2=0; max_x=x(1); min_x=x(1); for k=1:N

sum_x=sum_x+x(k);

sum_x2=sum_x2+x(k)^2; if x(k)>max_x max_x=x(k); end

if x(k)m_x=sum_x/N;

rms_x=sqrt(sum_x2/N);

3、编写一个函数,给出一个向量x[x1,x2,xn],生成如下范德蒙矩阵。

11xx21function [v]=myvander(x)x12x22n1n1x2x1例如:>>v=myvander([2 3 4 5]) 得v=

1xn2xn n1xn11112345 49162582764125生成一些数据测试你写的函数。 function [v]=myvander(x) N=length(x); for k=1:N

v(k,:)=x.^(k-1); end

三、思考题

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

a,a的值分别为:3,17,113。迭代的终止条件为

xn1xn105,迭代初值x01.0,迭代次数不超过100次。分别对迭代结果和

准确值进行比较,并统计迭代次数。

x2a2x2x2axn1clc clear

a=input('请输入a='); x0=1; for n=1:100

x1=x0/2+a/(2*x0); if(abs(x1-x0)<=1e-5) break end x0=x1; end

disp('sqrt(a)数值解为:') x1

disp('迭代次数:') n

disp('sqrt(a)的准确解为:') sqrt(a)

xna22xn

请输入a=3

sqrt(a)数值解为: x1 =

1.7321 迭代次数:5

sqrt(a)的准确解为: ans =

1.7321

实验六 MATLAB的绘图

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

y1ty2t

y34e0.1tsin(t)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('y1 y2 y3')

legend('t','sqrt(t)','4*pi*exp(-0.1*t).*sin(t)');

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

x=-6:0.1:6; % 设定自变量x的取值范围 leng=length(x); % 计算向量x的长度 for m=1:leng % 计算函数值 y(m)=myfun1(x(m)); end

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

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

sinx,y(x)x,x6,x00x3x3ua = 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])

90120 260 1.5150 1 0.5301800210330240270300 4、三维空间曲线绘制z=0:0.1:4*pi; x=cos(z); y=sin(z); plot3(x,y,z)

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

x2y2z

1010[x,y]=meshgrid(-3:0.5:3) z=-x.*x/10+y.*y/10; mesh(x,y,z); figure

surfc(x,y,z);

x2y2附:画抛物面z 1010theta=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) axis square

三、思考题

用对分法求解方程2e数。

xsinx在[0,1]内的解,并验证,在程序中统计出对分次

提示:先将原方程转化成

f(x)2exsinx0的形式。

对分法的基本思想是:一个一元方程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),则认为中点即是原方程的解。 clc clear

x1=0;x2=1; len=x2-x1; n=0;

while len>1e-10

y1=2*exp(-x1)-sin(x1); y2=2*exp(-x2)-sin(x2); xm=(x1+x2)/2;

ym=2*exp(-xm)-sin(xm); if y1*ym<0 x2=xm;

elseif y2*ym<0 x1=xm; end

len=x2-x1; n=n+1; end

format long xm,ym,n

实验七 MATLAB数值运算

一、实验目的:掌握MATLAB常用的数值运算函数。 二、实验内容:

1、求代数方程3x4x7x2x9x120的5个根,并将其用星号(*)标记在复平面图上。(用roots和plot函数)。 p=[3 4 7 2 9 12]; r=roots(p) plot(r,'*'); grid

xlabel('Real Axis') ylabel('Imag Axis') r =

-0.8612 + 1.4377i -0.8612 - 1.4377i 0.6737 + 1.0159i 0.6737 - 1.0159i

5432 -0.9583

1.510.5Imag Axis0-0.5-1-1.5-1-0.50Real Axis0.51

5x2、求代数方程10的5个根,并将其用星号(*)标记在复平面图上。(用roots和

plot函数)。

p=[1 0 0 0 0 -1]; r=roots(p) plot(r,'*'); axis equal grid

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

f(x)x32x2sin(x)5xcos(x)1x

fplot('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',[0.5,4]) x1=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',[0.5,2]) x2=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',[2,4]) x1 = 1.5117 x2 = 2.6095

806040y200-2012x34 4、

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

IdIseUdqKT1

其中:

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.01:0.7;

Id=Is*exp(Ud*q/(K*T)-1); Ud1=0:0.01:4; Id1=(U-Ud1)/R plot(Ud,1000*Id,'r') hold on

plot(Ud1,1000*Id1,'b') grid hold off

legend('二极管伏安特性','负载线') x=fsolve(@UdId,[1 0.05])

function f=UdId(x)

R=50;U=4;Is=1e-12;K=1.38e-23;T=300;q=1.6e-19; Ud=x(1);Id=x(2); f=[Ud+Id*R-U

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

x =

0.6707 0.0666 Ud Id

5、实验数据处理:已知某压力传感器的测试数据如下表 p 0.0 1.1 2.1 2.8 4.2 5.0 6.1 6.9 u 10 11 13 14 17 18 22 24 p为压力值,u为电压值,试用多项式u(p)8.1 29 9.0 34 9.9 39 ap3bp2cpd来拟合其特

性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。 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]; plot(p,u,'r+')

abcd=polyfit(p,u,3) p1=0:0.1:10;

u1=polyval(abcd,p1); hold on

plot(p1,u1,'b'); grid hold off

axis([-1 11 8 41]); xlabel('p'); ylabel('u');

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

40p-uu(p)=a*p3+b*p2+c*p+d3530u252015100246810p

实验八 MATLAB应用

-4

1、用Simulink求解下图所示电路0~100微秒内的响应。已知R=6*10欧,C=1700微法,L=6*10-9享,uc(0)=15kV。

LCdidiRCi0dtdt2

1ducidtC di1(uRi)cdtL

1tuc(t)C0i()d1ti(t)0uL()dLuLucRi R Gain 21/ L1 s -1/C Gai n1 s Uc Scop e1i Scop eUL i Uc Gain 1Integr atoIntegra to

 模块参数设置:

Integrator1的Initial condition:15kV

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

 仿真参数设置如下:

Start time:0

Stop time:100e-6

Solver Type:Variable-step Solver:ode45 Max step size:1e-7 Min step size:auto Initial step size:auto Relative tolerance:1e-3 Absolute tolerance:1e-6

因篇幅问题不能全部显示,请点此查看更多更全内容