matlab編寫的進退法,黃金分割法,拋物線法(二次插值法),wolfe不精確一維搜索

這是我最優化方法課程的編程作業,貼來和大家分享,後續會繼續發來一些最優化的程序。、

以下程序由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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章