MATLAB 无约束一维极值问题
来源:互联网 发布:java boolean几个字节 编辑:程序博客网 时间:2024/06/11 11:11
无约束一维极值问题
极值问题表达式:min f(x) x,x[ x1 x2];
一维极值的搜索方式包括线性搜索和非线性搜索,线性搜索包含黄金分割法、斐波那契法和牛顿法,非线性方法包含抛物线法和三次样条插值。
1、进退法
算法原理:
进退法就是用来确定搜索区间的算法,理论依据:f(x)为函数有一极值,且【a b】为极值的区间,对于任一x1 和x2属于【a b】,如果f(x1)<f(x2),则【a x2】为极小值的搜索区间,如果f(x1)>f(x2),则搜索区间为【x1 b】为极小值的搜索区间,
因此,给定初始值x0,初始搜索步长h的情况下,首先以初始步长进行搜索,计算f(x0+h),
(1)如果f(x0)<f(x0+h)
则搜索区间为【x x+h】,为确定x,计算f(x0+ƪh),,
(2)如果f(x0)>f(x0+h)
则搜索区间为【x+h x】,为确定x,计算f(x0+ƪh),,
算法步骤:
1、给定初值x(0),初始步长h0,领h=h0,x(1)=x(0),k=0
2、给定x(4)=x(1)+h,置k=k+1
3、若f(x(4))<f(x(0)),则转到4,否则转到5
4、令x(2)=x(1),x(1)=x(4),f(x(2))=f(x(1)),f(x(1))=f(x(4)),令h=2*h
5、若k=1,转到6,否则转到7
6、令h=-h,x(2)=x(4),f(x(2))=f(x(4)),转到2
7、令x(3)=x(2),x(2)=x(1),x(1)=x(4),停止计算,极小点包含区间[x(0) x(1)],或者【x(3) x(1)]
算法代码:
<span style="font-size:18px;"><strong>%进退法% 功能:用进退法法求解一维函数极值%目标函数:f% 初始点:x0% 初始步长h0% 精度 eps% 目标函数取包含极值的区间左端点 minx% 目标函数取包含极值的区间右端点 maxxfunction [minx,maxx]=minJT(f,x0,h0,eps)format long;if nargin==3 eps=1.0e-6;endx1=x0;k=0;h=h0;while 1 x4=x1+h; k=k+1; f4=subs(f,findsym(f),x4); f1=subs(f,findsym(f),x1); if f4<f1 x2=x1; x1=x4; f2=f1; f1=f4; h=2*h; else if k==1 h=-h; x2=x4; f2=f4; else x3=x2; x2=x1; x1=x4; break; end endendminx=min(x1,x3);maxx=x1+x3-minx;format short;</strong></span>
0 0
- MATLAB 无约束一维极值问题
- MATLAB学习笔记03——无约束一维极值问题(一)进退法和黄金分割法
- MATLAB学习笔记05——无约束一维极值问题(二)斐波那契法、基本牛顿法和全局牛顿法
- MATLAB学习笔记06——无约束一维极值问题(三)优化工具箱及工具箱函数fminbnd的改进
- 无约束问题的极值条件
- 无约束极值问题的解法
- 徐海蛟:MatLab一维数组求解局部极值
- 无约束问题极值的求解及数学建模算法与应用第三章
- Matlab基础学习------------------函数的极值、积分问题Matlab实现
- C++实现MATLAB一维数组函数findpeaks()函数求一维离散值极值(波峰波谷)
- (波峰波谷)C++实现MATLAB一维数组函数findpeaks()函数求一维离散值极值
- 无约束最优化一
- Matlab无约束优化小例
- 无约束最优化问题
- 无约束最优化问题
- 极值问题
- 极值问题
- 无约束极值、线性分类器和线性回归基础
- 中亿佰联:民间借贷阳光规范化建设
- Label Button和textfield组合
- test
- jdbc-odbc连接dbf (转)
- uva11732 字典树
- MATLAB 无约束一维极值问题
- 【CSAPP】proxy Lab代理实验
- 双向冒泡排序
- SQL语句执行效率及分析
- Linux下实现简单Echo中继服务器
- unity3d中的local和global
- 排序分类基本介绍
- 树与二叉树
- 设计模式—单例模式(Singleton pattern)