当前位置:文档之家› 第5章 微分方程(Maple)

第5章 微分方程(Maple)

第5章微分方程5.1 常微分方程5.1.1 常微分方程的求解和作图命令z 求解微分方程命令dsolve在微分方程中,我们称只有一个自变量的微分方程为常微分方程,具有两个或两个以上自变量的微分方程为偏微分方程。

例如:描述物体冷却过程的数学模型)(0u u k dtdu−−= 含有自变量t 、未知函数u 以及一阶导数dudt,是一个常微分方程。

Maple 中求解常微分方程的命令为dsolve 函数,其用法有dsolve (常微方程)dsolve (常微方程,待解函数,选项)dsolve ({常微方程,初值},待解函数,选项) dsolve ({常微方程组,初值},{待解函数},选项)z 方程数值解作图命令odeplot要做出常微分方程数值解的图象,请使用odeplot 函数。

odeplot 在程序包plots 中,可通过with(plots)或plots[odeplot]调出。

odeplot (数值解,被绘函数,参数范围,选项)5.1.2 一阶常微分方程z 可分离变量方程若一阶微分方程有形式)()(y g x f dxdy=,则称为可分离变量方程。

一般可以通过对方程dx x f y g dy)()(=两边分别积分,得到方程的隐式解。

例:求解微分方程sin()'()sin()x y x y =。

> eq:=diff(y(x),x)=sin(x)/sin(y(x));显然,这是可分离变量的常微分方程。

用Detools 程序包中的odeadvisor 函数检测方程的类型,输出结果_separable 说明方程类型是可分离变量的。

> DEtools[odeadvisor](eq);[_separable]用dsolve 函数求解方程,得到方程的通解。

> dsolve(eq);设定选项implicit ,得到方程的隐式解。

> dsolve(eq,implicit);附加初始值y(0)=1,得到方程的准确解。

> dsolve({eq,y(0)=1});odeplot 命令作出方程解的图形。

> dsolve({eq,y(0)=1},numeric,range=-2..2);> plots[odeplot](%);z 齐次方程若常微分方程具有形式⎟⎠⎞⎜⎝⎛=x y f dx dy ,则称为齐次方程。

通常用变量代换x y u =将齐次方程转换为可分离变量方程xu u f dx du −=)(。

例:求解齐次微分方程⎟⎠⎞⎜⎝⎛+=x y x y dx dy tan 。

> eq:=D(y)(x)=y(x)/x+tan(y(x)/x); z 线性方程形如)()(x q y x p dxdy=+的微分方程称为一阶线性方程,在Maple 中既可以用dsolve 函数求解,也可以用DEtools 程序包中的linearsol 函数求解。

linearsol 是专门用于求解线性微分方程的命令,使用格式为linearsol (线性方程,欲求函数)linearsol 的返回值为集合形式的解。

例:求解线性方程xyx dx dy −=)sin(。

> eq:=D(y)(x)=(sin(x)-y(x))/x;> dsolve(eq);> dsolve({eq,y(1)=2},numeric,range=-5..5): # 取初值y(1)=2,-5<x<5 > plots[odeplot](%); # 作出解的图象图 5-3z Bernoulli 方程形如n y x q y x p dxdy)()(=+的微分方程称为Bernoulli 方程。

当1,0≠n 时,变量代换n y u −=1将Bernoulli 方程转化为线性方程())()()1(x q u x p n dxdu−⋅−=。

z Riccati 方程形如)()()(2x r y x q y x p dxdy++=的微分方程称为Riccati 方程。

在一般情况下,无法求出其通解的解析表达式。

但是如果知道任一特解,则可求出它的通解。

例5:求解Riccati 方程221y xdx dy−= 5.1.3 常系数线性微分方程形如)()1(1)(x f y c y c yn n n =+++−L ,其中n c c ,,1L 为常数的微分方程被称为n 阶常系数线性微分方程。

当0)(=x f 时,方程被称为齐次方程;当0)(≠x f 时,方程被称为非齐次方程。

z 齐次方程例6:求解02=+′+′′y y y 。

这是一个二阶常系数齐次微分方程。

> eq:=diff(y(x),x$2)+2*diff(y(x),x)+y(x)=0;> dsolve(eq); # 用dsolve 函数直接求解除了上述dsolve 函数外,还可以调用程序包DEtools 中的函数constcoeffsols ,求出微分方程的线性无关的特解,这些特解的线性组合就是方程的所有解。

> DEtools[constcoeffsols](eq);给定方程一个初值y(0)=0,y'(0)=1,-2<x<2,作出它的解的图象。

> plots[odeplot](dsolve({eq,y(0)=0,D(y)(0)=1},numeric,range=-2..2));图 5-6z 非齐次方程非齐次方程解的具体讨论由于比较复杂,这里只举出例子说明用Maple 求解。

想了解更详细的过程,可以参考有关微分方程的书籍。

例:求解常系数线性非齐次方程322−=′+′′x y y 。

z Euler 方程齐次Euler 方程的一般形式为01)1(11)(=+′+⋅⋅⋅++−−−y a y x a y x a y x n n n n n n其中n a a a ,,,21⋅⋅⋅都是常数。

求解方法是做变换te x =,求出y(t),然后再将x t ln =代入,即可以得到原方程的解y(x)。

例8:求解Euler 方程01352=+′+′′y y x y x 。

> eq:=x^2*diff(y(x),x$2)+5*x*diff(y(x),x)+13*y(x)=0;> DEtools[odeadvisor](eq);[[_Emden,_Fowler]]> dsolve(eq);给定Euler 方程一个初值y(1)=0,y'(1)=1,1<x<5,作出它的解的图象。

> plots[odeplot](dsolve({eq,y(1)=0,D(y)(1)=1},numeric,range=1..5));图 5-85.1.4 微分方程组除了单个微分方程之外,dsolve 函数也可以求解微分方程组,求解的方法与solve 求解方程组类似。

例9:求解线性微分方程组⎩⎨⎧+=′+=′)(4)(3)()()(2)(t y t x t y t y t x t x > eqs:={diff(x(t),t)=2*x(t)+y(t),diff(y(t),t)=3*x(t)+4*y(t)};仍然调用dsolve 函数求解,解函数中的_C1和_C2表示任意常数。

> dsolve(eqs);给定方程组一个初值x(0)=y(0)=1,-1<t<1,作出它的解的图象。

> dsolve(eqs ∪{x(0)=1,y(0)=1},numeric,range=-1..1);> plots[odeplot](%,[t,x(t),y(t)]);图 5-95.2 偏微分方程5.2.1 偏微分方程的求解和作图命令z 偏微分方程求解命令pdsolve最简单的求解偏微分方程(Partial Differential Equation )的命令是pdsolve 函数,其用法有pdsolve (偏微方程,待解变量,选项) pdsolve (偏微方程,初值或边界条件,选项)pdsolve 为标准库函数,可直接使用。

z 数值解作图命令PDEplotPDEplot (偏微方程,初值,参数范围,选项)PDEplot 位于PDEtools 程序包中,使用前必须先调出PDEplot 程序包。

5.2.2 一阶拟线性和非线性微分方程例1:画出偏微分方程0=⋅+y x z z z 的解曲面),(y x z 。

> pde:=D[1](z)(x,y)+z(x,y)*D[2](z)(x,y)=0;给定初始条件z(0,y)=sech(y),-5<y<5,再画3维空间中的参数曲面。

> PDEtools[PDEplot](pde,[0,y,sech(y)],y=-5..5);例2:画出偏微分方程u u z =)cos(的解曲面),,(z y x u 。

> pde:=cos(diff(u(x,y,z),z))=u(x,y,z);> PDEtools[PDEplot](pde,[cos(t)*sin(s),cos(t)*cos(s),cos(t), \ sin(t)],[t=0..Pi,s=0..Pi],numchar=[20,20]);例:画出偏微分方程022)(222=−−++xz xyz z z y x y x 的解曲面),(y x z 。

> pde:=(x^2+y^2+z(x,y)^2)*diff(z(x,y),x) \ -2*x*y*diff(z(x,y),y)-2*x*z(x,y)=0;> PDEtools[PDEplot](pde,[t,t,sin(Pi*t/0.1)/10],t=0..0.1);5.2.3 二阶微分方程z 波动方程例:求解波动方程tt xx u u =。

z 热传导方程例:求解热传导方程00>=−t u u xx t ,。

z 位势方程位势方程的一般形式为:)(x f u =Δ−,这是椭圆方程的典型代表。

当0)(≠x f 时,称为Poisson 方程;当0)(=x f 时,称为调和方程,它的解称为调和函数。

例6:求解Poisson 方程x u u yy xx −=+。

> pdsolve(diff(u(x,y),x$2)+diff(u(x,y),y$2)+x);其中_F1和_F2是任意两个解析函数,1−=I 。

例7:求解Cauchy-Riemann 方程⎩⎨⎧−==x yyx v u v u 。

> pdsolve({diff(u(x,y),x)-diff(v(x,y),y), \ diff(u(x,y),y)+diff(v(x,y),x)});这里给出了复形式的通解,其中_F1和_F2是任意两个解析函数,_C1为常数,1−=I 。

相关主题