matlab fminsearch函数 …

来源:互联网 发布:华三交换机端口配置 编辑:程序博客网 时间:2024/06/06 00:39
 fminsearch能够从一个初始值开始,找到一个标量函数的最小值。通常被称为无约束非线性优化

    x = fminsearch(fun,x0)从x0开始,找到函数fun中的局部最小值x,x0可以是标量,向量,矩阵。fun是一个函数句柄

    x =fminsearch(fun,x0,options)以优化参数指定的结构最小化函数,可以用optimset函数定义这些参数。(见matlab help)

[x,fval] = fminsearch(...)返回在结果x出的目标函数的函数值

[x,fval,exitflag] = fminsearch(...)返回exitflag值来表示fminsearch退出的条件:

1--函数找到结果x

0--函数最大功能评价次数达到,或者是迭代次数达到

-1--算法由外部函数结束

[x,fval,exitflag,output] = fminsearch(...)返回一个结构输出output,包含最优化函数的信息:output.algorithm 使用的优化算法
output.funcCount 函式计算次数
output.iterations 迭代次数
output.message 退出信息

如果fun是有参数的,那么可以定义个匿名函数去获得独立的参数,例如,若果需要估计的函数为

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])

示例:
>> a=@(x)sin(x(1))+cos(x(2))

a = 

   @(x)sin(x(1))+cos(x(2))

>> [x,fval,exitflag,output]=fminsearch(a,[-1,-1])

x =

  -1.570778690181897 -3.141576124035424


fval =

  -1.999999999707862


exitflag =

    1


output = 

    iterations: 41
    funcCount: 81
    algorithm: 'Nelder-Mead simplex directsearch'
      message: [1x196 char]

0 0
原创粉丝点击