中值法
简介
具体步骤
截断误差
例子
在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,对于一般形式的微分方程,一般很难用解析方法求出精确解,只能用数值方法求解。该系列主要介绍一些常用的常微分方程的数值解法,主要包括:
[常微分方程的数值解法系列一] 常微分方程
[常微分方程的数值解法系列二] 欧拉法
[常微分方程的数值解法系列三] 改进欧拉法(预估校正法)
[常微分方程的数值解法系列四] 中值法
[常微分方程的数值解法系列五] 龙格-库塔(RK4)法
这个系列后面文章会用到前面文章的理论和技术,所以建议按照顺序查看。
简介
[常微分方程的数值解法系列二] 欧拉法和[常微分方程的数值解法系列三] 改进欧拉法(预估校正法)介绍了欧拉法以及改进版欧拉法。中值法思路和改进版欧拉法思路很类似。 向前(显式)欧拉公式 x i + 1 = x i + Δ t ⋅ f ( t i , x i ) x_{i+1}=x_{i} + \Delta t \cdot f(t_{i}, x_{i}) xi+1=xi+Δt⋅f(ti,xi) 中点公式 x i + 1 = x i + Δ t ⋅ f ( t i + 1 2 , x i + 1 2 ) x_{i+1}=x_{i} + \Delta t \cdot f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}) xi+1=xi+Δt⋅f(ti+21,xi+21)
具体步骤
利用向前(显式)欧拉公式预估一个 x ( t i + 1 2 ) \mathbf{x}(t_{i+\frac{1}{2}}) x(ti+21)的近似值 x i + 1 2 = x i + 1 2 Δ t ⋅ f ( t i , x i ) , (1) x_{i+\frac{1}{2}} = x_{i} + \frac{1}{2} \Delta t \cdot f(t_{i}, x_{i}), \tag{1} xi+21=xi+21Δt⋅f(ti,xi),(1) 利用中点公式求得最终的估计值 x i + 1 = x i + Δ t ⋅ f ( t i + 1 2 , x i + 1 2 ) , (2) x_{i+1}=x_{i} + \Delta t \cdot f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}), \tag{2} xi+1=xi+Δt⋅f(ti+21,xi+21),(2) 公式 ( 1 ) (1) (1)和公式 ( 2 ) (2) (2)就叫做中值法,也会叫做变形欧拉公式。
截断误差
在[常微分方程的数值解法系列一] 常微分方程文中公式 ( 3 ) (3) (3)可知常微分方程的数值解法的局部截断误差为 e i = x i − x ( t i ) \boldsymbol{e}_i = x_i - \mathbf{x}(t_i) ei=xi−x(ti) 所以对于改进欧拉法来说局部截断误差为: e i + 1 = x i + Δ t ⋅ f ( t i + 1 2 , x i + 1 2 ) − x ( t i + 1 ) , (5) \boldsymbol{e}_{i+1} = x_{i} + \Delta t \cdot f(t_{i+\frac{1}{2}}, x_{i+\frac{1}{2}}) - \mathbf{x}(t_{i+1}), \tag{5}