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

下载本文档

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

文档简介

第十三讲常微分方程初值问题数值解法第1页,共59页,2023年,2月20日,星期二9.1引言科学技术中很多问题都可用微分方程的定解问题来描述,主要有初值问题与边值问题两大类,本章只考虑初值问题.常微分方程初值问题中最简单的例子是人口模型,设某特定区域在t0时刻人口为y(t0)=y0已知的,该区域的人口自然增长率为,人口增长与人口总数成正比,所以t时刻的人口总数y(t)满足以下微分方程第2页,共59页,2023年,2月20日,星期二很多物理系统与时间有关,从卫星运行轨道到单摆运动,从化学反应到物种竞争都是随时间的延续而不断变化的.解常微分方程是描述连续变化的数学语言,微分方程的求解就是确定满足给定方程的可微函数y(t),研究它的数值方法是本章的主要目的.考虑一阶常微分方程的初值问题则称f关于y满足利普希茨(Lipschitz)条件,L称为y的利普希茨常数(简称Lips.常数).如果存在实数L>0,使得第3页,共59页,2023年,2月20日,星期二

定理1

设f在区域D={(x,y)|axb,yR}上连续,关于y满足利普希茨条件,则对任意x0[a,b],y0R,常微分方程初值问题(1.1)式和(1.2)式当x[a,b]时存在唯一的连续可微解y(x).解的存在唯一性定理是常微分方程理论的基本内容,也是数值方法的出发点,此外还要考虑方程的解对扰动的敏感性,它有以下结论.

定理2

设f在区域D(如定理1所定义)

上连续,且关于y满足利普希茨条件,设初值问题的解为y(x,s),则第4页,共59页,2023年,2月20日,星期二这个定理表明解对初值依赖的敏感性,它与右端函数f有关,当f的Lips.常数L比较小时,解对初值和右端函数相对不敏感,可视为好条件.若L较大则可认为坏条件,即病态问题.如果右端函数可导,由中值定理有若假定在域D内有界,设,则它表明f满足利普希茨条件,且L的大小反映了右端函数f关于y变化的快慢,刻画了初值问(1.1)式和(1.2)式是否为好条件.这在数值求解中也是很重要的.第5页,共59页,2023年,2月20日,星期二虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程,实际问题中归结出来的微分方程主要靠数值解法.所谓数值解法,就是寻求解y(x)在一系列离散节点上的近似值y1,y2,,yn,yn+1,.相邻两个节点的间距hn=xn+1-xn称为步长.今后如不特别说明,总是假定hi=h(i=1,2,)为常数,这时节点为xn=x0+nh(i=0,1,2,)(等距节点).第6页,共59页,2023年,2月20日,星期二初值问题的数值解法有个基本特点,他们都采取“步进式”,即求解过程顺着节点排列的次序一步一步地向前推进.描述这类算法,只要给出用已知信息yn,yn-1,yn-2,计算yn+1的递推公式.本章首先要对常微分方程(1.1)离散化,建立求解数值解的递推公式.一类是计算yn+1时只用到前一点的值yn,称为单步法.另一类是用到yn+1前面k点的值yn,yn-1,,yn-k+1,称为k步法.其次,要研究公式的局部截断误差和阶,数值解yn与精确解y(xn)的误差估计及收敛性,还有递推公式的计算稳定性等问题.第7页,共59页,2023年,2月20日,星期二9.2简单的数值方法9.2.1欧拉法与后退欧拉法我们知道,在xy平面上,微分方程(1.1)式的解y=f(x)称作它的积分曲线,积分曲线上一点(x,y)的切线斜率等于函数f(x,y)的值.如果按f(x,y)在xy平面上建立一个方向场,那么,积分曲线上每一点的切线方向均与方向场在该点的方向相一致.基于上述几何解释,我们从初始点P0(x0,y0)出发,先依方向场在该点的方向推进到x=x1上一点P1,然后再从P1点依方向场在该点的方向推进到x=x2

上一点P2,循环前进做出一条折线P0P1P2.第8页,共59页,2023年,2月20日,星期二一般地,设已做出该折线的顶点Pn,过Pn(xn,yn)依方向场的方向再推进到Pn+1(xn+1,yn+1),显然两个顶点Pn,Pn+1的坐标有关系这就是著名的(显式)欧拉(Euler)公式.若初值y0已知,则依公式(2.1)可逐次逐步算出各点数值解.即第9页,共59页,2023年,2月20日,星期二

例1

用欧拉公式求解初值问题

解取步长h=0.1,欧拉公式的具体形式为其中xn=nh=0.1n(n=0,1,,10),已知y0=1,由此式可得第10页,共59页,2023年,2月20日,星期二依次计算下去,部分计算结果见下表.与准确解相比,可看出欧拉公式的计算结果精度很差.

xn

欧拉公式数值解yn准确解y(xn)

误差

0.20.40.60.81.0

1.1918181.3582131.5089661.6497831.784770

1.1832161.3416411.4832401.6124521.732051

0.0086020.0165720.0257260.0373310.052719第11页,共59页,2023年,2月20日,星期二欧拉公式具有明显的几何意义,就是用折线近似代替方程的解曲线,因而常称公式(2.1)为欧拉折线法.还可以通过几何直观来考察欧拉方法的精度.假设yn=y(xn),即顶点Pn落在积分曲线y=y(x)上,那么,按欧拉方法做出的折线PnPn+1便是y=y(x)过点Pn的切线.从图形上看,这样定出的顶点Pn+1显著地偏离了原来的积分曲线,可见欧拉方法是相当粗糙的.第12页,共59页,2023年,2月20日,星期二为了分析计算公式的精度,通常可用泰勒展开将y(xn+1)在xn处展开,则有在yn=y(xn)的前提下,f(xn,yn)=f(xn,y(xn))=y(xn).于是可得欧拉法(2.1)的公式误差为称为此方法的局部截断误差.第13页,共59页,2023年,2月20日,星期二如果对方程(1.1)从xn到xn+1积分,得右端积分用左矩形公式hf(xn,y(xn))近似,再以yn代替y(xn),yn+1代替y(xn+1)也得到欧拉公式(2.1),局部截断误差也是(2.3).称为(隐式)后退的欧拉公式.它也可以通过利用均差近似导数y(xn+1),即如果右端积分用右矩形公式hf(xn+1,y(xn+1))近似,则得到另一个公式直接得到.第14页,共59页,2023年,2月20日,星期二后退的欧拉公式与欧拉公式有着本质的区别,后者是关于yn+1的一个直接计算公式,这类公式称作是显式的;前者公式的右端含有未知的yn+1,它实际上是关于yn+1的一个函数方程,这类方程称作是隐式的.显式与隐式两类方法各有特点,考虑到数值稳定性等其他因素,人们有时需要选用隐式方法,但使用显式算法远比隐式方便.隐式方程(2.5)通常用迭代法求解,而迭代过程的实质是逐步显式化.第15页,共59页,2023年,2月20日,星期二设用欧拉公式给出迭代初值

,用它代入(2.5)式的右端,使之转化为显式,直接计算得然后再用代入(2.5)式,又有如此反复进行,得第16页,共59页,2023年,2月20日,星期二由于f(x,y)对y满足Lipschitz条件(1.3).由(2.6)减(2.5)得由此可知,只要hL<1,迭代法(2.6)就收敛到解yn+1.关于后退欧拉方法的公式误差,从积分公式看到它与欧拉法是相似的.第17页,共59页,2023年,2月20日,星期二9.2.2梯形方法为得到比欧拉法精度高的计算公式,在等式(2.4)

右端积分用梯形求积公式近似,并用yn代替y(xn),yn+1代替y(xn+1),则得称为矩形方法.矩形方法是隐式单步法,用迭代法求解,同后退的欧拉方法一样,仍用欧拉法提供迭代初值,则矩形迭代公式为第18页,共59页,2023年,2月20日,星期二为了分析迭代过程的收敛性,将(2.7)与(2.8)相减,得于是有使得则当k→∞时有,这说明迭代过程(2.8)是收敛的.第19页,共59页,2023年,2月20日,星期二9.2.3改进的欧拉公式我们看到,梯形方法虽然提高了精度,但其算法复杂,在应用迭代公式(2.8)进行实际计算时,每迭代一次,都要重新计算函数f(x,y

)的值,而迭代又要反复进行若干次,计算量很大,而且往往难以预测.为了控制计算量,通常只迭代一两次就转入下一步的计算,这就简化了算法.具体地说,我们先用欧拉公式求得一个初步的近似值,称之为预测值,此预测值的精度可能很差,再用梯形公式(2.7)将它校正一次,即按(2.8)式迭代一次得yn+1,这个结果称之为校正值.第20页,共59页,2023年,2月20日,星期二这样建立的预测-校正系统通常称为改进的欧拉公式:或表示为下列平均化形式(2.9)预测校正第21页,共59页,2023年,2月20日,星期二

例2

用改进的欧拉法解例1中的初值问题(2.2).

解仍取步长h=0.1,改进的欧拉公式为部分计算结果见下表

xnyn

误差

xnyn误差00.20.4

1.1.1840961.34336000.0000880.0017190.60.81.01.4859561.6164761.7378690.0027160.0040240.05818同例1中的欧拉法的计算结果比较,明显改善了精度.第22页,共59页,2023年,2月20日,星期二9.2.4单步法的局部截断误差与阶初值问题(1.1),(1.2)的单步法可用一般形式表示为其中多元函数与f(x,y

)有关,当含有yn+1时,方法是隐式的,若不含yn+1则为显式方法,所以显式单步法可表示为(x,y,h)称为增量函数,例如对欧拉法(2.1)有它的局部截断误差已由(2.3)给出,对一般显式单步法则可如下定义.第23页,共59页,2023年,2月20日,星期二

定义1

设y(x)是初值问题(1.1),(1.2)的准确解,称为显式单步法(2.11)的局部截断误差.

Tn+1之所以称为局部的,是假设在xn前各步没有误差.当yn=y(xn)时,计算一步,则有

所以,局部截断误差可理解为用方法(2.11)计算一步的误差,也即公式(2.11)中用准确解y(x)代替数值解产生的公式误差.根据定义,显然欧拉法的局部截断误差为第24页,共59页,2023年,2月20日,星期二即为(2.3)的结果.这里称为局部截断误差主项.显然Tn+1=O(h2).一般情形的定义如下第25页,共59页,2023年,2月20日,星期二

定义2

设y(x)是初值问题的准确解,若存在最大整数p使显式单步法(2.11)的局部截断误差满足则称方法(2.11)具有p阶精度.若将(2.11)展开式写成则称为局部截断误差主项.第26页,共59页,2023年,2月20日,星期二以上定义对隐式单步法(2.10)也是适用的.例如,对后退欧拉法(2.5)其局部截断误差为这里p=1是1阶方法,局部截断误差主项为第27页,共59页,2023年,2月20日,星期二同样对梯形法(2.7)有所以梯形方法(2.7)是二阶的.其局部截断误差主项为第28页,共59页,2023年,2月20日,星期二9.3龙格-库塔方法

对许多实际问题来说,欧拉公式与改进欧拉公式精度还不能满足要求,为此从另一个角度来分析这两个公式的特点,从而探索一条构造高精度方法的途径.

第29页,共59页,2023年,2月20日,星期二9.3.1显式龙格-库塔法的一般形式上节给出了显式单步法的表达式(2.11),其局部截断误差为O(hp+1),对欧拉法Tn+1=O(h2),即方法为p=1阶,若用改进的欧拉法(2.9)式,它可表示为此时增量函数为第30页,共59页,2023年,2月20日,星期二它比欧拉法的(xn,yn,h)=f(xn,yn),增加了计算一个右函数f的值,可望p=2.若要使得到的公式阶数p更大,就必须包含更多的f

值.实际上从方程(1.1)等价的积分形式(2.4)

,即若要使公式阶数提高,就必须使右端积分的数值求积公式精度提高,它必然要增加求积节点,为此可将(3.3)的右端用求积公式表示为第31页,共59页,2023年,2月20日,星期二一般说来,点数r越多,精度越高,上式右端相当于增量函数(x,y,h),为得到便于计算的显式方法,可类似于改进欧拉法(3.1),(3.2),将公式表示为其中这里ci,i,ij均为常数.(3.4)和(3.5)称为r级显式龙格-库塔(Runge-Kutta)法,简称R-K方法.第32页,共59页,2023年,2月20日,星期二当r=1,(xn,yn,h)=f(xn,yn)时,就是欧拉法,此时方法的阶为p=1.当r=2时,改进欧拉法(3.1)式就是其中的一种,下面将证明其阶p=2.要使公式(3.4),(3.5)具有更高的阶p,就要增加点数r.下面我们只就r=2推导R-K方法.并给出r=3,4时的常用公式,其推导方法与r=2时类似,只是推导计算较复杂.第33页,共59页,2023年,2月20日,星期二9.3.2二阶显式R-K方法对r=2的R-K方法,由(3.4),(3.5)式可得如下计算公式这里c1,c2,2,21均为待定常数,我们希望适当选取这些系数,使公式阶数p尽量高.根据局部截断误差定义,推导出(3.6)的局部截断误差为第34页,共59页,2023年,2月20日,星期二其中这里yn=y(xn),yn+1=y(xn+1).为得到Tn+1的阶p,要将上式各项在(xn,

yn)处做泰勒展开,由于f(x,y

)是二元函数,故要用二元泰勒展开,各项展开式为第35页,共59页,2023年,2月20日,星期二将以上结果代入(3.7),则有第36页,共59页,2023年,2月20日,星期二要使公式(3.6)具有p=2阶,必须使即(3.9)的解是不唯一的.可令c2=a≠0,则得这样得到的公式称为二阶R-K方法.第37页,共59页,2023年,2月20日,星期二则由此可以看出在改进的欧拉公式中相当于取(xn,yn),(xn+1,yn+1)两点处斜率的平均值,近似代替平均斜率,其精度比欧拉公式提高了.如取a=1/2,则c1=c2=1/2,2=21=1.这就是改进的欧拉公式(3.1)式.第38页,共59页,2023年,2月20日,星期二称为中点公式(变形的欧拉公式),相当于数值积分的中矩形公式.也可以表示为如取a=1,则c1=0,c2=1,2=21=1/2.得计算公式第39页,共59页,2023年,2月20日,星期二对r=2的R-K公式(3.6)能否使局部误差提高到O(h4)?为此需把K2多展开一项,从(3.8)的看到展开式中的项是不能通过选择参数消掉的,实际上要使h3

的项为零,需增加3个方程,要确定4个参数c1,c2,2及21,这是不可能的.故r=2的显式R-K方法的阶只能是p=2,而不能得到三阶公式.第40页,共59页,2023年,2月20日,星期二9.3.3三阶与四阶显式R-K方法要得到三阶显式R-K方法,必须r=3.此时计算(3.4),(3.5)的公式表示为其中c1,c2,c3及2,21,3,31,32均为待定常数,公式(3.11)的局部截断误差为第41页,共59页,2023年,2月20日,星期二只要K1,K2将按二元泰勒展开,使Tn+1=O(h4),可得待定参数满足方程第42页,共59页,2023年,2月20日,星期二这是8个未知数6个方程的方程组,解不是唯一的.可以得到很多公式.满足条件(3.12)的公式(3.11)统称为三阶R-K公式.下面只给出其中一个常见的公式.此公式称为库塔三阶方法.第43页,共59页,2023年,2月20日,星期二继续上述过程,经过较复杂的数学演算,可以导出各种四阶R-K公式,下列经典公式是其中常用的一个:

四阶R-K方法的每一步需要计算四次函数值f,可以证明其局部截断误差为O(h5).证明从略.第44页,共59页,2023年,2月20日,星期二

例3

设取步长h=0.2,从x=0直到x=1用四阶龙格-库塔方法求解例1中的初值问题(2.2)式.

解这里,经典的四阶龙格-库塔公式(3.13)具有第45页,共59页,2023年,2月20日,星期二计算结果见下表

xnyny(xn)

xnyny(xn)

00.20.4

1.1.18321.3417

01.18323.24160.60.81.0

1.48331.61251.7321

1.48321.61251.7321比较例3和例2的计算结果,显然以龙格-库塔方法的精度为高.要注意,虽然四阶龙格-库塔方法的计算量(每一步要4次计算函数f)比改进的欧拉方法(它是一种二阶龙格-库塔方法,每一步只要2次计算函数f)大一倍,但由于这里放大了步长(h=0.2),两个例子的算法所耗费的计算量几乎相同.这个例子又一次显示了选择算法的重要意义.第46页,共59页,2023年,2月20日,星期二然而值得指出的是,龙格-库塔方法的推导基于泰勒展开方法,因而它要求所求的解具有较好的光滑性质.反之,如果解的光滑性差,那么,使用龙格-库塔方法求得的数值解,其精度可能反而不如改进的欧拉方法.实际计算时,我们应当针对问题的具体特点选择合适的算法.第47页,共59页,2023年,2月20日,星期二微分方程组和高阶方程初值问题的数值解欧拉方法和龙格-库塔方法可直接推广到微分方程组向前欧拉公式高阶方程需要先降阶为一阶微分方程组

第48页,共59页,2023年,2月20日,星期二龙格—库塔方法的MATLAB实现[t,x]=ode23(@f,ts,x0,opt)3级2阶龙格-库塔公式[t,x]=ode45(@f,ts,x0,opt)5级4阶龙格-库塔公式f是待解方程写成的函数m文件:functiondx=f(t,x)dx=[f1;f2;;fn];ts=[t0,t1,…,tf]输出指定时刻t0,t1,…,tf的函数值ts=t0:k:tf输出[t0,tf]内等分点处的函数值x0为函数初值(n维)输出t=ts,x为相应函数值(n维)opt为选项,缺省时精度为:相对误差10-3,绝对误差10-6,计算步长按精度要求自动调整第49页,共59页,2023年,2月20日,星期二微分方程(组)的数值解

事实上,能够求得解析解的微分方程或微分方程组少之又少,多数情况下需要求出微分方程(组)的数值解。Matlab中求微分方程数值解的函数有五个:ode45,ode23,ode113,ode15s,ode23s。调用格式为[t,x]=solver(‘f’,ts,x0,options)第50页,共59页,2023年,2月20日,星期二需要特别注意的是:①solver可以取以上五个函数之一,不同的函数代表不同的内部算法:ode23运用组合的2/3阶龙格—库塔—费尔贝算法,ode45运用组合的4/5阶龙格—库塔—费尔贝算法。通常使用函数ode45;②f是由待解方程写成的m文件的文件名;③ts=[t0,tf],t0、tf为自变量的初值和终值;④x0为函数的初值;第51页,共59页,2023年,2月20日,星期二⑤options用于设

温馨提示

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

评论

0/150

提交评论