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

Никитина Дарья ПИН-21Д ЛР7

.docx
Скачиваний:
0
Добавлен:
15.06.2021
Размер:
850.26 Кб
Скачать

Лабораторная работа №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) - точка условного максимума

>>