鮑威爾法
鮑威爾法
鮑威爾法,嚴格來說是鮑威爾共軛方向法,是邁克爾J.D.鮑威爾提出的一種求解函數局部最小值的演演算法。該函數不能是可微分的,並且不會導出衍生函數。該函數必須是固定數量的實值輸入的實值函數。通過傳入一組初始搜索向量,通常會傳入N個搜索向量(譬如s1,,,,,sn)這是與每個軸對齊的法線。鮑威爾法是在無約束優化共扼方向,從某個初始點出發,求目標函數在這些方向上的極小值點,然後以該點為新的出發點,取復這一過程直到獲得滿意解,其優點是不必計算目標函數的 梯度就可以在有限步內找到極值點。
鮑威爾法,嚴格來說是鮑威爾共軛方向法,是邁克爾J.D.鮑威爾提出的一種求解函數局部最小值的演演算法。該函數不能是可微分的,並且不會導出衍生函數。
該函數必須是固定數量的實值輸入的實值函數。通過傳入一組初始搜索向量,通常會傳入N個搜索向量(譬如)這是與每個軸對齊的法線。
鮑威爾法依次通過沿著每個搜索向量的雙向搜索使功能最小化。沿著每個搜索向量的雙向線搜索可以通過黃金分割搜索或黑雁的方法來完成。讓每個雙向線搜索中找到的最小值為
其中是起始點,是沿著的雙向搜索確定的標量。然後可以將新位置()表示為搜索向量的線性組合,即
新的位移矢量
成為新的搜索向量,並被添加到搜索向量列表的末尾。
同時,對新方向貢獻最大的搜索向量,即最成功的搜索向量()搜索向量列表。新的N個搜索向量集合是
該演演算法迭代任意次數,直到沒有明顯的改善。
該方法對於計算連續但複雜函數的局部最小值是有用的,特別是沒有基礎數學定義的函數,因為不需要導數。基本演演算法簡單;複雜度在沿著搜索向量的線性搜索中,這可以通過布倫特法來實現。
布倫特方法(the method of Brent)是在二分法或試位法的基礎上,藉助二次插值方法進行加速,有利用反插值方法來簡化計算而形成的一種方法。
假如知道f(x)的零點x’在一個不太大的區間內,而且已知f(x)在區間的端點處的函數值
以及在內的近似解和,接下來利用這已知的三個點以及它們所對應的函數值作插值拋物線。與Muller方法不同的是,把與的對應關係反過來用,相當於用 替代方程組
**************** (1)
**************** (2)
**************** (3)
中的,而方程組的常數項 則用這裡的替換。所以對應的插值拋物線的一般形式為
**************** (4)
**************** (5)
**************** (6)
**************** (7)
由(5)(6)(7)式可以得利用Muller方法,可以寫成a,b 的表達式。
在(4)中令,可以得到下一個近似點為
**************** (8)
其中相當於校正項。
Brent方法的下一個規則是,如果得到的x仍然在區間內,則用根據
的符號替換或,用x替換;如果所得到的x不在區間內,則暫時放棄反拋物線插值法,繼續用二分法或試位法。
實際上,我們可以利用二分法所得到函數順便採用反插值方法試探一下。