MATLAB中提供了两个命令:fminsearch(),fminunc(),
x = fminsearch(Fun,x0)
[x,fval,flag,out] = fminsearch(Fun,x0,opt,p1,p1,...)
fminunc 与 fminsearch 用法相同。
测试版本 MATLAB 2016b.
例1 已知 $z = f(x,y) = (x^2-x)\text{e}^{-x^2-y^2-xy}$ ,求其最小值并显示求解过程。
>> f = @(x)(x(1)^2-x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2));x0 = [2;1];
>> [x,b,c,d] = fminsearch(f,x0)
x =
28.8538
3.3448
b =
0
c =
1
d =
包含以下字段的 struct:
iterations: 30
funcCount: 94
algorithm: 'Nelder-Mead simplex direct search'
message: '优化已终止:…'
>> [x,b,c,d] = fminunc(f,x0)
警告: Gradient must be provided for trust-region algorithm; using quasi-newton
algorithm instead.
> In fminunc (line 395)
Local minimum found.
Optimization completed because the size of the gradient is less than
the default value of the optimality tolerance.
x =
2.9047
1.9353
b =
1.0247e-07
c =
1
d =
包含以下字段的 struct:
iterations: 13
funcCount: 45
stepsize: 0.0769
lssteplength: 1
firstorderopt: 7.0454e-07
algorithm: 'quasi-newton'
message: 'Local minimum found.…'
转载本文请联系原作者获取授权,同时请注明本文来自王福昌科学网博客。
链接地址:http://blog.sciencenet.cn/blog-292361-1074987.html
上一篇:无约束最优化问题求解
下一篇:MATLAB优化工具箱遗传算法函数ga()用法示例