1、常用函数1)求解常微分方程的命令dsolve.dsolve(常微分方程)dsolve(常微分方程,待解函数,选项)dsolve({常微分方程,初值},待解函数,选项)dsolve({常微分方程组,初值},{待解函数},选项)其中选项设置解得求解方法和解的表示方式。
求解方法有type=formal_series(形式幂级数解)、type=formal_solution(形式解)、type=numeric(数值解)、type=series(级数解)、method=fourier(通过Fourier变换求解)、method=laplace(通过Laplace变换求解)等。
解的表示方式有explicit(显式)、implicit(隐式)、parametric(参数式)。
当方程比较复杂时,要想得到显式解通常十分困难,结果也会相当复杂。
这时,方程的隐式解更为有用,一般也要简单得多。
dsolve为标准库函数。
2)求解一阶线性常微分方程的命令linearsol.在Maple中求解一阶线性方程既可以用dsolve函数求解,也可以用Detools函数包中的linearsol函数求解。
linearsol是专门求解线性微分方程的命令,使用格式为: linearsol(线性方程,待解函数)linearsol的返回值为集合形式的解。
3)偏微分方程求解命令pdsolve.pdsolve(偏微分方程,待解变量,选项)pdsolve(偏微分方程,初值或边界条件,选项)pdsolve为标准库函数,可直接使用。
如果求解成功,将得到几种可能结果:方程的通解;拟通解(包含有任意函数,但不足以构造通解);一些常微分方程的集合;2、方法1)一阶常微分方程的解法a 分离变量法 I 直接分离变量法。
如()()dyf xg y dx=,方程右端是两个分别只含x 或y 的函数因式乘积,其通解为()()dyf x dx Cg y =+⎰⎰。
II 换元法之后再用分离变量法。
对于以y x 为中间变量的函数,如()dy y g dx x =,令u=yx,则原方程变为()du g u udx x-=,再用分离变量法可得()du dx C g u u x =+-⎰⎰。
b 常数变易法I 对于线性非齐次方程来说,线性非齐次方程的通解=它所对应的齐次方程的通解+非齐次方程的一个特解。
如y'+P(x)y=f(x),若f(x)≡0,y'+P(x)y=0为一阶线性齐次方程,其通解为()P x dxy Ce -⎰=,令()()P x dx y C x e -⎰=代入非齐次方程,求出C(x),再的特解。
II 对于伯努利方程(非线性一阶)来说,先将其化为线性。
如'()()(0,1)n y P x y f x y n +=≠,两端除以n y ,得1'()()n n y y P x y f x --+=,令z=1n y -,则原方程可化为1()()()1dz P x z f x n dx+=-。
2)二阶线性常微分方程的解法a 二阶线性齐次方程,y''+p(x)y'+q(x)y=0 若1()y x 与2()y x 是方程的解,且12()()y x y x ≠常数(即线性无关),则1122()()()y x c y x c y x =+是通解,考虑常系数,即p.q 都是常数,y''+py'+qy=0。
其特征方程为20k pk q ++=。
解为1k =,2k =I 24p q ->0,两个不等实根,且21k xk x e e≠常数时,12k x k x y e e =+。
II 24p q -<0,一对共轭复根,12,k i k i αβαβ=+=-,1210.5()k x k x y e e =+,1220.5()k x k x y e e =-,12/y y ≠常数,12(cos()sin())x y e C x C x αββ=+。
III 24p q -=0,两个相等实根,12k k k ==,12,kx kx y e y xe ==,12/y y ≠常数,12()kx y C C e =+。
b 二阶常系数线性非齐次微分方程,y''+py'+qy=r(x).非齐次方程的通解=它所对应的齐次方程的通解+非齐次方程的一个特解。
利用常数变异法,令其特解为*1122()()()()()y x C x y x C x y x =+,则'''''*11112222()()()()()()()()()y x C x y x C x y x C x y x C x y x =+++,令''1122()()()()C x y x C x y x +=0……①,并求出"*()y x ,将*()y x '"**(),()y x y x 并将它们都带入到原方程,得''''1122()()()()C x y x C x y x +=r(x)……② 联立①,②式得''12(),()C x C x 。
以上得出了特解,再将其与通解组合可得原方程的解。
c 欧拉方程(变系数),212"'()x y a xy a y f x ++=。
令tx e =,则2222211,()dy dy dt dy d y dy d ydx dt dx x dt dx x dt dt=⋅=⋅=--,代入得 2112(1)()t d y dya a y f e dt dt+-+=,可以求解。
3、作图1)常微分方程数值解作图命令odeplot要作出常微分方程数值解的图像,要使用odeplot 函数。
odeplot 在函数抱plots 中,可通过with(plots)或plots[odeplot]调出。
odeplot(数值解,被绘函数,参数范围,选项)2)偏微分方程作图命令PDEplotPDEplot(偏微分方程,初值,参数范围,选项)PDEplot 位于PDEtools 函数包中,使用前必须先调出PDEtools 函数包。
三、各种方程的求解第一部分:一阶常微分方程 1、可分离变量方程例1:sin()'()sin()x y x y => eq:=diff(y(x),x)=sin(x)/sin(y(x));:= eq = ∂∂x ()y x ()sin x ()sin ()y x> DEtools[odeadvisor](eq);[]_separable> dsolve(eq);= ()y x - π()arccos - + ()cos x _C1> dsolve(eq,implicit);= - + + ()cos x ()cos ()y x _C10> dsolve({eq,y(0)=1});= ()y x ()arccos - + ()cos x 1()cos 1> dsolve({eq,y(0)=1},numeric,range=-2..2);proc () ... end proc rkf45_x > plots[odeplot](%);2、齐次方程例2:tan()dy y y dx x x=+ > eq:=D(y)(x)=y(x)/x+tan(y(x)/x);:= eq =()()D y x + ()y x x ⎛⎝ ⎫⎭⎪⎪tan ()y x x > DEtools[odeadvisor](eq);[],[],_homogeneous class A _dAlembert > dsolve(eq);= ()y x ()arcsin x _C1x> dsolve({eq,y(1)=1});= ()y x ()arcsin x ()sin 1x> dsolve({eq,y(1)=3});= ()y x ()arcsin x ()sin 3x> dsolve({eq,y(1)=3},numeric,range=1..6);proc () ... end proc rkf45_x > plots[odeplot](%);3、线性方程sin()3:dy x ydx x-=例 > eq:=D(y)(x)=(sin(x)-y(x))/x; := eq =()()D y x - ()sin x ()y x x> DEtools[odeadvisor](eq);[]_linear> dsolve(eq);=()y x - + ()cos x _C1x> DEtools[linearsol](eq);{} =()y x - + ()cos x _C1x> dsolve({eq,y(1)=2},numeric,range=-5..5);proc () ... end proc rkf45_x > plots[odeplot](%);4、Bernoulli 方程1246dyx y xy dx-=-例:> eq:=D(y)(x)=6*y(x)/x-x*y(x)^2;>:= eq = ()()D y x - 6()y x xx ()y x 2> DEtools[odeadvisor](eq);[],,[],_homogeneous class G _rational _Bernoulli > dsolve(eq);= ()y x 8x 6+ x 88_C1> plots[odeplot](dsolve({eq,y(1)=1},numeric,range=-5..-1));第二部分:二阶线性常微分方程 1、二阶常系数线性齐次方程例5:y"+2y'+y=0> eq:=diff(y(x),x$2)+2*diff(y(x),x)+y(x)=0;:= eq = + + ⎛⎝ ⎫⎭⎪⎪∂∂2x 2()y x 2⎛⎝ ⎫⎭⎪⎪∂∂x ()y x ()y x 0 > dsolve(eq);= ()y x + _C1e()-x _C2e()-x x> DEtools[constcoeffsols](eq);[],e()-x e()-x x> plots[odeplot](dsolve({eq,y(0)=0,D(y)(0)=1},numeric,range=-2..2));2、二阶常系数线性非齐次方程例6:2"'23y y x +=-> eq:=diff(y(x),x$2)+diff(y(x),x)=2*x^2-3;:= eq = + ⎛⎝ ⎫⎭⎪⎪∂∂2x 2()y x ⎛⎝ ⎫⎭⎪⎪∂∂x ()y x - 2x 23 > dsolve(eq,y(x));= ()y x - - + + 23x 32x 2e ()-x _C1x _C2> plots[odeplot](dsolve({eq,y(0)=0,D(y)(0)=1},numeric,range=-3..3));3、Euler 方程(变系数)例7:2x y"+5xy'+13y=0> eq:=x^2*diff(y(x),x$2)+5*x*diff(y(x),x)+13*y(x)=0;:= eq = + + x 2⎛⎝ ⎫⎭⎪⎪∂∂2x 2()y x 5x ⎛⎝ ⎫⎭⎪⎪∂∂x ()y x 13()y x 0 > DEtools[odeadvisor](eq);[][],_Emden _Fowler> dsolve(eq);=()y x + _C1()sin 3()ln x x 2_C2()cos 3()ln x x2> plots[odeplot](dsolve({eq,y(1)=0,D(y)(1)=1},numeric,range=1..5));第三部分:偏微分方程 1、波动方程例8:xx tt u u =.> pde:=diff(u(x,t),x$2)=diff(u(x,t),t$2);:= pde = ∂∂2x 2()u ,x t ∂∂2t2()u ,x t> pdsolve(pde);= ()u ,x t + ()_F1 + t x ()_F2 - t x这里给出了通解,其中_F1,_F2是任意两个具有二阶连续导数的一元函数。