% preg1, lab 5, 521230, S2-2013

% generando matriz con ayuda de funcion en matriz_preg1_lab5
% 9 datos en la tabla
m = 8;
h = 1;
% polinomio de grado menor o igual que 2 que mejor ajusta datos dados
n = 2;

[A, x] = matriz_preg1_lab5(n,m,h);
y = [12 10.5 10.0 8 7 8 7.5 8.5 9]';

B = A'*A;
z = A'*y;

[Q,R] = qr(A);
% Q'*Q debe ser igual a la identidad de tamanno 9
eye(9) - Q'*Q
% R debe ser R = (R1 0)^t con R1 triangular superior
R
% A debe ser igual a QR
A - Q*R

R1 = R(1:3,:);

% matriz B es peor condicionada que R1, es aconsejable resolver el problema
% con ayuda de descomposicion QR de A en lugar de hacerlo a traves del
% sistema de las ecuaciones normales
cond(R1)
cond(B)
Q1 = Q(:,1:3);
coef = R1\(Q1'*y);

% graficar puntos
plot(x,y,'o')
hold on
% 100 puntos entre 0 y 8
xnew = linspace(0,8);
% evaluando polinomio de grado menor o igual que 2 que mejor ajusta datos
% evaluado en 100 puntos entre 0 y 8
plot(xnew,polyval(coef,xnew),'r')

% los coeficientes en coef corresponden a una parabola de la forma
% coef(1)*x^2 + coef(2)*x + coef(3). Ella alcanza
% su valor minimo en 
cantidadoptima = -coef(2)/coef(1)/2
% esta es la cantidad optima de aditivo (con minimo tiempo de secado)
% el tiempo de secado correspondiente es
polyval(coef,cantidadoptima)

