龔士林
摘 要:首次提出了LINGO軟件在水力計(jì)算方面的應(yīng)用,尤其是在迭代公式和多項(xiàng)求和方面,并介紹了LINGO實(shí)現(xiàn)水力計(jì)算的一般步驟。工程實(shí)例計(jì)算表明LINGO在迭代和多項(xiàng)求和方面的計(jì)算具有程序編寫(xiě)簡(jiǎn)單、可視性強(qiáng)和結(jié)果精度高等優(yōu)點(diǎn),比較適合非專(zhuān)業(yè)編程的水利工作者使用。
關(guān)鍵詞:LINGO;水力計(jì)算;迭代;多項(xiàng)求和
在水利工程中,水力計(jì)算是不可或缺的一部分,然而水力計(jì)算公式大都過(guò)于繁瑣,不易計(jì)算。另外,進(jìn)行水力計(jì)算時(shí)經(jīng)常會(huì)遇到求解非線性方程根的問(wèn)題,非線性方程最常用的求解方法是迭代法,計(jì)算復(fù)雜,工作量大,需要借助計(jì)算機(jī)編程加以解決。目前存在的水力計(jì)算軟件比較少,并且功能單一,給水利工作者造成了極大不便。LINGO軟件[1-2]界面簡(jiǎn)單,易于操作,經(jīng)常被用于線性規(guī)劃求解以及計(jì)算非線性方程等方面。對(duì)于水利計(jì)算,只需要正確將方程輸入,即可求解出方程中的未知量,計(jì)算過(guò)程直觀明了,便于閱讀和改正,非常適合非專(zhuān)業(yè)編程人員理解和掌握。本文擬利用LINGO軟件求解非線性方程根的功能,將LINGO引用到水力計(jì)算中,進(jìn)行常見(jiàn)的水力計(jì)算求解。
1 LINGO在水力計(jì)算中的應(yīng)用概述
1.1 在迭代公式方面的應(yīng)用
在水力計(jì)算中,常常會(huì)遇到一些高次的隱函數(shù)方程和微分方程,對(duì)于這些方程,水力學(xué)中經(jīng)通常采用試算法和迭代法。試算法概念簡(jiǎn)單,方法直觀,易于理解。但是該方法往往帶有一定的盲目性,若要達(dá)到給定的精度,有時(shí)需經(jīng)過(guò)多次試湊,才能完成。而若采用數(shù)值分析中的迭代法則可以避免盲目性,準(zhǔn)確的解出正確的答案,并且此方法適合用計(jì)算機(jī)編程求解,尤其用LINGO軟件求解非常方便。
1.2 在多項(xiàng)求和公式方面的應(yīng)用
多項(xiàng)求和公式通常可以由求和符號(hào)∑簡(jiǎn)單地表達(dá)出來(lái),然而進(jìn)行求解時(shí)卻非常困難,計(jì)算量大,耗時(shí)費(fèi)力。多項(xiàng)求和公式在水力計(jì)算中也是經(jīng)常出現(xiàn),比如管網(wǎng)中枝狀管網(wǎng)和環(huán)狀管網(wǎng)的水力計(jì)算、分水閘中有壓流圓形涵管式分水閘流量系數(shù)的計(jì)算、河道恒定流水面曲線計(jì)算中的復(fù)式斷面動(dòng)能修正系數(shù)的計(jì)算、裁彎工程中引河和老河道的河道特征數(shù)的計(jì)算、以及普通完全井的井群計(jì)算等等,加大了水力計(jì)算的工作量。LINGO軟件卻可以簡(jiǎn)單地求解此類(lèi)問(wèn)題,只需要將求和項(xiàng)以求和符號(hào)∑的方式輸入進(jìn)去,即可以快速地得到正確結(jié)果。
2 LINGO的一般計(jì)算步驟
2.1 將水力學(xué)的計(jì)算公式輸入LINGO Model界面中
在LINGO中,計(jì)算公式的輸入格式與平時(shí)書(shū)寫(xiě)形式相似。不過(guò),兩項(xiàng)相乘中間用“*”隔開(kāi);式子中無(wú)大括號(hào)、小括號(hào)之分,統(tǒng)一使用小括號(hào);乘方項(xiàng)可使用“^”表示;每一段程序統(tǒng)一使用“;”結(jié)束;使用三角函數(shù)或?qū)?shù)形式時(shí),需加上“@”;各項(xiàng)負(fù)號(hào)采用英文的形式且不分大小寫(xiě)。
2.2 輸入約束表達(dá)式
約束表達(dá)式的形式可以為數(shù)值,也可以是范圍,范圍需要分開(kāi)寫(xiě)。如,b=1則輸入“b=1;”;2
2.3 對(duì)參數(shù)進(jìn)行設(shè)置
若使用迭代法,可以在主菜單“LINGO”下的子菜單“options ”中進(jìn)行操作,當(dāng)所得結(jié)果已為精確值時(shí),迭代次數(shù)將不發(fā)生改變。LINGO默認(rèn)保留小數(shù)點(diǎn)后六位,對(duì)于一般的水力學(xué)計(jì)算,此步驟有時(shí)可以不予考慮。
2.4 輸出結(jié)果并對(duì)結(jié)果進(jìn)行分析
通過(guò)窗口操作“LINGO→solve”或者通過(guò)“Ctrl+u”即可得到相應(yīng)結(jié)果,其中“total solver iterations”表示結(jié)果的迭代次數(shù);“Variable”和“Value”分別表示變量和相應(yīng)值。
3 工程實(shí)例
考慮到LINGO在多項(xiàng)式求和方面具有獨(dú)特的優(yōu)勢(shì),本文將以LINGO在迭代方面的應(yīng)用為例,對(duì)明渠恒定非均勻流的水面曲線進(jìn)行計(jì)算。
某一明渠中有一長(zhǎng)直梯形斷面,底寬b為25m,邊坡系數(shù)m為2.4,壁面粗糙系數(shù)n為0.022,底坡i為0.0001,當(dāng)通過(guò)流量Q為160,渠道末端水深h為6.0m。試計(jì)算渠道中的水面曲線[3]。
4 計(jì)算結(jié)果
由LINGO計(jì)算結(jié)果得正常水深h0為4.45m,臨界水深hk為1.53m。h0>hk,可判斷此明渠水流為緩流,因此(7)式中取負(fù)號(hào)。以兩個(gè)斷面間間距為已知量,用LINGO將(7)式進(jìn)行求解,可以得到沿程各個(gè)斷面的水深,結(jié)果如表1所示。
5 結(jié)論
(1)LINGO軟件可以方便地實(shí)現(xiàn)復(fù)雜水力計(jì)算的求解,尤其可以快速解決迭代問(wèn)題和多項(xiàng)式求和問(wèn)題,程序編寫(xiě)格式與平時(shí)書(shū)寫(xiě)形式相似,易于掌握,便于操作,比較適合非專(zhuān)業(yè)編程的水利工作者使用。
(2)LINGO軟件在計(jì)算水面曲線時(shí)比較方便,類(lèi)推時(shí)編程公式不變,只需改變約束條件,即可得到相應(yīng)結(jié)果。
(3)LINGO軟件在數(shù)值計(jì)算方面功能非常強(qiáng)大,本文只涉及其在迭代方面及多項(xiàng)式求和方面的應(yīng)用,在水力計(jì)算中的微積分方面略有不足,仍需進(jìn)一步研究。
參考文獻(xiàn)
[1] 袁新生. LINGO和Excel在數(shù)學(xué)建模中的應(yīng)用[M]. 北京:科學(xué)出版社,2014:32-43.
[2] 喬雙全.伏世紅.孟祥國(guó) Excel迭代功能在水力計(jì)算中的應(yīng)用[期刊論文].黑龍江水利科技,2011.39(5)
[3] Rich Grace. Lingo Handbook,The (Bk/CD-ROM)[M]. New Jersey:Prentice Hall Ptr,1997.
[4] 李煒. 水力計(jì)算手冊(cè)( 第二版)[K]. 北京: 中國(guó)水利水電出版社,2006.