数学实验教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.6 常微分方程的精确解

常微分方程是一种包含自变量、函数、函数导数和高阶导数的等式。常微分方程(组)经常被用于描述事物的动态变化,如经济波动、物体运动轨迹、受力形变等。下面介绍如何用MATLAB来求解常微分方程。

求解常微分方程(组)通解的命令为:

dsolve(eqn1, eqn2, …, t)

其中,eqn1、eqn2等为各个方程,t为自变量。

例2-23 求解x′t)+4xt)=sin(2t)。

命令代码和输出结果如下:

    >> dsolve(Dy+4∗x=sin(2∗t))

    ans=

    sin(2∗t)/5-cos(2∗t)/10+C8∗exp(-4∗t)

输出结果中的C8为待定常数。

需要注意的是,如果常微分方程(组)中的自变量为t,则无须专门注明,其他自变量必须注明。比如y′x)=x的通解为 yx)=+C,如果不注明自变量去用命令dsolve(Dy=x),则输出的是错误答案ans=t∗x+C。正确的求解命令应为:

    >> syms x;
    >> dsolve(Dy=x , x)

例2-24 求解x″t)+2x′t)-3xt)=et

输入如下代码:

    >> dsolve(D2x+2∗Dx-3∗x=exp(t))

输出结果为:

    ans=
    C1∗exp(t)-exp(t)/16+(t∗exp(t))/4+C2∗exp(-3∗t)

我们知道,绝大多数常微分方程是无法求解析解的。比如常微分方程x″t)+2x′t)-cosxt)=etsinxt)就无法求解析解,用dsolve求解时,系统会提示无法求解。

    >> dsolve(D2x+2∗DX-cos(x)-sin(x)∗exp(t))
    警告:Explicit solution could not be found.
    In dsolve at 197

    ans=

    [ empty sym]

例2-25 求解常微分方程组

由于常微分方程组的通解为单变量向量函数,因此输入的命令格式为:

    >> syms t;
    >> [ x, y]=dsolve(Dx=-3∗y , Dy=4∗x , t)

输出结果为:

    x=

   -(12^(1/2)∗C20∗cos(12^(1/2)∗t))/4-(12^(1/2)∗C19∗sin(12^(1/2)∗t))/4

    y=

    C19∗cos(12^(1/2)∗t)-C20∗sin(12^(1/2)∗t)

常微分方程的通解都带有任意常数项,要确定这些常数项的具体数值,需要有定解条件,由此得到的就是常微分方程的特解。定解条件包括初值条件、边值条件,在此基础上求解常微分方程,可以用命令:

dsolve(eqn, condition1, …, conditionk, t)

其中,eqn为方程,condition1等为定解条件。

例2-26 求解二阶常微分方程初值问题:

输入如下命令:

    >> syms x;
    >> dsolve(D2 y+3∗Dy+2∗y=sin(2∗x), y(0)=1 , Dy(0)=1 , x)

    ans=

 (17∗exp(-x))/5-(3∗cos(2∗x))/20-(9∗exp(-2∗x))/4-sin(2∗x)/20

例2-27 种群规模研究经常会用到常微分方程(组),比如最简单的指数增长模型:设t时刻种群总数为xt),种群规模增速与现有种群规模成正比,比例系数为r(相对增长率)。据此可以建立常微分方程模型:x′t)=rxt)。求其通解:

    >> syms x t r;
    >> s=dsolve(Dx=r∗x)

    s=

    C2∗exp(r∗t)

即模型有通解x=C·ert。设C=10而r=0.1,可以绘出解的曲线,如图2-15所示。

图2-15

考虑到环境和资源的限制,种群规模又会对种群增长产生一定的阻滞作用。假设种群的相对增长率是总数的减函数,其中,N为环境可容纳的种群数量上限。据此建立阻滞增长模型,对其求解:

    >> syms x a N t;
    >> s=dsolve(Dx=a∗(1-x/N)∗x)
    s=
                                        N
                                        0
    N/(exp(-N∗(C5+(a∗t)/N))+1)

结果表明,方程有三个解,两个常值解xt)≡N,0以及xt)=

观察x′随着x变化的图形,如图2-16所示。

图2-16

可以看到,随着种群总数x的增加,种群增速x′先是不断上升,然后趋于下降,并在x=N时降为0,即种群规模停止增长。

假设t=0时种群的初始值为x0,代入xt)的表达式可以求出任意常数项C,这时解可以改写为

根据这个解的表达式,可以看到种群规模会随着时间推移逐渐趋于环境允许的上限。

本节所介绍的常微分方程解法,都是求精确解,但是绝大多数常微分方程都是无法求出精确解的。因此在实际应用中,人们经常会以微分方程的数值解来代替精确解。此外,还可以运用常微分方程定性理论,在不求解的情况下,根据微分方程(组)本身来直接分析解的性态。