%
% -------------------------------------------------------------------
%
%     Approximation im WS 2013/14                      H.J. Oberle
%
%     L_inf Bestapproximation auf Gitter t_1 < ... < t_m
%     mittels linearer Optimierung (Simplex Algorithmus)
%
%     Aufgabe 46 a 
%
% -------------------------------------------------------------------
%
%
function [y, fval, exitflag, output, lambda] = aufg46a
% 
clear all
close all
format long e
%
%   Beispiel von J. Werner:
% 
m = 11;
t = 0.1*[0:1:10]';
f = exp(t);
c = [f; -f];
e = ones(11,1);
H = [e t t.^2 t.^3 t.^4];
A = [H' -H';
     e' e'];
b = [0; 0; 0; 0; 0; 1];
%
lb = zeros(22,1);
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)
%
%   Bestimmung der Loesung des Dualproblems
%
J = find(y > 1.e-8);
B = A';
AR = B(J,:);
cR = c(J);
x = AR\cR;
a = x(1:5)
delta = abs(x(6))
%
%   Plot der Fehlerfunktion
%
t = [0:0.01:1];
p = (((a(5)*t+a(4)).*t+a(3)).*t+a(2)).*t+a(1);
f = exp(t);
e = f - p;
plot(t,e,'b','Linewidth',1.2)
set(gca,'FontSize',12)
xlabel('Aufgabe 46 a)','FontSize',16)
ylabel('Fehlerfunktion e(t)','FontSize',16)
hold
plot([0 1],[0 0],'b--','Linewidth',1.2)
T = 0.1*[0 1 4 7 9 10];
Y = delta*[-1 1 -1 1 -1 1];
plot(T,Y,'b.','Markersize',20)
%
print -depsc aufg46a
%
%  ------------------------------------------------------------------
%
