第2章符号运算习题2及解答1 说出以下四条指令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号”符号对象3/7+; sym(3/7+; sym('3/7+'); vpa(sym(3/7+)〖目的〗不能从显示形式判断数据类型,而必须依靠class指令。
〖解答〗c1=3/7+c2=sym(3/7+c3=sym('3/7+')c4=vpa(sym(3/7+)Cs1=class(c1)Cs2=class(c2)Cs3=class(c3)Cs4=class(c4)c1 =c2 =37/70c3 =c4 =Cs1 =doubleCs2 =symCs3 =symCs4 =sym2 在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是自由符号变量.sym('sin(w*t)'),sym('a*exp(-X)'),sym('z*exp(j*th)')〖目的〗理解自由符号变量的确认规则。
〖解答〗symvar(sym('sin(w*t)'),1)ans =wsymvar(sym('a*exp(-X)'),1)ans = asymvar(sym('z*exp(j*th)'),1) ans = z5求符号矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=333231232221131211a a a a a a a a a A 的行列式值和逆,所得结果应采用“子表达式置换”简洁化。
〖目的〗理解subexpr 指令。
〖解答〗A=sym('[a11 a12 a13;a21 a22 a23;a31 a32 a33]')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)通过符号计算求t t y sin )(=的导数dtdy。
(2)然后根据此结果,求-=0t dtdy 和2π=t dtdy 。
〖目的〗diff, limit 指令的应用。
如何理解运行结果。
〖解答〗syms td=diff(y) %求dy/dtd0_=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_ = -1dpi_2 = 09求出dx x e x sin 7.110⎰--ππ的具有64位有效数字的积分值。
〖目的〗符号积分的解析解和符号数值解。
符号计算和数值计算的相互校验。
〖解答〗(1)符号积分syms x clear syms xy=exp(-abs(x))*abs(sin(x)) si=vpa(int(y,-10*pi,*pi),64) y =abs(sin(x))/exp(abs(x)) si =(2)数值计算复验xx=-10*pi:pi/100:*pi;sn=trapz(exp(-abs(xx)).*abs(sin(xx)))*pi/100 sn =10计算二重积分⎰⎰+211222)(x dydx y x 。
〖目的〗变上限二重积分的符号计算法。
〖解答〗syms x y f=x^2+y^2;r=int(int(f,y,1,x^2),x,1,2) r =1006/10511在]2,0[π区间,画出dt ttx y x⎰=sin )(曲线,并计算)5.4(y 。
在符号计算中,经常遇到计算结果是特殊经典函数的情况。
如何应用subs 获得超过16位有效数字的符号数值结果。
初步尝试ezplot 指令的简便。
〖解答〗(1)符号计算syms t x; f=sin(t)/t; y=int(f,t,0,x) % 将得到一个特殊经典函数y5=subs(y,x,sym('')) ezplot(y,[0,2*pi]) y =sinint(x) y5 =12345600.20.40.60.811.21.41.61.8xsinint(x)(2)数值计算复验tt=0::; tt(1)=eps;yn=trapz(sin(tt)./tt)* yn =12在0>n 的限制下,求xdx n y n ⎰=20sin )(π的一般积分表达式,并计算)31(y 的32位有效数字表达。
〖目的〗一般符号解与高精度符号数值解。
syms xsyms n positive 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 =y3d =13有序列k a k x =)(,k b k h =)(,(在此0≥k ,b a ≠),求这两个序列的卷积∑=-=kn n k x n h k y 0)()()(。
〖目的〗符号离散卷积直接法和变换法。
〖解答〗 (1)直接法syms a b k n 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)变换法(复验)syms zX=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求0,)(>=-ααt Ae t f 的Fourier 变换。
〖目的〗符号变量限定性定义的作用。
fourier 指令的应用。
〖解答〗syms A t wa=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求4633)(23++++=s s s s s F 的Laplace 反变换。
〖解答〗syms s tF=(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求Tk ke k f )(λ-=的Z 变换表达式。
〖目的〗注意:变换中,被变换变量的约定。
〖解答〗syms lambda k T z;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)^220求方程2,122==+xy y x 的解。
〖目的〗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求微分方程045=+'x y y 的通解,并绘制任意常数为1时解的图形。
〖目的〗理解指令dsolve 的正确使用。
对dsolve 输出结果的正确理解。
ezplot 指令绘图时,如何进行线色控制。
如何覆盖那些不能反映图形窗内容的图名。
〖解答〗 (1)求通解reset(symengine) clear syms y xy=dsolve('*y*Dy+*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)^2ans = 1(4)于是可考虑函数的平方关系syms Yfxy=Y^2-yy(1)^2 fxy =Y^2 + (5*x^2)/4 - 2(5)根据平方关系式画完整曲线clfezplot(fxy,[-2,2,-2,2]) axis square grid on(6)假如直接用“分解”画曲线,那么将是不完整的ezplot(yy(1)),hold oncc=get(gca,'Children');set(cc,'Color','r')ezplot(yy(2)),axis([-2 2 -2 2])legend('y(1)','y(2)'),hold off;title(' ') %覆盖不完全的图名gridaxis square-2-1.5-1-0.500.51 1.52-2-1.5-1-0.500.511.52xy(1)y(2)24求一阶微分方程2)0(,2=+=x bt at x的解。