Page 171 - 数学建模算法与应用
P. 171
第六章 非线性规划的研究
[X,FVAL]=FMINUNC(FUN,X0,OPTIONS,P1,P2, ...)
其中的返回值 X 为极小点,FVAL 为函数极小值。FUN 为 1 个 M 文件,当
FUN 只有 1 个返回值,其返回值是函数为 f (x);当 FUN 有 2 个返回值,其第 2
个返回值为 f (x) 的梯度向量;当 FUN 有 3 个返回值,其第 3 个返回值为 f (x) 的
二阶导数阵(Hessian 阵)。X0 为向量 x 的初始值,OPTIONS 为优化参数,可
使用缺省参数。P1,P2 是可传 FUN 的一些参数。
2
2 2
例 求函数 f (x) = 100(x2 - x1 ) + (1- x1 ) 的最小值。
解:编写 M 文件 fun2.m 如下:
function [f,g]=fun2(x);
f=100*(x(2)-x(1)^2)^2+(1-x(1))^2;
g=[-400*x(1)*(x(2)-x(1)^2)-2*(1-x(1));200*(x(2)-x(1)^2)];
编写主函数文件 example6.m 如下:
options = optimset(‘GradObj’,’on’);
[x,y]=fminunc(‘fun2’,rand(1,2),options)
即可求得函数的极小值。
在求极值时,也可以利用二阶导数,编写 M 文件 fun3.m 如下:
function [f,df,d2f]=fun3(x);
f=100*(x(2)-x(1)^2)^2+(1-x(1))^2;
df=[-400*x(1)*(x(2)-x(1)^2)-2*(1-x(1));200*(x(2)-x(1)^2)];
d2f=[-400*x(2)+1200*x(1)^2+2,-400*x(1)
-400*x(1),200];
编写主函数文件 example62.m 如下:
options = optimset(‘GradObj’,’on’,’Hessian’,’on’);
[x,y]=fminunc(‘fun3’,rand(1,2),options)
即可求得函数的极小值。
求多元函数的极值也可以使用 Matlab 的 fminsearch 命令,其使用格式为:
[X,FVAL,EXITFLAG,OUTPUT] = FMINSEARCH(FUN,X0,
OPTIONS,P1,P2,...)
161

