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
   166   167   168   169   170   171   172   173   174   175   176