w. Gander. S. Bartoni and J. Hrebicek 图1.10移动坐标系,[P(t1),中(t) X(O,Y( 如果{X(t),Y(t)]为当前小孩/玩具的位置,则在 Cartesian坐标中,慢跑者/狗的坐标 x(t),y(t)是 (t)=X(t)+p(t)cos((t)), y(t)=Y(t)+p(t)sin((t)) 我们用新变量p(t)和φ(t),分别表示微分方程系统(17)和(1.8),由此可得微分方程的一个变换 注意,这两个微分方程系统是 Y 的特殊情况.如果保持常数速度√x2+y2=t= const,则(1.11)描述慢跑者/狗问题.另一方 面,如果距离是常数 (t)= X =a= const Y 则得到小孩/玩具问题的方程.因为对于小孩/玩具问题,p(t)= const,我们希望在极坐标中 简化成只有一个关于φ(t)的微分方程,我们将用 MAPLE实现这种变换 1.7.1慢跑者/狗的变换 我们先定义系统(1.8) restart >S〔t):=sqrt((x(t)-x(t))-2+(Y(t)-y(t))^2) > rx : diff(x(t),t)=w*(X(t)-x(t))/s(t) ry =diff(y(t), t)=w*(Y(t)-y(t))/s(t) (X(t)-x(t) √(X(t)-x(t)2+(Y(t)-y(t) =y()=、(x0-x()>+(Y0)-0)
第一章等切面曲线和相似曲线 现在,我们引进函数的变换和它们的导数 Rx =x(t)= x(t)+ rho(t)*cos(phi(t)) Ry =y(t)=y(t)+rho(t)*sin(phi(t)) Vx =diff(Rx, t); Vy :=diff(ry, t); (t) X(t)+(xp(t)cos(φ(t)-(t)sin((t)(中(t) y=y()=(atY()+(p()sn(()+()cos(p()(at(t) 我们代入并化简结果: subs(vx, rx) 7) Y, ry ax simplify(subs(Rx, Ry, qx), symbolic); ay simplify(subs(Rx, Ry, gy), symbolic) q:=(X()+(条p(1)cos((t)-p(t)sin(中()((t)=-Wcos(以(t) y:=是Y(1)+(是p(t)sin((t+)+p(t)cos((t)(是(t)=-wsn((t) 最后,为了得到p(t)和d(t)的导数,我们解 Dsys solve(qx, qy), diff(rho(t),t), diff(phi(t),t))) Dy:=1a)=-o(()(是Y()-(是x()sn((t p(t) 8tp()=-(0tY()s()-o(()(x()-W Radial : Dsys [2]: Axial : Dsys [1]: Radial-a )=-(()c)-0(0()(9x()-W Darial: 2明=-90(6)(是y(D)(x(o)m() 导出的微分方程系统更简单,但是没有解析解,因此我们将不继续讨论 1.72小孩/玩具的变换 如前所述,我们定义微分方程系统: Rx =x(t)=x(t)+ a*cos(phi(t)) Ry =y(t)=y(t)+asin(phi(t)) Vx =diff(Rx, t): Vy = diff(ry, t) 对于玩具的速度,我们将引进下列代入法R: (t)= subs(Vx, Vy, sqrt(diff(x(t),t)"2 diff(y(t), t)2)) RW=W()=y(mx()-asn(()(0()2+(aY()+aco(6G)(0()2
W. Gander. s. Barton and j. Hrebicek 下列语句生成系统(1.7) qx: =diff(x(t), t)=w(t)/a*(X(t)-x(t)); qy diff(y(t), t)=w(t)/a*(Y(t)-y(t)) x(t)= w(t)(x(t-x(t)) (t) w(t)(Y(t)-y(t)) 通过消去x(t)和v(t),我们引进新的变量和导数,并且我们对两个方程取平方,从而去掉平方根 q* subs(RW, Vx, Rx, map(u ->u"2, qx)); y, Ry u^2,qy)); qa: =((oX(t))-asin(o(t)(ao (t)) (Gx(t)-asin(()(0()2+(my()+acos(()(a() cos((t))2 m:=(0.y()+aco(()(c()2= (x(+)-asin(o(t)((+)2+(Y()+acos((t)(m(t))sin(()2 我们希望证明两个方程是相同的,这样系统将简化为一个关于t)的微分方程,为此我们做下列 的代入: Subst = [rhs(Vx)=A, rhs(Vy)=B, phi(t)=F]: sut:=(aX()-asin(o(1)(a()=A,(aY(1)+acos((t)()=B,()=F qlx =expand(subs(Subst, qx)) qly pand (subs(Subst, qy)) qlr: =A2=cos(F)2A2+cos(F)2B sin (F)A2 +sin(F)2 为了证明方程实际上是相同的,通过集中A和B项,简化方程 91x: =A-2*sin(F)2=B"*cos(F)2 q1y:=B^2*co8(F)-2=A^2*sin(F)2 qIr:= sin(F A= cos(F)B qly: cos (F)B2= sin(F)A2 因此它们是相同的.我们用第一个进行计算,并去掉平方、代入.通过求解(t)的导数,我们得 到所求的微分方程 >Q1:*map(u - simplify(sqrt(u), symbolic),q1x); n (F)A= cos(F)B
第一章等切面曲线和相似曲线 BackSubst =[seq(rhs(op(i, Subst))=lhs(op(i, Subst)),i =1.nops(Subst))J 1A=(x()-ain(9()(8m0(),B=(91Y()+acs(0()(00(),F= 92:subs(BackSubst,Q1) sin(()(ax()-asin((4)(()=cos((t)(Y(t)+acos((t)(ao(t) Axial diff(phi(t), t)=simplify(solve(Q2, diff(phi(t),t))) Darial:=0(=-0(4)(()+m(()是x() 值得注意,对于慢跑者/狗问题,在含有(t)的微分方程里,用常数a代替函数p(t),我们将得到 相同的方程 18例子 由于微分方程系统已经简化成一个方程,所以对于某些情况,我们希望得到解析解.首先 第一个例子是小孩在一个圆上行走 Child_Subst :=x(t)=R*cos(omega*t), Y(t)=R*sin(omega*t); Child Subst: =x(t)=Rcos(wt),Y(t)=Rsin(wt) subs(Child_ Subst, Axial) Da:、0M=二o(()(是Esn(a1)十sm)(是Rcs(a) combine(Das, trig); Das.ot s(t)=-Rwcos(-o(t)+wt) Sol : dsolve (a- r)tan(wt-p(t) arctan (a+B)(a-B)
w. Gander. S. Barton and J. Hrebicek 我们得到一个解析的表达式!由一个隐式方程给出函数(t).因此,对于给定的初始条件, MAPLE 不能解此微分方程.虽然在上面的方程里, solve命令不能求解φ(t),但可用手工求解.因为对于 这种特殊情况,确定积分常数更为简单,所以在这里我们不解它 为了重新给出图13中的轨迹,我们引入初始条件 IniSol eval(subs(t =0, phi(o)= alpha, Sol)): (a- R)tan( a) arctan √(a+R)(a-R) NicOl a2-R2 现在我们求解特解(利用 MAPLE) Sol map(u ->(u+ t/omega)*sqrt(a"2-R"2)*omega"2/a/2, Sol) Sol map(u -> tan (u)*sqrt((a+ R)*(a-R))/(a-R), Sol) lify (map(u (u), Sol), symbolic): >-_C1 : = lhs(IniSol (-2 t), Sol) 对于图1.3,我们确定初始角a tan( I tw va2-R2 Solo:=o(t) a)√(a+a-R 我们希望令棒的长a等于圆的半径R,简单的替代是不可能的,我们必须计算a→R的极限: So100:= Ihs(Solo)=limit(rhs(Solo), a= R, 'left) so100 Solo =o(t)=-2 arctan(w t)+wt >Toy:=[x(t),y(t)]: Toy- Plot subs(Rx, Child subst. Solo omega Toy- Plot: =5 cos(t)+5 cos(-2 arctan(t)+t), 5sin(t)+5sin (-2 arctan(t)+t), t=0.40 plot(Toy_Plot, scaling constrained, color black) 我们得到与图1.3同样的图形.用下列语句可得图15 So115 : eval(subs (alpha arctan(-2)+Pi, Sol)) Toy_Plot subs(Rx, Ry, Child_ Subst, Sol15 a=sqrt(125),R=5,[Toy[,t=0.200]): plot(Toy_Plot, scaling constrained, color = black) 最后,我们计算第一个例子中变量的轨迹,并考虑棒比圆的半径短的情况: Sol1 evalc(So10): Sol1 := evalc(subs(signum(a*"2)=-1, So11)