/* Numerical Methods for Ordinary Differential Equations */ 第六章 常微分方程数值解 /* Numerical Methods for Ordinary Differential Equations */ 考虑一阶常微分方程的初值问题 /* Initial-Value Problem */: 只要 f (x, y) 在[a, b] R1 上连续,且关于 y 满足 Lipschitz 条件,即存在与 x, y 无关的常数 L 使 对任意定义在 [a, b] 上的 y1(x) 和 y2(x) 都成立,则上述IVP存在唯一解。 要计算出解函数 y(x) 在一系列节点 a = x0< x1<…< xn= b 处的近似值 节点间距 为步长,通常采用等距节点,即取 hi = h (常数)。
/* Euler’s polygonal arc method*/ §1 欧拉方法 /* Euler’s Method */ x0 x1 亦称为欧拉折线法 /* Euler’s polygonal arc method*/ 欧拉公式: 向前差商近似导数 记为 定义 在假设 yi = y(xi),即第 i 步计算是精确的前提下,考虑的截断误差 Ri = y(xi+1) yi+1 称为局部截断误差 /* local truncation error */。 定义 若某算法的局部截断误差为O(hp+1),则称该算法有p 阶精度。 Ri 的主项 /* leading term */ 欧拉法的局部截断误差: 欧拉法具有 1 阶精度。
隐式欧拉法 /* implicit Euler method */ x0 x1 欧拉公式的改进: 隐式欧拉法 /* implicit Euler method */ 向后差商近似导数 )) ( , ) 1 x y f h + ) 1 , ... ( - = + n i y x f h Hey! Isn’t the leading term of the local truncation error of Euler’s method ? Seems that we can make a good use of it … 由于未知数 yi+1 同时出现在等式的两边,不能直接得到,故称为隐式 /* implicit */ 欧拉公式,而前者称为显式 /* explicit */ 欧拉公式。 一般先用显式计算一个初值,再迭代求解。 隐式欧拉法的局部截断误差: 即隐式欧拉公式具有 1 阶精度。
梯形公式 /* trapezoid formula */ — 显、隐式两种算法的平均 注:的确有局部截断误差 , 即梯形公式具有2 阶精度,比欧拉方法有了进步。但注意到该公式是隐式公式,计算时不得不用到迭代法,其迭代收敛性与欧拉公式相似。 需要2个初值 y0和 y1来启动递推 过程,这样的算法称为双步法 /* double-step method */,而前面的三种算法都是单步法 /* single-step method */。 中点欧拉公式 /* midpoint formula */ x0 x2 x1 中心差商近似导数 假设 ,则可以导出 即中点公式具有 2 阶精度。
方 法 显式欧拉 隐式欧拉 梯形公式 中点公式 简单 精度低 稳定性最好 精度低, 计算量大 精度提高 计算量大 精度提高, 显式 方 法 显式欧拉 隐式欧拉 梯形公式 中点公式 简单 精度低 稳定性最好 精度低, 计算量大 精度提高 计算量大 精度提高, 显式 多一个初值, 可能影响精度 Can’t you give me a formula with all the advantages yet without any of the disadvantages? Do you think it possible? Well, call me greedy… OK, let’s make it possible.
改进欧拉法 /* modified Euler’s method */ Step 1: 先用显式欧拉公式作预测,算出 ) , ( 1 i y x f h + = Step 2: 再将 代入隐式梯形公式的右边作校正,得到 1 + i y )] , ( ) [ 2 = x f h 注:此法亦称为预测-校正法 /* predictor-corrector method */。可以证明该算法具有 2 阶精度,同时可以看到它是个单步递推格式,比隐式公式的迭代求解过程简单。后面将看到,它的稳定性高于显式欧拉法。
§2 龙格 - 库塔法 /* Runge-Kutta Method */ 建立高精度的单步递推格式。 单步递推法的基本思想是从 ( xi , yi ) 点出发,以某一斜率沿直线达到 ( xi+1 , yi+1 ) 点。欧拉法及其各种变形所能达到的最高精度为2阶。 考察改进的欧拉法,可以将其改写为: 斜率 一定取K1 K2 的平均值吗? 步长一定是一个h 吗?
首先希望能确定系数 1、2、p,使得到的算法格式有2阶精度,即在 的前提假设下,使得 将改进欧拉法推广为: ) , ( ] [ 1 2 phK y ph x f K h i + = l 首先希望能确定系数 1、2、p,使得到的算法格式有2阶精度,即在 的前提假设下,使得 Step 1: 将 K2 在 ( xi , yi ) 点作 Taylor 展开 Step 2: 将 K2 代入第1式,得到
存在无穷多个解。所有满足上式的格式统称为2阶龙格 - 库塔格式。 Step 3: 将 yi+1 与 y( xi+1 ) 在 xi 点的泰勒展开作比较 要求 ,则必须有: 这里有 个未知数, 个方程。 3 2 存在无穷多个解。所有满足上式的格式统称为2阶龙格 - 库塔格式。 注意到, 就是改进的欧拉法。 Q: 为获得更高的精度,应该如何进一步推广?
最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta Method */ : ) ... , ( ] [ 1 2 32 31 3 21 - + = m m m i hK y h x f K b a l 其中i ( i = 1, …, m ),i ( i = 2, …, m ) 和 ij ( i = 2, …, m; j = 1, …, i1 ) 均为待定系数,确定这些系数的步骤与前面相似。 最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta Method */ :
龙格-库塔法的主要运算在于计算 Ki 的值,即计算 f 的值。Butcher 于1965年给出了计算量与可达到的最高精度阶数的关系: 注: 龙格-库塔法的主要运算在于计算 Ki 的值,即计算 f 的值。Butcher 于1965年给出了计算量与可达到的最高精度阶数的关系: 7 5 3 可达到的最高精度 6 4 2 每步须算Ki 的个数 由于龙格-库塔法的导出基于泰勒展开,故精度主要受解函数的光滑性影响。对于光滑性不太好的解,最好采用低阶算法而将步长h 取小。
§3 收敛性与稳定性 /* Convergency and Stability */ 定义 若某算法对于任意固定的 x = xi = x0 + i h,当 h0 ( 同时 i ) 时有 yi y( xi ),则称该算法是收敛的。 例:就初值问题 考察欧拉显式格式的收敛性。 解:该问题的精确解为 欧拉公式为 对任意固定的 x = xi = i h ,有
What is wrong ??! 稳定性 /* Stability */ 例:考察初值问题 在区间[0, 0.5]上的解。 例:考察初值问题 在区间[0, 0.5]上的解。 分别用欧拉显、隐式格式和改进的欧拉格式计算数值解。 An Engineer complains: "Math theorems are so unstable that a small perturbation on the conditions will cause a crash on the conclusions!" 0.0 0.1 0.2 0.3 0.4 0.5 精确解 改进欧拉法 欧拉隐式 欧拉显式 节点 xi 1.0000 2.0000 4.0000 8.0000 1.6000101 3.2000101 1.0000 2.5000101 6.2500102 1.5625102 3.9063103 9.7656104 1.0000 2.5000 6.2500 1.5626101 3.9063101 9.7656101 1.0000 4.9787102 2.4788103 1.2341104 6.1442106 3.0590107 What is wrong ??!
定义 若某算法在计算过程中任一步产生的误差在以后的计算中都逐步衰减,则称该算法是绝对稳定的 /*absolutely stable */。 常数,可以是复数 一般分析时为简单起见,只考虑试验方程 /* test equation */ 当步长取为 h 时,将某算法应用于上式,并假设只在初值产生误差 ,则若此误差以后逐步衰减,就称该算法相对于 绝对稳定, 的全体构成绝对稳定区域。我们称算法A 比算法B 稳定,就是指 A 的绝对稳定区域比 B 的大。 h l h =
由此可见,要保证初始误差0 以后逐步衰减, 必须满足: 例:考察显式欧拉法 - 1 2 Re Img 由此可见,要保证初始误差0 以后逐步衰减, 必须满足: 例:考察隐式欧拉法 2 1 Re Img 可见绝对稳定区域为: 注:一般来说,隐式欧拉法的绝对稳定性比同阶的显式法的好。
例:隐式龙格-库塔法 其中2阶方法 的绝对稳定区域为 而显式 1~ 4 阶方法的绝对稳定区域为 无条件稳定 Img Re Img Re - 其中2阶方法 的绝对稳定区域为 Re Img 而显式 1~ 4 阶方法的绝对稳定区域为 k = 1 2 3 4 - Re Img 无条件稳定
期末考试: 1. 第二章 解线性方程组的直接法:掌握Gauss消元法进行到底 的条件,矩阵三角分解定理的条件和结论,向量和 矩阵的范数,方程组的条件数与病态方程组的求解 解线性方程组的迭代法:雅可比迭代法,高斯-赛德尔 迭代法;要求:求解公式,收敛条件。 2. 第三章 非线性方程求根 :二分法、迭代法、牛顿法和弦截法 要求:根的存在,公式,收敛性条件的判别
4. 函数插值:拉格朗日插值,牛顿插值,埃米尔特插值 要求:插值公式,余项公式 5. 数值积分:插值型求积公式(矩形、梯形、辛普生、 龙贝格)。公式和误差,代数精确度的概念。 6. 常微分方程数值解:单步法(欧拉、改进欧拉,龙格-库塔) 差分法。要求:求解公式和误差阶。