2、1)yi+1称为局部截断误差定义若某算法的局部截断误差为O(hp+1),则称该算法有p阶精度。可见:(1)每一步都会产生误差.(2)与前面每一步计算产生的误差都有关,具有整体性,所以分析和确定它是很复杂的。欧拉公式求解基本思路:例:用欧拉法解初值问题取步长h=0.2.计算过程保留4位小数.解:f(x,y)=-y-xy2,h=0.2,由欧拉公式得故y(0.2)y1=0.2×1(4-0×1)=0.8000y(0.4)y2=0.2×0.8×(4-0.2×0.8)=0.6144y(0.6)y3=0.2×0.6144×(4-0.4×0.4613)=
3、0.8000欧拉公式的改进:隐式欧拉法/*implicitEulermethod*/向后差商近似导数x0x1))(,()(1101xyxfhyxy+)1,...,0(),(111-=+=+++niyxfhyyiiii由于未知数yi+1同时出现在等式的两边,不能直接得到,故称为隐式/*implicit*/欧拉公式,而前者称为显式/*explicit*/欧拉公式。一般先用显式计算一个初值,再迭代求解。隐式欧拉法的局部截断误差:即隐式欧拉公式具有1阶精度。梯形公式/*trapezoidformula*/—显、隐式两种算法的平均注:的确有局部截断
4、误差,即梯形公式具有2阶精度,比欧拉方法有了进步。但注意到该公式是隐式公式,计算时不得不用到迭代法,其迭代收敛性与欧拉公式相似。中点欧拉公式/*midpointformula*/中心差商近似导数x0x2x1假设,则可以导出即中点公式具有2阶精度。需要2个初值y0和y1来启动递推过程,这样的算法称为双步法/*double-stepmethod*/,而前面的三种算法都是单步法/*single-stepmethod*/。方法显式欧拉隐式欧拉梯形公式中点公式简单精度低稳定性最好精度低,计算量大精度提高计算量大精度提高,显式多一个初值,可能影响精度改
5、进欧拉法/*modifiedEuler’smethod*/Step1:先用显式欧拉公式作预测,算出),(1iiiiyxfhyy+=+Step2:再将代入隐式梯形公式的右边作校正,得到1+iy)],(),([2111+++++=iiiiiiyxfyxfhyy注:此法亦称为预测-校正法/*predictor-correctormethod*/。可以证明该算法具有2阶精度,同时可以看到它是个单步递推格式,比隐式公式的迭代求解过程简单。后面将看到,它的稳定性高于显式欧拉法。例1:用预报-校正公式求解初值问题取步长h=0.2,计算y(1.2),y(1.4)的
6、近似值,计算过程保留5位小数.解:§2龙格-库塔法/*Runge-KuttaMethod*/建立高精度的单步递推格式。单步递推法的基本思想是从(xi,yi)点出发,以某一斜率沿直线达到(xi+1,yi+1)点。欧拉法及其各种变形所能达到的最高精度为2阶。考察改进的欧拉法,可以将其改写为:斜率一定取K1K2的平均值吗?步长一定是一个h吗?首先希望能确定系数1、2、p,使得到的算法格式有2阶精度,即在的前提假设下,使得Step1:将K2在(xi,yi)点作Taylor展开将改进欧拉法推广为:),(),(][12122111phKyphxfKyxf
7、KKKhyyiiiiii++==++=+llStep2:将K2代入第1式,得到Step3:将yi+1与y(xi+1)在xi点的泰勒展开作比较要求,则必须有:这里有个未知数,个方程。32存在无穷多个解。所有满足上式的格式统称为2阶龙格-库塔格式。注意到,就是改进的欧拉法。Q:为获得更高的精度,应该如何进一步推广?其中i(i=1,…,m),i(i=2,…,m)和ij(i=2,…,m;j=1,…,i1)均为待定系数,确定这些系数的步骤与前面相似。)...,(......),(),(),(]...[1122112321313312122122111
8、--++++++=+++=++==++++=mmmmmmimiiiiiimmiihKhKhKyhxfKhKhKyhxfKh