試位法
試位法(False Position)(in Latin,regula falsi)試位法是在計算機工具非常落後的條件下人們為了改進二分法而得到的一個方法。由於演算法原理有其合理性的一面,所以在今天的計算機條件下,在一些特定條件下還可繼續發揮作用。
對於f(x)=0在區間[a,b]內的解,二分法給出的近似解為區間的終點x=(a+b)/2.0,並沒有利用f(a),f(b)所提供的信息。從這個意義上講,試位法是對二分法的改進。
如圖所示,假如求連續函數y=f(x)在區間[a,b]內的零點x',且已知f(a)與f(b)異號。試位法就是過平面上的(a,f(a)),(b,f(b))這兩點做直線,然後取這條直線與x軸的交點x0做為近似解。接下來與二分法類似,根據f(x0)的符號決定用x0替代a還是替代b,從而形成一個演算法。在這個計算的過程中,前面已經得到的函數值在下一步計算中又發揮了一定的作用。實現試位法的關鍵步驟是找到過平面上的(a,f(a)),(b,f(b))這兩點的直線與x軸的交點,由直線的兩
點方程式可得
y=f(b)+[f(b)-f(a)](x-b)/(b-a)
在上式中令y=0既可以得到
p=[f(b)-f(a)]/(b-a)
x=b-f(b)/p
當然可以利用上式得到的x替代二分法中的x=(a+b)/2,所以只有在二分法的演算法框架中做這麼一點修改,既可以形成一個新的演算法,即試位法,而且只要把二分法的源程序複製一份,再做相應的修改,既可以得到試位法的程序。如圖所示,試位法所得到的下一個近似解x0的幾何位置把區間[a,b]劃分成的兩條線段之比正好等於f(a)|與|f(b)|之比,所以也有文獻把試位法稱之為比例法。又因為x0就連接曲線上兩點弦與x軸的交點,所以也稱弦線法。
可以預期,如果f(x)在[a,b]上的圖像非常接近的一條直線,那麼試位法的效果會明顯優於二分法。然而實際情況並非總是如此,有時候也會不盡人意。如圖,如果區間[a,b]的長度比較大,曲線y=f(x)在[a,b]內拐彎比較大(一階導數值突然急劇增長),在這種情況下,試位法的效果一下子變得非常糟糕,反而不如二分法。
試位法
在圖所示的情況下,試位法收斂慢的原因是|f(b)|>0,函數的零點x'比較接近b點,|f(a)|相對說來比較小,為了消除這種情況下的負面影響,可以對試位法做這樣的改動;在程序中定義兩個變數va,vb,並用f(a),f(b)分別給它們賦初值。在迭代過程中,如果用x替代a,則用f(x)替代va,而vb則乘以一個大於0小於1的常數因子w,比如可以取w=0.5;如果用f(x)替代vb,而將va乘以w。也許這種改進真正體現了「試位」的思想。
初中的數學課本上有這樣的題:
ax+b=0(a≠0)

相關評論

同義詞:暫無同義詞