找回密码
 注册
Simdroid-非首页
查看: 98|回复: 1

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

[复制链接]
发表于 2009-7-13 22:04:36 | 显示全部楼层 |阅读模式 来自 四川成都
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 experimentallyxdata = [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是拟合的误差。

评分

1

查看全部评分

发表于 2009-7-19 17:01:40 | 显示全部楼层 来自 湖北荆州
Simdroid开发平台
还有很多优化函数,具体的可以看优化工具箱中的函数
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 09:23 , Processed in 0.035528 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表