matlab课后习题解答第二章

更新时间:2024-06-26 18:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第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

1

symvar(sym('z*exp(j*th)'),1) ans = z

?a115求符号矩阵A???a21??a31〖目的〗

? 理解subexpr指令。 〖解答〗

a12a22a32a13?a23?所得结果应采用“子?的行列式值和逆,a33??表达式置换”简洁化。

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)通过符号计算求y(t)?sint的导数

dy求dtdy和dt?2dy。(2)然后根据此结果,dt。

t?0?t?〖目的〗

? diff, limit指令的应用。 ? 如何理解运行结果。 〖解答〗

syms t

y=abs(sin(t))

2

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求出?1.7??10?e?xsinxdx的具有64位有效数字的积分值。

〖目的〗

? 符号积分的解析解和符号数值解。 ? 符号计算和数值计算的相互校验。 〖解答〗

(1)符号积分

syms x clear syms x

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.087849499412904913166671875948174520895458535212845987519414166

(2)数值计算复验

xx=-10*pi:pi/100:1.7*pi;

sn=trapz(exp(-abs(xx)).*abs(sin(xx)))*pi/100 sn =

1.0877

10计算二重积分?12?x21(x2?y2)dydx。

〖目的〗

? 变上限二重积分的符号计算法。 〖解答〗

syms x y f=x^2+y^2;

r=int(int(f,y,1,x^2),x,1,2) r =

1006/105

11在[0,2?]区间,画出y(x)??x0sintdt曲线,并计算y(4.5)。 t〖目的〗

? 在符号计算中,经常遇到计算结果是特殊经典函数的情况。

3

? 如何应用subs获得超过16位有效数字的符号数值结果。 ? 初步尝试ezplot指令的简便。 〖解答〗

(1)符号计算

syms t x; 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 sinint(x)1.81.61.41.210.80.60.40.200123x456

(2)数值计算复验

tt=0:0.001:4.5; tt(1)=eps;

yn=trapz(sin(tt)./tt)*0.001 yn =

1.6541

?12在n?0的限制下,求y(n)?13?20sinnxdx的一般积分表达式,并

计算y()的32位有效数字表达。

〖目的〗

? 一般符号解与高精度符号数值解。 〖解答〗

syms x

syms n positive

4

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有序列x(k)?ak,h(k)?bk,(在此k?0,a?b),求这两个序列的卷积y(k)??h(n)x(k?n)。

n?0k〖目的〗

? 符号离散卷积直接法和变换法。 〖解答〗 (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 z

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求f(t)?Ae??t,??0的Fourier变换。

〖目的〗

? 符号变量限定性定义的作用。 ? fourier指令的应用。 〖解答〗

syms A t w

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)

5

F =

(2*A*a)/(a^2 + w^2)

17求F(s)?〖解答〗

s?3的Laplace反变换。 32s?3s?6s?4syms s t

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))

?? k T19求f(k)?ke的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)^2

20求方程x2?y2?1,xy?2的解。

〖目的〗

? 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求微分方程yy?5?x4?0的通解,并绘制任意常数为1时解的图形。

〖目的〗

? 理解指令dsolve的正确使用。

6

? 对dsolve输出结果的正确理解。

? ezplot指令绘图时,如何进行线色控制。 ? 如何覆盖那些不能反映图形窗内容的图名。 〖解答〗 (1)求通解

reset(symengine) clear syms y x

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) yy =

2^(1/2)*(1 - (5*x^2)/8)^(1/2) -2^(1/2)*(1 - (5*x^2)/8)^(1/2)

%将通解中的C3用1代替

(3)观察通解中两个分解的平方是否相同 yy(1)^2==yy(2)^2

ans = 1

(4)于是可考虑函数的平方关系

syms Y

fxy=Y^2-yy(1)^2 fxy =

Y^2 + (5*x^2)/4 - 2

(5)根据平方关系式画完整曲线

clf

ezplot(fxy,[-2,2,-2,2]) axis square grid on

7

Y2 + (5 x2)/4 - 2 = 021.510.50-0.5-1-1.5-2-2x-1.5-1-0.50Y0.511.52

(6)假如直接用“分解”画曲线,那么将是不完整的

ezplot(yy(1)),hold on cc=get(gca,'Children'); set(cc,'Color','r')

ezplot(yy(2)),axis([-2 2 -2 2]) legend('y(1)','y(2)'),hold off;

title(' ') %覆盖不完全的图名 grid

axis square

8

21.510.50-0.5-1-1.5-2 -2y(1)y(2) -1.5-1-0.50x0.511.52

??at2?bt,x(0)?2的解。 24求一阶微分方程x〖目的〗

? 初值微分方程的符号解。 ? 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 (3 b + 2 a t)

---------------- + 2 6

25求边值问题

dfdg?3f?4g,??4f?3g,f(0)?0,g(0)?1的解。(注dxdx意:相应的数值解法比较复杂)。

〖目的〗

? 边值微分方程的符号解。 〖解答〗

[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)

9

本文来源:https://www.bwwdw.com/article/9ya3.html

Top