这是我最优化方法课程的编程作业,贴来和大家分享,后续会继续发来一些最优化的程序。、
以下程序由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 x