利用單變量求解和VBA進行批量求解 254 4
楊海從2012-05-10 00:45
樓主
十多天前,對水質(zhì)模型參數(shù)K2的率定讓筆者甚是頭疼,特別是用VB編的程序后進行參數(shù)輸入過程,輸?shù)目啾瓢 G皫滋鞂iT學了一些文件和驅(qū)動的東西,感覺對處理現(xiàn)存問題不夠?qū)嵱?,就琢磨著尋求簡便的方法,還真被我找到了,很簡單,現(xiàn)記下來與大家分享。
一般地,遇到非線性一元方程,我們常用二分法、不動點迭代法、牛頓迭代法等數(shù)值方法編程求解。然而,當需要處理大批量,多參數(shù)的此類方程時,用編程的方法求解將是十分愚笨的方法。因為僅對數(shù)據(jù)的輸入(鍵入)或者格式(文件輸入)就會讓我們煩悶不已。那么EXCEL的單變量求解將是一個十分快捷簡便的方法?,F(xiàn)敘述方法如下:
問題,有10個方程A*X*X+B*X-30=0,其中A={1,2,3,4……,9,10};B={2,3,4,……10,11}求解個方程的一個根(因為我們經(jīng)常只需要求一個合適的參數(shù),所以這里不討論該方程根的分布情況)。
解決方法: 打開EXCEL,在A列輸入?yún)?shù)A的值,在B列輸入?yún)?shù)B的值,C列作為解X得盛放列,D列作為函數(shù)值,其中的函數(shù)當然為A*X*X+B*X-30。
各項輸入完畢,請打開工具/宏/錄制新宏->在填入需要的各項之后點擊確定,即可錄制新宏了。(不要著急,您并不需要熟悉VBA,僅需要一點點的編程或者英語基礎(chǔ);當然你可以查詞典) 錄制的宏當然需要解決這個問題了。步驟是打開工具/單變量求解->填入各項 其中目標單元格為D1,目標值0,可變單元格C1;(各項很容易懂) 單擊確定,這個時候第一個方程的一個解應該在C1單元格里。 下面進行批量求解。 按alt+F11,打開EXCEL的VBA模塊,找到錄制的宏,你可以看的一行剛才錄制的代碼如下: Sub Macro1() ' Macro1 Macro ' 宏由 微軟中國 錄制,時間: 2012/5/10 ' Range("D1").GoalSeek Goal:=0, ChangingCell:=Range("C1") End Sub 大部分需要處理這類問題的同學都基本能看明白吧(錄制宏的目的就是要我們自己弄夠明白EXCEL的內(nèi)部命令是怎么實現(xiàn)的,這種方法在學習和工作中經(jīng)常用到) 下面要對上面代碼進行修改,已處理批量方程。 需要處理的方程有10個,處理代碼如上,故而代碼如下
Sub Macro1() ' Macro1 Macro ' 宏由 微軟中國 錄制,時間: 2012/5/10 Dim i As Integer For i = 1 To 10 Range("D" & i).GoalSeek Goal:=0, ChangingCell:=Range("C" & i) Next i End Sub
點擊運行,就搞定啦。 |
|