Page 267 - 6197
P. 267

функції  включити  у  тіло  вбудованої  функції  необхідно
                            використати функцію
                            options  =  optimset('GradObj','on'),аргументами
                            якої  є  GradObj  та  on  (градієнт  –  включено).  Вихідним
                            аргументом є величина options.
                                Наведемо програму розв’язування поставленої задачі.

                            %=====================================
                            %Нелінійне програмування
                            %=====================================
                            %Вхід
                            %f-М-файл цільової функції
                            %x0-стартова точка
                            %lb-умова невідємності x>0
                            %Вихід
                            %x-вектор оптимальних змінних xj
                            %fval-оптимальне значення цільової функції
                            %-----------------------------------------
                            x0=[5;5;5];
                            lb=[1;1;1]*1e-9;
                            options = optimset('GradObj','on');
                            [x,fval]=fmincon(@g_pr,x0,[],[],[],[],lb,[],...
                                [],options);

                            Файл-функція з цільовою функцією та її градієнтом
                            function [f,Dc]=g_pr(x)
                            %===============================================
                            %Цільова функція f та її градієнт Dc
                            %===============================================
                            f=7*x(1)/x(2)+3*x(2)/(x(3)^2)+5*x(2)*x(3)/x(1)^3
                            +x(1)*x(2)*x(3);
                            Dc(1)=7/x(2)-15*x(2)*x(3)/x(1)^4+x(2)*x(3);
                            Dc(2)=-
                            7*x(1)/x(2)^2+3/(x(3)^2)+5*x(3)/x(1)^3+x(1)*x(3)
                            ;
                            Dc(3)=-6*x(2)/x(3)^3+5*x(2)/x(1)^3+x(1)*x(2);


                                                           267
   262   263   264   265   266   267   268   269   270   271   272