% Musterlösung
%
% Numerische Mathematik, SS 2013
%
% Auswerten eines kubischen Splines
%
% Ingolf Busch, Juli 2013

% Input:  x  Vektor der Stützstellen [x_0 x_1 ... x_n]
%         y  Vektor der Funktionswerten [y_0 y_1 ... y_n]
%         mu Vektor der Momente
%         t  Vektor der Auswertungstellen


% Output: yt  Vektor der Funktionswerte des Splines 

function yt = my_spline_eval(x,y,mu,t)

h = x(2:end)-x(1:(end-1));
alpha = y(1:(end-1));
beta = (y(2:end)-y(1:(end-1)))./h-h/6.*(mu(2:end)'+2*mu(1:(end-1))');
gamma = mu(1:(end-1))'/2;
delta = (mu(2:end)'-mu(1:(end-1))')./(6*h);

index = 0;

for i=1:(length(x)-1)
    index = index + (t>=x(i));
end

yt = delta(index);
yt = gamma(index)+yt.*(t-x(index));
yt = beta(index)+yt.*(t-x(index));
yt = alpha(index)+yt.*(t-x(index));