%
% -------------------------------------------------------------------
%
%     Approximation im WS 2013/14                      H.J. Oberle
%
%     L_1 Bestapproximation auf Gitter t_1 < ... < t_m
%     mittels linearer Optimierung (Simplex Algorithmus)
%
% -------------------------------------------------------------------
%
%
function [y, fval, exitflag, output, lambda] = simplex1
% 
clear all
close all
format long e
%
%   Beispiel von Gerdts, Lempio
% 
m = 3;
T = [-1 1 2]';
Y = [-1.3 1.7 6]';
b = Y;
e = ones(3,1);
E = eye(3);
H = [T T.^3];
A = [H -E E];
c = [0 0 e' e'];
%
lb = [-inf -inf 0 0 0 0 0 0];
x0 = 1+0*c;
options = optimset('TolX',1e-8,'TolFun',1e-8,'Largescale','off');
%
fprintf('\n Lineares Optimierungsproblem: \n');
%
[y, fval, exitflag, output, lambda] = linprog(c,[ ],[ ],A,b,lb,[ ],x0,options);
%
%   Loesung
%
x = y(1:2)
u = y(3:5)
v = y(6:8)
n = norm(u-v,1)
%
%   Plot
%
t = [-1.5:0.01:2.5];
p1 = x(1)*t+x(2)*t.^3;
plot(t,p1,'k','Linewidth',1.2)
set(gca,'FontSize',12)
ylabel('L_1 Ausgleichsfunktion p(t)','FontSize',16)
hold
plot(T,Y,'b.','Markersize',20)
%
%
print -depsc simplex03
%
%  ------------------------------------------------------------------
%
