MATLAB教程a习题解答17章完整版张志涌北航之欧阳体创编.docx
《MATLAB教程a习题解答17章完整版张志涌北航之欧阳体创编.docx》由会员分享,可在线阅读,更多相关《MATLAB教程a习题解答17章完整版张志涌北航之欧阳体创编.docx(24页珍藏版)》请在冰豆网上搜索。
MATLAB教程a习题解答17章完整版张志涌北航之欧阳体创编
●MATLABR2012a
●
时间:
2021.02.03
创作:
欧阳体
●课后习题答案全解
●第一章基础准备及入门
习题1及解答
⏹1.数字1.5e2,1.5e3中的哪个与1500相同吗?
〖解答〗
1.5e3
⏹2.请指出如下5个变量名中,哪些是合法的?
abcd-2xyz_33chana变量ABCDefgh
〖解答〗
2、5是合法的。
⏹3.在MATLAB环境中,比1大的最小数是多少?
〖解答〗
1+eps
⏹4.设a=-8,运行以下三条指令,问运行结果相同吗?
为什么?
w1=a^(2/3)
w2=(a^2)^(1/3)
w3=(a^(1/3))^2
〖解答〗
(1)不同。
具体如下
w1=a^(2/3)%仅求出主根
w2=(a^2)^(1/3)%求出(-8)^2的主根
w3=(a^(1/3))^2%求出(-8)主根后再平方
w1=
-2.0000+3.4641i
w2=
4.0000
w3=
-2.0000+3.4641i
(2)复数的多方根的,下面是求取全部方根的两种方法:
(A)根据复数方根定义
a=-8;n=2;m=3;
ma=abs(a);aa=angle(a);
fork=1:
m%m决定循环次数
sa(k)=(aa+2*pi*(k-1))*n/m;%计算各根的相角
end
result=(ma^(2/3)).*exp(j*sa)%计算各根
result=
-2.0000+3.4641i4.0000-0.0000i-2.0000-3.4641i
(B)利用多项式
求根
p=[1,0,0,-a^2];
r=roots(p)
r=
-2.0000+3.4641i
-2.0000-3.4641i
4.0000
⏹5.指令clear,clf,clc各有什么用处?
〖解答〗
clear清除工作空间中所有的变量。
clf清除当前图形。
clc清除命令窗口中所有显示。
⏹6.以下两种说法对吗?
(1)“MATLAB进行数值的表达精度与其指令窗中的数据显示精度相同。
”
(2)MATLAB指令窗中显示的数值有效位数不超过7位。
”
〖解答〗
(1)否;
(2)否。
⏹7.想要在MATLAB中产生二维数组
,下面哪些指令能实现目的?
(1)S=[1,2,3;4,5,6;7,8;9]
(2)S=[123;456;789]
(3)S=[1,2,3;4,5,6;7,8,9]%整个指令在中文状态下输入
〖解答〗
前两种输入方法可以,后一种方法不行。
⏹8.试为例1.3-5编写一个解题用的M脚本文件?
〖解答〗
直接点击新文件图标,出现M文件编辑器窗口;在该M文件编辑器中,输入例1.3-5中的全部指令;并另存为p109.m,便得到所需的脚本文件。
第2章符号运算
习题2及解答
⏹/1说出以下四条指令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号”符号对象?
3/7+0.1;sym(3/7+0.1);sym('3/7+0.1');vpa(sym(3/7+0.1))
〖目的〗
●不能从显示形式判断数据类型,而必须依靠class指令。
〖解答〗
c1=3/7+0.1
c2=sym(3/7+0.1)
c3=sym('3/7+0.1')
c4=vpa(sym(3/7+0.1))
Cs1=class(c1)
Cs2=class(c2)
Cs3=class(c3)
Cs4=class(c4)
c1=
0.5286
c2=
37/70
c3=
0.52857142857142857142857142857143
c4=
0.52857142857142857142857142857143
Cs1=
double
Cs2=
sym
Cs3=
sym
Cs4=
sym
⏹/2在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是自由符号变量.
sym('sin(w*t)'),sym('a*exp(-X)'),sym('z*exp(j*th)')
〖目的〗
●理解自由符号变量的确认规则。
〖解答〗
symvar(sym('sin(w*t)'),1)
ans=
w
symvar(sym('a*exp(-X)'),1)
ans=
a
symvar(sym('z*exp(j*th)'),1)
ans=
z
⏹/3求以下两个方程的解
(1)试写出求三阶方程
正实根的程序。
注意:
只要正实根,不要出现其他根。
(2)试求二阶方程
在
时的根。
〖目的〗
●体验变量限定假设的影响
〖解答〗
(1)求三阶方程
正实根
reset(symengine)%确保下面操作不受前面指令运作的影响
symsxpositive
solve(x^3-44.5)
ans=
(2^(2/3)*89^(1/3))/2
(2)求五阶方程
的实根
symsapositive%注意:
关于x的假设没有去除
solve(x^2-a*x+a^2)
Warning:
Explicitsolutioncouldnotbefound.
>Insolveat83
ans=
[emptysym]
symsxclear
symsapositive
solve(x^2-a*x+a^2)
ans=
a/2+(3^(1/2)*a*i)/2
a/2-(3^(1/2)*a*i)/2
⏹/4观察一个数(在此用@记述)在以下四条不同指令作用下的异同。
a=@,b=sym(@),c=sym(@,'d'),d=sym('@')
在此,@分别代表具体数值7/3,pi/3,pi*3^(1/3);而异同通过vpa(abs(a-d)),vpa(abs(b-d)),vpa(abs(c-d))等来观察。
〖目的〗
●理解准确符号数值的创建法。
●高精度误差的观察。
〖解答〗
(1)x=7/3
x=7/3;a=x,b=sym(x),c=sym(x,'d'),d=sym('7/3'),
a=
2.3333
b=
7/3
c=
2.3333333333333334813630699500209
d=
7/3
v1=vpa(abs(a-d)),v2=vpa(abs(b-d)),v3=vpa(abs(c-d))
v1=
0.0
v2=
0.0
v3=
0.00000000000000014802973661668756666666667788716
(2)x=pi/3
x=pi/3;a=x,b=sym(x),c=sym(x,'d'),d=sym('pi/3'),
a=
1.0472
b=
pi/3
c=
.0471********
d=
pi/3
v1=vpa(abs(a-d)),v2=vpa(abs(b-d)),v3=vpa(abs(c-d))
v1=
0.0
v2=
0.0
v3=
0.00000000000000011483642827992216762806615818554
(3)x=pi*3^(1/3)
x=pi*3^(1/3);a=x,b=sym(x),c=sym(x,'d'),d=sym('pi*3^(1/3)')
a=
4.5310
b=
1275352044764433/281474976710656
c=
4.5309606547207899041040946030989
d=
pi*3^(1/3)
v1=vpa(abs(a-d)),v2=vpa(abs(b-d)),v3=vpa(abs(c-d))
v1=
0.00000000000000026601114166290944374842393221638
v2=
0.00000000000000026601114166290944374842393221638
v3=
0.0000000000000002660111416629094726767991785515
⏹/5求符号矩阵
的行列式值和逆,所得结果应采用“子表达式置换”简洁化。
〖目的〗
●理解subexpr指令。
〖解答〗
A=sym('[a11a12a13;a21a22a23;a31a32a33]')
DA=det(A)
IA=inv(A);
[IAs,d]=subexpr(IA,d)
A=
[a11,a12,a13]
[a21,a22,a23]
[a31,a32,a33]
DA=
a11*a22*a33-a11*a23*a32-a12*a21*a33+a12*a23*a31+a13*a21*a32-a13*a22*a31
IAs=
[d*(a22*a33-a23*a32),-d*(a12*a33-a13*a32),d*(a12*a23-a13*a22)]
[-d*(a21*a33-a23*a31),d*(a11*a33-a13*a31),-d*(a11*a23-a13*a21)]
[d*(a21*a32-a22*a31),-d*(a11*a32-a12*a31),d*(a11*a22-a12*a21)]
d=
1/(a11*a22*a33-a11*a23*a32-a12*a21*a33+a12*a23*a31+a13*a21*a32-a13*a22*a31)
⏹/6求
的符号解,并进而用该符号解求
,
,
的准确值。
〖目的〗
●symsum,subs的应用。
●从实例中,感受指令所给出的关于
符号解的含义。
〖解答〗
symsxk
f=x^(k);
Z1=symsum(f,k,0,inf)
Z1=
piecewise([1<=x,Inf],[abs(x)<1,-1/(x-1)])%piecewise分段函数
subs(Z1,x,{sym('-1/3'),sym('1/pi'),sym('3')})
ans=
[3/4,-1/(1/pi-1),Inf]
⏹/7对于
,求
。
(提示:
理论结果为
)
〖目的〗
●符号变量的限定性定义的作用。
〖解答〗
symsk;
x=sym('x','positive');
f_k=2/(2*k+1)*((x-1)/(x+1))^(2*k+1);
s=simple(symsum(f_k,k,0,inf))%结果与理论值lnx相符!
s=
piecewise([abs(x-1)〖注意〗
●解答中,条件abs(x-1)⏹约束一:
x-12>0
此式总成立,说明“无约束”。
⏹情况二:
-(x-1)x>0
此为“约束”,满足题意。
⏹/8
(1)通过符号计算求
的导数
。
(2)然后根据此结果,求
和
。
〖目的〗
●diff,limit指令的应用。
●如何理解运行结果。
〖解答〗
symst
y=abs(sin(t))
d=diff(y)%求dy/dt
d0_=limit(d,t,0,'left')%求dy/dt|t=0-
dpi_2=limit(d,t,pi/2)%求dy/dt|t=pi/2
y=
abs(sin(t))
d=
sign(sin(t))*cos(t)
d0_=
-1
dpi_2=
0
⏹/9求出
的具有64位有效数字的积分值。
〖目的〗
●符号积分的解析解和符号数值解。
●符号计算和数值计算的相互校验。
〖解答〗
(1)符号积分
symsxclear
symsx
y=exp(-abs(x))*abs(sin(x))
si=vpa(int(y,-10*pi,1.7*pi),64)%vpa指定精确位数
y=
abs(sin(x))/exp(abs(x))
si=
1.087849499412904913166671875948174520895458535212845987519414166
(2)数值计算复验
xx=-10*pi:
pi/100:
1.7*pi;
sn=trapz(exp(-abs(xx)).*abs(sin(xx)))*pi/100%trapz梯形法求积分
sn=
1.0877
⏹/10计算二重积分
。
〖目的〗
●变上限二重积分的符号计算法。
〖解答〗
symsxy
f=x^2+y^2;
r=int(int(f,y,1,x^2),x,1,2)
r=
1006/105
⏹/11在
区间,画出
曲线,并计算
。
〖目的〗
●在符号计算中,经常遇到计算结果是特殊经典函数的情况。
●如何应用subs获得超过16位有效数字的符号数值结果。
●初步尝试ezplot指令的简便。
〖解答〗
(1)符号计算
symstx;
f=sin(t)/t;
y=int(f,t,0,x)%将得到一个特殊经典函数
y5=subs(y,x,sym('4.5'))
ezplot(y,[0,2*pi])
y=
sinint(x)
y5=
1.6541404143792439835039224868515
(2)数值计算复验
tt=0:
0.001:
4.5;
tt
(1)=eps;
yn=trapz(sin(tt)./tt)*0.001
yn=
1.6541
⏹/12在
的限制下,求
的一般积分表达式,并计算
的32位有效数字表达。
〖目的〗
●一般符号解与高精度符号数值解。
〖解答〗
symsx
symsnpositive
f=sin(x)^n;
yn=int(f,x,0,pi/2)
y3s=vpa(subs(yn,n,sym('1/3')))
y3d=vpa(subs(yn,n,1/3))
yn=
beta(1/2,n/2+1/2)/2
y3s=
1.2935547796148952674767575125656
y3d=
1.2935547796148951782413405453553
⏹13.有序列
,
,(在此
,
),求这两个序列的卷积
。
〖目的〗
●符号离散卷积直接法和变换法。
〖解答〗
(1)直接法
symsabkn
x=a^k;
h=b^k;
w=symsum(subs(h,k,n)*subs(x,k,k-n),n,0,k)%据定义
y1=simple(w)
w=
piecewise([a=b,b^k+b^k*k],[a<>b,(a*a^k-b*b^k)/(a-b)])
y1=
piecewise([a=b,b^k+b^k*k],[a<>b,(a*a^k-b*b^k)/(a-b)])
(2)变换法(复验)
symsz
X=ztrans(a^k,k,z);
H=ztrans(b^k,k,z);
y2=iztrans(H*X,z,k)%通过Z变换及反变换
y2=
piecewise([b<>0,(a*a^k)/(a-b)-(b*b^k)/(a-b)])
〖说明〗
●符号计算不同途径产生的结果在形式上有可能不同,而且往往无法依靠符号计算本身的指令是它们一致。
此时,必须通过手工解决。
⏹14.设系统的冲激响应为
,求该系统在输入
,
作用下的输出。
〖目的〗
●符号连续函数卷积的直接法和变换法。
●符号变量限定性定义的作用。
●laplace,ilaplace指令的应用。
〖解答〗
(1)直接法
symst
h=exp(-3*t);u=cos(t);
symstao;
h_tao=subs(h,t,tao);
u_t_tao=subs(u,t,t-tao);
hu_tao=h_tao*u_t_tao;
hut=simple(int(hu_tao,tao,0,t))%直接卷积
hut=
(3*cos(t))/10-3/(10*exp(3*t))+sin(t)/10
(2)变换法(复验)
symss;
HU=laplace(h,t,s)*laplace(u,t,s);
huL=simple(ilaplace(HU,s,t))%拉氏变换及反变换
huL=
(3*cos(t))/10-3/(10*exp(3*t))+sin(t)/10
⏹15.求
的Fourier变换。
〖目的〗
●符号变量限定性定义的作用。
●fourier指令的应用。
〖解答〗
symsAtw
a=sym('a','positive');
f=A*exp(-a*abs(t));
y=fourier(f,t,w)
F=simple(y)
y=
(2*A*a)/(a^2+w^2)
F=
(2*A*a)/(a^2+w^2)
⏹16.求
的Fourier变换,并画出
时的幅频谱。
〖目的〗
●单位阶跃符号函数heaviside的应用。
●subs实现多变量置换。
●ezplot的使用。
〖解答〗
symstAw;
tao=sym('tao','positive');
f=A*((1+t/tao)*(heaviside(t+tao)-heaviside(t))+(1-t/tao)*(heaviside(t)-heaviside(t-tao)));
Fw=fourier(f,t,w);
Fws=simple(Fw)
Fw2=subs(Fws,[A,tao],[2,2])
ezplot(abs(Fw2))
grid
Fws=
-(4*A*(cos((tao*w)/2)^2-1))/(tao*w^2)
Fw2=
-(8*cos(w)^2-8)/(2*w^2)
⏹17.求
的Laplace反变换。
〖解答〗
symsst
F=(s+3)/(s^3+3*s^2+6*s+4);
f=simple(ilaplace(F,s,t))
f=
(3^(1/2)*sin(3^(1/2)*t)-2*cos(3^(1/2)*t)+2)/(3*exp(t))
⏹18.利用符号运算证明Laplace变换的时域求导性质:
。
〖目的〗
●符号计算用于定理证明。
〖解答〗
symsts;
y=sym('f(t)');
df=diff(y,t);
Ldy=laplace(df,t,s)
Ldy=
s*laplace(f(t),t,s)-f(0)
⏹19.求
的Z变换表达式。
〖目的〗
●注意:
变换中,被变换变量的约定。
〖解答〗
symslambdakTz;
f_k=k*exp(-lambda*k*T);
F_z=simple(ztrans(f_k,k,z))
F_z=
(z*exp(T*lambda))/(z*exp(T*lambda)-1)^2
⏹20.求方程
的解。
〖目的〗
●solve指令中,被解方程的正确书写,输出量的正确次序。
〖解答〗
eq1='x^2+y^2=1';
eq2='x*y=2';
[x,y]=solve(eq1,eq2,'x','y')
x=
(1/2+(15^(1/2)*i)/2)^(1/2)/2-(1/2+(15^(1/2)*i)/2)^(3/2)/2
-(1/2+(15^(1/2)*i)/2)^(1/2)/2+(1/2+(15^(1/2)*i)/2)^(3/2)/2
(1/2-(15^(1/2)*i)/2)^(1/2)/2-(1/2-(15^(1/2)*i)/2)^(3/2)/2
-(1/2-(15^(1/2)*i)/2)^(1/2)/2+(1/2-(15^(1/2)*i)/2)^(3/2)/2
y=
(1/2+(15^(1/2)*i)/2)^(1/2)
-(1/2+(15^(1/2)*i)/2)^(1/2)
(1/2-(15^(1/2)*i)/2)^(1/2)
-(1/2-(15^(1/2)*i)/2)^(1/2)
⏹21.求图p2-1所示信号流图的系统传递函数,并对照胡寿松主编“自动控制原理”中的例2-21结果,进行局部性验证。
图p2-1
〖目的〗
●理解和掌握信号流图传递函数的“代数状态方程解法”。
●并设法用胡寿松主编的“自动控制原理”的例2-21进行局部性验证。
〖解答〗
(1)求传递函数
symsG1G2G3G4G5G6G7H1H2H3H4H5
A=[0000-H3-H4;
G10-H1000;
0G200-H2G6;
00G300G7;
000G400;
0G5000-H5];
b=[1;0;0;0;0;0];
c=[000010];
Y2U=c*((eye(size(A))-A)\b);%求传递函数
[NN,DD]=numden(Y2U);%分离出分子、分母多项式
DD=sort(DD);%分母多项式排序
disp([blanks(5),'传递函数Y2U为'])
pretty(NN/DD)
传递函数Y2U为
(G1G4(G2G3+G5G7+G3G5G6+G2G3H5))/
(H5+G2H1+G3G4H2+G1G5H4+G5G6H1+G2H1H5+G3G4H2H5+
G1G2G3G4H3+G1G4G5G7H3-G4G5G7H1H2+G1G3G4G5G6H3+
G1G2G3G4H3H5+G1G3G4G5H2H4+1)
(2)局部性验证
symsabcdefg
y2u=subs(Y2U,[G1,G2,G3,G4,G5,G6,G7,H1,H2,H3,H4,H5],[a,e,f,1,b,c,0,g,0,0,0,d]);
[nn,dd]=numden(y2u);
dd=sort(dd);
disp([blanks(5),'局部性验证用的传递函数y2u'])
pretty(nn/dd)
局部性验证用的传递函数y2u
a(ef+bcf+def)
---------------------------
d+eg+bcg+deg+1
此结果与胡寿松主编的“自