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