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