一阶非齐次线性微分方程的算法

2018-04-18  本文已影响0人  PrivateEye_zzy

本章涉及知识点

1、微分方程的定义

2、一阶线性微分方程的定义

3、求齐次线性方程通解的算法

4、求非齐次线性方程通解的算法

5、伯努利方程的变化算法

6、案例微分方程的分析

7、纯数学算法推导案例的微分方程

8、Euler算法的推导

9、编程实战案例微分方程在不同算法下的计算结果和误差

一、微分方程的定义

在许多实际问题,尤其是金融问题,往往不能直接列出所需要研究的函数的具体表达式,但是根据使用场景,却可以列出待研究的函数与其导数的关系式,而关于函数和其导数的方程就称之为微分方程,那么从这个方程中找出未知函数,就是求解微分方程的解

一般的,在满足初始条件下,微分方程包含未知函数的一阶导数

一阶微分方程

上述微分方程就叫做一阶微分方程

二、一阶线性微分方程的定义

一阶线性微分方程

上述方程是关于未知函数y及其一阶导数的一次方程,我们称之为一阶线性微分方程

方程是齐次的定义为

齐次

而方程是非齐次的定义为

非齐次

求解非齐次微分方程的解,我们需要

(1)、写出对应于非齐次线性方程的齐次线性方程,求出齐次线性方程的通解

(2)、通过常数易变法,求出非齐次线性方程的通解

三、求齐次线性方程通解的算法

对于齐次方程,我们用分离变量法,得到

求解齐次方程

提出常数C1化简得

齐次方程的通解

四、求非齐次线性方程通解的算法

得到齐次方程的通解后,我们使用常数易变法,将齐次方程通解中的常数C换做未知函数u(x),变化得

常数易变法

我们对y进行求导,得到

y的导数

将导数带入非齐次线性方程中,得

非齐次线性方程解法-1

两端积分得

非齐次线性方程解法-2

将求解到的u带入y,就得到了非齐次方程的通解

非齐次方程的通解

我们将通解写成两项之和,得到

非齐次方程的通解意义

观察分析上式可以看到,一阶非齐次线性微分方程的通解 = 齐次方程的通解 + 非齐次方程的一个特解

五、伯努利方程的变化算法

从一阶线性微分方程中可以看到,P(x)和Q(x)当只有P(x)是关联未知函数y,我们可以用上述算法求解该方程。但是当Q(x)也关联未知函数y,此时应该如何求解方程呢?

伯努利方程

上述方程叫做伯努利方程,显然当n=0或n=1时,就是非齐次线性方程,而当n不等于0和1时,这个方程就不是线性的,为此,我们需要利用上述算法求解该方程,就需要通过变量的代换,将它转化为线性的即可

我们将伯努利方程两端同时除以y^n得

伯努利方程变化-1

因为

伯努利方程变化-2

为此我们引入新的因变量z

引入新的因变量z

则z的导数写为

z的导数

将伯努利方程两端同时乘以(1-n)得

伯努利方程变化-2

可以看到上式的P(x)与z有关联,而Q(x)已经和z没有了关联,即原方程已经变成了线性方程,我们就可以按照之前的算法求出方程的通解,在用z带回y就可以得到伯努利方程的通解

六、案例微分方程的分析

介绍了非齐次线性方程和伯努利方程求解通解的算法后,我们来求下面方程的通解

案例方程

分析可知,该方程数非线性方程,属于n=-1的伯努利方程,直接的数学解法需要做伯努利变化为线性方程,再利用非齐次线性方程的解法来求解通解,下面我们先用数学方法来求解

七、纯数学算法推导案例的微分方程

将案例方程两端同时乘以y得

案例方程求解-1

案例方程求解-2

带入y得

案例方程求解-3

我们从上式中写出P(x)、Q(x)以及P(x)的积分

案例方程求解-4

带入非齐次线性方程的通解得

案例方程求解-5

下面我们需要单独来求解上式中的积分,使用分部积分法

案例方程求解-6

将积分的结果带入非齐次线性方程的通解得

案例方程求解-7

将z带回y得

案例方程求解-8

为此我们求出了案例方程的通解,下面带入初始条件y(0)=1得

案例方程求解-9

最终我们得到了案例方程的精确解为

案例方程的精确解

八、Euler算法的推导

上面我们用纯数学知识推导出了案例方程的精确解,但是计算机显然不会分部积分法,我们任然需要从微分方程的原理出发

我们回到微分方程的定义

微分方程的定义

我们将微分方程在区间[ti,ti+1]上积分得

同时积分

在区间[ti,ti+1]上将f(t,u)近似的看做常数f(ti,ui),则有

Euler算法

上式称为Euler算法,可以看到这是一个递推式算法,可以由已知初值u0推导至un

而Euler算法的几何意义为:

过点(t0,u0),以f(t0,u0)作为斜率作直线L0,得

Euler算法的几何意义-1

求出直线L0在t1=t0+h的值u1,得

Euler算法的几何意义-2

得到u1后,再过点(t1,u1),以f(t1,u1)作为斜率作直线L1,得

Euler算法的几何意义-3

求出直线L1在t2=t1+h的值u2,得

Euler算法的几何意义-4

如此继续迭代下去,可以求出经过

Euler算法的几何意义-5

节点列表的一条直线,所以Euler算法也叫做折线法,用n段直线绘制成一条折线,来拟合函数曲线

九、编程实战案例微分方程在不同算法下的计算结果和误差

下面我们通过伯纯数学的努利算法和Euler迭代算法来编程比较案例方程的结果值

伯努利算法 Euler算法

定义区间和步长为

实验区间和步长

作图画出两种算法的计算结果来直观比较

h=0.05时两种算法的计算结果比较

可以看到当步长h=0.05时,Euler算法的精确度在下降,证明了误差在迭代传播

我们用伯努利理论值减去Euler值,画出Euler算法的误差曲线

h=0.05时Euler算法的误差曲线

当我们缩小步长h=0.01时,两种算法的计算结果和Euler算法的误差为

h=0.01时两种算法的计算结果比较   h=0.01时Euler算法的误差曲线

可以看到步长的缩小,拟合效果更加出色,误差也在减小

案例代码见:一阶非齐次微分方程的算法

上一篇 下一篇

猜你喜欢

热点阅读