Sitemap

研究雜記01. Numerical Methods

--

此篇教學將快速代入數值方法之概念並著重在實作方法,可能沒有嚴謹之內容證明與描述。

Buck converter numerical methods examples (with Python)
https://colab.research.google.com/drive/1D6QX3_nmWHTLyygglZMVZ3SbrC1nC4Cb?usp=sharing

前言

在工程上需要數值方法(Numerical Methods)之原因在於,我們通常能夠使用微分方程式來對系統建模,需要知道系統動態響應時,就必須求解微分方程,但一般可能很難甚至無法求解出微分方程式之解析解(顯解或隱式解)。或者在特殊情況下,我們只需要數值結果,並不需要解析解的形式。另一是得力於近年電腦計算機功能強大,可以快速做數值運算,相較於人力解出解析解,利用電腦求得數值解之速度可能快上很多。綜上,我們就會使用數值方法來幫助我們進行求解。

常見的數值方法有尤拉法(Euler’s Method)、改進尤拉法(Improved Euler’s Method)、龍格-庫塔法 (Runge–Kutta Method),這三種屬於一階方法,即只需要建立一次導數就可以進行運算。本文也將針對三種方法進行介紹。

Euler’s Method

首先,方法本身都是離散近似的概念,所以結果必定有誤差。離散時間間隔,或者說取樣週期(sampling period)越短,則結果越接近真實解。但相對來說,同一時間窗框下運算量越大。是必要在求解精度以及運算時間兩者間進行trade-off。

聽到Euler應該就知道這個方法不一般,肯定很巧妙。它本質上是利用了泰勒展開式的概念去對一函數做一階近似(即利用二維空間斜率之概念)。而微分方程的意義本身就是變化量,所以我們知道了微分方程,基本上就掌握了未來的資訊量,可以在給定的條件下(初值,Initial condition以及邊界,Boundary condition)預測出函數未來的長相,這也是為甚麼可以不需要知道解析解,即可找出系統動態的原因。

Press enter or click to view image in full size
Press enter or click to view image in full size

以下這條就是Euler’s method的關鍵公式:

Press enter or click to view image in full size

再來只要設定好取樣週期(sampling period, td)與初值(initial condition)
透過演算法疊代,即可得到n個時間間隔後的數值。

Press enter or click to view image in full size
Press enter or click to view image in full size

若使用圖解可以很明確的知道每次疊代之間的關係,也可以了解到error是如何產生的,因為error將影響到下次疊代之起始點,所以error會累積,若誤差過大有可能導致系統發散。

Get Hsueh-Ju Wu 吳學儒’s stories in your inbox

Join Medium for free to get updates from this writer.

若想提高精度,最簡單的方式是減小取樣間隔td,但此法會導致運算量上升,有沒有不減小td但仍能提升精度的方法呢 ?

答案是有的,從圖解中可看出誤差發生的原因為用此時刻的斜率估算下一組點,但由於系統不是線性的,所以斜率估算不準確,若仍夠修正斜率,或者找到一個能夠代表"真實兩點"之間斜率情況的數學運算,我們便可以降低誤差,達到更準確的數值解,故此衍生出Improved Euler’s Method。

Improved Euler’s Method

剛剛有提到的關鍵在於修正斜率,Improved Euler’s Method便是使用滾動式修正,利用新預測出來的點,得到一組新的斜率,再與起始點的斜率平均,獲得一組可以代表兩點間斜率的一種方法(先預測斜率的概念),最後以此修正過的斜率預測出新的點。等於重複做兩次Euler’s Method。

Press enter or click to view image in full size
Press enter or click to view image in full size
Press enter or click to view image in full size

Runge–Kutta Method

簡稱RK Method,也是一樣利用修正斜率的概念達到更準的數值解。開始引入統計的感覺,利用加權平均觀念得到修正後斜率,來預測新的點。

一般式如下:

Press enter or click to view image in full size

Euler’s Method 稱為 First-order Runge-Kutta method (RK1)

Improved Euler’s Method 稱為 Second-order Runge-Kutta method(RK2)

常用之RK4方法:

Press enter or click to view image in full size

通常使用到RK4就很準了

--

--