matlab编写的进退法,黄金分割法,抛物线法(二次插值法),wolfe不精确一维搜索

这是一组MATLAB编程作业,涉及最优化方法,包括进退法、黄金分割法、抛物线法(二次插值法)和Wolfe不精确一维搜索算法的实现。代码参考了《最优化方法》(天津大学出版社)并提供了测试示例。
摘要由CSDN通过智能技术生成

这是我最优化方法课程的编程作业,贴来和大家分享,后续会继续发来一些最优化的程序。

以下程序由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
老师测试的例子函数例4
g.m
老师作业例子4函数求梯度

test.m
一个调用jintuifa.m golddiv.m paowuxianfa.m的计算的例子

程序详细代码

f.m
%最优化编程作业中的例子
 function result = f(x)
 %result = x.^4+2.*x+4;%例1 区间为[-1,0]
 %result = exp(-x)+x.^2;%例2 区间为[0,1]
result =100*(x(2)-x(1)^2)^2+(1-x(1))^2;%例4

g.m

%求在点x处的梯度,对应编程作业中的例四 这里的x是向量,代表x1,x2…

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值