fminsearch函数使用.doc

上传人:汽*** 文档编号:542360731 上传时间:2024-02-15 格式:DOC 页数:6 大小:36.51KB
返回 下载 相关 举报
fminsearch函数使用.doc_第1页
第1页 / 共6页
fminsearch函数使用.doc_第2页
第2页 / 共6页
fminsearch函数使用.doc_第3页
第3页 / 共6页
fminsearch函数使用.doc_第4页
第4页 / 共6页
fminsearch函数使用.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《fminsearch函数使用.doc》由会员分享,可在线阅读,更多相关《fminsearch函数使用.doc(6页珍藏版)》请在金锄头文库上搜索。

1、MATLAB-fminsearch函数的使用fminsearch函数用来求解多维无约束的线性优化问题用derivative-free的方法找到多变量无约束函数的最小值语法x = fminsearch(fun,x0)x = fminsearch(fun,x0,options)x,fval = fminsearch(.)x,fval,exitflag = fminsearch(.)x,fval,exitflag,output = fminsearch(.)解释fminsearch能够从一个初始值开始,找到一个标量函数的最小值。通常被称为无约束非线性优化x = fminsearch(fun,x0)

2、从x0开始,找到函数fun中的局部最小值x,x0可以是标量,向量,矩阵。fun是一个函数句柄x = fminsearch(fun,x0,options) 以优化参数指定的结构最小化函数,可以用optimset函数定义这些参数。(见matlab help)x,fval = fminsearch(.)返回在结果x出的目标函数的函数值x,fval,exitflag = fminsearch(.) 返回exitflag值来表示fminsearch退出的条件:1-函数找到结果x0-函数最大功能评价次数达到,或者是迭代次数达到-1-算法由外部函数结束x,fval,exitflag,output = fmi

3、nsearch(.) 返回一个结构输出output,包含最优化函数的信息:output.algorithm 使用的优化算法output.funcCount 函式计算次数output.iterations 迭代次数output.message 退出信息另外fun是需要最小化的函数,他的输入为input,输出为标量f,目标函数在x上作出估计,函数可以为M文件的一个句柄函数(当是M文件时,用单引号括起文件名):functionx = fminsearch(myfun, x0)这里function f = myfun(x)f = . 其自变量为x或者直接写出asx = fminsearch(x)sin

4、(x2), x0);例子例1:一个典型的测试就是求多维the Rosenbrock banana function函数的最小值,其最小值在(1,1),其值为0. 一般开始迭代在(-1.2,1). 这里定义一个句柄函数banana = (x)100*(x(2)-x(1)2)2+(1-x(1)2;将这个函数传递给fminsearch为x,fval = fminsearch(banana,-1.2, 1)。结果x =1.00001.0000fval =8.1777e-010说明函数在x处有近似于0的最小值,且估计结果有四位小数例2:如果fun是有参数的,那么可以定义个匿名函数去获得独立的参数,例如,

5、若果需要估计的函数为function f = myfun(x,a)f = x(1)2 + a*x(2)2因为myfun中有一个位置参数a,所以不能直接传给fminsearch中。所以需要最优化具体的a,例如a = 1.5首先定义 a = 1.5;然后x = fminsearch(x) myfun(x,a),0,1)for a specific value of a, such as a = 1.5.Assign the value to a. a = 1.5; % define parameter firstCall fminsearch with aone-argument anonymou

6、s function that captures that value of a andcalls myfun with two arguments:x = fminsearch(x) myfun(x,a),0,1)例3 我们可以将例1中的banana函数改变一下,这样最小值点改变到了a,a2.对于一个特定的a,如a=sqrt(2),我们可以如下做a = sqrt(2);banana = (x)100*(x(2)-x(1)2)2+(a-x(1)2;然后x,fval = fminsearch(banana, -1.2, 1, optimset(TolX,1e-8);则可以找到一个比默认值准确度高

7、的x,使sqrt(2), 2 为最小值算法fminsearch使用单纯型法,这是一种不会使用数值或者梯度分析的直接的方法假如x的长度为n,那么会有n+1个顶点,两维空间中,单纯型是三角形,三维空间,他是一个锥形。搜索的每一步中,都会产生离当前单纯型比较近的点,在新的点上的函数值回合单纯型各个顶点上的值比较,一般都会有一个定点被替代,产生一个新的单纯型,重复步骤,直到单纯型的大小小于阈值。限制fminsearch可以处理不连续的问题,如果得不到全局最优,则其会得到局部最优它只能最小化时数,复数并不在其能力范围之内,且f(x)的返回值也必须是时数,如果x为复数,则其必须分解为实部和虚部两部分。我们

8、可以稍微对进行一些变换,就可实现利用fminsearch进行参数估计。例如,原始信号发生器模型为:Z=3*exp(-0.4*x)+12*exp(-3.2*x);假设有两个参数我们未知,即我们要进行参数估计的模型为z=a(1)*exp(a(2)*x)+a(3)*exp(a(4)*x);下面我们只需采用以下代码就可以实现上述参数的估计。x=0:0.2:4;Z=3*exp(-0.4*x)+12*exp(-3.2*x);c=1 1 1 1;options=optimset(fminsearch);options.TolX=0.001;options.Display=off;a,sfval,sexit,soutput=fminsearch(fun,c,options,x,Z)函数定义为:function E=fun(a,x,Z)z=a(1)*exp(a(2)*x)+a(3)*exp(a(4)*x);E=sum(Z-z).2);结果为:a =3.0004-0.400111.9994-3.2000sfval =1.5099e-007sexit =1soutput =iterations: 190funcCount: 322algorithm: Nelder-Mead simplex direct search

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号