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