注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

notes

@-@

 
 
 

日志

 
 
 
 

优化工具箱常用函数简单介绍  

2009-07-14 12:26:12|  分类: matlab |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1 求一元函数fun在区间[a,b]中的无条件极小值f和极小值点x

[x,f]=fminbnd(fun,a,b)d

其中目标函数fun可以是 @m函数名, 也可以是用内联(inline)函数定义的函数,也可以是匿名函数格式是 @(x) 函数表达式



2 求多元目标函数fun在点x0(向量)附近的无条件极小值f和极小值点x(向量)

[x,f]=fminsearch(fun,x0)

例:

fun=inline(‘x(1)^4+x(2)^4-4*x(1)*x(2)-5’);

[x,f]=fminsearch(fun,[0,0])

得到 x=[1,1], f = -7



3 求多元目标函数fun 在x0附近有条件(线性和非线性的都可以)极值

A*x<=b;

Aeq*x=beq;

lb<=x<=ub;

及非线性条件c(x)<=0, ceq(x)=0约束下的极小值f和极小值点x

用法是

[x,f]= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

输入的第二项以后没有的项可以不写,或写[],输出中第二项以后的项可以不写。

其中nonlcon是非线性条件函数,可以如下编写(函数名自定)

function [c,ceq] = nonlcon(x)

c = ...     % 条件c(x)<= 0. 中的c(x)的表达式

ceq = ...   %条件ceq(x)=0. 中的ceq(x)的表达式.

options是改变默认的设置的选项。



4 MATLAB专用的线性规划函数:

bintprog()  0-1线性规划

Linprog()  线性规划

quadprog()  求二次规划

fminmax()  求极大中的极小,即最大最小值

fsolve()  求根函数,求给定函数的零点

        有时可以通过求 导函数的根来求得极值点,这就是为什么求根函数可以用来解最优化的原因。

lsqcurvefit()  非线性最小二乘曲线拟合函数

例:

假如现在有两组数据,xdata和ydata

xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];

ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];

根据实际的分析可能知道他们大概有下面的关系:

Ydata=a*xdata^2+b*sin(xdata)+c*xdata^3;(此处只是范例,实际上可以是任意方程)

我们可以用来sqcurvefit来就拟合的系数:

首先编写m文件来实现方程:

function F = myfun(x,xdata)
F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3;

然后再进行调用求解:

% Assume you determined xdata and ydata experimentally
xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
x0 = [10, 10, 10]                    % 初始值
[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)

返回值中x是一个向量 为拟合的系数
Resnorm是拟合的误差。
  评论这张
 
阅读(538)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018