精确线搜索——抛物线法
来源:互联网 发布:数字摇号软件 编辑:程序博客网 时间:2024/06/05 11:21
抛物线法1
抛物线法
抛物线法也叫二次插值法,二次插值法的基本思想是: 在搜索区间中不断地使用二次多项式去近似目标函数, 并逐步用插值多项式的极小点去逼近线搜索问题
的极小点. 下面我们详细介绍这一方法.
设已知三点
处的函数值
上述条件保证了函数
Lagrabge
插值多项式为 令
这里
又
故
注意到
算法3(抛物线法)
步骤0,由进退法确定三点
设定容许误差
步骤1,若
步骤2,计算插值点. 根据
步骤3,若
步骤4,若
MATLAB实现
function [s,phis,i,E,S]=paowxf(phi,a,b,delta,epsilon)%功能: 精确线搜索之抛物线法%输入: phi 是目标函数, a和b是搜索区间的端点% delta,epsilon是容许误差%输出: i是迭代次数% s是近似极小点, phis是对应的近似极小值;% E=[ds,dphi], 分别是s和phis的误差限分别是s, phis的误差界; % S是迭代向量s0=a;s2=b;h=(s2-s0)/2;s1=s0+h;phi0=feval(phi,s0);phi1=feval(phi,s1);phi2=feval(phi,s2);bars=s0;i=0;while(1) i=i+1; S(i,:)=[s0,s1,s2,bars]; %step1 if (abs(s2-s0)>=epsilon) || ((phi2-phi0)>=delta) %step2% h=(s2-s0)/2;s1=s0+h;% phi0=feval(phi,s0);phi1=feval(phi,s1);phi2=feval(phi,s2); barh=h*(4*phi1-3*phi0-phi2)/(2*phi1-phi0-phi2)/2; bars=s0+barh; barphi=feval(phi,bars); if phi1<=barphi %step4 if s1<bars s2=bars; phi2=barphi; h=barh-h; s0=s1-h; phi0=feval(phi,s0); else s0=bars; phi0=barphi; h=h-barh; s2=s1+h; phi2=feval(phi,s2); end else %step3 if s1>bars if h>2*barh s1=bars;h=barh;s2=s1+h; phi1=barphi;phi2=feval(phi,s2); else s1=bars;h=h-barh;s2=s1;s0=s1-h; phi1=barphi;phi2=phi1;phi0=feval(phi,s0); end else if 2*barh<3*h s0=s1;h=barh-h;s1=bars;s2=s1+h; phi0=phi1;phi1=barphi;phi2=feval(phi,s2); else s1=bars;h=2*h-barh;s0=s1-h; phi1=barphi;phi0=feval(phi,s0); end end end else break; endends=s1;phis=feval(phi,s1);ds=abs(s-s0);dphi=abs(phi1-phi0);E=[ds dphi];
MATLA实验结果
>> phi = @(x)3*x^2-2*tan(x);>> delta=1e-5;epsilon=1e-4;>> a=0;b=1;>> [s,phis,i,E,S]=paowxf(phi,a,b,delta,epsilon);>> [s,phis,i,E]ans = Columns 1 through 3 0.389493192257377 -0.365810354364081 8 Columns 4 through 5 1.78999870481533e-10 1.11022302462516e-16
程序对于函数
- 马昌凤. 最优化方法及其Matlab程序设计[M]. 科学出版社, 2010. ↩
阅读全文
0 0
- 精确线搜索——抛物线法
- 精确线搜索-黄金分割法
- 漫步最优化三十——非精确线搜索
- 【MATLAB】一维搜索之抛物线法
- 非精确线搜索
- 非精确线搜索之Armijo搜索
- 精确线搜索之黄金分割法(0.618法)
- Lucene小练九——各种搜索(精确,范围,数字)
- 精确搜索
- 抛物线组件——jquery.paracurve.js
- 结合进退法和抛物线法的一维搜索程序
- 抛物线
- 抛物线
- 抛物线
- 使用非精确线搜索Armijo算法确定步长的最速下降法(MATLAB)
- magento精确搜索
- [转载]手机游戏物理模型之——抛物线
- 手机游戏物理模型之——抛物线
- Eclipse 调优
- hbase报错Could not initialize class org.apache.hadoop.hbase.protobuf.ProtobufUtil
- 苹果appstore加急审核方法
- ubuntu环境下Pytorch安装及No module named 'torch._C'问题解决
- OpenGL学习:坐标变换(2)-视变换(view transformation)
- 精确线搜索——抛物线法
- IO操作:同步,异步,阻塞,非阻塞
- 使用 HTTP 访问 API
- SeqGAN——对抗思想与增强学习的碰撞
- 线程和进程
- Hibernate之ID生成策略—联合主键
- linux环境下配置mysql双主复制
- 字典序排序算法解析
- PHP filter初学