常微分方程的解析解(方法归纳)以及基于Python的微分方程数值解算例实现

Python014

常微分方程的解析解(方法归纳)以及基于Python的微分方程数值解算例实现,第1张

本文归纳常见常微分方程的解析解解法以及基于Python的微分方程数值解算例实现。

考虑常微分方程的解析解法,我们一般可以将其归纳为如下几类:

这类微分方程可以变形成如下形式:

两边同时积分即可解出函数,难点主要在于不定积分,是最简单的微分方程。

某些方程看似不可分离变量,但是经过换元之后,其实还是可分离变量的,不要被这种方程迷惑。

形如

的方程叫做一阶线性微分方程,若 为0,则方程齐次,否则称为非齐次。

解法: (直接套公式)

伯努利方程

形如

的方程称为伯努利方程,这种方程可以通过以下步骤化为一阶线性微分方程:

令 , 方程两边同时乘以 ,得到

即 .

这就将伯努利方程归结为可以套公式的一阶线性微分方程。

形如

的方程称为二阶常系数微分方程,若 ,则方程称为齐次的,反之称为非齐次的。以下默认方程是非齐次的。

求解此类方程分两步:

原方程的解 = 齐次通解 + 非齐次特解

首先假设 .用特征方程法,写出对应的特征方程并且求解:

解的情况分为以下三种:

情况一:方程有两个不同的实数解

假设两个实数解分别是 , 此时方程的通解是

情况二:方程有一个二重解

假设该解等于 ,此时方程的通解是

情况三:方程有一对共轭复解

假设这对解是 , 此时方程的通解是

对于和特征根的情况,对特解的情况做如下归纳:

形如

的方程叫做高阶常系数微分方程,若 ,则方程是齐次的,否则是非齐次的。下面默认方程是非齐次的。

求解此类方程分两步:

原方程的解 = 齐次通解 + 非齐次特解

考虑带有第三类边界条件的二阶常系数微分方程边值问题

问题一:两点边值问题的解析解

由于此方程是非齐次的,故 求解此类方程分两步:

原方程的解 = 齐次通解 + 非齐次特解

首先假设 . 用特征方程法,写出对应的特征方程

求解得到两个不同的实数特征根: .

此时方程的齐次通解是

由于 . 所以非齐次特解形式为

将上式代入控制方程有

求解得: , 即非齐次特解为 .

原方程的解 = 齐次通解 + 非齐次特解

于是,原方程的全解为

因为该问题给出的是第三类边界条件,故需要求解的导函数

且有

将以上各式代入边界条件

解此方程组可得: .

综上所述,原两点边值问题的解为

对一般的二阶微分方程边值问题

假定其解存在唯一,

为求解的近似值, 类似于前面的做法,

考虑带有第三类边界条件的二阶常系数微分方程边值问题

问题二:有限差分方法算出其数值解及误差

对于 原问题 ,取步长 h=0.2 ,用 有限差分 求其 近似解 ,并将结果与 精确解y(x)=-x-1 进行比较.

因为

先以将区间划分为5份为例,求出数值解

结果:

是不是解出数值解就完事了呢?当然不是。我们可以将问题的差分格式解与问题的真解进行比较,以得到解的可靠性。通过数学计算我们得到问题的真解为 ,现用范数来衡量误差的大小:

结果:

接下来绘图比较时数值解与真解的差距:

结果:

将区间划分为份, 即时.

结果:

绘图比较时数值解与真解的差距:

最后,我们还可以从数学的角度分析所采用的差分格式的一些性质。因为差分格式的误差为 , 所以理论上来说网格每加密一倍,与真解的误差大致会缩小到原来的 . 下讨论网格加密时的变化:

结果:

scipy中提供了用于解常微分方程的函数odeint(),完整的调用形式如下:scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0,hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0)实际使用中,还是主要使用前三个参数,即微分方程的描写函数、初值和需要求解函数值对应的的时间点。接收数组形式。这个函数,要求微分方程必须化为标准形式,即dy/dt=f(y,t,)。from scipy import odeinty = odeint(dy/dt=r*y*(1-y/k) ,y(0)=0.1,t) 对于微分方程全还给老师了, http://hyry.dip.jp:8000/pydoc/index.html这个地址有很多关于python做科学计算的文档,你可以去查查