首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

本章涉及知识点

1、微分方程的定义

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

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

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

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

6、案例微分方程的分析

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

8、Euler算法的推导

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

一、微分方程的定义

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

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

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

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

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

方程是齐次的定义为

而方程是非齐次的定义为

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

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

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

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

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

提出常数C1化简得

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

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

我们对y进行求导,得到

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

两端积分得

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

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

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

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

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

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

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

因为

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

则z的导数写为

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

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

六、案例微分方程的分析

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

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

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

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

我们令

带入y得

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

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

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

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

将z带回y得

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

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

八、Euler算法的推导

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

我们回到微分方程的定义

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

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

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

而Euler算法的几何意义为:

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

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

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

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

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

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

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

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

伯努利算法

Euler算法

定义区间和步长为

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

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

我们用伯努利理论值减去Euler值,画出Euler算法在步长h=0.05时的误差曲线

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

从结果中对比可以看到,随着步长的缩小,我们拟合的效果更加出色,误差也在减小

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180605G0MF4600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券