% Aufgabe 2
% Frank-Wolfe

clear all;
fprintf('Programmieraufgabe 2: Frank-Wolfe\r')
pin=input('Bitte erste Koordinate des Startvektors angeben: ');
epsilon = 10^-4;


f = @(x) (x(1) - 6)^2 + (x(2) - 2)^2;
df = @(x) [	2*(x(1) - 6);
			2*(x(2) - 2);
			0 ; 0];

A = [-1 2 1 0 ; 3 2 0 1];
b = [4 ; 12];

% Menge der extremen Randpunkten als Spalten geschrieben!
E = [2 3 0 0 ; 4 0 8 0 ; 0 2 0 8 ; 0 0 4 12]';

x = [1 + pin/5 ; 1 ; 3 + pin/5 ; 7 - 3*pin/5];
[x, k] = frankWolfe(f, df, A, b, E, x, epsilon);

fprintf('\n########################################################\n');
fprintf('pin		= %s\n', mat2str(pin));
fprintf('k		= %s\n', mat2str(k));
fprintf('x*		= %s\n', mat2str(x));
fprintf('f(x*)		= %s\n', mat2str(f(x)));

