matlab课后习题解答第二章.docx
《matlab课后习题解答第二章.docx》由会员分享,可在线阅读,更多相关《matlab课后习题解答第二章.docx(14页珍藏版)》请在冰豆网上搜索。
![matlab课后习题解答第二章.docx](https://file1.bdocx.com/fileroot1/2022-11/28/c7d57fe9-bf12-401e-839f-e6508f81abe0/c7d57fe9-bf12-401e-839f-e6508f81abe01.gif)
matlab课后习题解答第二章
第2章符号运算
习题2及解答
11说出以下四条指令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号”符号对象?
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.7143
c4=
0.7143
Cs1=
double
Cs2=
sym
Cs3=
sym
Cs4=
sym
12在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是自由符号变量.
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
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)
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)
y=
abs(sin(x))/exp(abs(x))
si=
1.6
(2)数值计算复验
xx=-10*pi:
pi/100:
1.7*pi;
sn=trapz(exp(-abs(xx)).*abs(sin(xx)))*pi/100
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.515
(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.656
y3d=
1.553
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)])
〖说明〗
●符号计算不同途径产生的结果在形式上有可能不同,而且往往无法依靠符号计算本身的指令是它们一致。
此时,必须通过手工解决。
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)
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))
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)
23求微分方程
的通解,并绘制任意常数为1时解的图形。
〖目的〗
●理解指令dsolve的正确使用。
●对dsolve输出结果的正确理解。
●ezplot指令绘图时,如何进行线色控制。
●如何覆盖那些不能反映图形窗容的图名。
〖解答〗
(1)求通解
reset(symengine)
clear
symsyx
y=dsolve('0.2*y*Dy+0.25*x=0','x')
y=
2^(1/2)*(C3-(5*x^2)/8)^(1/2)
-2^(1/2)*(C3-(5*x^2)/8)^(1/2)
(2)根据所得通解中不定常数的符号写出“对其进行数值替代的指令”
yy=subs(y,'C3',1)%将通解中的C3用1代替
yy=
2^(1/2)*(1-(5*x^2)/8)^(1/2)
-2^(1/2)*(1-(5*x^2)/8)^(1/2)
(3)观察通解中两个分解的平方是否相同
yy
(1)^2==yy
(2)^2
ans=
1
(4)于是可考虑函数的平方关系
symsY
fxy=Y^2-yy
(1)^2
fxy=
Y^2+(5*x^2)/4-2
(5)根据平方关系式画完整曲线
clf
ezplot(fxy,[-2,2,-2,2])
axissquare
gridon
(6)假如直接用“分解”画曲线,那么将是不完整的
ezplot(yy
(1)),holdon
cc=get(gca,'Children');
set(cc,'Color','r')
ezplot(yy
(2)),axis([-22-22])
legend('y
(1)','y
(2)'),holdoff;
title('')%覆盖不完全的图名
grid
axissquare
24求一阶微分方程
的解。
〖目的〗
●初值微分方程的符号解。
●pretty指令的使用。
〖解答〗
x=dsolve('Dx=a*t^2+b*t','x(0)=2','t')
pretty(x)%比较易读的表达形式
x=
(t^2*(3*b+2*a*t))/6+2
2
t(3b+2at)
----------------+2
6
25求边值问题
的解。
(注意:
相应的数值解法比较复杂)。
〖目的〗
●边值微分方程的符号解。
〖解答〗
[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','f(0)=0,g(0)=1')
f=
sin(4*t)*exp(3*t)
g=
cos(4*t)*exp(3*t)