You are on page 1of 1

function interpolacion_segmentaria_cubica()

x=input('ingrese los valores de x en vector : ');


y=input('ingrese el valor de la funcion en vector: ');
n=length(x)
val=input('ingrese el valor de x: '); //val=valor a interpolar
for i=1:n
h1=x(i+1)-x(i);
h2=x(i+2)-x(i+1);
h3=x(i+3)-x(i+2);
if h1~=h2|h2~=h3 then //condicion que debe cumplir para utilizar el metodo
a1=2*(x(i+2)-x(i));
a2=x(i+2)-x(i+1);
a=[a1 a2];//primera ecuacion
b1=x(i+2)-x(i+1);
b2=2*(x(i+3)-x(i+1));
b=[b1 b2];//segunda ecuacion
d=[a;b];
c1=6*(y(i+2)-y(i+1))/(x(i+2)-x(i+1))+6*(y(i)-y(i+1))/(x(i+1)-x(i));
c2=6*(y(i+3)-y(i+2))/(x(i+3)-x(i+2))+6*(y(i+1)-y(i+2))/(x(i+2)-x(i+1));
c=[c1;c2];
f2=inv(d)*c;
f2d=[0;f2;0];
break
end
end
for j=1:n
if val>=x(j) & val<=x(j+1) then //condicion que debe cumplir el valor a
interpolar
f3a=(f2d(j)*(x(j+1)-val)^3)/(6*(x(j+1)-x(j)))+(f2d(j+1)*(val-
x(j))^3)/(6*(x(j+1)-x(j)));
f3b=(y(j)/(x(j+1)-x(j))-f2d(j)*(x(j+1)-x(j))/6)*(x(j+1)-val);
f3c=(y(j+1)/(x(j+1)-x(j))-f2d(j+1)*(x(j+1)-x(j))/6)*(val-x(j));
f=f3a+f3b+f3c;
disp(['la funcion por interpolacion segmentaria cubica es: '])
disp([f])
break //aqui se rompe el for cuando la condicion se cumple
end
end
endfunction