Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пособие в_3_20

.pdf
Скачиваний:
17
Добавлен:
28.06.2021
Размер:
1.39 Mб
Скачать

xh = x3; nh = 3;

end

%самая низкая точка F Fmin = min([F1 F2 F3]); switch Fmin

case F1

xl = x1; case F2

xl = x2; case F3

xl = x3;

end

%Центр тяжести, спроецированный на ребро симплек-

са,

%относительно которого выполняется отображение

x4 = 1./n .* (x1+x2+x3-xh); plot(x4(1), x4(2), 'kh'); hold on; F4 = F(x4);

% проверка критерия достаточной малости симплекса if (((F1-F4)^2+(F2-F4)^2+(F3-F4)^2)/3 < TolFun),

disp('Сходимость достигнута');

sprintf('x1 опт = %f, x2 опт = %f, Fmin = %f', xl(1), xl(2), Fmin)

break;

end

% отображаем точку

x5 = x4 + alpha*(x4-xh); plot(x5(1), x5(2), 'ms'); hold on;

plot([xh(1) x5(1)], [xh(2) x5(2)], '--') F5 = F(x5);

sprintf('ЦФ в точке х5 %f', F(x5))

if (F5<F(xh)), % в новой точке получено меньшее значение ЦФ

x(:,nh) = x5;

else % сжатие симплекса

if (x1 ~= xl), x(:,1) = xl + 0.5*(x1 - xl); end if (x2 ~= xl), x(:,2) = xl + 0.5*(x2 - xl); end

11

if (x3 ~= xl), x(:,3) = xl + 0.5*(x3 - xl); end end

x1 = x(:,1);

x2 = x(:,2);

x3 = x(:,3); end

Задание для самостоятельного решения:

Минимизировать целевую функцию F x в окрестностях точек x0 5; 5 ; x0 5; 5 ; x0 5; 5 .

12