本文用 BDF2 方法(属于线性多步法)求解ODE,需要用到方程的牛顿迭代,然后用 MATLAB 编程,最后输出结果的误差阶为 2。
BDF 方法
考虑常微分方程初值问题
向后微分公式 (Backward differentiation formula, BDF) 是数值求解常微分方程的隐式线性多步方法. 由于该方法是 A 稳定的, 通常用来求刚性微分方程.
BDF1 方法就是隐式 Euler 方法 (或后退 Euler 方法):
BDF2 方法:
即
BDF3 方法:
下面使用 BDF2 方法求解常微分方程初值问题.
线性 ODE 例子
方程的真解:
BDF2 方法求解方程的步骤:
使用梯形公式计算
, 可知:
使用 BDF2 方法计算
, , 计算可得
计算数值解
1 | % BDF2.m |

计算误差阶
1 | % BDF2_error.m |
输出结果
1 | Error = |

非线性例子
方程的真解:
BDF2 方法求解方程的步骤:
使用梯形公式计算
, 这里需要用牛顿迭代求解一个非线性方程.
使用 BDF2 方法计算
, , 这里每一步都需要用牛顿迭代求解一个非线性方程.
1 | % BDF2Non.m |

计算误差阶
1 | % BDF2Non_error.m |
Error =
1.0e-04 *
0.8167 0.0334 0.0084 0.0003 0.0001
order =
1.9858 1.9958 1.9986 2.0000
```
