matlab tolx,Nelder-Mead算法matlab

本文介绍了Nelder-Mead算法的基本原理和在Matlab中的实现,该算法适用于求解多变量方程的极值问题。通过fminsearch函数和自编的Opt-Nelder及Nelder0函数,可以解决不同维度的最优化问题。文中还提供了示例代码以演示算法的应用。
摘要由CSDN通过智能技术生成

Nelder-Mead算法适合变量数不是很多的方程求极值.

原理:Nelder-Mead法是利用多面体来逐步逼近最佳点x*.设函数变量为n维,则在n维空间里多面体有(n+1)个顶点.设x1,x2,...,xn+1为多面体的顶点,且满足:

f(x1)<=f(x2)<=...<=f(xn+1)

Nelder-Mead法试着将多面体中最差的顶点xn+1(也就是函数的最大点)以新的最佳点替代,来更新多面体,使之逼近最佳解.更新的设定方式有四种,分别是:反射,扩展,外收缩,内收缩.如果这四种方法都不适用,则进行变小步骤.

算法实现:

matlab里面有个函数叫做fminsearch就是用这个算法实现的

在matlab中编程实现Nelder-Mead算法为:Opt-Nelder.

功能:Nelder-Mead算法求无约束最优化解.

调用格式:[xo,fo]=Opt_Nelder(f,x0,TolX,TolFun,MaxIter).

其中,f为函数名;

x0为搜索初值;

TolX为最优值点间的误差阈值;

TolFun为函数的误差阈值;

xo为最优化点值;

fo为函数在点xo处的函数值;

算法程序分Nelder0.m和Opt-Nelder.m其中子程序Nelder0.m用于二维空间上的多边形最优化逼近.对于大于2维的情形,可以通过若干次二维迭代计算求出最优值.Opt-Nelder.m可求解若干维变量的最优化问题.

(1)Nelder0.m

function [xo,fo]=Nelder0(f,abc,fabc,TolX,TolFun,k)

%二维空间中的多边形逼近

%   f:函数名

%   abc:二维空间三个顶点值

%   fabc:三个顶点处的函数

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值