差分法欧拉格式浅谈
- 格式:doc
- 大小:148.00 KB
- 文档页数:5
第三章 有限差分法函数()f x ,x 为定义在区间[]a b ,上的连续变 量。
将区间[]a b ,等分成n 份,令()h b an =-称为 步长,x 在这些离散点处的取值为x a ih i =+ ()i n =01,,,Λ称为节点。
函数()f x 在这些节点处的差值()()()()()()f x h f x f x f x h f x h f x h i i i i i i +---+--⎧⎨⎪⎩⎪ (5-1) 分别称为一阶向前、向后和中心差分,可以用它 们作为函数()f x 在x i 处的微分近似值。
这些差分 与相应x 区间的比值()()[]()()[]()()[]1112h f x h f x h f x f x h h f x h f x h i i i i i i +---+--⎧⎨⎪⎪⎪⎩⎪⎪⎪ (5-2) 分别称为一阶向前、向后和中心差商,可以用它 们作为函数()f x 在x i 处的导数近似值。
完全类似 地可以定义高阶差商,例如常用的二阶中心差商()()()[]122hf x h f x f x h i i i +-+- (5-3) 可以作为函数()f x 在x i 处的二阶导数近似值。
§3.1 常微分方程初值问题的差分解法考虑电学中的一个问题:如图5-1。
研究 电容器上的电荷随时间的变化规律。
图5-1 RC 放电回路这个问题对应的微分方程及其定解条件为:d d Q tQ RC Q Q t =-=⎧⎨⎪⎩⎪=00(5-4) 这是一阶微分方程的初值问题,它的解析解为 Q Q e t RC =-0 (5-5)一、欧拉(Euler )折线法求解下列普遍形式的一阶微分方程的初值 问题:()[]()'=∈=⎧⎨⎪⎩⎪y f x y x a b y a y ,,0(5-6) 首先,将区间[]a b ,等分n 份,取值a x x xb n =<<<=01Λ,步长h x x i i =-+1。
微分方程欧拉方法
微分方程欧拉方法是一种常用的数值求解微分方程的方法。
它的基本思想是将微分方程转化为差分方程,通过逐步逼近的方法来求得方程的数值解。
在微分方程欧拉方法中,首先需要将微分方程化为差分方程。
考虑一个一阶常微分方程dy/dx=f(x,y),以及一个初始条件y(x0)=y0。
我们可以将自变量x的区间分割成n个小区间,每个小区间的长度为h=(x-x0)/n。
然后,利用离散化的方法,我们可以得到差分方程y(x+h)=y(x)+h*f(x,y)。
这个差分方程可以用来逐步逼近微分方程的数值解。
欧拉方法的步骤如下:首先,给定微分方程和初始条件;然后,选择合适的步长h和区间终点x;接下来,利用差分方程依次计算每个小区间内的y值,直到达到区间终点x为止。
通过这种逼近的方式,我们可以得到微分方程的数值解。
需要注意的是,微分方程欧拉方法的精度相对较低。
这是因为欧拉方法只是使用一阶差分公式来逼近微分方程,而没有考虑更高阶的导数信息。
因此,在某些情况下,欧拉方法可能会产生较大的误差。
为了提高精度,我们可以使用更高阶的数值方法,如改进的欧拉方法或龙格-库塔法。
总之,微分方程欧拉方法是一种简单而常用的数值求解微分方程的方法。
通过将微分方程转化为差分方程,并使用逼近的方式来求得数值解,我们可以获得一定程度上准确的结果。
但需要注意的是,欧拉方法的精度相对较低,可能会引入较大的误差。
如果需要更高的精度,则可以考虑其他更高阶的数值方法。
西北农林科技大学实习报告学院:理学院 专业年级:信计061 姓名:袁金龙 学号:15206012 课程:微分方程数值解 报告日期:2008-11-26实习一、一维问题的有限差分方法-----Euler 法一)实习问题:用欧拉法,龙格库塔法,米尔恩法求解下面的初值问题:'2(0)1tu u e u ⎧+=⎨=⎩二)算法描述:⑴欧拉法:1(,),0,1,2,...,1m m m m u u hf t u m n +=+=-⑵龙格库塔法的中点法:111(,(,)),0,1,2,...,122m m m m m m u u hf t h u hf t u m n +=+++=-⑶米尔恩法:2211(4),0,1,2,...,23m m m m m u u h f f f m n +++=+++=-⑷初始值的确定: 泰勒级数法1'1000()()()...()(1)q q j jh u u t u t jh ut q --=+++- ⑸雅可比迭代法1[1][]0[0]11(,)()()k n n m k k m k m k j m j j m j j m km k m k u h f t u u h f u uhf Euler βαβ-++++++=++-+-⎧=--⎪⎨⎪=⎩∑三)matlab 程序: ⑴问题函数:function [f1]=f(t,u) f1=-2*u+exp(t);*************************************************** ⑵欧拉法:function []=oula(a,b,u0,n) %[a,b]表示t 的取值区间%u0表示初值%n表示将[0,1]区间分成的分数h=(b-a)/n;t0=a;u(1)=u0+h*(f(t0,u0));for i=1:nt(i)=a+i*h;endtfor i=2:nu(i)=u(i-1)+h*f(t(i-1),u(i-1));endu%精确解的求法for i=1:nu1(i)=(2/3)*exp(-2*t(i))+(1/3)*exp(t(i));endu1plot(t,u,t,u1)title('欧拉法中的预测值与真实值的比较');xlabel('采样点');ylabel('幅度');grid;legend('预测值','真实值');*********************************************************** ⑶龙格库塔法的中点法:function []=zhongdian(a,b,u0,n)%[a,b]表示t的取值区间%u0表示初值%n表示将[0,1]区间分成的分数h=(b-a)/n;t0=a;u(1)=u0+h*(f((t0+(1/2)*h),(u0+(1/2)*h*f(t0,u0))));for i=1:nt(i)=a+i*h;endtfor i=2:nu(i)=u(i-1)+h*(f((t(i-1)+(1/2)*h),(u(i-1)+(1/2)*h*f(t(i-1),u(i-1))))); endu%精确解的求法for i=1:nu1(i)=(2/3)*exp(-2*t(i))+(1/3)*exp(t(i));endu1plot(t,u,t,u1)title('中点法中的预测值与真实值的比较');xlabel('采样点');ylabel('幅度');grid;legend('预测值','真实值');**************************************************************⑷米尔恩法:function []=Milne(n,e)%n表示区间[0,1]要分的份数%对于初值精度我们选择q=3阶的%初值的求解%经过计算运用泰勒级数法求解初值%q(i)表示第i次迭代满足精度的最终值t0=0;for i=1:nt(i)=(1/n)*i;endu0=1;h=1/n;u2(1,1)=1-h+2.5*h*h%Jacobi迭代求解隐式法u2(2,1)=u2(1,1)+h*f(t(1),u2(1,1))for i=2:1000000u2(2,i)=h*(1/3)*f(t(2),u2(2,i-1))+u0+h*(1/3)*f(t0,u0)+h*(4/3)*f(t(1),u2(1,1));if abs(u2(2,i)-u2(2,(i-1)))<eu2(3,1)=u2(2,i)+h*f(t(2),u2(2,i));break;endendfor i=3:nfor j=2:1000000u2(i,j)=h*(1/3)*f(t(i),u2(i,j-1))+u2(i-2,1)+h*(1/3)*f(t(i-2),u2(i-2,1))+h*(4/3)*f(t(i-1),u2(i-1,1));if abs(u2(2,j)-u2(2,(j-1)))<eu2(i+1,1)=u2(i,j)+h*f(t(i),u2(i,j));break;endendendq(1)=u2(1,1);for i=2:n-1q(i)=u2(i+1,1);end%精确解的求法for i=1:n-1t1(i)=(1/n)*i;endfor i=1:n-1u1(i)=(2/3)*exp(-2*t(i))+(1/3)*exp(t(i));endu1;plot(t1,q,t1,u1)title('Milne法中的预测值与真实值的比较');xlabel('采样点');ylabel('幅度');grid;legend('预测值','真实值');*********************************************************四)图形显示的计算结果:⑴欧拉法:表1:欧拉法中的预测值与真实值的比较(n=20时)真实值预测值误差(%)0.9500 0.9536 0.38260.9076 0.9142 0.72710.8721 0.8812 1.03170.8430 0.8540 1.29550.8197 0.8324 1.51810.8020 0.8158 1.70050.7893 0.8041 1.84400.7813 0.7968 1.95110.7777 0.7938 2.02490.7784 0.7948 2.06860.7830 0.7997 2.08620.7913 0.8082 2.08150.8033 0.8202 2.05850.8188 0.8356 2.02070.8376 0.8544 1.97160.8597 0.8764 1.91430.8850 0.9017 1.85140.9135 0.9301 1.78530.9451 0.9616 1.71790.9799 0.9963 1.6506表2:欧拉法中的预测值与真实值的比较(n=10时)真实值 预测值 误差(%)0.9000 0.9142 1.5544 0.8305 0.8540 2.7514 0.7866 0.8158 3.5882 0.7642 0.7968 4.0910 0.7606 0.7948 4.3105 0.7733 0.8082 4.31150.8009 0.8356 1.638 0.8421 0.8764 1.6736 0.8962 0.9301 1.6943 0.96290.99631.70540.10.20.30.40.50.60.70.80.910.750.80.850.90.951欧拉法中的预测值与真实值的比较采样点幅度图1:欧拉法中的预测值与真实值的比较(分成20份时)说明:从图1及表1和表2中可以看出:采用欧拉法对初值问题的近似比较准确,且从算法中可以推断,随着n (将[a,b]区间分成的分数)值的增大,误差将会越来越小。
欧拉梁方程有限差分欧拉梁方程是物理学和工程学中最基本的物理模型之一,可以用来解释许多现象,比如传播、振动、热传导等等。
这一方程也是日常生活中最普遍的物理模型,比如人们会在摆动秋千或滑板时用到它。
欧拉梁方程有限差分法是一种用来求解欧拉梁方程的数值求解方法,它利用近似的微分方程来把欧拉梁方程的复杂的数学模型简化成数值的形式。
有限差分法是一种有效的、简单的和快速的数值求解方法,它可以在不花费太多时间和金钱的情况下解决复杂的算法问题。
欧拉梁方程的有限差分法主要由以下几个步骤组成:首先,将欧拉梁方程写成一个多元微分方程;然后,采用有限差分法将其转化成离散形式;最后,利用特定的算法解决离散形式的多元微分方程。
这样,就可以得到所有欧拉梁方程的解,而不需要计算原始的欧拉梁方程。
有限差分法的优势在于可以快速准确的解决欧拉梁方程,而且也可以用于计算实际问题。
有限差分法可以给出精确度较高的结果,而且它可以在不耗费太多计算时间的情况下解决绝大部分欧拉梁方程问题。
有限差分法也可以用来求解不可解析的方程,这样可以节省大量的计算时间。
有限差分法对于计算欧拉梁方程提供了一种简单高效的方法,可以用来解决复杂的物理模型问题。
它的算法简单,执行效率高,准确度高,可以用来求解任何复杂的欧拉梁方程问题。
有限差分法的应用还可以延伸到物理学和力学的其他领域,例如地质动力学、流体力学等。
总之,欧拉梁方程有限差分法是一种使用近似的微分方程来求解欧拉梁方程的数值求解方法,可以用来解决欧拉梁方程以及其他物理模型的问题,这种方法具有简单高效、计算时间少、准确等特点,也可以用来求解不可解析的方程,因此有限差分法对于计算欧拉梁方程具有重要的应用价值。
第三章 有限差分法函数()f x ,x 为定义在区间[]a b ,上的连续变 量。
将区间[]a b ,等分成n 份,令()h b a n =-称为 步长,x 在这些离散点处的取值为x a ih i =+ ()i n =01,,,称为节点。
函数()f x 在这些节点处的差值()()()()()()f x h f x f x f x h f x h f x h i i i i i i +---+--⎧⎨⎪⎩⎪(5-1)分别称为一阶向前、向后和中心差分,可以用它 们作为函数()f x 在x i 处的微分近似值。
这些差分 与相应x 区间的比值()()[]()()[]()()[]1112h f x h f x h f x f x h h f x h f x h i i i i i i +---+--⎧⎨⎪⎪⎪⎩⎪⎪⎪ (5-2) 分别称为一阶向前、向后和中心差商,可以用它 们作为函数()f x 在x i 处的导数近似值。
完全类似地可以定义高阶差商,例如常用的二阶中心差商()()()[]122hf x h f x f x h i i i +-+- (5-3)可以作为函数()f x 在x i 处的二阶导数近似值。
§3.1 常微分方程初值问题的差分解法考虑电学中的一个问题:如图5-1。
研究 电容器上的电荷随时间的变化规律。
图5-1 RC 放电回路这个问题对应的微分方程及其定解条件为:d d Q tQ RC QQ t =-=⎧⎨⎪⎩⎪=00(5-4) 这是一阶微分方程的初值问题,它的解析解为 Q Q e t RC =-0 (5-5)一、欧拉(Euler )折线法求解下列普遍形式的一阶微分方程的初值 问题:()[]()'=∈=⎧⎨⎪⎩⎪y f x y x a b y a y ,,0(5-6) 首先,将区间[]a b ,等分n 份,取值a x x xb n =<<<=01 ,步长h x x i i =-+1。
随机微分方程的数值模拟方法随机微分方程(Stochastic Differential Equations,简称SDEs)是描述包含随机项的微分方程。
它们在金融学、物理学和生物学等领域中广泛应用,尤其在随机模型建立和数值模拟方面有着重要的作用。
为了模拟和解决随机微分方程,研究者们开发了各种数值模拟方法。
这些方法的目标是通过离散化时间和空间来近似SDE的解,以获得数值解。
在本文中,我将介绍几种常用的数值模拟方法,包括欧拉方法、米尔斯坦方法和龙格-库塔方法。
我们将从简单的欧拉方法开始,逐渐深入探讨这些方法的优点和局限性。
1. 欧拉方法(Euler Method)欧拉方法是最简单和最直接的数值模拟方法之一。
它将区间分成若干小的子区间,然后使用差分逼近来计算每个子区间内的解。
欧拉方法的基本思想是将微分方程中的导数用差分代替,从而将微分方程转化为差分方程。
欧拉方法的数值格式如下:然而,欧拉方法的缺点在于其精度较低,特别是当时间步长较大时。
它也不能很好地处理某些随机微分方程的特殊情况。
2. 米尔斯坦方法(Milstein Method)米尔斯坦方法是对欧拉方法的改进,目的是提高精度。
它通过在欧拉方法的基础上添加额外的项来纠正误差,从而提高数值解的准确性。
米尔斯坦方法的数值格式如下:相比于欧拉方法,米尔斯坦方法在同样的时间步长下通常能够提供更准确的数值解。
然而,对于某些特殊的随机微分方程,米尔斯坦方法也可能存在一些问题。
3. 龙格-库塔方法(Runge-Kutta Method)龙格-库塔方法是一类更为复杂但精度更高的数值模拟方法。
它基于对SDE进行多次逼近来得到数值解,通常可以达到较高的准确性。
龙格-库塔方法的基本思想与常规微分方程的龙格-库塔方法类似,但在计算过程中需要额外考虑随机项的贡献。
相比于欧拉方法和米尔斯坦方法,龙格-库塔方法的数值格式更为复杂,但其准确性和稳定性更高。
总结和回顾:通过本文的介绍,我们对随机微分方程的数值模拟方法有了初步的了解。
基于非结构网格二维Euler方程的Jameson求解方法姓名:王司文学号:sx摘要本文介绍了基于CFD理论的求解二维可压缩流Euler方程的Jameson中心格式方法。
在空间离散上采用的是有限体积法,时间上采用的是四步显式Runge -Kutta迭代求解。
人工耗散项为守恒变量的二阶和四阶差分项。
边界条件采用的是无反射边界条件,并采用当地时间步长进行加速收敛。
最后对NACA0012翼型划分了三角形,并应用本文程序进行数值模拟,结果较为理想。
关键字:CFD,Jameson中心格式,Euler方程,有限体积法AbstractA method for the numerical solution of the two-dimensional Euler equations has been developed. The cell-centred symmetric finite-volume spatial discretisation is applied in a general formulation. The integration in time, to a steady-state solution, is performed using an explicit, four-stage Runge-Kutta procedure. The artificial dissipation is constructed as a blending of second and fourth differences of the conserved variables. And in the boundary, there is none of the outgoing waves are reflected back into the computational domain. An acceleration technique called local time stepping is used. At last, standard test cases for both subsonic and supersonic flows have been used to validate the method.Key words:CFD, Jameson method,Euler equations, finite-volume第一章引言在工程应用的推动下,计算流体力学随着计算机技术的发展和计算格式的不断更新而迅猛发展。
差分法欧拉格式浅谈科学计算中常常求解常微分方程的定解这类问题的最简形式是一阶方程的初值问题⎩⎨⎧=='00)(),(y x y y x f y (1) 这里假定右函数),(y x f 适当光滑,譬如关于y 满足Lipschitz 条件,以保证上述初值问题的解y(x)存在且唯一。
虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程。
求解从实际问题当中归结出来的微分方程主要靠数值解法。
差分方法是一类重要的数值解法。
这类方法回避解y(x)的函数表达式,而是寻求它在一系列离散节点<<<<<n x x x x 210上的近似值 ,,,,,21n o y y y y 。
相邻的两个节点的间距n n x x h -=+1称作步长。
假定步长为定数。
差分方法是一类离散化方法,这类方法将寻求解y(x)的分析问题转化为计算离散值n y 的代数问题,从而使问题获得了实质性的简化。
然而随之带来的困难是,由于数据量{}n y 往往很大,差分方法所归结出的可能是个大规模的代数方程组。
初值问题的各种差分方法有个基本特点,它们都采取“步进式”,即求解过程顺着节点排列的次序一步一步地向前推进。
描述这类算法,只要给出从已知信息 ,,,21--n n n y y y 计算1+n y 的递推公式。
这类计算公式称作差分格式。
差分格式中仅含一个未知参数1+n y ,或者说,它是仅含一个变元1+n y 的代数方程,这就大大地缩短了计算问题的规模。
总之,差分方法的设计思想是,将寻求微分方程的解y(x)的分析问题化归为计算离散值{}n y 的代数问题,而“步进式”则进一步将计算模型化归为仅含一个变元1+n y 的代数方程——差分格式。
Euler 方法方程(1)中含有导数项)(x y ',这是微分方程的本质特征,也正是它难以求解的症结所在。
导数是极限过程的结果,而计算过程则总是有限的。
欧拉梁方程是描述杆状梁的动态行为的常用方程。
它是一种二阶常微分方程,可以通过使用有限差分方法来求解。
有限差分方法是指,通过在杆状梁上取一些点,并使用这些点的应力应变值来近似求解整个杆状梁的动态行为的方法。
这种方法可以使用计算机软件来解决,并且通常可以得到较高精度的结果。
通常,使用有限差分方法求解欧拉梁方程的步骤如下:
1 将杆状梁划分为若干小段,每段长度为$h$。
2 在每段的中点处取一个点,称其为“网格点”。
3 在每个网格点处计算欧拉梁方程的差分方程。
4 使用这些差分方程迭代求解欧拉梁方程,直到收敛为止。
有限差分方法可以用来解决多种动力学问题,包括杆状梁的动态行为、振动、弯曲和扭转等。
它具有较高的精度,且计算速度较快,因此在工程设计中常常被使用。
有限差分方法有限差分方法一种求偏微分(或常微分)方程和方程组定解问题的数值解的方法,简称差分方法。
微分方程的定解问题就是在满足某些定解条件下求微分方程的解。
在空间区域的边界上要满足的定解条件称为边值条件。
如果问题与时间有关,在初始时刻所要满足的定解条件,称为初值条件。
不含时间而只带边值条件的定解问题,称为边值问题。
与时间有关而只带初值条件的定解问题,称为初值问题。
同时带有两种定解条件的问题,称为初值边值混合问题。
定解问题往往不具有解析解,或者其解析解不易计算。
所以要采用可行的数值解法。
有限差分方法就是一种数值解法,它的基本思想是先把问题的定义域进行网格剖分,然后在网格点上,按适当的数值微分公式把定解问题中的微商换成差商,从而把原问题离散化为差分格式,进而求出数值解。
此外,还要研究差分格式的解的存在性和唯一性、解的求法、解法的数值稳定性、差分格式的解与原定解问题的真解的误差估计、差分格式的解当网格大小趋于零时是否趋于真解(即收敛性),等等。
有限差分方法具有简单、灵活以及通用性强等特点,容易在计算机上实现。
偏微分方程初值问题的差分法许多物理现象随着时间而发生变化、如热传导过程、气体扩散过程和波的传播过程都与时间有关。
描述这些过程的偏微分方程具有这样的性质:若初始时刻t=t0的解已给定,则t t0时刻的解完全取决于初始条件和某些边界条件。
利用差分法解这类问题,就是从初始值出发,通过差分格式沿时间增加的方向,逐步求出微分方程的近似解。
双曲型方程的差分方法最简单的双曲型方程的初值问题是:式中嫓(x)为已知初值函数。
这初值问题的解是:u(x,t)=嫓(x-at)。
(2)由(2)可见,(1a)(1b)的解(2)当a>0时代表一个以有限的速度a沿特征线x-at=常数向右传播的波,而解u(x,t)在P(慜,惭)点的值完全由嫓(x)在x轴上的点A(慜-а惭,0)的值决定。
A点就是双曲型方程(1a)在P点的依赖域(图1)。
差分法欧拉格式浅谈
科学计算中常常求解常微分方程的定解这类问题的最简形式是一阶方程的初值问题
⎩⎨⎧=='00
)(),(y x y y x f y (1) 这里假定右函数),(y x f 适当光滑,譬如关于y 满足Lipschitz 条件,以保证上述初值问题的解y(x)存在且唯一。
虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程。
求解从实际问题当中归结出来的微分方程主要靠数值解法。
差分方法是一类重要的数值解法。
这类方法回避解y(x)的函数表达式,而是寻求它在一系列离散节点
<<<<<n x x x x 210
上的近似值 ,,,,,21n o y y y y 。
相邻的两个节点的间距n n x x h -=+1称作步长。
假定步长为定数。
差分方法是一类离散化方法,这类方法将寻求解y(x)的分析问题转化为计算离散值n y 的代数问题,从而使问题获得了实质性的简化。
然而随之带来的困难是,由于数据量{}n y 往往很大,差分方法所归结出的可能是个大规模的代数方程组。
初值问题的各种差分方法有个基本特点,它们都采取“步进式”,即求解过程顺着节点排列的次序一步一步地向前推进。
描述这类算法,只要给出从已知信息 ,,,21--n n n y y y 计算1+n y 的递推公式。
这类计算公式称作差分格式。
差分格式中仅含一个未知参数1+n y ,或者说,它是仅含一个变元1+n y 的代数方程,这就大大地缩短了计算问题的规模。
总之,差分方法的设计思想是,将寻求微分方程的解y(x)的分析问题化归为计算离散值{}n y 的代数问题,而“步进式”则进一步将计算模型化归为仅含一个变元1+n y 的代数方程——差分格式。
Euler 方法
方程(1)中含有导数项)(x y ',这是微分方程的本质特征,也正是它难以求
解的症结所在。
导数是极限过程的结果,而计算过程则总是有限的。
因此数值解法的第一步就是消除式(1)中的导数项y ',这项手续称作离散化。
由于差商是是微分的近似计算,实现离散化的一种直截了当的途径是用差商替代导数。
Euler 格式
设在区间[]1,+n n x x 的左端点n x 列出方程(1)即
))(,()(0n n x y x f x y =' 并用差商h
x y x y n n )()(1-+替代其中的导数项)(n x y ',则有近似关系式 ))(,()()(1n n n n x y x hf x y x y +≈+ (2)
若用)(n x y 的近似值n y 代入上式右端,并记所得结果为1+n y ,这样设计出的计算公式
2,1,0),,(1=+=+n y x hf y y n n n n (3)
就是著名的Euler 格式。
若初值0y 已知,则依据格式(3)可逐步算出数值解 21,y y 。
再从图形上看,假设节点),(n n n y x P 位于积分曲线)(x y y =上,则按Euler 格式定出的节点),(111+++n n n y x P 落在积分曲线)(x y y =的切线上,从这个角度也可以看出,Euler 格式是很粗糙的。
隐式Euler 格式
再在区间[]1,+n n x x 的右端点1+n x 列出方程(1),即
))(,()(111+++='n n n x y x f x y
并改用点1+n x 处的向后差商h
x y x y n n )()(1-+替代方程中的导数项)(1+'n x y ,再离散化,即可导出隐式Euler 格式
),(111++++=n n n n y x hf y y (5)
这一格式与Euler 格式(3)有着本质的区别:Euler 格式(3)是关于1+n y 的一个直接的计算公式,称这类格式是显式的;而格式(5)的右端含有未知的1+n y 它实际上是个关于1+n y 的函数方程,这类格式是隐式的。
隐式格式的计算远比显式格式困难。
由于数值微分的向前差商公式与向后差商公式具有同等精度,可以预料,隐式Euler 格式(5)与显式Euler 格式(3)的精度相当,两者精度都不高。
Euler 两步格式 为了改善精度,可以改用中心差商[])()(2111-+-n n x y x y h
替代方程 ))(,()(n n n x y x f x y ='
中的导数项,再离散化,即可导出下列格式:
),(211n n n n y x hf y y +=-+ (6)
无论是显式Euler 格式(3)还是隐式Euler 格式(5),它们都是单步法,其特点是计算1+n y
时只用到前一步的信息n y ;然而格式(6)除了n y 以外,还显含更前一步的信息1-n y ,即调用了前面两步的信息,Euler 两步格式因此而得名。
Euler 两步格式(6)虽然比Euler 格式或隐式Euler 格式具有更高的精度,但它是一种两步法。
两步法不能自行启动,实际使用时除初值0y 外还需要借助于某种一步法再提供一个开始值y 1,这就增加了计算程序的复杂性。
梯形格式
设将方程),(y x f y ='的两端从n x 到1+n x 求积分,即得
⎰++=+1
))(,()()(1n n x x n n dx x y x f x y x y (7)
显然,为要通过这个积分关系式获得)(1+n x y 的近似值,只要近似地算出其中的积分项⎰+1
))(,(n n x x dx x y x f ,而选择不同的计算方法计算这个积分项,就会得到
不同的差分格式。
例如,利用矩形方法计算积分项
⎰+≈1
))(,())(,(n n x x n n x y x hf dx x y x f
代入式(7)有近似关系式
))(,()()(1n n n n x y x hf x y x y +≈+
据此离散化又可导出Euler 格式(3)。
由于数值积分的矩形方法精度很低,Euler 格式当然很粗糙。
为了提高精度,改用梯形方法计算积分项
[]))(,())(,(2
))(,(111+++≈⎰+n n n n x x x y x f x y x f h dx x y x f n n 再代入式(7),有
[]))(,())(,(2
)()(111+++++≈n n n n n n x y x f x y x f h x y x y 设将式中的)(n x y ,)(1+n x y 分别用n y ,1+n y 替代,作为离散化的结果导出下列计算格式:
[]),(),(2
111+++++
=n n n n n n y x f y x f h y y (8) 与梯形求积公式相呼应的这一差分格式称作梯形格式。
容易看出,梯形格式(8)实际上是显式Euler 格式(3)与隐式Euler 格式
(5)的算术平均。
改进的Euler 格式
Euler 格式(3)是一种显式算法,其计算量小,但计算精度低;梯形格式(8)虽然提高了精度,但它是一种隐式算法,需要借助于迭代过程求解,计算量大。
可以综合使用这两种方法,先用Euler 格式求得一个初步的近似值1+n y ,称作预报值;预报值的精度不高,用它替代式(8)右端的1+n y 再直接计算,得到校正值1+n y ,这样建立的预报校正系统
[]
⎪⎩⎪⎨⎧++=+=++++),(),(2),(1111n n n n n n n n n n y x f y x f h y y y x f y y (9) 称作改进的Euler 格式。
这是一种显式格式,它可表达为如下嵌套形式:
[])),(,(),(2
11n n n n n n n n y x hf y x f y x f h y y +++=++ 或平均化形式
⎪⎪⎪⎩
⎪⎪⎪⎨⎧+=+=+=++)(21),(),(11c p n p n n c n n n p y y y y x hf y y y x hf y y (10)
比较几种Euler 格式。
Euler 格式是显式计算,计算量小,结构简单,但精度低;梯形格式改善了精度,但它是隐式的,求解困难。
相比之下改进的Euler 格式无论是计算量还是精度都是可取的。