Никитина Дарья ПИН-21Д ЛР7
.docx
Лабораторная
работа №7
Компьютерный
практикум по математическому анализу
никитина
дарья пин-21д
Текст программы
clear;clc; close all
% Практикум 8.Условный экстремум функции нескольких переменных
% Упражнение 1. (Upr_8_1.m)
%% ========== Поверхность 1 ========
y=linspace(-1,1,20);
x=linspace(-1,1,20);
[X,Y]=meshgrid(x,y);
Z=@ (X,Y)X.^3/3+Y.^3/3;% Функция цели
Yr=@ (X) 1/4-X/4;% Ограничение
figure
mesh(X, Y, Z(X,Y));
hold on
view(-61,8)% Углы обзора
title ('Z=X.^3/3+Y.^3/3');
xlabel('x'); ylabel('y'); zlabel('z')
%Нанесение на поверхность линии ограничения
plot3(x,Yr(x),Z(x,Yr(x)),'r','LineWidth',2);%Линия ограничения на поверхности
%% ========== Поверхность 2 ===========
figure
y=linspace(-10,10,20);
x=linspace(-5,5,20);
[X,Y]=meshgrid(x,y);
Z=@ (X,Y)X.^2+12*X.*Y+2*Y.^2;% Функция цели
Yr1=@(X) sqrt(25-4*X.^2);% Ограничение
Yr2=@(X) -sqrt(25-4*X.^2);% Ограничение
mesh(X, Y, Z(X,Y));
hold on
view(-134,49)% Углы обзора
title ('Z=X^2+12*X*Y+2*Y^2');
xlabel('x'); ylabel('y'); zlabel('z')
%Нанесение на поверхность линии ограничения
x=linspace(-2.5,2.5,20);
plot3(x,Yr1(x),Z(x,Yr1(x)),'r','LineWidth',2);%Линия ограничения на поверхности
plot3(x,Yr2(x),Z(x,Yr2(x)),'r','LineWidth',2);%Линия ограничения на поверхности
%% ========== Поверхность 3 ========
figure
y=linspace(-5,5,20);
x=linspace(-2,3,20);
[X,Y]=meshgrid(x,y);
Z=@ (X,Y)(X+1).^2+Y.^2;% Функция цели
Yr1=@(X) sqrt(X.^3);% Ограничение
Yr2=@(X) -sqrt(X.^3);% Ограничение
mesh(X, Y, Z(X,Y));
hold on
view(-60,47)% Углы обзора
title ('Z=X^2+12*X*Y+2*Y^2');
xlabel('x'); ylabel('y'); zlabel('z')
%Нанесение на поверхность линии ограничения
x=linspace(0,2,10);
plot3(x,Yr1(x),Z(x,Yr1(x)),'r','LineWidth',2);%Линия ограничения 1 на поверхности
plot3(x,Yr2(x),Z(x,Yr2(x)),'r','LineWidth',2);%Линия ограничения 2 на поверхности
Результат
Текст программы
clear;clc; close all
% Практикум 8.Условный экстремум функции нескольких переменных
% Упражнение 2. (Upr_8_2.m)
syms x y z
z=x^3/3+y^3/3; %Функция цели
yr=1/4-x/4;% Функция ограничения, разрешенная относительно переменной у
%Подстановка в функцию цели z выражение для у из функции ограничения и
% сведение задачи на условный экстремум функции 2-х переменных к
% задаче на безусловный экстремум функции одной переменной
Zu=inline(subs(z, y, yr));
Yr=inline(yr);
Z=inline(z);
y=linspace(-0.5,0.5,20);
x=linspace(-0.5,0.5,20);
[X,Y]=meshgrid(x,y);
figure
mesh(X, Y, Z(X,Y));
hold on
view(-61,8)% Углы обзора
title ('Z=X^3/3+Y^3/3');
xlabel('x'); ylabel('y'); zlabel('z')
%Нанесение на поверхность линии ограничения
plot3(x,Yr(x),Z(x,Yr(x)),'r','LineWidth',2);%Линия ограничения на поверхности
% Поиск экстремума функции Zu(x) методом половинного деления
a=0;b=-0.2;k=0;eps=0.0001;
while abs(b-a)>eps
x1=(a+b)/2;
k=k+1;
F1=Zu(x1-eps);
F2=Zu(x1+eps);
if F1>F2
a=x1;
else
b=x1;
end
Xmax=(a+b)/2;
end
Ymax=Yr(Xmax);
disp(' Точка условного максимума')
fprintf(' Xmax= %5.4f, Ymax=%5.4f, Z(Xmax,Ymax) = %5.4f\n',[Xmax, Ymax,Zu(Xmax)])
%===================================================================
plot3(Xmax,Ymax,Zu(Xmax),'ob','LineWidth',3);%Точка безусловного максимума
text(-1,0.1 ,0.05,'Условныйй максимум','color','k')
hold off
% Нанесение на линии уровней прямую ограничения и точку максимума.
figure
[C,h]=contour(X,Y,Z(X,Y),15); grid
set(h,'LevelStep',0.01, 'TextStep',0.02,'color','b')%
clabel(C,h,'FontSize',8);
hold on
plot(x,Yr(x),'m','LineWidth',1);% Линия ограничения
xlabel('x'); ylabel('y');
text(Xmax,Ymax,'O','color','r')
title('Линии уровней поверхности, прямая ограничения и точка максимума')
hold off
Результат
Точка условного максимума
Xmax= -0.1428, Ymax=0.2857, Z(Xmax,Ymax) = 0.0068
Точка условного минимума
Xmin= 0.1111, Ymin=0.2222, Z(Xmin,Ymin) = 0.0041
Построим линии уровней всех трех функций и нанесем на них линию ограничения.
Текст программы
clear;clc; close all
% Практикум 8.Условный экстремум функции нескольких переменных
% Упражнение 3. (Upr_8_3.m)
%% ========== Поверхность 1 ========
y=linspace(-0.5,0.5,20);
x=linspace(-0.5,0.5,20);
[X,Y]=meshgrid(x,y);
Z=@ (X,Y)X.^3/3+Y.^3/3;% Функция цели
Yr=@ (X) 1/4-X/4;% Ограничение
figure
[C,h]=contour(X,Y,Z(X,Y),15); grid
set(h,'LevelStep',0.01, 'TextStep',0.02,'color','b')%
clabel(C,h,'FontSize',8);
hold on
plot(x,Yr(x),'m','LineWidth',1);% Линия ограничения
xlabel('x'); ylabel('y');
title('Линии уровней поверхности и прямая ограничения )
hold off
%% ========== Поверхность 2 ========
y=linspace(-5.5,10);
x=linspace(-5,5,10);
[X,Y]=meshgrid(x,y);
Z=@ (X,Y)X.^2+12*X.*Y+2*Y.^2;% Функция цели
Yr1=@(X) sqrt(25-4*X.^2);% Ограничение
Yr2=@(X) -sqrt(25-4*X.^2);% Ограничение
figure
[C,h]=contour(X,Y,Z(X,Y),15); grid
set(h,'LevelStep',0.01, 'TextStep',0.02,'color','b')%
clabel(C,h,'FontSize',8);
hold on
x=linspace(-2.5,2.5,30);
plot(x,Yr1(x),'m','LineWidth',1);% Линия ограничения
plot(x,Yr2(x),'m','LineWidth',1);% Линия ограничения
xlabel('x'); ylabel('y');
title('Линии уровней поверхности и прямая ограничения)
hold off
%% ========= Поверхность 3 =================
figure
y=linspace(-3,3,10);
x=linspace(-2,3,10);
[X,Y]=meshgrid(x,y);
Z=@ (X,Y)(X+1).^2+Y.^2;% Функция цели
Yr1=@(X) sqrt(X.^3);% Ограничение
Yr2=@(X) -sqrt(X.^3);% Ограничение
[C,h]=contour(X,Y,Z(X,Y),15); grid
set(h,'LevelStep',0.01, 'TextStep',0.02,'color','b')%
clabel(C,h,'FontSize',8);
hold on
x=linspace(0,2,10);
plot(x,Yr1(x),'m','LineWidth',1);% Линия ограничения 1
plot(x,Yr2(x),'m','LineWidth',1);% Линия ограничения 2
xlabel('x'); ylabel('y');
title('Линии уровней поверхности и прямая ограничения)
hold off
Результаты
Условный экстремум будет наблюдаться тогда, когда линии уровней функции цели и линия ограничения касаются друг друга, т.е. имеют общую касательную. В заданиях а) и б) наблюдается именно эта ситуация. В задании а) имеются два условных экстремума, а в б) их четыре. В случае в) линия ограничения пересекает все линии уровней целевой функции, в этом задании условный экстремум отсутствует.
Текст программы
clear;clc; close all
% Практикум 8.Условный экстремум функции нескольких переменных
% Упражнение 3. (Upr_8_4.m)
syms x y z L
% z=x^3/3+y^3/3; %Функция цели
% fi=x+4*y-1;% Функция ограничения
% z=x^2+12*x*y+2*y^2; %Функция цели
% fi=4*x^2+y^2-25; Функция ограничения
z=input('Введите целевую функцию z = ','s');
fi=input('Введите функцию ограничения fi = ','s');
disp(' ')
disp('Функция Лагранжа')
Lagr=z+L*fi ; disp(Lagr)
% Вычисление частных производных 1-го порядка
dLagrx=diff(Lagr,x);
dLagry=diff(Lagr,y);
dLagrL=diff(Lagr,L);
dfix=diff(fi,x);
dfiy=diff(fi,y);
%Решение системы трех уравнений, суть которых
% необходимое условие экстремума функции 3-х переменных
solv=solve([dLagrx==0,dLagry==0,dLagrL==0],[x,y,L]);
disp(' Координаты (X,Y,L) - стационарных точек')
R=[double(solv.x) double(solv.y) double(solv.L)]; disp(R)
% Вычисление частных производных 2-го порялка
d2Lagrx=diff(Lagr,x,2);
d2Lagry=diff(Lagr,y,2);
dLagrxy=diff(Lagr,x,y);
disp('Матрица 2-х производных функции Лагранжа и 1-х функции ограничения ')
D=-[0 dfix dfiy; dfix d2Lagrx dLagrxy; dfiy dLagrxy d2Lagry]; disp(D)
disp('Символьнов выражение определителя матрицы')
DD=det(D);disp(DD)
% Численный расчет определителя Гессе и выявление точек экстремума
disp(' Стационарные точка')
for i=1:size(R,1)
DD_n(i)=double(subs(DD,[x,y,L],[R(i,1),R(i,2),R(i,3)]));
if DD_n(i)<0
fprintf(' (%5.3f; %5.3f) - точка условного максимума\n',[R(i,1), R(i,2)])
elseif DD_n(i)>0
fprintf(' (%5.3f; %5.3f) - точка условного минимума\n',[R(i,1), R(i,2)])
else
disp('Экстремум не обнаружен')
end
end
Результат
Введите целевую функцию z = x^3/3+y^3/3
Введите функцию ограничения fi = x+4*y-1
Функция Лагранжа
L*(x + 4*y - 1) + x^3/3 + y^3/3
Координаты (X,Y,L) - стационарных точек
-0.1429 0.2857 -0.0204
0.1111 0.2222 -0.0123
Матрица 2-х производных функции Лагранжа и 1-х функции ограничения
[ 0, -1, -4]
[ -1, -2*x, 0]
[ -4, 0, -2*y]
Символьнов выражение определителя матрицы
32*x + 2*y
Стационарные точка
(-0.143; 0.286) - точка условного максимума
(0.111; 0.222) - точка условного минимума
>>
Введите целевую функцию z = x^2+12*x*y+2*y^2
Введите функцию ограничения fi = 4*x^2+y^2-25
Функция Лагранжа
L*(4*x^2 + y^2 - 25) + 12*x*y + x^2 + 2*y^2
Координаты (X,Y,L) - стационарных точек
2.0000 -3.0000 2.0000
-2.0000 3.0000 2.0000
-1.5000 -4.0000 -4.2500
1.5000 4.0000 -4.2500
Матрица 2-х производных функции Лагранжа и 1-х функции ограничения
[ 0, -8*x, -2*y]
[ -8*x, - 8*L - 2, -12]
[ -2*y, -12, - 2*L - 4]
Символьное выражение определителя матрицы
128*L*x^2 - 384*x*y + 32*L*y^2 + 256*x^2 + 8*y^2
Стационарные точки
(2.000; -3.000) - точка условного минимума
(-2.000; 3.000) - точка условного минимума
(-1.500; -4.000) - точка условного максимума
(1.500; 4.000) - точка условного максимума
>>