概要
- 微分方程:含参数、未知函数、未知函数的导数(或者微分)的方程
- 数值求解:用若干离散点计算 近似值 来代替准确值
分类:单步法、多步法;隐式法、显示法 - 欧拉法 (欧拉折线法),也是一阶龙格-库塔法:以矩阵面积代替曲面梯形面积
- 改进欧拉法 (预估——校正法),也是二阶龙格-库塔法:以梯形面积代替曲面梯形面积
- 龙格-库塔法(重点):yn+1 的值用 f(x,y) 在某些点上函数值的线性组合成来计算,计算 f(x,y) 的次数是龙格库塔的阶。从几何意义看:用多个斜率加平均计算叠加,从而逼近准确值
一般常用 四阶龙格-库塔法。
阶数越高、步长越小,则计算精度越高,但是计算量越大 - 补充:对于2阶微分方程,则需要拆分成2个一阶微分方程,此时的 f(x,y) 变成了 f(x,y,y') 需要分别用R-K法计算 y 和 y'
- 局部截断误差:准确值-近似值
- 局部误差的阶(也是龙格-库塔法的阶)
- 亚当姆斯法(重点):是线性多步法,利用已求出的多个值进行计算
- 拉格朗日插值:构造函数多项式 Ln(x) 来近似代替 y=f(x)
- 亚当姆斯法用拉格朗日插值的函数多项式 Ln(x) 近似替代 y′(x)
- 亚当姆斯公式有:显式公式、隐式公式
- 用高阶的亚当姆斯法(一般四阶)计算,得到的计算结果一般更精确,且计算量比龙格-库塔法少,唯一缺点是最前面几个值需要用其他方法求出
一、微分方程
微分方程的 定义:凡是含有 参数、未知函数、未知函数的导数(或者微分)的方程。
定义式: F(x,y,y′,y″,...,y(n))
- 常微分方程:未知函数是一元函数
- 偏微分方程:未知函数是多元函数
微分方程的 阶:未知函数最高阶导数的阶数(注意和后面龙格-库塔法的阶做区分)。
例01:
就是一个一阶微分方程。
例02:
就是一个二阶微分方程。
二、常微分方程的数值求解
求解微分方程的困难:
- 求解微分方程往往计算量很大,甚至无法求解
- 在实际应用中,可以解出 近似值 即可——数值求解
2.1 数值求解
概念:利用给定常微分方程及边界条件,求解函数 y(x) 在若干 离散点 的 近似值(再拟合成折现或曲线)的方法
即:在区间 [a,b] 上有若干离散点: a=<<...<=b ,求出函数 y(x) 在离散点 处的近似值 ,作为精确值 y() 的近似。
(这里强调一下: 是第k个离散点; 是近似值; y() 是精确值。)
2.2 数值求解法分类
1、分类方式一
- 单步法:计算 时,只用到了前面的一个近似值。
- 多步法:计算 时,用到了前面的多个近似值 、、...。
一般单步法的运算量少,但是精度不高。
2、分类方式二
- 隐式法:方程两端均含有 ,(很难将其合并入公式的一端),即需要求解 隐函数方程 才能计算出 。
- 显示法:方程可以直接计算出 。
三、常用数值求解的具体方法
3.1 欧拉法(欧拉折线法)
令常微分方程:
起始点 已知 , h 等距步长 = − ,步长取的越小,运算精度越高,但运算量增大。
欧拉公式:
1、几何意义一:折线
用 步长 和 前面一个点的斜率 计算后面一个点。
(注意下图的纵坐标是 y )
2、几何意义二:用 矩形面积 代替 曲边梯形 面积
注意:图中的纵坐标是 f(x,y) 即上一张图的斜率, y 是面积。
例03(欧拉法 数值求解微分方程)
3.2 改进欧拉法(预估——校正法)
改进欧拉公式:
- 先用 欧拉公式 计算出 ——预估
- 再用 求出真正的近似值 ——校正
为什么需要多加一步校验:因为改进欧拉法需要用到 ,是隐式法,需要解隐函数,计算量大。
几何意义:用 梯形面积 代替 曲 边梯形 面积
改进欧拉法 的运算精度一般比 欧拉法 高。
3.3 龙格——库塔法(Runger—Kutta法,简称R-K法)(重点)
将函数 y(x) 在 xn 处泰勒展开:
n阶龙格-库塔法:取泰勒展开的前n阶导数项
将 带入 计算出近似值 。
1、欧拉法 和 改进欧拉法 是 龙格-库塔法 的一种:
- 一阶龙格-库塔法:欧拉法
只取前2项,即线性部分 - 二阶龙格-库塔法:改进欧拉法
取前3项
具体证明过程如下:(数学不好的人可以忽略)------------------------------------------------
--------------------------------------------------------------------------------------------
2、 用龙格-库塔法的一般形式 表示欧拉法、改进欧拉法
(1)改写欧拉法:
改写成
(2)改写改进欧拉法:
改写成
龙格-库塔法计算顺序: 最后计算 。
3、 误差分析——局部截断误差 和 阶
假设第n步的计算是准确的,即 。
局部截断误差: ,即:精确值-近似值 。
阶:上边公式中的 。
阶越大,局部误差就越小,近似值就越接近精确值,但同时运算量更大。
欧拉法和改进欧拉法的 局部截断误差 和 阶
(1)欧拉法:没有泰勒展开到二阶导数的,所以精确值-近似值就会出现二阶导数的部分,二阶导数的部分为 ,有 ,即 。
- 局部截断误差:
- 阶:1阶
(2)改进欧拉法:
- 局部截断误差:
- 阶:2阶
3.3.4 龙格-库塔法的一般形式
p阶龙格-库塔法: 的值用 在某些点上函数值的线性组合成来计算,计算的次数是龙格-库塔法的阶,也是局部截断误差的阶。
从几何意义上看:龙格-库塔法可以看成用 个斜率 的一种 加权平均逼近 。如:欧拉法只用了一个斜率 ,即 ;而改进欧拉法是 ,即 。
四阶龙格-库塔法(常用):
(再次强掉: 前面的系数是 加权平均 得到,计算顺序是从 到 ,根据这个规律特征,可以推出后续更高阶的龙格-库塔法)。
问:为什么需要推出,不能直接写出其 阶的一般表达式吗?
回答:和”斐波那契数列“是一个道理,因为一般表达式很复杂,还不如推的简单。其一般形式如下:
例04(4阶龙格-库塔法 数值求解微分方程)
在用4阶龙格-库塔法时,可以适当增大步长h,减少计算容量,一般精度也不会损失很少。
实际选择方法时,可以根据具体情况选择适当的 阶数 和 步长h。
--------------------------------------------------------------------------------------------
补充:二阶微分方程的 4阶R-K法
对于2阶微分方程,则需要拆分成2个一阶微分方程,此时的 变成了 需要分别用R-K法计算 和 。
已知初值 和 ,以及 关于 的函数,即 。
例题:用4阶R-K法求下面的二阶微分方程的数值解,步长 h 取0.1。
即
解:将二阶微分方程拆成2个一阶微分方程,R-K法计算 和 。
其中: 表示第 次迭代, 次导数作为 ;
其中:
然后根据上边的步骤,一步步计算出 和 。
——————————————————————————
龙格-库塔法的缺点:其是单步法,计算 时只用到了 ,因此需要迭代多次才能得到较精确的结果。
四、亚当姆斯法(Adams法)
4.1 线性多步法
利用已求出的 、、、(通过单步法,如:龙格-库塔法)共 个点处的函数值构造 的线性计算式。
4.2 拉格朗日插值
在实际项目中,函数 可能比较复杂,因此用一个简单的函数近似代替。
我们知道任何一个解析函数(即函数在给定复平面内处处可微)都可以用一个唯一的多项式表示:
我们就是用这个函数多项式 近似替代 ,即对于每一个 ,有
可以发现, 越大,则 的表达式越复杂,但是更能逼近原函数。
怎么求 ?
的具体表达式是通过已知点(前面求过的点)的坐标表示的。
如:一次插值( n=1 ),已知、
则 是一条直线。
二次插值( n=2 ),已知 、、
是一条抛物线。
拉格朗日插值多项式一般形式:
4.3 亚当姆斯法:线性多步法之一(插值方法)
还是认为
我们用拉格朗日插值多项式 表示。
注意:这里的 是原函数的导数。
则:根据面积
用替代上边公式的 。
4.4 亚当姆斯法有2种公式:显式Adams公式、隐式Adams公式
如:要求
- 显式公式:拉格朗日多项式不使用,根据 、、 求。一般用于求未求过的
- 隐式公式:拉格朗日多项式使用 ,根据 、、求。一般用于预测-校验之前已经求过的
例:多项式 都取一阶插值,即公式是二阶的
1.二阶隐式Adams公式——梯形公式
- 取一次插值
(还是提醒一下:) - 则:
- 可以发现,二阶隐式Adams公式,也是梯形公式
图形解释:用梯形面积 (阴影) 近似替代梯形曲面
注意下图的纵坐标是原函数的斜率 ,即图中的面积才是 。
用阴影面积近似替代梯形曲面
2.二阶显式Adams公式
- 取一次插值
- 则:
图形解释:多项式连接到了后面的点,用图中 阴影面积 近似替代 梯形曲面
注意下图的纵坐标是原函数的斜率 ,即图中的面积才是。
用阴影面积近似替代梯形曲面
4.5 更高阶的亚当姆斯法
因为高阶的多项式 算起来很繁琐,就算算出来了还需要代入积分计算。因此下面直接给出其对应阶数的最终表达式
(再次提醒: )
三阶显式Adams公式:
三阶隐式Adams公式:
四阶显式Adams公式:
四阶隐式Adams公式:
图形解释:以三阶显示Adams公式为例:
下图为三阶显示Adams公式,其用抛物线近似表示f(x,y)曲线,用图中 阴影面积 近似替代 梯形曲面
注意下图的纵坐标是原函数的斜率,即图中的面积才是。
用阴影面积近似替代梯形曲面
4.6 用亚当姆斯法求解
一般先用单步法(如:龙格-库塔法)求出前面几项 的近似值,再用计算出用到的导数值 ,代入Adams公式,(用或者不用预测-校正),即可求出近似值 。
预测-校正Adams公式——显式和隐式公式配合
先用显式公式求出 ,然后用隐式公式再求一次
以4阶Adams公式为例:
Adams法数值求解微分方程例题:
可以发现:在计算量想当时,亚当姆斯法 的计算结果更加接近 准确值(解析解),而且其计算量也比龙格-库塔法少。
唯一缺点就是最前面几个值需要用其他方法求出。