[常微分方程的数值解法系列一] 常微分方程
常微分方程
- 簡(jiǎn)介
- 解法介紹
- 截?cái)嗾`差
在慣性導(dǎo)航以及VIO等實(shí)際問(wèn)題中利用IMU求解位姿需要對(duì)IMU測(cè)量值進(jìn)行積分得到需要的位置和姿態(tài),其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是應(yīng)用于一些簡(jiǎn)單和特殊的微分方程求解中,對(duì)于一般形式的微分方程,一般很難用解析方法求出精確解,只能用數(shù)值方法求解。該系列主要介紹一些常用的常微分方程的數(shù)值解法,主要包括:
- [常微分方程的數(shù)值解法系列一] 常微分方程
- [常微分方程的數(shù)值解法系列二] 歐拉法
- [常微分方程的數(shù)值解法系列三] 改進(jìn)歐拉法(預(yù)估校正法)
- [常微分方程的數(shù)值解法系列四] 中值法
- [常微分方程的數(shù)值解法系列五] 龍格-庫(kù)塔(RK4)法
這個(gè)系列后面文章會(huì)用到前面文章的理論和技術(shù),所以建議按照順序查看。
簡(jiǎn)介
而在具體求解微分方程中,一般來(lái)說(shuō)給定的條件是
{x′(t)=f(t,x(t)),a≤t≤bx(t0)=x0\begin{cases} \mathbf{x}^{\prime}(t)=f(t, \mathbf{x}(t)), \quad a \leq t \leq b \\ \mathbf{x}({t_0}) = x_0 \end{cases} {x′(t)=f(t,x(t)),a≤t≤bx(t0?)=x0??
即給定微分方程以及原方程在初始點(diǎn)的值,求原方程在某個(gè)ttt下的x(t)x(t)x(t)原方程的值,這類問(wèn)題就是(一階)常微分方程初值求解問(wèn)題。
(這里不對(duì)常微分方程或者偏微分方程等概念,以及求解微分方程的其他條件如邊界條件情況做詳細(xì)介紹,需要了解的話可以自己google,不影響本系列介紹。)
解法介紹
一般來(lái)說(shuō),(一階)常微分方程數(shù)值解法基本思想是:
在區(qū)間[a,b][a, b][a,b]中插入一系列間隔相同為Δt\Delta tΔt的離散點(diǎn)
a≤t0<t1<?<ti<?<tn?1<tn≤ba \leq t_0 < t_1< \cdots < t_i < \cdots < t_{n-1} < t_n \leq b a≤t0?<t1?<?<ti?<?<tn?1?<tn?≤b
常微分方程的數(shù)值解法的目的就是在給定合適初始值前提下,建立求解x(t)x(t)x(t)的近似值xtx_txt?的遞推方式,這樣求得x(t)x(t)x(t)在各個(gè)離散點(diǎn)的近似值。
給定一個(gè)具體的時(shí)間間隔Δt\Delta_tΔt?,可以把該方程轉(zhuǎn)換成差分方程
x(t+Δt)=x(t)+∫τ∈[t,t+Δt]f(τ,x(τ))dτ,a≤t≤b,(1)\mathbf{x}(t+\Delta t)=\mathbf{x}(t)+\int_{\tau \in [t, t+\Delta t]} f(\tau, \mathbf{x}(\tau)) d \tau, \quad a \leq t \leq b, \tag{1} x(t+Δt)=x(t)+∫τ∈[t,t+Δt]?f(τ,x(τ))dτ,a≤t≤b,(1)
這樣利用之前說(shuō)的離散點(diǎn)可以把ttt離散化,那么ti=a+iΔtt_{i}=a+i \Delta tti?=a+iΔt以及 xi≈x(ti)\mathbf{x}_{i} \approx \mathbf{x}(t_{i})xi?≈x(ti?),所以上面公式(2)(2)(2)也可以寫(xiě)成
x(ti+1)≈xi+1=xi+∫τ∈[a+iΔt,a+(i+1)Δt]f(τ,x(τ))dτ,(2)\mathbf{x}(t_{i+1}) \approx x_{i+1}=\mathbf{x}_{i}+\int_{\tau \in [a+i \Delta t, a+(i+1) \Delta t]} f(\tau, \mathbf{x}(\tau)) d \tau, \tag{2} x(ti+1?)≈xi+1?=xi?+∫τ∈[a+iΔt,a+(i+1)Δt]?f(τ,x(τ))dτ,(2)
截?cái)嗾`差
上節(jié)介紹常微分方程的數(shù)值解法就是利用初值和離散點(diǎn)獲得近似值xtx_txt?,但是和真實(shí)值x(t)x(t)x(t)之前還是存在誤差,即
ei=xi?x(ti),(3)\boldsymbol{e}_i = x_i - \mathbf{x}(t_i), \tag{3} ei?=xi??x(ti?),(3)
ei\boldsymbol{e}_iei?則表示該數(shù)值解法在離散點(diǎn)tit_iti?處的局部截?cái)嗾`差。局部截?cái)嗾`差在一定程度上反應(yīng)了該數(shù)值解法的精度。
一般來(lái)說(shuō)常用泰勒展開(kāi)式來(lái)計(jì)算討論局部截?cái)嗾`差,后面具體方法會(huì)給出具體的對(duì)應(yīng)的截?cái)嗾`差的討論。這里簡(jiǎn)單給出定義:
如果數(shù)值解法的局部截?cái)嗾`差為ei=O(ΔtP+1)\boldsymbol{e}_i = \boldsymbol{O}(\Delta t^{P+1})ei?=O(ΔtP+1),則稱該解法具有P階精度或P階解法。
這里O(ΔtP+1)\boldsymbol{O}(\Delta t^{P+1})O(ΔtP+1)為泰勒展開(kāi)式的余項(xiàng)
總結(jié)
以上是生活随笔為你收集整理的[常微分方程的数值解法系列一] 常微分方程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工作145:vue里面取消console
- 下一篇: PLC编程的要求有哪些?