Está en la página 1de 1

function[s2, condErro]= SplineNatural(n,x,y)

%calcula as segundas derivadas para os splines cubicos naturais


%n - numero de pontos dados
%x - abscissas em ordem crescente
%y - ordenadas

if n < 3
condErro = 1;
exit(condErro);
end
condErro = 0;
%construao do sistema trigonal simtrico
m = n-2;
Ha = x(2)-x(1);
Deltaa = (y(2) - y(1))/Ha;
for i = 1:m
Hb = x(i+2) - x(i+1);
Deltab = (y(i+2)-y(i+1))/Hb;
e(i)= Hb;
d(i) = 2*(Ha+Hb);
s2(i+1) = 6*(Deltab-Deltaa);
Ha = Hb;
Deltaa = Deltab;
end
%eliminacao gaussiana
for i = 2:m
t = e(i-1)/d(i-1);
d(i) = d(i) - t*e(i-1);
s2(i+1) = s2(i+1) - t* s2(i);
end
%soluao por substituioes retroativas
s2(m+1) = s2(m+1)/d(m);
for i = m:-1:2
s2(i) = (s2(i)-e(i-1)*s2(i+1))/d(i-1);
end
s2(1) = 0;
s2(m+2) = 0;
end
% x = [1 2 4 6 7];
%y = [2 4 1 3 3];
%s2 = [-4.7000 3.6000 -2.2000 0] com condErro = 0