主要内容

不受约束的最小化使用fminunc

此示例显示了如何使用fminunc解决非线性最小化问题

最小 X F (( X = e X 1 (( 4 X 1 2 + 2 X 2 2 + 4 X 1 X 2 + 2 X 2 + 1

要解决这个二维问题,请写一个返回的函数 F (( X 。然后,调用无约束的最小化例程fminunc从初始点开始x0 = [-1,1]

辅助功能objfun示例的结尾计算 F (( X

找到最低 F (( X ,设置初始点并致电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);结尾

相关示例

更多关于