%% TMA671 Lösning av uppgift N.7.14 clear; % Under storgruppsövningen som hölls onsdagen den 21e Maj 2018 % så demonstrerades uppgift 10 i Kapitel 14 i Numerisk Analys % boken. Uppgiften handlar om att minimera en konvex funktion % f:R^2->R med hjälp av ''fminunc''. % Programmet är skrivet av Johannes Borgqvist %% Almänna saker för uppgiften % Gränser minX = -5; maxX = 5; minY = -5; maxY = 5; % Funktion som skall minimeras f = @(x,y) (2.*x.^3) - (3.*x.^2) - (6.*x.*y.*(x-y-1)); % Define a mesh [X, Y] = meshgrid(minX:0.01:maxX,minY:0.01:maxY); % Define the function surface Z = 2*X.^3 - 3*X.^2 - 6.*X.*Y.*(X-Y-1); %% We find the minima % Define the function f = inline('2*x(1)^3-3*x(1)^2-6*x(1)*x(2)*(x(1)-x(2)-1)'); fminus = inline('-(2*x(1)^3-3*x(1)^2-6*x(1)*x(2)*(x(1)-x(2)-1))'); % Find first minima xMin = fminunc(f,[0.5, 0.5]); % Find second minima xMax = fminunc(fminus,[-0.5, -0.5]); % Saddle 1 saddle1 = [0; 0]; % Saddle 2 saddle2 = [0; -1]; %% Plottar fig = figure('units','normalized','outerposition',[0 0 1 1],... 'PaperPositionMode','auto'); %figure(1) clf contourf(X,Y,Z) colormap jet cb = colorbar; %cb.Label.Interpreter = 'latex'; set(cb,'Ticklabelinterpreter','latex','Fontsize',20) hold on p1 = plot(xMin(1),xMin(2), '*','Color',[0.1, 0, 0], 'MarkerSize', 30, 'LineWidth', 3); hold on p2 = plot(xMax(1),xMax(2), '*red', 'MarkerSize', 30, 'LineWidth', 3); hold on p3 = plot(saddle1(1),saddle1(2), '*blue', 'MarkerSize', 30, 'LineWidth', 3); hold on p4 = plot(saddle2(1),saddle2(2), '*magenta', 'MarkerSize', 30, 'LineWidth', 3); hold off axis([minX, maxX, minY, maxY]) set(gca,'Ticklabelinterpreter','latex','Fontsize',20) leg = legend([p1,p2,p3,p4],'Minima:$\;\;\;x_{\mathrm{min}}=\left(1, 0\right)^{\mathrm{T}}$','Maxima:$\;\;\;x_{\mathrm{max}}=\left(-1, -1\right)^{\mathrm{T}}$',... 'Saddle 1:$\;\;\;x_{\mathrm{saddle}}=\left(0, 0\right)^{\mathrm{T}}$','Saddle 2:$\;\;\;x_{\mathrm{saddle}}=\left(0, -1\right)^{\mathrm{T}}$'); set(leg,'interpreter','latex','Fontsize',10,'Location','NorthEast') xlabel('$x$','interpreter','latex','FontSize',40) ylabel('$y$','interpreter','latex','FontSize',40) cb.Label.String = '$f\left(x,y\right)$'; cb.Label.Interpreter = 'latex'; cb.Label.FontSize = 40; titleStr = {'\textbf{TMA671 Uppgift N.7.14}','Datum: 2018-05-21, Skriven av: Johannes Borgqvist',... ['\textit{Minimering med ''''\textsf{fminunc}'''' av funktionen}'],... '$\;\;\;f\left(x,y\right)=2x^3-3x^2-6xy(x-y-1).$'... }; title(titleStr,'interpreter','latex','Fontsize',50) print(fig, '-depsc', '-r0', 'UppgiftN714Datum20180521.eps')