這是我最優化方法課程的編程作業,貼來和大家分享,後續會繼續發來一些最優化的程序。、
以下程序由matlab編寫
程序簡介
jintuifa.m
進退法,用於確定下單峯區間.根據最優化方法(天津大學出版社)20頁算法1.4.3編寫。
輸出:[left right] 爲下單峯區間
輸入:y x x0 step
y爲函數,x爲函數y的變量,x0 step(>0)分別爲初始點,初始步長
golddiv.m
黃金分割法。根據最優化方法(天津大學出版社)17頁算法1.4.2編寫。
當保留的區間長度|b-a|<=epsilon時停止迭代
輸出:[best_x best_fx] best_x爲最優的x值,best_fx爲最優的函數值
輸入: y x a b epsilon
y爲函數,x爲函數y的變量,a,b爲下單峯區間[a,b],epsilon爲精確度
paowuxianfa.m
拋物線法(二次插值法)。根據最優化方法(天津大學出版社)22頁算法1.4.5編寫。
輸出:[best_x best_fx] best_x爲最優的x值,best_fx爲最優的函數值
輸入:x1 x0 x2 epsilon1 epsilon2 x1,x0,x2爲已知的三點且滿足f1>f0<f2,epsilon爲精確度
wolfe.m
Wolfe不精確一維搜索。根據最優化方法(天津大學出版社)24頁算法1.4.6編寫。
輸出:[alpha xk1] alpha爲要求的步長,xk1爲x(k+1)是得出的下一個點
輸入:xk pk mu sigma xk爲初始點,pk爲方向,mu和sigma爲參數. 一般mu屬於(0,1/2),sigma屬於(mu,1)
f.m