计算机代数系统第4章-方程求解(5)

2019-03-28 08:52

plot3d(rhs(%%),omega=2/3..4/3,t=0..20,style=hidden,orientation=[-30,45],axes=framed);

对于d=1的情况, 可可用下式获得结果: > limit(rhs(solution),d=1); (?2u0????2v0t???1????3u0t???t????e?2(t?))e(?t?) 再如下例: > diff(u(t),t$2)+3*diff(u(t),t)+2*u(t)=exp(-abs(t)); 2????????2u(t)???e(?t?2u(t)????3?u(t)????t???t?????) - 120 -

> dsolve(%,u(t),method=fourier); (?t)2(?2t)11(?t)u(t)???eHeaviside(t)???etHeaviside(?t)???etHeaviside(t)???eHeaviside(t)362 2.3 常微分方程组的求解 函数dsolve不仅可以用来求解单个常微分方程, 也可以求解联立的常微分方程组. 特别是对于线性微分方程组, 由于数学上具有成熟的理论, Maple的求解也是得心应手. 其命令格式为: dsolve( {eqn1, eqn2, ?, ini_conds}, {vars}); 其中, ini_conds是初始条件. > eqn1:={diff(x(t),t)=x(t)+y(t),diff(y(t),t)=y(t)-x(t)}; ??eqn1 := {x(t)???x(t)???y(t),y(t)???y(t)???x(t)} ?t?t> dsolve(eqn1,{x(t),y(t)}); {x(t)???et(_C1sin(t)???_C2cos(t)),y(t)???et(_C1cos(t)???_C2sin(t))} > eqn2:=2*diff(x(t),t$2)+2*x(t)+y(t)=2*t; ???????2x(t)???y(t)???2teqn2 := 2?x(t)??t2???- 121 -

2 > eqn3:=diff(y(t),t$2)+2*x(t)+y(t)=t^2+1; ???2?eqn3 := ?y(t)???2x(t)???y(t)???t???1??t2???2 > dsolve({eqn2, qn3, x(0)=0, D(x)(0)=1, y(0)=0, D(y)(0)=0}, {x(t),y(t)} ); 1113{x(t)???sin(2t)2???t3???t4???t,81248411111y(t)???sin(2t)2???t???t2???t3???t4}422624 2.4 常微分方程的级数解法 1) 泰勒级数解法 当一个常微分方程的解析解难以求得时, 可以用Maple求得方程解的级数近似, 这在大多数情况下是一种非常好的方法. 级数解法是一种半解析半数值的方法. 泰勒级数法的使用命令为: dsolve({ODE,Ics}, y(x), 'series'); 或dsolve({ODE,Ics}, y(x), 'type=series'); 下面求解物理摆的大幅振动方程:l???gsin?, 其中l是摆长, ?是摆角, g是- 122 -

重力加速度. > ODE:=l*diff(theta(t),t$2)=-g*sin(theta(t)); ????????gsin(?(t))ODE := l??(t)??t2???2 > initvals:=theta(0)=0,D(theta)(0)=v[0]/l; initvals := ?(0)???0,D(?)(0)???v0l > sol:=dsolve({ODE,initvals},theta(t),type=series); 1gv031gv0(v0???gl)5sol := ?(t)???t???t???t???O(t6)24l6l120lv02> Order:=11: > sol:=dsolve({ODE,initvals},theta(t),type=series); 22gv0(57gv0l???102g2v0l2???g3l3???v0)1gv031gv0(v0???gl)51gv0(11glv0???gl???v0)71sol := ?(t)???t???t???t???t???t9???O(t11)2468l6l1205040362880lllv0224426 2) 幂级数解法

对于一个符号代数系统来说, 幂级数是必不可少的微分方程求解工具. 幂级数求解函数powsolve存于工具包powseries中. 但是, 这一求解函数的

- 123 -

使用范围很有限, 它只可以用来求解多项式系数的线性常微分方程或方程组,其求解命令为:powseries[function] (prep)或直接载入软件包后用function(prep), prep为求解的线性微分方程及其初值. 例:求解:xy??y???4xy?0 > ODE:=x*diff(y(x),x$2)+diff(y(x),x)+4*x^2*y(x)=0; 22?????????4x2y(x)???0?ODE := x?y(x)???y(x)?????x2???x???? > dsolve(ODE,y(x)); 4(3/2)??0,4x(3/2)?y(x)???_C1BesselJ?0,x???_C2BesselY?????3??3?????> initvals:=y(0)=y0,D(y)(0)=0; initvals := y(0)???y0,D(y)(0)???0 > with(powseries): > sol:=powsolve({ODE,initvals}); sol := proc(powparm) ... end proc> tpsform(sol,x,16); 4416416y0???y0x3???y0x6???y0x9???y0x12???y0x15???O(x16)98165615904913286025- 124 -


计算机代数系统第4章-方程求解(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:应用现代汉语

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: