假設你得到了一個
,其中
,因變數,是自變數
的函式,並且給定了
。這是一個常微分方程的初值問題,因為它指定了初始條件和給出
的微分方程。問題是計算
在
點的值。求解這類問題存在各種各樣的數值方法。它們產生一個數值解,它只是一個值序列
,對應於點
。
數值解是一個近似解。用
表示的真實解可能是
無論如何,數值解給了我們一個基於已知資訊計算
的演算法。因此,人們可以編寫一個計算機程式來計算它。這就是模擬的基礎。
尤拉方法是最簡單的,它有點類似於數值地計算積分。在圖形上很容易看到發生了什麼。在每個點 x_n,你只是觀察導數告訴你的前進方向,然後朝那個方向邁出一小步。
- 設
,其中h 是某個小的步長值。
- 設
。
- 設
,其中h 是某個小的步長值。
- 設
。
- 令
.
現在我們將介紹一些使用該演算法的示例。
假設我們也知道我們要使用 n=4 次迭代計算 f(1)。因此 h=1/4=.25。
- x_0=0, y_0=5
- x_1=.25, y_1=5+.25*f'(0,5)=5+.25*0=5
- x_2=.5, y_2=5+.25*f'(.25,5)=5+.25*.25=5+.0625=5.0625
- x_3=.75, y_3=5.0625+.25*f'(.5,5.0625)=5.0625+.25*.5=5.0625+.125=5.1875
- x_4=1, y_4=5.1875+.25*f'(.75,5.1875)=5.1875+.25*.75=5.1875+.1875=5.375
所以我們完成了,我們知道 f(1)~=5.375。
我們透過積分知道精確解,y'=x,所以 y=x^2/2+c。在我們的例子中,為了計算 c,我們將 0 替換為 x,將 5 替換為 y,以看到 c=5。所以 f(1)=1^2/2+5 = 5.5。
誤差只取決於函式的凹凸性(二階導數)。因此我們可以估計誤差為 O(x^2)。我們可以透過採用更小的步長來減少誤差。
龍格-庫塔方法是一系列演算法,特別適合於數值求解聯立微分方程組。
假設我們有一對聯立方程,形式為
,以及
,
我們希望對它們進行數值積分,相對於 t,步長為
。然後我們計算以下數量
和
然後分別增加
和
,然後為下一步重新計算所有上述數量。
顯然,此方法可以擴充套件到三個或更多個聯立方程,誤差為
階。這種方法的高精度和易於實現使其成為一種流行的計算工具。
同樣有用的是,
可以在演算法的任何步驟之後更改,這允許處理變數的快速變化。