ЛАБА

ЛАБА

Александр Солдатов

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');




Report Page