常微分方程初值问题数值解法_第1页
常微分方程初值问题数值解法_第2页
常微分方程初值问题数值解法_第3页
常微分方程初值问题数值解法_第4页
常微分方程初值问题数值解法_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1常微分方程初值问题数值解法2023/1/182

在高等数学中,对于常微分方程的求解,给出了一些典型方程求解析解的基本方法,如可分离变量法、常系数齐次线性方程的解法、常系数非齐次线性方程的解法等。但能求解的常微分方程仍然是有限的,大多数的常微分方程是不能给出解析解。譬如

这个一阶微分方程就不能用初等函数来表达它的解。

第1页/共81页2023/1/183再如,方程

的解,虽然有表可查,但对于表上没有给出的值,仍需插值方法来计算第2页/共81页2023/1/184从实际问题当中归纳出来的微分方程,通常主要依靠数值解法来解决。本章主要讨论一阶常微分方程初值问题

(9.1)

在区间a≤x≤b上的数值解法。

可以证明,如果函数在带形区域R:{a≤x≤b,-∞<y<∞}内连续,且关于y满足李普希兹(Lipschitz)条件,即存在常数L(它与x,y无关)使

对R内任意x及两个都成立,则方程(9.1)的解在a,b上存在且唯一。

第3页/共81页2023/1/185数值方法的基本思想

对常微分方程初值问题(9.1)式的数值解法,就是要算出精确解y(x)在区间a,b上的一系列离散节点处的函数值的近似值相邻两个节点的间距称为步长,步长可以相等,也可以不等。本章总是假定h为定数,称为定步长,这时节点可表示为数值解法需要把连续性的问题加以离散化,从而求出离散节点的数值解。

第4页/共81页2023/1/186

对常微分方程数值解法的基本出发点就是离散化。其数值解法有两个基本特点,它们都采用“步进式”,即求解过程顺着节点排列的次序一步一步地向前推进,描述这类算法,要求给出用已知信息计算的递推公式。建立这类递推公式的基本方法是在这些节点上用数值积分、数值微分、泰勒展开等离散化方法,对初值问题中的导数进行不同的离散化处理。

第5页/共81页2023/1/187对于初值问题的数值解法,首先要解决的问题就是如何对微分方程进行离散化,建立求数值解的递推公式。递推公式通常有两类,一类是计算yi+1时只用到xi+1,xi和yi,即前一步的值,因此有了初值以后就可以逐步往下计算,此类方法称为单步法;其代表是龙格—库塔法。另一类是计算yi+1时,除用到xi+1,xi和yi以外,还要用到,即前面k步的值,此类方法称为多步法;其代表是亚当斯法。

第6页/共81页2023/1/188§9.2简单的数值方法与基本概念9.2.1Euler公式欧拉(Euler)方法是解初值问题的最简单的数值方法。初值问题的解y=y(x)代表通过点的一条称之为微分方程的积分曲线。积分曲线上每一点的切线的斜率等于函数在这点的值。

第7页/共81页2023/1/189Euler法的求解过程是:从初始点P0(即点(x0,y0))出发,作积分曲线y=y(x)在P0点上切线(其斜率为

),与x=x1直线相交于P1点(即点(x1,y1),得到y1作为y(x1)的近似值,如上图所示。过点(x0,y0),以f(x0,y0)为斜率的切线方程为

当时,得这样就获得了P1点的坐标。

第8页/共81页2023/1/1810同样,过点P1(x1,y1),作积分曲线y=y(x)的切线交直线x=x2于P2点,切线的斜率=直线方程为当时,得第9页/共81页2023/1/1811当时,得由此获得了P2的坐标。重复以上过程,就可获得一系列的点:P1,P1,…,Pn。对已求得点以=为斜率作直线

取第10页/共81页2023/1/1812从图形上看,就获得了一条近似于曲线y=y(x)的折线。这样,从x0逐个算出对应的数值解第11页/共81页2023/1/1813通常取(常数),则Euler法的计算格式

i=0,1,…,n(9.2)还可用数值微分、数值积分法和泰勒展开法推导Euler格式。以数值积分为例进行推导。将方程的两端在区间上积分得,

选择不同的计算方法计算上式的积分项

,就会得到不同的计算公式。

(9.3)第12页/共81页2023/1/1814

用左矩形方法计算积分项

代入(9.3)式,并用yi近似代替式中y(xi)即可得到向前欧拉(Euler)公式

由于数值积分的矩形方法精度很低,所以欧拉(Euler)公式当然很粗糙。

第13页/共81页2023/1/1815例9.1用欧拉法解初值问题

取步长h=0.2,计算过程保留4位小数

解:h=0.2,欧拉迭代格式

当k=0,x1=0.2时,已知x0=0,y0=1,有

y(0.2)y1=0.2×1(4-0×1)=0.8当k=1,x2=0.4时,已知x1=0.2,y1=0.8,有

y(0.4)y2

=0.2×0.8×(4-0.2×0.8)=0.6144当k=2,x3=0.6时,已知x2=0.4,y2=0.6144,有

y(0.6)y3=0.2×0.6144×(4-0.4×0.6144)=0.4613第14页/共81页2023/1/1816clear;y=1,x=0,%初始化forn=1:10y=1.1*y-0.2*x/y,x=x+0.1,endy=1x=0y=1.1000x=0.1000y=1.1918x=0.2000y=1.2774x=0.3000y=1.3582x=0.4000y=1.4351x=0.5000y=1.5090x=0.6000y=1.5803x=0.7000y=1.6498x=0.8000y=1.7178x=0.9000y=1.7848x=1.0000第15页/共81页2023/1/18179.2.2梯形公式为了提高精度,对方程的两端在区间上积分得,改用梯形方法计算其积分项,即

(9.4)

代入(7.4)式,并用近似代替式中即可得到梯形公式(9.5)

由于数值积分的梯形公式比矩形公式的精度高,因此梯形公式(9.5)比欧拉公式(9.2)的精度高一个数值方法。第16页/共81页2023/1/1818(9.5)

(9.5)式的右端含有未知的yi+1,它是一个关于yi+1的函数方程,这类数值方法称为隐式方法。相反地,欧拉法是关于yi+1的一个直接的计算公式,这类数值方法称为显式方法。

第17页/共81页2023/1/18199.2.3两步欧拉公式

对方程的两端在区间上积分得

(9.6)

改用中矩形公式计算其积分项,即

代入上式,并用yi近似代替式中y(xi)即可得到两步欧拉公式

(9.7)第18页/共81页2023/1/1820前面介绍过的数值方法,无论是欧拉方法,还是梯形方法,它们都是单步法,其特点是在计算yi+1时只用到前一步的信息yi;可是公式(7.7)中除了yi外,还用到更前一步的信息yi-1,即调用了前两步的信息,故称其为两步欧拉公式

第19页/共81页2023/1/18219.2.4.欧拉法的局部截断误差衡量求解公式好坏的一个主要标准是求解公式的精度,因此引入局部截断误差和阶数的概念。定义9.1在yi准确的前提下,即时,用数值方法计算yi+1的误差,称为该数值方法计算时yi+1的局部截断误差。对于欧拉公式,假定,则有而将真解y(x)在xi处按二阶泰勒展开

因此有

第20页/共81页2023/1/1822定义9.2数值方法的局部截断误差为,则称这种数值方法的阶数是P。步长(h<1)越小,P越高,则局部截断误差越小,计算精度越高。欧拉公式的局部截断误差为,欧拉方法仅为一阶方法。两步欧拉公式比欧拉公式精度也是高一个数值方法,设,前两步准确,则两步欧拉公式

把y(xi-1)在xi处展开成Taylor级数,即

第21页/共81页2023/1/1823由

再将y(xi+1)在xi+1处进行泰勒展开(9.8)(9.9)所以,由(9.8)和(9.9)可得两步欧拉公式的局部截断误差为,即第22页/共81页2023/1/18249.2.5改进的欧拉公式显式欧拉公式计算工作量小,但精度低。梯形公式虽提高了精度,但为隐式公式,需用迭代法求解,计算工作量大。综合欧拉公式和梯形公式便可得到改进的欧拉公式。先用欧拉公式(9.2)求出一个初步的近似值,称为预测值,它的精度不高,再用梯形公式(9.5)对它校正一次,即迭代一次,求得yi+1,称为校正值,这种预测-校正方法称为改进的欧拉公式:(9.10)

预测

校正第23页/共81页2023/1/1825可以证明,公式(9.10)的精度为二阶。这是一种一步显式格式,它可以表示为嵌套形式。(9.11)或者表示成下列平均化形式(9.12)

第24页/共81页2023/1/18269.2.6改进欧拉法算法实现(1)计算步骤①输入,h,N②使用以下改进欧拉法公式进行计算

输出,并使转到

直至n>N结束。

第25页/共81页2023/1/1827(2)改进欧拉法的流程图

第26页/共81页2023/1/1828(3)

程序实现(改进欧拉法计算常微分方程初值问题

)例9.2用改进欧拉法解初值问题区间为0,1,取步长h=0.1

解:改进欧拉法的具体形式本题的精确解为,第27页/共81页2023/1/1829clearx=0,yn=1%初始化forn=1:10yp=yn+0.1*(yn-2*x/yn);%预测x=x+0.1;yc=yn+0.1*(yp-2*x/yp);yn=(yp+yc)/2%校正end第28页/共81页2023/1/1830例9.3对初值问题

证明用梯形公式求得的近似解为

并证明当步长h0时,yn收敛于精确解证明:解初值问题的梯形公式为∵

整理成显式

反复迭代,得到∵

第29页/共81页2023/1/1831由于,有

证毕第30页/共81页2023/1/1832§9.3龙格-库塔(Runge-Kutta)法9.3.1龙格-库塔(Runge-Kutta)法的基本思想

Euler公式可改写成则yi+1的表达式y(xi+1)与的Taylor展开式的前两项完全相同,即局部截断误差为。改进的Euler公式又可改写成第31页/共81页2023/1/1833上述两组公式在形式上有一个共同点:都是用f(x,y)在某些点上值的线性组合得出y(xi+1)的近似值yi+1,而且增加计算的次数f(x,y)的次数,可提高截断误差的阶。如欧拉公式:每步计算一次f(x,y)的值,为一阶方法。改进欧拉公式需计算两次f(x,y)的值,它是二阶方法。它的局部截断误差为。第32页/共81页2023/1/1834于是可考虑用函数f(x,y)在若干点上的函数值的线性组合来构造近似公式,构造时要求近似公式在(xi,yi)处的Taylor展开式与解y(x)在xi处的Taylor展开式的前面几项重合,从而使近似公式达到所需要的阶数。既避免求偏导,又提高了计算方法精度的阶数。或者说,在这一步内多预报几个点的斜率值,然后将其加权平均作为平均斜率,则可构造出更高精度的计算格式,这就是龙格—库塔(Runge-Kutta)法的基本思想。

第33页/共81页2023/1/18359.3.2二阶龙格—库塔法在上取两点xi和,以该两点处的斜率值k1和k2的加权平均(或称为线性组合)来求取平均斜率k*的近似值K,即

式中:k1为xi点处的切线斜率值,

k2为点处的切线斜率值,比照改进的欧拉法,将视为,即可得对常微分方程初值问题(9.1)式的解y=y(x),根据微分中值定理,存在点,使得第34页/共81页2023/1/1836式中K可看作是y=y(x)在区间上的平均斜率。所以可得计算公式为:(9.14)

将y(xi)在x=xi处进行二阶Taylor展开:

(9.15)

也即(9.13)第35页/共81页2023/1/1837将在x=xi处进行一阶Taylor展开:

将以上结果代入(9.14)得:(9.16)

对式(9.15)和(9.16)进行比较系数后可知,只要(9.17)

成立,格式(9.14)的局部截断误差就等于有2阶精度第36页/共81页2023/1/1838式(9.17)中具有三个未知量,但只有两个方程,因而有无穷多解。若取,则p=1,这是无穷多解中的一个解,将以上所解的值代入式(9.14)并改写可得

不难发现,上面的格式就是改进的欧拉格式。凡满足条件式(9.17)有一簇形如上式的计算格式,这些格式统称为二阶龙格—库塔格式。因此改进的欧拉格式是众多的二阶龙格—库塔法中的一种特殊格式。第37页/共81页2023/1/1839若取,则,此时二阶龙格-库塔法的计算公式为

此计算公式称为变形的二阶龙格—库塔法。式中为区间的中点。第38页/共81页2023/1/18409.3.3三阶龙格-库塔法

为了进一步提高精度,设除外再增加一点并用三个点,,的斜率k1,k2,k3加权平均得出平均斜率k*的近似值,这时计算格式具有形式:(9.18)

为了预报点的斜率值k3,在区间内有两个斜率值k1和k2可以用,可将k1,k2加权平均得出上的平均斜率,从而得到的预报值第39页/共81页2023/1/1841于是可得

运用Taylor展开方法选择参数,可以使格式(9.18)的局部截断误差为,即具有三阶精度,这类格式统称为三阶龙格—库塔方法。下列是其中的一种,称为库塔(Kutta)公式。

(9.19)

第40页/共81页2023/1/1842第41页/共81页2023/1/18439.3.4四阶龙格—库塔法

如果需要再提高精度,用类似上述的处理方法,只需在区间上用四个点处的斜率加权平均作为平均斜率k*的近似值,构成一系列四阶龙格—库塔公式。具有四阶精度,即局部截断误差是。由于推导复杂,这里从略,只介绍最常用的一种四阶经典龙格—库塔公式。

(9.20)

第42页/共81页2023/1/18449.3.5四阶龙格—库塔法算法实现(1)

计算步骤①输入,h,N②使用龙格—库塔公式(9.20)计算出y1③输出,并使转到②直至n>N结束。第43页/共81页2023/1/1845(2)四阶龙格—库塔算法流程图第44页/共81页2023/1/1846程序实现(四阶龙格-库塔法计算常微分方程初值问题)

例9.4取步长h=0.2,用经典格式求解初值问题解:

由四阶龙格-库塔公式可得

第45页/共81页2023/1/1847可同样进行其余yi的计算。本例方程的解为,从表中看到所求的数值解具有4位有效数字。

龙格—库塔方法的推导基于Taylor展开方法,因而它要求所求的解具有较好的光滑性。如果解的光滑性差,那么,使用四阶龙格—库塔方法求得的数值解,其精度可能反而不如改进的欧拉方法。在实际计算时,应当针对问题的具体特点选择合适的算法。

第46页/共81页2023/1/18489.3.6变步长的龙格-库塔法在微分方程的数值解中,选择适当的步长是非常重要的。单从每一步看,步长越小,截断误差就越小;但随着步长的缩小,在一定的求解区间内所要完成的步数就增加了。这样会引起计算量的增大,并且会引起舍入误差的大量积累与传播。因此微分方程数值解法也有选择步长的问题。以经典的四阶龙格-库塔法(9.20)为例。从节点xi出发,先以h为步长求出一个近似值,记为,由于局部截断误差为,故有

当h值不大时,式中的系数c可近似地看作为常数。第47页/共81页2023/1/1849然后将步长折半,即以为步长,从节点xi出发,跨两步到节点xi+1,再求得一个近似值,每跨一步的截断误差是,因此有这样由此可得这表明以作为的近似值,其误差可用步长折半前后两次计算结果的偏差来判断所选步长是否适当第48页/共81页2023/1/1850当要求的数值精度为ε时:(1)如果Δ>ε,反复将步长折半进行计算,直至Δ<ε为止,并取其最后一次步长的计算结果作为(2)如果Δ<ε,反复将步长加倍,直到Δ>ε为止,并以上一次步长的计算结果作为。这种通过步长加倍或折半来处理步长的方法称为变步长法。表面上看,为了选择步长,每一步都要反复判断Δ,增加了计算工作量,但在方程的解y(x)变化剧烈的情况下,总的计算工作量得到减少,结果还是合算的。第49页/共81页2023/1/1851

§9.4算法的稳定性及收敛性9.4.1稳定性稳定性在微分方程的数值解法中是一个非常重要的问题。因为微分方程初值问题的数值方法是用差分格式进行计算的,而在差分方程的求解过程中,存在着各种计算误差,这些计算误差如舍入误差等引起的扰动,在传播过程中,可能会大量积累,对计算结果的准确性将产生影响。这就涉及到算法稳定性问题。

第50页/共81页2023/1/1852

当在某节点上xi的yi值有大小为δ的扰动时,如果在其后的各节点上的值yi产生的偏差都不大于δ,则称这种方法是稳定的。

稳定性不仅与算法有关,而且与方程中函数f(x,y)也有关,讨论起来比较复杂。为简单起见,通常只针对模型方程来讨论。一般方程若局部线性化,也可化为上述形式。模型方程相对比较简单,若一个数值方法对模型方程是稳定的,并不能保证该方法对任何方程都稳定,但若某方法对模型方程都不稳定,也就很难用于其他方程的求解。第51页/共81页2023/1/1853先考察显式Euler方法的稳定性。模型方程的Euler公式为将上式反复递推后,可得或式中第52页/共81页2023/1/1854

要使yi有界,其充要条件为即由于,故有(9.26)可见,如欲保证算法的稳定,显式Euler格式的步长h的选取要受到式(9.26)的限制。的绝对值越大,则限制的h值就越小。用隐式Euler格式,对模型方程的计算公式为,可化为第53页/共81页2023/1/1855由于,则恒有,故恒有因此,隐式Euler格式是绝对稳定的(无条件稳定)的(对任何h>0)。9.4.2收敛性常微分方程初值问题的求解,是将微分方程转化为差分方程来求解,并用计算值yi来近似替代y(xi),这种近似替代是否合理,还须看分割区间的长度h越来越小时,即时,是否成立。若成立,则称该方法是收敛的,否则称为不收敛。这里仍以Euler方法为例,来分析其收敛性。Euler格式第54页/共81页2023/1/1856设表示取时,按Euler公式的计算结果,即Euler方法局部截断误差为:设有常数,则(9.27)

总体截断误差(9.28)

又由于f(x,y)关于y满足李普希茨条件,即第55页/共81页2023/1/1857代入(9.28)上式,有再利用式(9.27),式(9.28)即上式反复递推后,可得(9.29)

第56页/共81页2023/1/1858设(T为常数)

因为

所以把上式代入式(9.29),得若不计初值误差,即,则有(9.30)

式(9.30)说明,当时,,即,所以Euler方法是收敛的,且其收敛速度为,即具有一阶收敛速度。同时还说明Euler方法的整体截断误差为,因此算法的精度为一阶。第57页/共81页2023/1/1859§9.5亚当姆斯方法9.5.1亚当姆斯格式龙格-库塔方法是一类重要算法,但这类算法在每一步都需要先预报几个点上的斜率值,计算量比较大。考虑到计算yi+1之前已得出一系列节点上的斜率值,能否利用这些已知值来减少计算量呢?这就是亚当姆斯(Adams)方法的设计思想。

第58页/共81页2023/1/1860设用xi,xi+1两点的斜率值加权平均作为区间上的平均斜率,有计算格式

(9.21)

选取参数λ,使格式(9.21)具有二阶精度。第59页/共81页2023/1/1861将在xi处Taylor展开

代入计算格式(9.21)化简,并假设,因此有与y(xi+1)在xi处的Taylor展开式相比较,需取

才使格式(9.21)具有二阶精度。这样导出的计算格式称之为二阶亚当姆斯格式。类似地可以导出三阶亚当姆斯格式。

第60页/共81页2023/1/1862和四阶亚当姆斯格式。

(9.22)这里和下面均记上述几种亚当姆斯格式都是显式的,算法比较简单,但用节点的斜率值来预报区间上的平均斜率是个外推过程,效果不够理想。为了进一步改善精度,变外推为内插,即增加节点xi+1的斜率值来得出上的平均斜率。譬如考察形如第61页/共81页2023/1/1863(9.23)

的隐式格式,设(9.23)右端的Taylor展开有

可见要使格式(9.23)具有二阶精度,需令,这样就可构造二阶隐式亚当姆斯格式其实是梯形格式。类似可导出三阶隐式亚当姆斯格式第62页/共81页2023/1/1864和四阶隐式亚当姆斯格式

(9.24)

9.5.2亚当姆斯预报-校正格式参照改进的欧拉格式的构造方法,以四阶亚当姆斯为例,将显式(9.22)和隐式(9.24)相结合,用显式公式做预报,再用隐式公式做校正,可构成亚当姆斯预报-校正格式(9.25)

预报:

校正:

第63页/共81页2023/1/1865这种预报-校正格式是四步法,它在计算yi+1时不但用到前一步的信息,而且要用到再前面三步的信息,因此它不能自行启动。在实际计算时,可借助于某种单步法,譬如四阶龙格—库塔法提供开始值。

第64页/共81页2023/1/1866例9.5取步长h=0.1,用亚当姆斯预报-校正公式求解初值问题

的数值解。解:

用四阶龙格-库塔公式求出发值,计算得:表中的,yi和y(xi)分别为预报值、校正值和准确解(),以比较计算结果的精度。再使用亚当姆斯预报-校正公式(9.25),第65页/共81页2023/1/1867§9.6一阶常微分方程组与高阶方程我们已介绍了一阶常微分方程初值问题的各种数值解法,对于一阶常微分方程组,可类似得到各种解法,而高阶常微分方程可转化为一阶常微分方程组来求解。

9.6.1一阶常微分方程组对于一阶常微分方程组的初值问题

(9.31)

可以把单个方程中的f和y看作向量来处理,这样就可把前面介绍的各种差分算法推广到求一阶方程组初值问题中来。第66页/共81页2023/1/1868设为节点上的近似解,则有改进的Euler格式为预报:校正:

(9.32)

又,相应的四阶龙格—库塔格式(经典格式)为(9.33)

第67页/共81页2023/1/1869式中

(9.34)

第68页/共81页2023/1/1870把节点xi上的yi和zi值代入式(7.34),依次算出

,然后把它们代入式(7.33),算出节点xi+1上的yi+1

和zi+1值。对于具有三个或三个以上方程的方程组的初值问题,也可用类似方法处理,只是更复杂一些而已。此外,多步方法也同样可以应用于求解方程组初值问题。

例7.6用改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论