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

下载本文档

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

文档简介

2020/5/30,1,第9章常微分方程初值问题数值解法,Euler公式改进的欧拉公式龙格库塔法亚当斯法算法的稳定性及收敛性,2020/5/30,2,9.1引言包含自变量、未知函数及未知函数的导数或微分的方程称为微分方程。在微分方程中,自变量的个数只有一个,称为常微分方程。自变量的个数为两个或两个以上的微分方程叫偏微分方程。微分方程中出现的未知函数最高阶导数的阶数称为微分方程的阶数。如果未知函数y及其各阶导数都是一次的,则称它是线性的,否则称为非线性的。,2020/5/30,3,在高等数学中,对于常微分方程的求解,给出了一些典型方程求解析解的基本方法,如可分离变量法、常系数齐次线性方程的解法、常系数非齐次线性方程的解法等。但能求解的常微分方程仍然是有限的,大多数的常微分方程是不能给出解析解。譬如,这个一阶微分方程就不能用初等函数来表达它的解。,2020/5/30,4,再如,方程,的解,虽然有表可查,但对于表上没有给出的值,仍需插值方法来计算,2020/5/30,5,从实际问题当中归纳出来的微分方程,通常主要依靠数值解法来解决。本章主要讨论一阶常微分方程初值问题,(9.1),在区间axb上的数值解法。,可以证明,如果函数在带形区域R:axb,-y内连续,且关于y满足李普希兹(Lipschitz)条件,即存在常数L(它与x,y无关)使,对R内任意x及两个都成立,则方程(9.1)的解在a,b上存在且唯一。,2020/5/30,6,数值方法的基本思想对常微分方程初值问题(9.1)式的数值解法,就是要算出精确解y(x)在区间a,b上的一系列离散节点处的函数值的近似值相邻两个节点的间距称为步长,步长可以相等,也可以不等。本章总是假定h为定数,称为定步长,这时节点可表示为数值解法需要把连续性的问题加以离散化,从而求出离散节点的数值解。,2020/5/30,7,对常微分方程数值解法的基本出发点就是离散化。其数值解法有两个基本特点,1它们都采用“步进式”,即求解过程顺着节点排列的次序一步一步地向前推进,描述这类算法,要求给出用已知信息计算的递推公式。2建立这类递推公式的基本方法是在这些节点上用数值积分、数值微分、泰勒展开等离散化方法,对初值问题中的导数进行不同的离散化处理。,2020/5/30,8,对于初值问题的数值解法,首先要解决的问题就是如何对微分方程进行离散化,建立求数值解的递推公式。递推公式通常有两类,一类是计算yi+1时只用到xi+1,xi和yi,即前一步的值,因此有了初值以后就可以逐步往下计算,此类方法称为单步法;其代表是龙格库塔法。另一类是计算yi+1时,除用到xi+1,xi和yi以外,还要用到,即前面k步的值,此类方法称为多步法;其代表是亚当斯法。,2020/5/30,9,9.2简单的数值方法与基本概念9.2.1Euler公式欧拉(Euler)方法是解初值问题的最简单的数值方法。初值问题的解y=y(x)为通过点的一条积分曲线。积分曲线上每一点的切线的斜率等于函数在这点的值。,2020/5/30,10,Euler法的求解过程是:从初始点P0(即点(x0,y0)出发,作积分曲线y=y(x)在P0点上切线(其斜率为),与x=x1直线,相交于P1点(即点(x1,y1),得到y1作为y(x1)的近似值,如上图所示。过点(x0,y0),以f(x0,y0)为斜率的切线方程为当时,得,这样就获得了P1点的坐标。,2020/5/30,11,同样,过点P1(x1,y1),作积分曲线y=y(x)的切线交直线x=x2于P2点,切线的斜率直线方程为,当时,得,2020/5/30,12,当时,得,由此获得了P2的坐标。重复以上过程,就可获得一系列的点:P1,P1,Pn。对已求得点以为斜率作直线,取,2020/5/30,13,从图形上看,就获得了一条近似于曲线y=y(x)的折线。,这样,从x0出发逐个算出,2020/5/30,14,通常取(常数),则,微分方程的初值问题,Euler法的计算格式为:,用折线近似于曲线得到的计算公式称为欧拉公式,2020/5/30,15,Euler格式还可用数值微分、数值积分和泰勒展开等方法得到。,2020/5/30,16,Euler格式用泰勒展开方法得到。,2020/5/30,17,Euler格式用数值微分方法得到。,选择不同的计算方法计算上式的积分项就会得到不同的计算公式。,将方程的两端在区间上积分得,,2020/5/30,18,用左矩形方法计算积分项,代入(9.3)式,并用yi近似代替式中y(xi)即可得到向前欧拉(Euler)公式,由于数值积分的矩形方法精度很低,所以欧拉(Euler)公式当然很粗糙。,2020/5/30,19,例9.1用欧拉法解初值问题,取步长h=0.2,计算过程保留4位小数,解:,当k=0,x1=0.2时,已知x0=0,y0=1,有y(0.2)y1=0.21(401)0.8,欧拉迭代格式,当k=1,x2=0.4时,已知x1=0.2,y1=0.8,有y(0.4)y2=0.20.8(40.20.8)0.6144当k=2,x3=0.6时,已知x2=0.4,y2=0.6144,有y(0.6)y3=0.20.6144(4-0.40.6144)=0.4613,2020/5/30,20,clear;y=1,x=0,%初始化forn=1:10y=1.1*y-0.2*x/y,x=x+0.1,end,y=1x=0y=1.1000 x=0.1000y=1.1918x=0.2000y=1.2774x=0.3000y=1.3582x=0.4000y=1.4351x=0.5000y=1.5090 x=0.6000y=1.5803x=0.7000y=1.6498x=0.8000y=1.7178x=0.9000y=1.7848x=1.0000,2020/5/30,21,对方程的两端在区间上积分得,,代入(9.4)式,即可得到梯形公式,由于数值积分的梯形公式比矩形公式的精度高,因此梯形公式(9.5)是比欧拉公式(9.2)精度高的一个数值方法。,为了提高精度,改用梯形方法计算其积分项,即,9.2.2梯形公式,2020/5/30,22,(9.5),(9.2)和(9.5)式粗看差不多,,(9.2),Euler公式,梯形公式,但(9.5)式的右端含有未知的yi+1,它是一个关于yi+1的函数方程,这类数值方法称为隐式方法。相反地,欧拉法是关于yi+1的一个直接的计算公式,这类数值方法称为显式方法。,2020/5/30,23,9.2.3两步欧拉公式对方程的两端在区间上积分得,(9.6),改用中矩形公式计算其积分项,即,代入上式,并用yi近似代替式中y(xi)即可得到两步欧拉公式,2020/5/30,24,前面介绍过的数值方法,无论是欧拉方法,还是梯形方法,它们都是单步法,其特点是在计算yi+1时只用到前一步的信息yi;可是公式(9.7)中除了yi外,还用到更前一步的信息yi-1,即调用了前两步的信息,故称其为两步欧拉公式,2020/5/30,25,定义9.1在yi准确的前提下,即时,用数值方法计算yi+1的误差,称为该数值方法计算时yi+1的局部截断误差。,9.2.4欧拉法的局部截断误差,衡量求解公式好坏的一个主要标准是求解公式的精度,因此引入局部截断误差和阶数的概念。,2020/5/30,26,假定由欧拉公式,则有,因此有,局部截断误差,2020/5/30,27,定义9.2如果数值方法的局部截断误差为,则称这种数值方法的阶数是P。,显然,步长(hN结束。,2020/5/30,36,(2)改进欧拉法的流程图,2020/5/30,37,例9.2用改进欧拉法解初值问题,区间为0,1,取步长h=0.1,解:改进欧拉法的具体形式,本题的精确解为,2020/5/30,38,clearx=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,2020/5/30,39,例9.3对初值问题,证明用梯形公式求得的近似解为,并证明当步长h0时,yn收敛于精确解,整理成显式,反复迭代,得到,证明:解初值问题的梯形公式为,2020/5/30,40,由于,有,证毕,2020/5/30,41,9.3龙格-库塔(Runge-Kutta)法,只有对平均斜率提供一种算法便可得到一种计算格式,9.3.1龙格-库塔法的基本思想,2020/5/30,42,Euler公式可改写成,改进的Euler公式又可改写成,用左端点的斜率作为平均斜率得到的计算格式,用左、右端点斜率的平均值作为平均斜率得到的计算格式,2020/5/30,43,上述两组公式在形式上有一个共同点:都是用f(x,y)在某些点上值(斜率)的线性组合得出y(xi+1)的近似值yi+1,而且增加计算f(x,y)的次数,可提高截断误差的阶。如欧拉公式:每步计算一次f(x,y)的值,为一阶方法。改进欧拉公式需计算两次f(x,y)的值,它是二阶方法。它的局部截断误差为。,2020/5/30,44,于是可考虑在内多预报几个点的斜率值,然后将其加权平均作为平均斜率,构造时要求近似公式在(xi,yi)处的Taylor展开式与解y(x)在xi处的Taylor展开式的前面几项重合,从而使近似公式达到所需要的阶数。则可构造出更高精度的计算格式,这就是龙格库塔(Runge-Kutta)法的基本思想。,2020/5/30,45,只有多计算几个点的函数值,平均高度就更精确.,龙格-库塔法的基本思想,多预报几个点的斜率值,将其加权平均作为平均斜率.,2020/5/30,46,9.3.2二阶龙格库塔法在上取两点xi和,以该两点处的斜率值k1和k2的加权平均(或称为线性组合)来求取平均斜率k*的近似值K,即,式中:k1为xi点处的切线斜率值,k2为点处的切线斜率值,比照改进的欧拉法,将视为,即可得,对常微分方程初值问题(9.1)式的解y=y(x),根据微分中值定理,存在点,使得,2020/5/30,47,式中,K可看作是y=y(x)在区间上的平均斜率。所以可得计算公式为:,(9.14),将在x=xi处进行二阶Taylor展开:,(9.15),也即,(9.13),2020/5/30,48,将以上结果代入,2020/5/30,49,对式(9.15)和(9.16)进行比较系数后可知,只要,成立,格式(9.14)的局部截断误差就等于,2020/5/30,50,式(9.17)中具有三个未知量,但只有两个方程,因而有无穷多解。若取,则P=1,这是无穷多解中的一个解,将以上所解的值代入式(9.14)并改写可得,不难发现,上面的格式就是改进的欧拉格式。凡满足条件式(9.17)有一簇形如上式的计算格式,这些格式统称为二阶龙格库塔格式。因此改进的欧拉格式是众多的二阶龙格库塔法中的一种特殊格式。,2020/5/30,51,若取,则,此时二阶龙格-库塔法的计算公式为,此计算公式称为变形的二阶龙格库塔法。式中为区间的中点。,2020/5/30,52,9.3.3三阶龙格-库塔法,为了进一步提高精度,设除外再增加一点,并用三个点的斜率k1,k2,k3加权平均得出平均斜率k*的近似值,这时计算格式具有形式:,(9.18),为了预报点的斜率值k3,在区间内有两个斜率值k1和k2可以用,可将k1,k2加权平均得出上的平均斜率,从而得到的预报值,2020/5/30,53,于是可得,运用Taylor展开方法选择参数,可以使格式(9.18)的局部截断误差为,即具有三阶精度.,2020/5/30,54,局部截断误差为,即具有三阶精度,这类格式统称为三阶龙格库塔方法。,(9.19),是其中的一种,称为库塔(Kutta)公式。,2020/5/30,55,9.3.4四阶龙格库塔法,如果需要再提高精度,用类似上述的处理方法,只需在区间上用四个点处的斜率加权平均作为平均斜率k*的近似值,构成一系列四阶龙格库塔公式。具有四阶精度,即局部截断误差是。由于推导复杂,这里从略,只介绍最常用的一种四阶经典RK公式。,(9.20),2020/5/30,56,9.3.5四阶龙格库塔法算法实现(1)计算步骤输入,h,N使用龙格库塔公式(9.20)计算出y1输出,并使转到直至nN结束。,2020/5/30,57,(2)四阶龙格库塔算法流程图,2020/5/30,58,程序实现(四阶龙格-库塔法计算常微分方程初值问题),例9.4取步长h=0.2,用经典格式求解初值问题,解:由四阶龙格-库塔公式可得,2020/5/30,59,可同样进行其余yi的计算。本例方程的解为,从表中看到所求的数值解具有4位有效数字。,龙格库塔法的推导基于Taylor展开方法,因而它要求所求的解具有较好的光滑性。如果解的光滑性差,那么,使用四阶龙格库塔方法求得的数值解,其精度可能反而不如改进的欧拉方法。在实际计算时,应当针对问题的具体特点选择合适的算法。,2020/5/30,60,9.3.6变步长的龙格-库塔法在微分方程的数值解中,选择适当的步长是非常重要的。单从每一步看,步长越小,截断误差就越小;但随着步长的缩小,在一定的求解区间内所要完成的步数就增加了。这样会引起计算量的增大,并且会引起舍入误差的大量积累与传播。因此微分方程数值解法也有选择步长的问题。以经典的四阶龙格-库塔法(9.20)为例。从节点xi出发,先以h为步长求出一个近似值,记为,由于局部截断误差为,故有,当h值不大时,式中的系数c可近似地看作为常数。,2020/5/30,61,然后将步长折半,即以为步长,从节点xi出发,跨两步到节点xi+1,再求得一个近似值,每跨一步的截断误差是,因此有,这样,由此可得,这表明以作为的近似值,其误差可用步长折半前后两次计算结果的偏差,来判断所选步长是否适当,2020/5/30,62,当要求的数值精度为时:,(1)如果,反复将步长折半进行计算,直至为止,并以上一次步长的计算结果作为。这种通过步长加倍或折半来处理步长的方法称为变步长法。表面上看,为了选择步长,每一步都要反复判断,增加了计算工作量,但在方程的解y(x)变化剧烈的情况下,总的计算工作量得到减少,结果还是合算的。,2020/5/30,63,9.4算法的稳定性及收敛性9.4.1稳定性稳定性在微分方程的数值解法中是一个非常重要的问题。因为微分方程初值问题的数值方法是用差分格式进行计算的,而在差分方程的求解过程中,存在着各种计算误差,这些计算误差如舍入误差等引起的扰动,在传播过程中,可能会大量积累,对计算结果的准确性将产生影响。这就涉及到算法稳定性问题。,2020/5/30,64,当在某节点上xi的yi值有大小为的扰动时,如果在其后的各节点上的值yi产生的偏差都不大于,则称这种方法是稳定的。稳定性不仅与算法有关,而且与方程中函数f(x,y)也有关,讨论起来比较复杂。为简单起见,通常只针对模型方程,来讨论。一般方程若局部线性化,也可化为上述形式。模型方程相对比较简单,若一个数值方法对模型方程是稳定的,并不能保证该方法对任何方程都稳定,但若某方法对模型方程都不稳定,也就很难用于其他方程的求解。,2020/5/30,65,先考察显式Euler方法的稳定性。模型方程的Euler公式为,将上式反复递推后,可得,或,式中,2020/5/30,66,要使yi有界,其充要条件为,即,由于,故有,(9.26),可见,如欲保证算法的稳定,显式Euler格式的步长h的选取要受到式(9.26)的限制。的绝对值越大,则限制的h值就越小。,用隐式Euler格式,对模型方程的计算公式为,可化为,2020/5/30,67,由于,则恒有,故恒有,因此,隐式Euler格式是绝对稳定的(无条件稳定)的(对任何h0)。,9.4.2收敛性常微分方程初值问题的求解,是将微分方程转化为差分方程来求解,并用计算值yi来近似替代y(xi),这种近似替代是否合理,还须看分割区间的长度h越来越小时,即时,是否成立。若成立,则称该方法是收敛的,否则称为不收敛。这里仍以Euler方法为例,来分析其收敛性。Euler格式,2020/5/30,68,设表示取时,按Euler公式的计算结果,即,Euler方法局部截断误差为:,设有常数,则,(9.27),总体截断误差,(9.28),又,由于f(x,y)关于y满足李普希茨条件,即,2020/5/30,69,代入(9.28)上式,有,再利用式(9.27),式(9.28),即,上式反复递推后,可得,(9.29),2020/5/30,70,设(T为常数),因为,所以,把上式代入式(9.29),得,若不计初值误差,即,则有,(9.30),式(9.30)说明,当时,即,所以Euler方法是收敛的,且其收敛速度为,即具有一阶收敛速度。同时还说明Euler方法的整体截断误差为,因此算法的精度为一阶。,2020/5/30,71,龙格-库塔方法是一类重要算法,但这类算法在每一步都需要先预报几个点上的斜率值,计算量比较大。考虑到计算yi+1之前已得出一系列节点上的斜率值,能否利用这些已知的斜率值来减少计算量呢?这就是亚当姆斯(Adams)方法的设计思想。,9.5亚当姆斯方法,9.5.1亚当姆斯格式,2020/5/30,72,设用xi,xi+1两点的斜率值加权平均作为区间上的平均斜率,有计算格式,(9.21),选取参数,使格式(9.21)具有二阶精度。,2020/5/30,73,将在xi处Taylor展开,代入计算格式化简,因此有,与y(xi+1)在xi处的Taylor展开式,相比较,需取,才使格式(9.21)具有二阶精度。这样导出的计算格式,称之为二阶亚当姆斯格式。,2020/5/30,74,四阶亚当姆斯格式。,(9.22),上述几种亚当姆斯格式都是显式的,算法比较简单,但用节点的斜率值来预报区间上的平均斜率是个外推过程,效果不够理想。为了进一步改善精度,变外推为内插,即增加节点xi+1的斜率值来得出上的平均斜率。譬如考察形如,类似地可以导出三阶亚当姆斯格式。,2020/5/30,75,(9.23),的隐式格式,设(9.23)右端的Taylor展开有,可见要使格式(9.23)具有二阶精度,需令,这样就可构造二阶隐式亚当姆斯格式,其实是梯形格式。类似可导出三阶隐式亚当姆斯格式,2020/5/30,76,和四阶隐式亚当姆斯格式,(9.24),9.5.2亚当姆斯预报-校正格式参照改进的欧拉格式的构造方法,以四阶亚当姆斯为例,将显式(9.22)和隐式(9.24)相结合,用显式公式做预报,再用隐式公式做校正,可构成亚当姆斯预报-校正格式,(9.25),预报:,校正:,2020/5/30,77,这种预报-校正格式是四步法,它在计算yi+1时不但用到前一步的信息,而且要用到再前面三步的信息,因此它不能自行启动。在实际计算时,可借助于某种单步法,譬如四阶龙格库塔法提供开始值。,2020/5/30,78,例9.5取步长h=0.1,用亚当姆斯预报-校正公式求解初值问题,的数值解。,解:用四阶龙格-库塔公式求出初值,计算得:,表中的,yi和y(xi)分别为预报值、校正值和准确解(),以比较计算结果的精度。,再使用亚当姆斯预报-校正公式(9.25),2020/5/30,79,9.6一阶常微分方程组与高阶方程我们已介绍了一阶常微分方程初值问题的各种数值解法,对于一阶常微分方程组,可类似得到各种解法,而高阶常微分方程可转化为一阶常微分方程组来求解。9.6.1一阶常微分方程组对于一阶常微分方程组的初值问题,(9.31),可以把单个方程中的f和y看作向量来处理,这样就可把前面介绍的各种差分算法推广到求一阶方程组初值问题中来。,2020/5/30,80,设为节点上的近似解,则有改进的Euler格式为,预报:,校正:,(9.32),又,相应的四阶龙格库塔格式(经典格式)为,(9.33),2020/5/30,81,式中,(9.34),2020/5/30,82,把节点xi上的yi和zi值代入式(7.34),依次算出,然后把它们代入式(7.33),算出节点xi+1上的yi+1和zi+1值。对于具有三个或三个以上方程的方程组的初值问题,也可用类似方法处理,只是更复杂一些而已。此外,多步方法也同样可以应用于求解方程组初值问题。,例7.6用改进的Euler法求解初值问题,取步长h=0.1,保留六位小数。,解:改进的Euler法公式为,2020/5/30,83,预报:,校正:,将及h=0.1代入上式,得,2020/5/30,84,由初值

温馨提示

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

评论

0/150

提交评论