ЛАБА
Александр Солдатовclc,clear,close all
% Строим график нашей исходной функции
x1=0:0.01:2;
x2=0:0.01:2;
[X, Y]=meshgrid(x1,x2); % генерирование решеток
f=@(x,y)x.*y.*exp(-(x+y));
Z=f(X, Y);
subplot(1,3,1)
mesh(X, Y, Z) % «проволочная» поверхность
hold on
title('График функции двух переменных');
xlabel('X');
ylabel('Y');
zlabel('Z');
% 1 пункт
f=@(x)x(1).*x(2).*exp(-(x(1)+x(2))); % Задаем функцию, зависящую от одной переменной
extr1=fminsearch(@(x)-f(x) ,[0 2]) % находим экстремум функции на определённом интервале, функция минимизируется.
% 2 пункт
f=@(x)x(1).*x(2).*exp(-(x(1)+x(2))); % Задаем функцию, зависящую от одной переменной
eps=[1e-2 1e-3 1e-4 1e-5 1e-6 1e-7]; % вектор значений точности
for i=1:6
EXTR22(i,:)=fminsearch(@(x)-f(x),[0 2],optimset('TolX', eps(i))); % TolX - Положительный скаляр
%options = optimset('param1',value1,'param2',value2,)
%Создает структуру параметров опций оптимизации, называемую как options и в которой специфицированные параметры (param) имеют специфицированные значения.
%Любой неспецифицированный параметр устанавливается как [] (параметры со значением [] указывают, что когда опция передаются в оптимизационную функцию, то для данных параметров используются принимаемые по умолчанию значения).
%Для того, что бы однозначно определить имя параметра,... достаточно только набрать определяющие начальные символы. Такая операция не допускается для имен параметров.
EXTR2(i,:)=vpa(EXTR22(i,:),7); % Функция vpa используется для задания количества значащих цифр
EXTR2
Y1(i)= EXTR2(i,1); % формирование векторов для построения зависимости x1 x2 от точности
Y2(i)= EXTR2(i,2);
end
subplot(1,3,2)
plot(eps,Y1,'k')
hold on
plot(eps,Y2,'g')
title('График x1 x2 от eps, безусловная оптимизация');
xlabel('eps');
ylabel('x1,x2');
% 3 пункт
f=@(x)x(1).*x(2).*exp(-(x(1)+x(2)));
ogr1=[0 0]; % задаём ограничения
ogr2=[2 2];
eps=[1e-2 1e-3 1e-4 1e-5 1e-6 1e-7];
for i=1:6
% Ищем максимум этой функции с заданной точностью в заданных ограничениях, записывая ответы в матрицу
EXTR33(i,:)=fmincon(@(x)-f(x),[0 2],[],[],[],[],ogr1,ogr2,[],optimset('TolX', eps(i)));
%fmincon находит минимум для скалярной функции нескольких переменных с ограничениями начиная с начального приближения.
%В общем случае, эта задача относится к нелинейной оптимизации с ограничениями или к нелинейному программированию.
% x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) проводит минимизацию с оптимизационными параметрами, определенными в структурной опции
% Записываем полученные значения с увеличенным количеством знаков после запятой
EXTR3(i,:)=vpa(EXTR33(i,:),7);
Y1(i)=EXTR3(i,1);
Y2(i)=EXTR3(i,2);
end
EXTR3
subplot(1,3,3)
plot(eps,Y1,'c')
hold on
plot(eps,Y2,'r')
title('График x1 x2 от eps,условная оптимизация');
xlabel('eps');
ylabel('x1,x2');