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

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

你可能感兴趣的:(matlab)