李雙江,楊 霞,周 斌
(1.三門峽市水利勘測設(shè)計有限責(zé)任公司,河南三門峽472000;2.汕尾市水利水電規(guī)劃設(shè)計院,廣東汕尾334000)
水面線不同計算方法比較
李雙江1,楊 霞2,周 斌2
(1.三門峽市水利勘測設(shè)計有限責(zé)任公司,河南三門峽472000;2.汕尾市水利水電規(guī)劃設(shè)計院,廣東汕尾334000)
本文對比了迭代法、牛頓法和牛頓下山法運用于江河水面線計算的差異,并對以上各算法的收斂性進行了探討,提出了牛頓下山法計算江河水面線的公式和方法,得出了牛頓下山法較普通迭代法有更強的適應(yīng)性的結(jié)論,并在江河水面線計算中推薦牛頓下山法。
水面線計算;迭代求解;牛頓下山法
水面線計算是涉河工程的常遇問題。水面線計算通常采用能量方程求解,能量方程往往會產(chǎn)生雙解問題[1],計算方法采用不當(dāng),可能會求得假解,使計算結(jié)果與實際情況不符。迭代法是現(xiàn)行軟件中常用的計算方法,但在運用中存在一些缺陷。筆者在分析多種迭代解法的基礎(chǔ)上,選擇牛頓下山法作為能量方程求解的迭代算法。
江河水流流速不大,通常均為緩流(Fr<1)。為控制在分段計算過程中傳播的誤差不致影響成果精度,緩流流態(tài)的江河水面線通常適宜從下游向上游推算[2]。因此本文僅針對從下游向上游推算江河水面線的方法進行探討。
江河水面線計算通常采用能量法,基本方程[3]為:
式中:
z1—上游斷面的水位;
z2—下游斷面的水位;
υ1—上游斷面的流速;
υ2—下游斷面的流速;
a1—上游斷面的動能校正系數(shù);
a2—下游斷面的動能校正系數(shù);
ζ—河道平均局部阻力系數(shù);
Δ s—計算河段的長度;
Q—河道平均流量;
K1—上游斷面的流量模數(shù);
K2—下游斷面的流量模數(shù);
為方便后續(xù)討論,將(1)式變形為:
對于方程x=φ(x),可按以下步驟求解[4]:
步1 準備:提供迭代初值x0;
步2 迭代:計算迭代值x1=φ(x0);
步3 控制:檢查|x1-x0|,若|x1-x0|>ε(ε為預(yù)先指定的精度),則用x1替代x0轉(zhuǎn)步2繼續(xù)迭代;當(dāng)|x1-x0|≤ε時終止計算,取x1為所求的結(jié)果。
對于能量方程,已知下游水位求上游水位時,f(z2)為已知值,(2)式可變形為下式:
(3)式中υ1的和K1均為z水位的函數(shù),其余項均為常數(shù)項。顯然,(3)式符合方程x=φ(x),故可采用迭代法求解方程。
迭代法求解方程x=φ(x)在方程解x*的鄰域內(nèi)局部收斂是有條件的,僅當(dāng)φ'(x)在x*的鄰域內(nèi)連續(xù),且|φ'(x)|<1時,迭代法才收斂[4]。因此,采用迭代法直接求解能量方程是存在一定缺陷的,本文將進一步尋找其它收斂性更強的算法。
對于φ(x)=0方程,牛頓法按以下步驟求解[4]:
步1 準備:提供迭代初值x0,計算φ0=φ
步3 控制:檢查|x1-x0|,若|x1-x0|>ε(ε為預(yù)先指定的精度),則用x1替代x0轉(zhuǎn)步2繼續(xù)迭代;當(dāng)|x1-x0|≤ε時終止計算,取x1為所求的結(jié)果。
對于能量方程,已知下游水位求上游水位時,f(z2)為已知值,(2)式可變形為下式:
顯然,(4)式符合φ(x)=0的方程,可用牛頓法求解水面線方程。對于牛頓法,存在方程的解x*的鄰域牛頓法無條件收斂;但如果初值x0偏離x*較遠位于局部收斂鄰域外時,牛頓法仍可能是發(fā)散的。為了防止初值x0的偏差造成迭代發(fā)散,采用下山法[4]強制迭代數(shù)列收斂,使每一步迭代均滿足|φk+1|<|φk|,強制迭代收斂。引入下山因子λ(0<λ≤1),將步2調(diào)整為:
下山因子的選擇是個逐步探索的過程,可從λ=1開始反復(fù)折半試算,直至能滿足|φk+1|<|φk|條件使迭代數(shù)列收斂。
為采用牛頓下山法,需要計算函數(shù)φ(z1)=z1的導(dǎo)數(shù)。將兩式代入φ(z1)函數(shù)求導(dǎo),有:式中:
n—糙率;
ω—過水面積;
R—水力半徑;
考慮到江河水面線大多為寬淺式,近似概化為寬淺矩形河槽,引入以下數(shù)式:
式中:
B—河道寬度;
h—水深;
x—濕周;
于是,(5)式可簡化為:
水面線方程的導(dǎo)數(shù)可以采用(5)式差分計算,也可以采用近似簡化的(6)式計算。
能量方程計算水面線往往會產(chǎn)生雙解[1],因此盡管牛頓下山法算法收斂,從數(shù)學(xué)上可以求得離初始解較近的理論解,但該理論解仍有可能是假解,初值x0的選擇仍然是十分重要的。注意到江河水面線計算的上、下游流速差有限,略去項的簡化公式仍有相當(dāng)高的計算精度,因此可將(2)式簡化為[5]:
注意到K1為變量z1的單調(diào)增函數(shù),即K'1>0。于是有,即f(z1)為單調(diào)增函數(shù),(7)式必然只有一個解。對于單調(diào)增函數(shù),采用逐步搜索法、二分法、迭代法等諸多算法都是很容易求解的,算法也是穩(wěn)定的,該解答作為牛頓下山法的迭代初值是十分合適的。
采用牛頓下山法計算水面線的步驟為:
步1 準備:采用(7)式計算初始解x0,采用
(2)式計算φ0=φ(x0),用(5)式或(6)式計算
步3 控制:比較φ1和φ0,如果|φ1|<| φ0|則轉(zhuǎn)步4,否則取λ=λ/2重回步2計算;
步4 ε控制:檢查|x1-x0|,若|x1-x0|>ε(ε為預(yù)先指定的精度),則用x1替代x0轉(zhuǎn)步2繼續(xù)迭代;當(dāng)|x1-x0|≤ε時終止計算,取x1為所求的結(jié)果。
對迭代法、牛頓法和牛頓下山法三種方法在水面線迭代計算中的計算要素對比見表1。
表1 各算法差異對比表
迭代法算法簡潔,但屬條件收斂,適用性不強;牛頓法算法略復(fù)雜,但收斂性較好;牛頓下山法算法最為復(fù)雜,采用了強制收斂手段,使其收斂域的范圍得到了大幅提高,對于初值的誤差適應(yīng)能力最強。目前,國內(nèi)采用計算機程序求解江河水面線的方法已是業(yè)內(nèi)的主流,程序可一次編制反復(fù)使用,算法的收斂性在程序復(fù)用上有著決定性的意義,因此筆者在江河水面線計算中推薦牛頓下山法。
迭代法是水面線計算常用的算法之一,但是在收斂性上不能得到充分保證,不能保證在所有河段上均能適用。牛頓法采用了切線逼近,逼近速度快,具有局部收斂性,但計算過程中收斂受到初值
T V 133
:A
:1672-2469(2015)09-0050-04
10.3969/j.i s s n.1672-2469.2015.09.017
李雙江(1985年—),男,工程師。