加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab fminsearch函数 求多元函数的最小值

(2014-06-01 17:48:21)
标签:

it

matlab

函数

fminsearch

多元函数最小值

分类: matlab基础
 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 direct search'
       message: [1x196 char]

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有