版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
9常微分方程數(shù)值解法2021/7/171§9.0引言§9.1
歐拉(Euler)方法§9.2
改進(jìn)的歐拉(Euler)方法§9.3
龍格-庫塔(Runge-Kutta)法§9.4
線性多步法§9.5
相容性、收斂性與穩(wěn)定性9.0引言2021/7/1729.0.1基本概念9.0.2微分方程數(shù)值解法的一般過程9.0.3數(shù)值解法的三種類型9.0引言9.0.1基本概念常微分方程可分為初值問題和邊值問題。一階常微分方程初值問題的一般形式為dy
=
f
(x,
y)2021/7/173dx
y(x0
)
=
y0如果f(x,y)在[a,b]上連續(xù),且滿足Lipschitz條件:$L>0(常數(shù)),"y1,y2,使得|
f(x,y1)
-
f(x,y2)|≤L
|y1
-y2|則微分方程的解存在唯一。注意:這只是個充分條件9.0引言2021/7/1749.0.1基本概念對于常微分方程,兩點(diǎn)邊值問題是要尋找方程在區(qū)間[a,b]邊界上滿足已知條件的解。區(qū)間兩端給出不同的邊界條件構(gòu)成不同類型的邊值問題這里只討論初值問題。9.0引言2021/7/1759.0.2
微分方程數(shù)值解法的一般過程對一些典型的微分方程(可分離變量方程,一階線性方程等等),有可能找出它們的一般解表達(dá)式,然后用初始條件確定表達(dá)式中的任意常數(shù),這樣解即能確定。這種解常稱為常微分方程的一般解或解析解。9.0引言2021/7/1769.0.2
微分方程數(shù)值解法的一般過程微分方程的數(shù)值解法:不求y=y(x)的精確表達(dá)式,而求區(qū)間[a,b]中離散點(diǎn)x0,x1,…,xN處的函數(shù)值。取[a,b]內(nèi)的一系列節(jié)點(diǎn)x0,x1,…,xN,用數(shù)值方法求得y(x)在每個節(jié)點(diǎn)xn
的值y(xn)的近似值yn,即yn
?y(xn)。而y0,y1,…,yN稱為微分方程的數(shù)值解。9.0引言2021/7/177xx0
x1
x2
…
xn
…yy0
y1
y2
…
yn
…對于常微分初值問題一般解
y
=
y(x)數(shù)值解符號規(guī)定y(xn):一般解y=y(x)在x=xn處的精確值.yn:一般解y=y(x)在x=xn處的近似值.9.0引言2021/7/178求y(x)—>求y0,y1,…,yN方法:采用步進(jìn)式和遞推法將x離散化,x0<x1<…<xn
<xn+1…,一般采用等距步長xn=xn-1+
h,或
xn=x0+nh
n=1,2,…,Ny2fi
…fi
yn
fiyn-mfi
yn-m+1…fi
yn+1n-1n-m
y0
=
y(x0
)
y=
g(h,
xn
,
yn
,
y
n+1,,
y
)建立遞推公式通常利用Taylor公式或數(shù)值積分法。計(jì)算公式計(jì)算過程y0fi
y1fi9.0引言9.0.3微分方程數(shù)值解法的三種類型hhfi
0y
'(x)
=
lim
y(x
+
h)
-
y(x)hy
'(x)
?
y(x
+
h)
-
y(x)1.用差商代替導(dǎo)數(shù)由導(dǎo)數(shù)定義若h的值較小,則可用向前差商近似導(dǎo)數(shù)代入y’=
f
(x,y)可得h2021/7/179
y(x
+
h)
-
y(x)
?
f
(x,
y)即y(x+h)≈y(x)+hf(x,y)2021/7/17109.0引言0故原初值問題可離散化為
yn+1
=
yn
+
hf
(xn
,
yn
)
0
y
=
y(x
)
n
=
0,1,
2于是由初始值y(x0)=y0出發(fā),可依次地計(jì)算出y1=y0+hf(x0,y0)y2=y1+hf(x0+h,y1)……yn=yn-1+hf(x0+(n-1)h,yn-1)……9.0引言2.使用數(shù)值積分的方法對于微分方程y’=f(x,y)兩邊求x0到x的定積分x0
dx
x0
x
dy
dx
=
x
f
(
x,
y(
x))dx即x0y(
x)
-
y(
x0
)
=
x
f
(t
,
y(t
))dt或?qū)憺?2021/7/1711xy(x)
=
y0
+
x
f
(t,
y(t))dt這就是與初值問題0
0
y(
x
)
=
y
y'=
f
(
x,
y)等價的積分方程。只要用某種數(shù)值積分方法便可建立起近似公式。9.0引言例:對積分部分應(yīng)用左矩形公式,則有xn+1
f
(t,
y(t))dtny(xn+1
)
-
y(xn
)
=
x?
(xn+1
-
xn
)
f
(xn
,
y(xn
))02021/7/1712故其對應(yīng)的數(shù)值公式為
yn+1
=
yn
+
hf
(xn
,
yn
)
0
y
=
y(x
)
n
=
0,1,
2,單步法:計(jì)算yn+1只需要知道yn即上一步計(jì)算值.9.0引言例:對積分部分應(yīng)用梯形公式,則有故其數(shù)值公式為2,
y
)]n+1
nn
n
n+1
n+1y
=
y
+
h
[
f
(x
,
y
)
+
f
(x[2021/7/1713n
nf
(x
,
y(x
))n+1n+1xn+1
-
xn2?+
f
(x
,
y(x
))]nxn+1
f
(t,
y(t))dty(xn+1
)
-
y(xn
)
=
x9.0引言公式22021/7/1714n
nnn+1n+1
n+1y
=
y
+
h
[
f
(x
,
y
)
+
f
(x
,
y
)]特點(diǎn):①未知量yn+1不但出現(xiàn)在左端,而且出現(xiàn)在右端隱式公式:未知數(shù)yk+1同時出現(xiàn)在等式的兩邊。隱式公式一般需要通過迭代方法求解yk+1②計(jì)算yn+1需要知道yn,yn+1,即n步和n+1步的計(jì)算值.多步法:計(jì)算yn+1除需要知道yn外,還需要知道其他步的計(jì)算值.9.0引言3.使用泰勒公式在微分方程y′=f(x,y)中,y′是x及y(x)的函數(shù).由于精確值y(x+h)在h=0處的泰勒展式為(4)2021/7/171526
24h2
h3
h4y
"(x)
+
y
¢(x)
+
y(x)
+y(x
+
h)
=
y(x)
+
hy
'(x)
+取前兩項(xiàng),有y(x+h)?y(x)+hy’(x)0根據(jù)y
′=f(x,y),得公式
yn+1
=
yn
+
hf
(xn
,
yn
)
0
y
=
y(x
)
n
=
0,1,
2,9.1
Euler方法2021/7/17169.1.19.1.2Euler方法
Euler方法的誤差分析9.1
Euler方法dy
=
f
(x,
y)2021/7/1717dx
y(x0
)
=
y0求解一階微分方程初值問題9.1.1 Euler方法即用差分方程初值問題
yn+1
=
yn
+
hf
(xn
,
yn
)
0
0
y
=
y(x
)
n
=
0,1,
2,9.1
Euler方法9.1.1 Euler方法yn+1
=yn
+h
f
(xn,
yn)
(n=0,...,N-1)亦稱為歐拉折線法x0
x1其幾何解釋見右圖,即在區(qū)間[x0,x1]上取左端點(diǎn)的導(dǎo)數(shù)值計(jì)算右端點(diǎn)函數(shù)值。由于公式中采用向前差分近似導(dǎo)數(shù),上式稱為向前歐拉公式。由于公式右端變量均為已知,可直接求出yn+1,又稱為顯式歐拉公式。2021/7/17189.1
Euler方法9.1.1 Euler方法如果采用向后差商近似導(dǎo)數(shù)1hy(x1
)
-
y(x0
)y¢(x
)
?x0x1y(
x1
)
?
y
+
h f
(
x
,
y(
x
))0
1
1yn+1
=
yn
+
h
f
(xn+1,
yn+1
)
(n
=
0,
...
,
N
-1)這是一個隱式公式,稱為隱式歐拉公式,又稱為向后歐拉公式。2021/7/179.1
Euler方法9.1.1 Euler方法例1.
y(0)
=
1y
y¢=
y
-
2x
0
£
x
£
1解:)nnnn2xyyn+1
=
yn
+hf
(xn
,
yn
)
=
y
+
h(
y
-n
=
1,
2,,10h
=
0.1用Euler
方法求解初值問題:y2021/7/17f
(x,
y)
=
y
-
2xx0
=
0,
N
=10,
b
=1,
y0
=1顯然由Euler
公式,有9.1
Euler方法9.1.1 Euler方法得)00001y2
xy
=
y
+
h(
y
-1=
1
+
0.1(1
-
2
·
0
)
=
1.1)2021/7/17112y2
xy
=
y1
+
h(
y1
-1.1=1.1+
0.1(1.1-
2
·0.1)
=1.1918依此類推。9.1
Euler方法9.1.1 Euler方法nyn+1n+1n+1)
=
y
+
h(
y-
2xn+1
)n
=1,
2,,1012021/7/17n+1y
=(
y
+
y2
-8h(1-
h)x
)n
n
n+12(1-
h)由向后Euler
公式,有yn+1
=
yn
+
hf
(xn+1
,
y解得nxny(xn)ynqynh10.11.095445115010331.100000000000001.0907375368352120.21.183215956619921.191818181818181.1740757612934830.31.264911064067351.277437833714721.2512485067965140.41.341640786499871.358212599560291.3230934977520950.51.414213562373101.435132918657801.3901780746271960.61.483239697419131.508966253566331.4528699233246470.71.549193338482971.580338237655221.5113768371646580.81.612451549659711.649783431047711.5657672354519890.91.673320053068151.717779347860091.615977254482521011.732050807568881.784770832497981.661807042621092021/7/170.10.20.30.40.50.60.70.80.91101.11.21.31.41.51.61.71.8向向Euler法準(zhǔn)準(zhǔn)準(zhǔn)向向Euler法圖9.22021/7/179.1
Euler方法2021/7/179.1.1 Euler方法Euler方法的幾何意義是用一條自點(diǎn)(x0,y0)出發(fā)的折線去逼近積分曲線y=f(x)。因此,這種方法又稱為折線法。顯然,歐拉法簡單地取折線的端點(diǎn)作為數(shù)值解,精度不高。提高精度的一種方法是取較小的h,例1中若將h減少為原來的1/10后的計(jì)算結(jié)果見圖9.3。當(dāng)然,h減少必然導(dǎo)致計(jì)算量增加,需要在精度和計(jì)算量之間取得平衡。圖9.30.20.30.40.50.60.70.80.9110
0.12021/7/171.11.21.31.41.51.61.71.89.1
Euler方法2021/7/179.1.2 Euler方法的誤差分析單步法計(jì)算公式一般可寫成yn+1
=
yn
+
hj
(xn,yn,xn+1,
yn+1,h)如果j
中不含yn+1
,則方法為顯式的,否則為隱式的一步計(jì)算產(chǎn)生的誤差:設(shè)第n步得到是精確解y(xn),據(jù)此按單步公式計(jì)算第n+1步得到y(tǒng)n+1與精確解y(xn+1)之間的誤差。9.1
Euler方法2021/7/179.1.2 Euler方法的誤差分析定義9.1
設(shè)y(x)是方程9.1的精確解,則Rn+1=y(xn+1)-
y(xn)-
hj
(xn,
y(xn),xn+1,
yn+1,h)稱為單步法的局部截?cái)嗾`差,簡稱截?cái)嗾`差。可由Taylor展開得到截?cái)嗾`差。9.1
Euler方法29.1.2 Euler方法的誤差分析
Euler法的截?cái)嗾`差Rn+1
=
y(xn+1
)
-
y(xn
)
-
hf
(xn
,
y(xn
))=
y(xn
+
h)
-
y(xn
)
-
hy¢(xn
)=
1
h2
y
¢(x)也可表示為22021/7/1712nh
y
(x
)n+1¢R
=+
O(h3
)
=
O(h2
)該公式只考慮了誤差的一個來源。9.1
Euler方法2021/7/179.1.2 Euler方法的誤差分析如果某種數(shù)值方法的局部截?cái)嗾`差為O(hP+1),稱該方法是p階的。Euler方法是1階的。定義9.2在不計(jì)舍入誤差的條件下,方程(9-1)的精確解y(xn+1)與數(shù)值解yn+1之差稱為整體截?cái)嗾`差,記為en+1=
y(xn+1)-
yn+19.1
Euler方法22021/7/172n+1|
R
|=|
1
h
y
(2¢x)
|£
1
h2
Mn
=1,
2,9.1.2 Euler方法的誤差分析
Euler方法的整體截?cái)嗾`差:函數(shù)f(x,y)關(guān)于y滿足Lipschitz條件|f(x,y1)-f(x,y2)|≤
L|y1-y2|L為Lipschitz常數(shù)設(shè)函數(shù)f(x,y)充分光滑,y(x)在[a,b]上二階連續(xù)可微,則局部截?cái)嗾`差有界,即存在M>0,對任意
x?[a,b],都有9.1
Euler方法9.1.2 Euler方法的誤差分析記yn+1
=
y(xn
)
+
hf
(xn
,
y(xn
))h22021/7/17則有|
en+1
|=|
y(xn+1
)-yn+1
|£|
y(xn+1
)-yn+1
|
+|
yn+1
-yn+1
|=|
Rn+1
|
+
|
y(xn
)
+
hf
(xn
,
y(xn
))
-
yn
-
hf
(xn
,
yn
)
|£|
Rn+1
|
+
|
y(xn
)
-
yn
|
+h
|
f
(xn
,
y(xn
))
-
f
(xn
,
yn
)
|£|
Rn+1
|
+
|
y(xn
)
-
yn
|
+hL
|
y(xn
)
-
yn
|=|
Rn+1
|
+(1+
hL)
|
y(xn
)
-
yn
|£
M
+
(1+
hL)
|
en
|29.1
Euler方法令22021/7/179.1.2 Euler方法的誤差分析h2|
en+1
|£
2
M
+
(1+
hL)
|
en
|h2T
=
M
,S
=1+
hL依次下去,有0n|
e
|n-1|
en+1
|£
T
+
S
|
en
|£
T
+
S
(T
+
S
|
en-1|)
=
T
+
ST
+
S
2
|
e
|£
T
+
ST
+
S
2
(T
+
S
|
e
|)
=
T
+
ST
+
S
2T
+
S
3
|
e
|n-2
n-2S
k
+
Sn+1k
=0£
£
T9.1
Euler方法9.1.2 Euler方法的誤差分析但
e0=y(x0)-
y0=0因此nkS
n+1n+1n+1k
=0h2
M
(1+
hL)n+1
-1
hM=
T
==
[(1+
hL)
-1]S
-1
2 (1+
hL)
-1
2L|
e
|£
T
S?根據(jù)公式2!xx2(x
?0)e
=1+
x
+ +
?
0有|
e2021/7/172Ln+1|£
hM
[ehL(n+1)
-1]9.1
Euler方法9.1.2 Euler方法的誤差分析因?yàn)?/p>
(n+1)h≤Nh≤b-a得因此,整體誤差en+1與步長h同階當(dāng)hfi
0時,eNfi
0。hM2L|
en+1
|£[eL(b-a
)
-1]
=
O(h)hM2021/7/172LhL(n+1)n+1|
e
|£
[e-1]9.2
改進(jìn)的(歐拉)Euler方法2,
y
)]n+1
nn
n
n+1
n+1y
=
y
+
h
[
f
(x
,
y
)
+
f
(x9.2.1
梯形公式在9.0節(jié)里提到了梯形公式42021/7/1712n梯形公式的局部截?cái)嗾`差為h3n+1R
=
-
y
¢(x
)
+
O(h
)梯形公式是二階方法9.2
改進(jìn)的(歐拉)Euler方法9.2.1
梯形公式梯形公式需迭代求解,由簡單迭代法,迭代公式為n
n
nnh2,
y(k
)
)n+1(k
+1)n+1
n+1
y(0)=
y
+
hf
(x
,
y
)y
=
y
+[
f
(xn
,
yn
)
+
f
(x
n+1(k
=
0,1,)f(x,y)滿足Lipschitz條件,則兩次迭代值的差為h
hL2
22021/7/17|
y(k
+1)
(k
)(k
-1)(k
)
(k
-1)n+1
n+1n+1
n+1
n+1
n+1
n+1
n+1-
y
|=|
f
(x
,
y(k
)
)
-
f
(x
,
y)
|£
|
y
-
y
|可以限定每步的迭代次數(shù)。由此導(dǎo)出改進(jìn)Euler方法9.2
改進(jìn)的(歐拉)Euler方法9.2.1
改進(jìn)Euler法思想:在梯形公式迭代時,每步只迭代一次。先用Euler公式求yn+1的一個初步近似值,稱為預(yù)測值;再用梯形公式進(jìn)行校正,得到近似值yn+1。22021/7/17n
nnn+1n+1
n+1
yn+1
=
yn
+
hf
(xn
,
yn
)
y=
y
+
h
[
f
(x
,
y
)
+
f
(x
,
y
)]預(yù)測校正9.2
改進(jìn)的(歐拉)Euler方法9.2.1
梯形公式可以改寫成qn12n
p
yp
=
yn
+
hf
(xn
,
yn
)
y=
y
+
hf
(x
+
h,
y
)
yn+1
=(
yp
+
yq
)22021/7/17n
nnn+1n+1
n+1
yn+1
=
yn
+
hf
(xn
,
yn
)
y=
y
+
h
[
f
(x
,
y
)
+
f
(x
,
y
)]9.2
改進(jìn)的(歐拉)Euler方法2021/7/179.2.1
梯形公式算法9.11)輸入a,b、f(x,y),計(jì)算總步數(shù)N,初值y00輸出(x,y)2)置
h
b
-
a
n=0,x=a,y=
yN3)計(jì)算yp=y+h
f(x,y)yq=y+h
f(x+h,
yp)置(yp
+
yq)/2y,x+h
=
x
輸出(x,y)4)如果n<N-1,置n+1n,轉(zhuǎn)3);否則,停機(jī)11.11.21.31.41.51.61.71.810
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9用預(yù)測-修正方法計(jì)算y(1)的近似值比將h減少為原來的1/10的向前和向后Euler方法的計(jì)算結(jié)果還要好點(diǎn)。2021/7/172021/7/17解:由題意改進(jìn)歐拉法的具體形式為要求步長h=0.2
,計(jì)算y(1.2),
y(1.4)
的近似值
y(1)
=
19.2
改進(jìn)的(歐拉)Euler方法例:用歐拉預(yù)報-校正公式求解初值問題
y'+y
+
y
2
sin
x
=
0p
pcnn
nnp(y
p
+
yc
)2n1-y
-y
sin
x
y
=
y
+
h(-
y
-
y
sin
x
)
y
=
y
+
h(
)
yn+1
=n+122f
(x,
y)=
-y
-
y
2
sin
x9.2
改進(jìn)的(歐拉)Euler方法由y(1)=y0=1知y0=1,取步長h=0.2,計(jì)算如下n=0時(
))200
0
021212pc
0
p
p
1
y
=
y
+
h
-y
-
y
sin
x=1+
0.2
(-1-12
sin1)?
0.631706
y
=
y
+
h
(-y
-y
sin
x=1+
0.2
(-0.631706
-
0.6317062
sin1.2)?
0.799272
y
=1(yp
+
yc
)=(0.631706
+
0.799272)?
0.7154892021/7/172021/7/179.2
改進(jìn)的(歐拉)Euler方法n=1時(
))21
1
121212p
1c
1
p
p
2
y
=
y
+
h
-y
-
y
sin
x=
0.715489
+
0.2
(-0.715489
-
0.7154892
sin1.2)?
0.476964
y
=
y
+
h
(-y
-y
sin
x=
0.715489
+
0.2
(-0.476964
-
0.4769642
sin1.4)?
0.575259
y
=2(yp
+
yc
)=(0.476964
+
0.575259)?
0.526112y(1.2)
?
y1
?
0.715489?
0.526112y(1.4)
?
y29.3龍格-庫塔(Runge-Kutta)法9.3.1
Runge-Kutta法的基本思想設(shè)初值問題)(
p
)kk有解y(x),由Tayler公式得:h
2
h
p2!
p
!p
+1y
(
xk
+1
)
=
y
(
xk
)
+
h
y¢(
xk
)
+(
x
)
+
O
(hy
¢(
x
)
+
+
y令p
階Taylor方法.p=1時即為Euler公式.稱之為Taylor級數(shù)法.其中(
p
)k2021/7/1745h
2
h
pp
!y
k
+1=
y
k
+
h
y
k¢
+
2!
y
k¢+
+
ykky
(i
)?
y
(i
)(
x
),
i
=
0,1,
2,,
pk
k當(dāng)y
(i
)?y
(i
)(x
)
時,有y(
xk
+1
)
-
yk
+1=O(hp
+1
)
.此時①為y
=
f
(
x,
y),
y(
x0
)
=
y0
,
a
£
x
£
b9.3龍格-庫塔(Runge-Kutta)法例:取步長h=0.1,用一階、二階和四階Taylor方法求解下列初值問題12021/7/1746
y¢=
y
2, 0
£
x
£
.2
y
(0)
=
1解: (1)
一階Taylor法nn
+1y
=
y
+
hy¢=
y
+
0.1
y
2n
n
nn01234yn+11.11.2211.370081.557791.800469.3龍格-庫塔(Runge-Kutta)法22021/7/174730.122!2
ynyn
+1(2)二階Taylor法y
¢=
(
y
2
)¢=
2
yy
¢=
2
y
3=
yn
+
0.1
yn
+k01234yk+11.111.246891.421751.652631.970889.3龍格-庫塔(Runge-Kutta)法22021/7/17483
450.12
0.130.142!
3!4!24
ynn+1
n
n(3)
四階Taylor法y
¢=
(2
y3
)¢=
6
y2
y¢=
6
y4y(4)
=
24
y3
y¢=
24
y5
y
=
y
+
0.1y
+2
yn
+
6
yn
+k01234yk+11.11111.249961.428481.666441.999429.3龍格-庫塔(Runge-Kutta)法2021/7/1749yk+11.11111.249961.428481.666441.99942k01234y(xk+1)1.11111.250001.428571.666672.00000yn+11.11.2211.370081.557791.80046yk+11.111.246891.421751.652631.970889.3龍格-庫塔(Runge-Kutta)法2021/7/179.3.1
Runge-Kutta法的基本思想例中的函數(shù)比較簡單,如果函數(shù)表達(dá)式復(fù)雜,相應(yīng)的導(dǎo)數(shù)計(jì)算非常繁瑣,如y¢(x)
=
f
(x,
y),y
¢(x)
=
fx
(x,
y)
+
f
y
(x,
y)
f
(x,
y),如何快速估計(jì)y的各階導(dǎo)數(shù)影響是簡化計(jì)算公式,提高計(jì)算效率的關(guān)鍵。9.3龍格-庫塔(Runge-Kutta)法2021/7/1751這里稱為[xn
,xn+1]上的平均斜率。y(xn+1)
=
y(xn)
+
hf(x,y(x))
=
y(xn)
+
hK*K
*
=
f
(x,
y
(x))9.3.1Runge-Kutta法的基本思想根據(jù)Lagrange中值定理y(xn+1)
=
y(xn)
+hy
¢(x)
x?
(xn+1,xn)由方程可知y¢(x)
=
f(x,y(x))因此9.3龍格-庫塔(Runge-Kutta)法2021/7/1752即,取K*=K1,其精度為一階1
n
n
K
=
f
(x
,
y
)9.3.1Runge-Kutta法的基本思想從已知的兩個公式看顯式Euler公式y(tǒng)n+1
=
yn+hf(xn,yn),改寫成
yn+1
=
yn
+
hK19.3龍格-庫塔(Runge-Kutta)法可寫成122
21
n
nK
Kn+1
n2
n+1
n
1
y=
y
+
h(+
)K
=
f
(x
,
y
)K=
f
(x
,
y
+
hK
)即取K*=K1/2+K2/2,其精度為二階9.3.1Runge-Kutta法的基本思想改進(jìn)的Euler公式22021/7/1753n
nnn+1n+1
n+1
yn+1
=
yn
+
hf
(xn
,
yn
)
y=
y
+
h
[
f
(x
,
y
)
+
f
(x
,
y
)]9.3龍格-庫塔(Runge-Kutta)法2021/7/17549.3.1Runge-Kutta法的基本思想共同點(diǎn):利用f(x,y)的某些函數(shù)值的線性組合計(jì)算y(xn+1)的近似值yn+1
。Euler公式每步算一次f(x,y)的值K1作為K*的近似值,是y(xn+1)在xn處的一階Taylor多項(xiàng)式,為一階方法。改進(jìn)的Euler公式每步算兩次f(x,y)的值K1和K2,用它們的加權(quán)平均值作為K*近似值,是y(xn+1)在xn處的二階Taylor多項(xiàng)式,為二階方法。p2021/7/17559.3龍格-庫塔(Runge-Kutta)法9.3.2
RK方法的構(gòu)造在每一步[xn,xn+1]內(nèi)多取幾個點(diǎn)(如p個)的Ki值,用其加權(quán)平均值作為K*的近似值yn+1
=
yn
+
h
ci
Kii=1i-1j
=1
Ki
=
f
xn
+
aih,
yn
+
hbij
K
j
其中ci
、ai
、bij
為待定參數(shù),
且
a1=0
.稱為p級Runge-Kutta方法計(jì)算公式.9.3龍格-庫塔(Runge-Kutta)法2021/7/17569.3.2
RK方法的構(gòu)造其中K1
=
f(xn,yn)K2
=
f(xn+a2h,yn+b21hK1)K3
=
f(xn+a3h,yn+h(b31K1+
b32K2))………9.3龍格-庫塔(Runge-Kutta)法22021/7/17573231
12!
3!2!(
p
)nnr
hh2h
pp
!n
+1
n
1p
+1
)n
+1y
=
y
+
r
h
+
r
h
+y(
x
)
=
y(
xn
)
+
h
y¢(
xn
)
+y
(
x
)
+
O(h+y
¢(
x
)
+
+9.3.2RK方法的構(gòu)造式中待定參數(shù)的確定:先將公式右端在(xn
,yn
)處展成h的冪級數(shù)(即將yn+1
展成h的冪級數(shù));再將y(xn+1)作Taylor
級數(shù)展開;最后比較兩式中hn(n=0,1,2,…)的系數(shù),以確定出所有待定參數(shù).9.3龍格-庫塔(Runge-Kutta)法2021/7/17589.3.2RK方法的構(gòu)造如要求:r
=
y
¢(
x
),
r
=
y
¢(
x
),
,
r
=
y
(
p
)
(
x
)1
n
2
n
p
n即可得p個方程,從而確定出待定參數(shù).代入表達(dá)式即可得到計(jì)算公式.如果要求兩個表達(dá)式的前p+1項(xiàng)完全重合,即局部截?cái)嗾`差達(dá)到
O(h
p
+1
)
,
則稱上式為p
階r級
的Runge-Kutta方法.常用的是r=2,3,4級的R-K方法.且適當(dāng)選取參數(shù)使得p
=r9.3龍格-庫塔(Runge-Kutta)法2021/7/17591
K=
f
(
xn
,
yn
)
K=
f
(
xn
+
a2
h,
yn
+
b21hK1
)
2yn
+1
=
yn
+
hc1
f
(
xn
,
yn
)
+
hc2
f
(
xn
+
a2
h,
yn
+
B21hK1
)記f
=
f
(xn
,
yn
),
fx
=
fx
(xn
,
yn
),
f
y
=
f
y
(xn
,
yn
)9.3.2
RK方法的構(gòu)造Runge-Kutta方法的推導(dǎo)(以r
=2為例):當(dāng)r
=2
時
yn
+1
=
yn
+
h(c1
K1
+
c2
K
2
)9.3龍格-庫塔(Runge-Kutta)法2021/7/1760又=
y
+
(c
+
c
)
f
h
+
c
(a
f
+
b
K
f
)h2
+
O(h3
)n
1
2
2
2
x
21
1
yy¢=
f
(
xn
,yn
)
=
f
,
y
¢=
f
x
+
f
y
f9.3.2
RK方法的構(gòu)造則K1
=
f
(
xn
,yn
)K2
=
f
(
xn
+
a2
h,
yn
+
b21hK1
)=
f
(
x
,
y
)
+
h(a
f
+
b
K
f
)
+
O(h2
)
,n
n
2
x
21
1
yyn+1
=
yn
+
(c1
K1
+
c2
K2
)h9.3龍格-庫塔(Runge-Kutta)法32021/7/1761322nnx
yh
2n
+1
n
ny
(
x
)
=
y
(
x
)
+
h
y¢(
x
)
+
y
¢(
x)
+
O
(h
)=
y
+
h
f
+(
f
+
f f
)
+
O
(h
)為使局部截?cái)嗾`差為O
(h3
),比較上述兩式右端同次冪系數(shù),應(yīng)取9.3.2
RK方法的構(gòu)造h
29.3龍格-庫塔(Runge-Kutta)法2021/7/1762這是一個四個參數(shù)三個方程的非線性方程組.它有一個自由度,因此有無窮多個解.稱滿足上述方程組的一組公式為二級二階Runge-Kutta方法.2
2c
a
=
1/
2c
b
=
1/
2
2
219.3.2
RK方法的構(gòu)造c1
+
c2
=
12021/7/17639.3龍格-庫塔(Runge-Kutta)法(1)預(yù)估-校正公式c1
=
c211nn=
1/
2,
a2
=
b21
=
1=
yn
+
h
(
K
1
+
K
2
)
/
2
yn
+1
K=
f
(
xn
,
yn
)
K=
f
(
x
+
h
,
y
+
h
K
)
2(2)122c
=
0,
c=
1,
a2
=
b21=
112n=
yn
+
h
K
2
yn
+1
K=
f
(
xn
,
yn
)
K=
f
(
xn
+
h
,
y
+
h
K
)2
2
1中點(diǎn)公式9.3.2
RK方法的構(gòu)造常用的二階Runge-Kutta方法:9.3龍格-庫塔(Runge-Kutta)法2021/7/1764注:
二級Runge-Kutta方法的精度最高是二階的,不可能達(dá)到三階.要提高計(jì)算方法的階,就必須增加點(diǎn)數(shù).Heun(休恩)公式(3)c1
=
1/
4,
c2
=
3
/
4,
a2
=
b21
=
2
/
312=
yn
+
h
(
K
1
+
3
K
2
)
/
4
yn
+1
K=
f
(
xn
,
yn
)
K=
f
(
xn
+
2
h
,
y3
n+
2
h
K
)3
19.3.1
Runge-Kutta法的基本思想9.3龍格-庫塔(Runge-Kutta)法2021/7/1765(1)12=
yn
+
h
(
K
1
+
4
K
2
+
K
3
)
/
6
yn
+1
K=
f
(
xn
,
yn
)
K=
f
(
xn
+
1
h
,
y2
n+
1
h
K
)2
1=
f
(
xn
+
h
,
yn
-
h
K
1
+
2
h
K
2
)
K
3三階Kutta方法三階Heun方法(2)233=
y
k
+
h
(
k1
+
3
k
3
)
/
4
y
k
+1
k=
f
(
xk
,
y
k
)
1
k=
f
(
xk
+
1
h
,
y
+
1
hk
)3
k
3
1=
f
(
xk
+
2
h
,
y
k+
2
hk
2
)
k
39.3.1
Runge-Kutta法的基本思想常用的三階Runge-Kutta方法(r
=3):9.3龍格-庫塔(Runge-Kutta)法2021/7/176613nn=
yn
+
h
(
K
1
+
2
K
2
+
2
K
3
+
K
4
)
/
6標(biāo)準(zhǔn)(經(jīng)典)四階Runge-Kutta方法
yn
+1
K=
f
(
x
,
y
)n
K
2
=
f
(
xn
+
1
h
,
yn
+
1
h
K
1
)2
2
K=
f
(
x=
f
(
xn+
1
h
,
y
+
1
h
K
)2
n
2
2+
h
,
yn
+
h
K
3
)
K
4(1)9.3.1
Runge-Kutta法的基本思想常用的四階Runge-Kutta方法(r
=4):9.3龍格-庫塔(Runge-Kutta)法2021/7/179.3.1Runge-Kutta法的基本思想算法9.21)輸入a,b、f(x,y),計(jì)算總步數(shù)N,初值y002)置
h
b
-
a
n=0,x=a,y=
y3)計(jì)算Nx=
x0+hK1=
f(x0,y0)K2=
f(x0+h/2,y0+
K1h/2)K3=
f(x0+h/2,y0+
K2h/2)9.2
改進(jìn)的(歐拉)Euler方法2021/7/179.2.1
梯形公式算法9.2K4=
f(x0+h,y0+
K3h)y=y0+h
(K1+2
K2+2
K3+
K4)/6輸出(x,y)4)如果n<N-1,置
n+1n,x
x0,y
y0,轉(zhuǎn)3);否則,停機(jī)9.3龍格-庫塔(Runge-Kutta)法32021/7/17694221
2422
3nn
+1 2
-122-
2
y=
yn
+
h[
K1
+
(2
-
2
)
K
2
+
(2
+
2
)
K+
K
]
/
6
K1
=
f
(
xn
,
yn
)
K=
f
(
xn
+
1
h,
y
+
1
hK
)2
2
1
K=
f
(
xn
+
1
h,
y
+2
nhK
+
hK
)
3
K=
f
(
x
+
h,
y
-
2
hKn
n
2+
2+
2
hK
)9.3.1
Runge-Kutta法的基本思想(2)
Gill(吉爾)公式9.3龍格-庫塔(Runge-Kutta)法2021/7/1770預(yù)報點(diǎn)的個數(shù)r123456789r
≥10精度的階數(shù)123445667≤
r
-2一般情況下,四階Runge-Kutta方法已可滿足精度要求.9.3.1
Runge-Kutta法的基本思想注:
從理論上講,可以構(gòu)造任意高階的計(jì)算方法.但事實(shí)上,
精度的階數(shù)與預(yù)報點(diǎn)的個數(shù)之間并非等量關(guān)系.9.3龍格-庫塔(Runge-Kutta)法2021/7/1771例3:
用經(jīng)典Runge-Kutta方法求解下列初值問題(取
h
=
0.1)
y
¢=
2
x
+
y
, 0
£
x
£
1
y
(0)
=
1解:h
=
0.1,
x0
=
0,
y0
=
1,
xk
+1
=
xk
+
0.1
(k
=
0,1,
,
9)標(biāo)準(zhǔn)Runge-Kutta公式為:13n
nnn
2=
yn
+
0
.1 (
K
1
+
2
K
2
+
2
K
3+
K
4
)
/
6
yn
+1
K=
2
x
+
y
K
2
=
2(
xn
+
0
.05
)
+
yn
+
0
.05
K
1
K=
2(
x
+
0
.05
)
+
y
+
0
.05
K
K
4
=
2(
xn
+
0
.1)
+
yn
+
0
.1K
39.3龍格-庫塔(Runge-Kutta)法2021/7/1772計(jì)算結(jié)果見下表.為比較在相同計(jì)算量條件下近似解的精度,表中列出了Euler法(h=0.025)和改進(jìn)的Euler法(h=0.05)在相應(yīng)節(jié)點(diǎn)上的計(jì)算結(jié)果.注:用表中每種方法計(jì)算yi
都需要計(jì)算四次f
的值,即它們的計(jì)算量基本相等.xiEuler法h=0.025改進(jìn)Euler法h=0.05經(jīng)典R-K法h=0.1準(zhǔn)確解0.11.1114391.1153801.1155121.1155130.21.2552091.2639141.2642081.2642080.31.4346671.4490891.4495761.4495760.41.6535171.6747561.6754731.6754740.51.9158491.9451711.9461621.9461640.62.2261782.2650402.2663542.2663560.72.5894852.6395612.6412552.6412580.83.0112713.0744793.0766193.0766230.93.4976063.5761443.5788043.5788091.04.0551924.1515734.1548394.1548452021/7/17739.3龍格-庫塔(Runge-Kutta)法2021/7/17749.3.4
變步長的PK方法微分方程解函數(shù)y(x)的變化不均勻,等步長求數(shù)值解,可能造成某些點(diǎn)精度高,有些點(diǎn)精度低,為保證精度,必須取較小的步長。但隨著步長的縮小,在一定求解范圍內(nèi)所要完成的步數(shù)就增加了.步數(shù)的增加不但引起計(jì)算量的增大,而且可能導(dǎo)致舍入誤差的嚴(yán)重積累.因此同積分的數(shù)值計(jì)算一樣,微分方程的數(shù)值解法也有個選擇步長的問題.9.3龍格-庫塔(Runge-Kutta)法2021/7/1775變步長的PK方法在選擇步長時,需要考慮兩個問題:怎樣衡量和檢驗(yàn)計(jì)算結(jié)果的精度?如何依據(jù)所獲得的精度處理步長?2021/7/17769.3龍格-庫塔(Runge-Kutta)法O(h5),故9.3.4
變步長的PK方法考察四階R-K公式,從節(jié)點(diǎn)xn出發(fā),先以h為步長求出一個近似值,記為y(h
),由于公式的局部截?cái)嗾`差為n+1y(xn+1
n+1)
-
y(
h
)?
ch5再求得一個近似值,每跨一步的局部截?cái)嗾`差然后將步長折半,即取為步長
2
,從xn跨兩步到xn+1,hhy(
)2n+1)5
,因此有2h是c(5
h
2
+1
n+1
h
y(xn
)
-
y
?
2c
2
9.3龍格-庫塔(Runge-Kutta)法即有9.3.4
變步長的PK方法兩式比可看到,步長折半后,誤差大約減少到1/16,由此易得下列事后估計(jì)式116
h
2
+1
n+1n+1n+1y(xn
)
-
y?
.y(x
)
-
y(
h)12021/7/1777].15
h
h
2
2
+1
n+1n+1(h)n+1y(xn
)
-
y
?[
y
-
y9.3龍格-庫塔(Runge-Kutta)法偏差9.3.4
變步長的PK方法因此,可以通過檢查步長,折半前后兩次計(jì)算結(jié)果的
h
2
n+1(h)n+1D
=
y
-
y直至Δ<ε為止,這時取最終得到的作為結(jié)果;來判定所選的步長是否合適,具體地說,將區(qū)分以下兩種情況處理:1.對于給定的精度ε,如果Δ>ε,我們反復(fù)將步長折半計(jì)算,(
)2021/7/17782hyn+19.3龍格-庫塔(Runge-Kutta)法2021/7/17799.3.4
變步長的PK方法2.如果Δ<ε,反復(fù)將步長作加倍計(jì)算,直至Δ>ε為止,此時前面一次的結(jié)果為yn+1,步長即為合適步長。這種通過加倍或折半處理步長的方法稱為變步長方法.表面上看,為了選擇步長,每一步的計(jì)算量增加了,但總體考慮往往是合算的.9.4
線性多步法2021/7/1780單步法優(yōu)點(diǎn):只要給定初值,就可進(jìn)行計(jì)算。單步法缺點(diǎn):計(jì)算yn+1只用到前一步的信息yn。提高精度需通過增加非節(jié)點(diǎn)處函數(shù)值的計(jì)算,如4階R-K公式需計(jì)算4個函數(shù)值。線性多步法基本思想:利用前面已知的信息yn,yn-1,…,yn-r構(gòu)造算法,提高精度。常用線性多步法,即計(jì)算公式中只出現(xiàn)yn+1,yn-1,…,yn-r及f(xn+1,yn+1),f(xn,yn),…,f(xn-r,yn-r)的一次項(xiàng)。9.4
線性多步法2021/7/1781r
ri=0
i=-1一般的線性多步法公式可表示為yn+1
=
ai
yn-i
+
h
bi
fn-i其中,ai,bi,均為常數(shù),fk=f(xk,yk)(k=n+1,n,…,n-r)如果β-1=0,則上式稱為顯式r步法,這時yn+1可直接算出;如果β-1≠0,則上式稱為隱式r步法,求解時要用迭代法方可算出yn+1.公式中系數(shù)αi及βi可根據(jù)方法的局部截?cái)嗾`差及階確定。9.4
線性多步法2021/7/1782當(dāng)r=1時即為單步法此時若取a0=1,β-1
=0,b0=1,得到顯式Euler公式;0
-1
0若取a
=1,β
=
b
=
1
,得到梯形公式。2可以看出,線性多步法每次只需計(jì)算一次f(x,y)的值。構(gòu)造線性多步公式常用Taylor展開和數(shù)值積分的方法。9.4
線性多步法2021/7/1783將公式9.4.1
線性多步法公式的導(dǎo)出r
ryn+1
=
ai
yn-i
+
h
bi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年開化縣機(jī)關(guān)事業(yè)單位公開選調(diào)工作人員21人筆試模擬試題及答案解析
- 行政工作處理流程清單高效率操作手冊版
- 2026年東營經(jīng)濟(jì)技術(shù)開發(fā)區(qū)事業(yè)單位公開招聘工作人員(2人)筆試備考題庫及答案解析
- 公司數(shù)據(jù)安全履行承諾書4篇
- 2026年泰安東平縣事業(yè)單位初級綜合類崗位公開招聘工作人員(78人)筆試模擬試題及答案解析
- 投資保障和誠信合作承諾書(4篇)
- 2026年德宏州瑞麗市幼兒教育集團(tuán)招聘合同制臨聘人員(16人)筆試參考題庫及答案解析
- 2026北京急救中心第一批招聘筆試參考題庫及答案解析
- 2026云南省醫(yī)藥三發(fā)有限公司招聘4人筆試備考題庫及答案解析
- 物流運(yùn)輸成本分析及優(yōu)化方案工具
- 03課題三-建筑運(yùn)行大數(shù)據(jù)安全與數(shù)據(jù)質(zhì)量-20180703
- 工業(yè)區(qū)物業(yè)服務(wù)手冊
- 2024新能源集控中心儲能電站接入技術(shù)方案
- 河南省信陽市2023-2024學(xué)年高二上學(xué)期期末教學(xué)質(zhì)量檢測數(shù)學(xué)試題(含答案解析)
- 北師大版七年級上冊數(shù)學(xué) 期末復(fù)習(xí)講義
- 零售行業(yè)的店面管理培訓(xùn)資料
- 2023年初級經(jīng)濟(jì)師《初級人力資源專業(yè)知識與實(shí)務(wù)》歷年真題匯編(共270題)
- 培訓(xùn)課件電氣接地保護(hù)培訓(xùn)課件
- 污水管網(wǎng)工程監(jiān)理月報
- 安徽涵豐科技有限公司年產(chǎn)6000噸磷酸酯阻燃劑DOPO、4800噸磷酸酯阻燃劑DOPO衍生品、12000噸副產(chǎn)品鹽酸、38000噸聚合氯化鋁、20000噸固化劑項(xiàng)目環(huán)境影響報告書
- GB/T 17215.322-2008交流電測量設(shè)備特殊要求第22部分:靜止式有功電能表(0.2S級和0.5S級)
評論
0/150
提交評論