% definiramo funkcijo za risanje f = @(x,y) exp(x.^2 - y.^2); figure [xx,yy] = ndgrid(linspace(-1,1),linspace(-1,1)); contour(xx,yy,f(xx,yy),50,'LineWidth',1) hold on fimplicit(@(x,y) (x-1/3).^2 + (y-1/3).^2 - (1/3)^2,'r','LineWidth',1); axis equal % risemo problem iskanja vezanega ekstrema f = @(x) exp(x(1)^2 - x(2)^2); % % ce bi zeleli iskati minimum brez dodatnih omejitev % xmin = fminsearch(f,[0;0]) % % % ce bi zeleli iskati minimum na obmocju [-1,1]^2 % xmin = fmincon(f,[.6;.6],[],[],[],[],[-1 -1],[1 1]) xmin = fmincon(f,[.6;.6],[],[],[],[],[-1 -1],[1 1],@circlecon) xmax = fmincon(@(x)-f(x),[.0;.0],[],[],[],[],[-1 -1],[1 1],@circlecon) plot(xmin(1),xmin(2),'ob','MarkerEdgeColor','k', 'MarkerFaceColor',[0 0 1],'MarkerSize',5) plot(xmax(1),xmax(2),'or','MarkerEdgeColor','k', 'MarkerFaceColor',[1 0 0],'MarkerSize',5) % nelinearens pogoj: kroznica function [cineq,ceq] = circlecon(x) cineq = []; ceq = (x(1)-1/3)^2 + (x(2)-1/3)^2 - (1/3)^2; end