不受约束的最小化使用fminunc
此示例显示了如何使用fminunc
解决非线性最小化问题
要解决这个二维问题,请写一个返回的函数
。然后,调用无约束的最小化例程fminunc
从初始点开始x0 = [-1,1]
。
辅助功能objfun
在示例的结尾计算
。
找到最低
,设置初始点并致电fminunc
。
x0 = [-1,1];[x,fval,exitflag,输出] = fminunc(@objfun,x0);
找到局部最低限度。完成优化是因为梯度的大小小于最佳公差的值。
查看结果,包括在输出
结构体。
disp(x)
0.5000 -1.0000
disp(FVAL)
3.6609E-15
disp(出口)
1
disp(output.firstorderopt)
1.2284E-07
这出口
输出指示该算法是否收敛。出口
= 1表示fminunc
找到当地的最低限度。
这输出
结构提供了有关优化的更多详细信息。为了fminunc
,结构包括:
output.iterations
,迭代次数output.funccount
,功能评估的数量output.Stepsize
,最后的步进大小output.firstorderopt
,衡量一阶最优性的度量(在这种不受约束的情况下,是溶液处梯度的无穷范围)output.algorithm
,使用的算法类型输出
,算法停止的原因
助手功能
此代码创建objfun
助手功能。
功能f = objfun(x)f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + 1);结尾