美文网首页
一阶非齐次线性微分方程的算法

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

作者: PrivateEye_zzy | 来源:发表于2018-04-18 16:14 被阅读0次

    本章涉及知识点

    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算法的误差曲线

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

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

    相关文章

      网友评论

          本文标题:一阶非齐次线性微分方程的算法

          本文链接:https://www.haomeiwen.com/subject/mnjpkftx.html