X y Lamda Real 'Nhap Ham F (X, Y) ': Function

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

function n4b3

syms x y lamda real


f=input('nhap ham f(x,y)= ');f=sym(f);
%hinh chu nhat O(0,0) A(2,2) B(1,3) C(-1,1)
%co dieu kien y<=x+2;y>=x;y>=-x;y<=-x+4;-1<=x<=2;0<=y<=3;
%tim cuc tri trong mien D
[p q]=solve(diff(f,'x'),diff(f,'y'));
[p q]=loai(p,q);
p=double(p);q=double(q);
A=[];
for i=1:length(p)
if q(i)<p(i)+2&q(i)>p(i)&q(i)>-p(i)&q(i)<-p(i)+4&-
1<p(i)<2&0<q(i)<3
A(i,2)=p(i);
A(i,3)=q(i);
A(i,1)=subs(f,[x y],[p(i) q(i)]);
end
end
%00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000

%tim cuc tri tren duong D y=x+2;-1<=m(i)<=1;1<=n(i)<=3

if isempty(A)
k=0;
else
k=size(A,1);
end

phi=x-y+2;
L=f+lamda*(phi);
Lx=diff(L,'x');
Ly=diff(L,'y');
[l m n ]=solve(Lx,Ly,phi);%giai he dao ham cap 1 voi: l <=>
lamda , m <=> x , n <=> y.
[m n]=loai(m,n);
m=double(m);n=double(n);l=double(l); %chuyen sang dang
double
for i=1:length(m)
if -1<=m(i)<=1&1<=n(i)<=3
A(i+k,2)=m(i);
A(i+k,3)=n(i);
A(i+k,1)=subs(f,[x y],[m(i) n(i)]);
end
end
%00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000

%tim cuc tri tren duong D y=x;0<=m(i)<=2;0<=n(i)<=2

if isempty(A)
k=0;
else
k=size(A,1);
end
phi=x-y;
L=f+lamda*(phi);
Lx=diff(L,'x');
Ly=diff(L,'y');
[l m n ]=solve(Lx,Ly,phi);%giai he dao ham cap 1 voi: l <=>
lamda , m <=> x , n <=> y.
[m n]=loai(m,n);
m=double(m);n=double(n);l=double(l); %chuyen sang dang
double
for i=1:length(m)
if 0<=m(i)<=2&0<=n(i)<=2
A(i+k,2)=m(i);
A(i+k,3)=n(i);
A(i+k,1)=subs(f,[x y],[m(i) n(i)]);
end
end
%00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000

%tim cuc tri tren duong D y=-x;-1<=m(i)<=0;0<=n(i)<=1

if isempty(A)
k=0;
else
k=size(A,1);
end
phi=x-y+2;
L=f+lamda*(phi);
Lx=diff(L,'x');
Ly=diff(L,'y');
[l m n ]=solve(Lx,Ly,phi);%giai he dao ham cap 1 voi: l <=>
lamda , m <=> x , n <=> y.
[m n]=loai(m,n);
m=double(m);n=double(n);l=double(l); %chuyen sang dang
double
for i=1:length(m)
if -1<=m(i)<=0&0<=n(i)<=1
A(i+k,2)=m(i);
A(i+k,3)=n(i);
A(i+k,1)=subs(f,[x y],[m(i) n(i)]);
end
end
%00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000

%tim cuc tri tren duong D y=-x+4;1<=m(i)<=2;2<=n(i)<=3

if isempty(A)
k=0;
else
k=size(A,1);
end
phi=x-y+2;
L=f+lamda*(phi);
Lx=diff(L,'x');
Ly=diff(L,'y');
[l m n ]=solve(Lx,Ly,phi);%giai he dao ham cap 1 voi: l <=>
lamda , m <=> x , n <=> y.
[m n]=loai(m,n);
m=double(m);n=double(n);l=double(l); %chuyen sang dang
double
for i=1:length(m)
if 1<=m(i)<=2&2<=n(i)<=3
A(i+k,2)=m(i);
A(i+k,3)=n(i);
A(i+k,1)=subs(f,[x y],[m(i) n(i)]);
end
end
%00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000

%cac dinh cua hinh chu nhat


if isempty(A)
k=0;
else
k=size(A,1);
end
A(i+k,2)=0;A(i+k+1,2)=-1;A(i+k+2,2)=1;A(i+k+3,2)=2;
A(i+k,3)=0;A(i+k+1,3)=1;A(i+k+2,3)=3;A(i+k+3,3)=2;
A(i+k,1)=subs(f,[x y],[0 0]);A(i+k+1,1)=subs(f,[x y],[-1
1]);
A(i+k+2,1)=subs(f,[x y],[1 3]);A(i+k+3,1)=subs(f,[x y],[2
2]);

%00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000

%ve do thi
rotate3d on
grid on
hold on
axis equal
xlabel('Ox');ylabel('Oy');zlabel('Oz');

x=linspace(-1,2,1000);
y=linspace(0,3,1000);
[x y]=meshgrid(x,y);
z=char(f);z=strrep(z,'','.');z=strrep(z,'^','.^');
z=eval(z);

z(y-x-2>0)=nan;
z(y+x-4>0)=nan;
z(y-x<0)=nan;
z(y+x<0)=nan;
surf(x,y,z)

if isempty(A)
disp('khong co GTLN va GTNN')
return
end

a=max(A(:,1));
b=min(A(:,1));
if a==b
if a>subs(f,[x y],[x0+0.12 y0+0.12])
disp(['GTLN f(' num2str(A(1,2)) ',' num2str(A(1,3))
')= ' num2str(A(1,1))])
else
disp(['GTNN f(' num2str(A(1,2)) ',' num2str(A(1,3))
')= ' num2str(A(1,1))])
end
return
end
GTLN='GTLN la ';
GTNN='GTNN la ';

for i=1:size(A)
if A(i,1)==a
GTLN=[GTLN 'f(' num2str(A(i,2)) ',' num2str(A(i,3))
')= '];
text(A(i,2),A(i,3),a+1,['(' num2str(A(i,2)) ','
num2str(A(i,3)) ',' num2str(a) ')' ])
elseif A(i,1)==b
GTNN=[GTNN 'f(' num2str(A(i,2)) ',' num2str(A(i,3))
')= '];
text(A(i,2),A(i,3),b-1,['(' num2str(A(i,2)) ','
num2str(A(i,3)) ',' num2str(b) ')' ])
end
end
GTLN=[GTLN num2str(a)];
GTNN=[GTNN num2str(b)];
disp(GTLN)
disp(GTNN)
hold off

end

% chuong trinh loai bo cac diem khong ton tai cua ham f
function [a b]=loai(a,b)
for i=1:length(a)
if ~isreal(a(i)) || ~isreal(b(i))
a(i,:)=[];
b(i,:)=[];
end
end
end
ví dụ
Hình chữ nhật O(0,0) A(2,2) B(1,3) C(-1,1)

Giá trị Y
3.5

2.5

1.5

0.5

0
-1.5 -1 -0.5 0 0.5 1 1.5 2 2.5

Giả sử f(x,y)=x2+y+y2
Bài toán trở thành Tìm minmax f(x,y) với
D={ −1 ≤ x ≤2; 0≤ y ≤ 3; y ≤ x +2 ; y ≥ x ; y ≥−x ; y ≤−x+ 4 }

_Trong miền D
{ −1< x <2; 0¿ y <3; y < x +2; y> x ; y >−x ; y ← x +4 }
f’x= 2x f’y=2y+1

=> (x,y)=(0,-0.5) loại


cuc tri tren duong D y=x +2 ;−1≤ x ≤ 1; 1 ≤ y ≤ 3

phi=x-y+2;
L=x2+y+y2+lamda(x-y+2)
Lx=2x+lamda
Ly=2y+1-lamda
Giải PT Lx Ly Phi thu được
(x,y)=(-1.25 ,0.75) loại

Cực trị trên đường D y=x;0<=x<=2 ;0<=y<=2

phi=x-y
L=x2+y+y2+lamda(x-y)
Lx=2x+lamda
Ly=2y+1-lamda
(x,y)=(-0.25,-0.25)=> f=-0.125
Cực trị trên đường D y=-x;-1<=x<=0 ;0<=y<=1

Phi=y+x
L=x2+y+y2+lamda(x+y)
Lx=2x+lamda
Ly=2y+1+lamda
(x,y) = (0.25,-0,25) loại

Cực trị trên đường D y=-x+4;1<=x)<=2;2<=y<=3

Phi=y+x-4
L=x2+y+y2+lamda(x+y-4)
Lx=2x+lamda
Ly=2y+1+lamda
(x,y) = (2.25,1.75) loại

Các đỉnh của hình chữ nhật

(x,y) = (0,0) => f=0


(x,y) = (1,3) => f=13
(x,y) = (2,2) => f=10
(x,y) = (-1,1)=> f=3
So sánh các f
GTLN là :f(1,3)=13
GTNN là :f(-0.25,-0.25)=-0.125

Thuật toán

qx ;py biến kết quả


A(i,2)x ;A(i,3)y; A(i,1)f biến so sánh(BSS)

B1 : Tìm cực trị trong miền D


Kiểm tra có nghiệm thỏa, thêm vào BSS

B2: Tìm cực trị lần lượt trên các biên HCN
Kiểm tra có nghiệm thỏa, thêm vào BSS

B3: Thêm vào biến so sánh giá trị các đỉnh của HCN

B5: Vẽ đồ thị

B4: So sánh các BSS, hiện kết quả

You might also like