数值分析-05常微分方程数值解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

(NumericalMethodsforOrdinaryDifferentialEquations)常微分方程分为(1)初值问题(2)边值问题一、初值问题的数值解法§1引言一阶常微分方程初值问题的一般形式是:0(,),(1)(){(,),()()}yfxyaxbyayDxyaxbyxyyx称在区域D上对满足Lipschitz条件是指:1212120..(,)(,),[,],,[(),()]LstfxyfxyLyyxabyyyxyx(,)fxyy二、初值问题解的存在性考虑一阶常微分方程的初值问题/*Initial-ValueProblem*/:0)(],[),(yaybaxyxfdxdy|||),(),(|2121yyLyxfyxf则上述IVP存在唯一解。只要在上连续,且关于y满足Lipschitz条件,(,)fxy1,abR即存在与无关的常数L使,xy对任意定义在上的都成立,,ab12,yxyx要计算出解函数y(x)在一系列节点a=x0x1…xn=b处的近似值采用离散化方法。()(1,...,)iiyyxin称节点间距为步长,通常采用等距节点,即取hi=h(常数)。)1,...,0(1nixxhiii三、初值问题的离散化方法离散化方法的基本特点是依照某一递推公式,值,取。按节点从左至右的顺序依次求出的近似()iyx(1,...,)iyin0y如果计算,只用到前一步的值,则称这类方法为单步方法。1iyiy如果计算需用到前r步的值,,则称这类方法为r步方法。1iy11,,iiryyiy§2欧拉方法/*Euler’sMethod*/欧拉公式(单步显示公式):向前差商近似导数hxyxyxy)()()(010),()()()(000001yxfhyxyhxyxy1y记为x0x1)1,...,0(),(1niyxfhyyiiii亦称为欧拉折线法/*Euler’spolygonalarcmethod*/在假设yi=y(xi),即第i步计算是精确的前提下,考虑的截断误差Ri=y(xi+1)yi+1称为局部截断误差/*localtruncationerror*/。定义若某算法的局部截断误差为O(hp+1),则称该算法有p阶精度。定义欧拉法的局部截断误差:)],([)]()()()([)(32112iiiihiiiiiyxhfyhOxyxyhxyyxyR)()(322hOxyihRi的主项/*leadingterm*/欧拉法具有1阶精度。例1:用欧拉公式求解初值问题2201.201yxyxy()取步长。0.1h解:应用Euler公式于题给初值问题的具体形式为:2120,1,...,1101iiiiyyhxyiy其中。0.1ixi计算结果列于下表:iixiyiyxiiyxy1234567891011120.10.20.30.40.50.60.70.80.91.01.11.21.0000000.9800000.9415840.8883890.8252500.7571470.6883540.6220180.5601130.5036420.4529110.4077830.9900990.9615380.9174310.8630690.8000000.7352940.6711410.6097560.5524860.5000000.4524890.4098360.0099010.0184620.0241530.0263200.0252500.0218520.0172130.0122620.0076260.0036420.0004220.002053可用来检验近似解的准确程度。进行计算,数值解已达到了一定的精度。这个初值问题的准确解为,211yxx从上表最后一列,我们看到取步长0.1h欧拉公式的改进:隐式欧拉法/*implicitEulermethod*/向后差商近似导数hxyxyxy)()()(011x0x1))(,()(1101xyxfhyxy由于未知数yi+1同时出现在等式的两边,不能直接得到,故称为隐式/*implicit*/欧拉公式,而前者称为显式/*explicit*/欧拉公式。111,0,1iiiiyhfxiyyn一般先用显式计算一个初值,再迭代求解。隐式欧拉法的局部截断误差:11)(iiiyxyR)()(322hOxyih即隐式欧拉公式具有1阶精度。梯形公式/*trapezoidformula*/—显、隐式两种算法的平均)1,...,0()],(),([2111niyxfyxfhyyiiiiii注:的确有局部截断误差,311iiiRyxyOh即梯形公式具有2阶精度,比欧拉方法有了进步。但注意到该公式是隐式公式,计算时不得不用到迭代法,其迭代收敛性与欧拉公式相似。中点欧拉公式/*midpointformula*/中心差商近似导数hxyxyxy2)()()(021x0x2x1))(,(2)()(1102xyxfhxyxy1,...,1),(211niyxfhyyiiii假设,则可以导出即中点公式具有2阶精度。)(),(11iiiixyyxyy)()(311hOyxyRiii方法显式欧拉隐式欧拉梯形公式中点公式简单精度低稳定性最好精度低,计算量大精度提高计算量大精度提高,显式多一个初值,可能影响精度Can’tyougivemeaformulawithalltheadvantagesyetwithoutanyofthedisadvantages?Doyouthinkitpossible?Well,callmegreedy…OK,let’smakeitpossible.改进欧拉法/*modifiedEuler’smethod*/Step1:先用显式欧拉公式作预测,算出Step2:再将代入隐式梯形公式的右边作校正,得到1iy)1,...,0(),(,),(211niyxfhyxfyxfhyyiiiiiiii1,iiiiyyhfxy111,,2iiiiiiyyyyhfxfx注:此法亦称为预测-校正法/*predictor-correctormethod*/可以证明该算法具有2阶精度,同时可以看到它是个单步递推格式,比隐式公式的迭代求解过程简单。后面将看到,它的稳定性高于显式欧拉法。改进的欧拉法),(),(2111nnnnnnyxfyxfhyy在实际计算时,可将欧拉法与梯形法则相结合,计算公式为,...2,1,0),(),(2),()(11)1(1)0(1kyxfyxfhyyyxhfyyknnnnnknnnnn应用改进欧拉法,如果序列收敛,,,)1(1)0(1nnyy它的极限便满足方程),(),(2111nnnnnnyxfyxfhyy改进欧拉法的截断误差)(0)(311hyxynn因此,改进欧拉法公式具有2阶精度例2:用改进Euler公式求解例1中的初值问题,取步长。0.1h解:对此初值问题采用改进Euler公式,其具体形式为0212111111122()0,1,...,1112piiiicpiiiipciiiyyyhxyyyhxyiyyy计算结果列于下表:iixiy1piy1ciyiiyxy改进的Euler法iiyxyEuler法01234567891011120.00.10.20.30.40.50.60.70.80.91.01.11.21.0000000.9900000.9613660.9172460.8619540.8000340.7355270.6175870.6103990.5532890.5009190.4534790.4108591.0000000.9703890.9243970.8667650.8025170.7360290.6706070.6084430.5507850.4981860.4507350.4082370.9800000.9523330.9100950.8571430.7975510.7350250.6725670.6123550.5557930.5036510.4562230.4134810.0000000.0000990.0001730.0001850.0001150.0000340.0002330.0004460.0006430.0008030.0009190.0009900.0010230.0000000.0099010.0184620.0241530.0263200.0252500.0218520.0172130.0122620.0076260.0036420.0004220.002053通过计算结果得比较可以看出,改进的Euler方法的计算精度比Euler方法要高。§3龙格-库塔法/*Runge-KuttaMethod*/建立高精度的单步递推格式。单步递推法的基本思想是从(xi,yi)点出发,欧拉法及其各种变形所能达到的最高精度为2阶。以某一斜率沿直线达到点。11,iixy考察改进的欧拉法,可以将其改写为:),(),(2121121211hKyhxfKyxfKKKhyyiiiiii斜率一定取K1K2的平均值吗?步长一定是一个h吗?将改进欧拉法推广为:),(),(][12122111phKyphxfKyxfKKKhyyiiiiiill首先希望能确定系数l1、l2、p,使得到的算法格式有2阶精度,即在的前提假设下,使得)(iixyy)()(311hOyxyRiiiStep1:将K2在(xi,yi)点作Taylor展开)(),(),(),(),(2112hOyxfphKyxphfyxfphKyphxfKiiyiixiiii)()()(2hOxyphxyii),(),(),(),(),(),()(yxfyxfyxfdxdyyxfyxfyxfdxdxyyxyxStep2:将K2代入第1式,得到)()()()()]()()([)(322212211hOxyphxyhyhOxyphxyxyhyyiiiiiiiilllllStep3:将yi+1与y(xi+1)在xi点的泰勒展开作比较)()(2)()()(321hOxyhxyhxyxyiiii)()()()(322211hOxyphxyhyyiiiilll要求,则必须有:)()(311hOyxyRiii21,1221plll这里有个未知数,个方程。32存在无穷多个解。所有满足上式的格式统称为2阶龙格-库塔格式。注意到,就是改进的欧拉法。21,121llp为获得更高的精度,应该如何进一步推广?)...,(......),(),(),(]...[1122112321313312122122111mmmmmmimiiiiiimmiihKhKhKyhxfKhKhKyhxfKhKyhxfKyxfKKKKhyybbbabbaballl其中li(i=1,…,m),ai(i=2,…,m)和bij(i=2,…,m;j=1,…,i1)均为待定系数,确定这些系数的步骤与前面相似。考虑一阶常微分方程初值问题0(,),,(),yfxyaxbyay11()()(,())()(

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功