Está en la página 1de 2

fprintf('INTERPOLACIN SEGMENTARIA - SPLINES CUBICAS\n');

%fprintf me permite ingresar comentarios de manera textual que pueden orientar a


l usuario en el uso del programa
disp('*************************************************************************'
);
clear all;
syms x; % define la variable simblica para crear el polinomio
n=input('Ingrese numero de puntos: '); % nmero de puntos
disp('*************************************************************************'
);
disp('PUNTOS PARA X');
for k=1:n % abscisas de los puntos a interpolar
fprintf('\tx%.0f= ',k);
xn(k)=input('');
end
disp('PUNTOS PARA Y');
for l=1:n % ordenadas de estas abscisas
fprintf('\ty%.0f= ',l);
yn(l)=input('');
end
plot(xn,yn,'r*') % dibuja los puntos a interpolar
hold on % Mantiene en la ventana grfica los dibujos anteriores
A=[xn(1)^3 xn(1)^2 xn(1)^1 1 0 0 0 0;
xn(2)^3 xn(2)^2 xn(2)^1 1 0 0 0 0;
0 0 0 0 xn(2)^3 xn(2)^2 xn(2)^1 1;
0 0 0 0 xn(3)^3 xn(3)^2 xn(3)^1 1;
xn(2)^3 2*xn(2) 1 0 -xn(2)^3 -2*xn(2) -1 0;
6*xn(2) 2 0 0 -6*xn(2) -2 0 0;
6*xn(1) 2 0 0 0 0 0 0;
0 0 0 0 6*xn(3) 2 0 0];
b=[yn(1);yn(2);yn(2);yn(3); 0;0;0;0];
M=inv(A)*b; %Calcula la inversa de la matriz A y se multilica por b
c=['a1';'b1';'c1';'d1';'a2';'b2';'c2';'d2']; %Resultado de la multiplicacion
Ab=[A b];
rref(Ab); %Forma reducida de la matriz resultante Ab
fprintf('\n\tLa matriz es: \n');
disp(A); %Muestra el valor de la variable A sin imprimir el nombre de la variab
le
fprintf('\n\tLa matriz resuelta es: \n');
disp(rref(Ab)); %Muestra el valor de la variable rref(Ab) sin imprimir el nombre
de la variable
fprintf('\n\tLos valores son: \n');
disp(M); %Muestra el valor de la variable M sin imprimir el nombre de la variabl
e
h1=M(1)*x^3+M(2)*x^2+M(3)*x^1+M(4); %Los resultados de los valores hallados: a1,
b1,c1,d1
h2=M(5)*x^3+M(6)*x^2+M(7)*x^1+M(8); %Los resultados de los valores hallados: a2,
b2,c2,d2
fprintf('\n\tLas funciones son:\n');
fprintf('\n\t En el intervalo: [%.2f ; %.2f] ', xn(1),xn(2));
pretty(h1) ; % Muestra el polinomio h1 en pantalla
fprintf('\n\t En el intervalo: [%.2f ; %.2f] ', xn(2),xn(3));
pretty(h2) ; % Muestra el polinomio h2 en pantalla
grid on; %Muestra las principales lneas de la cuadrcula de los ejes actuales
a =xn(1)-13:0.3:xn(3)+13; %Un vector que empieza en xn(1)-13 y termina en xn(3)+
13 en pasos de 0.3
for i=xn(1)-13:xn(3)+13 %Un vector que empieza en xn(1)-13 y termina en xn(3)+13
if (i<=xn(2))
b=M(1)*a.^3+M(2)*a.^2+M(3)*a.^1+M(4);
plot(a,b,'m'); %Grafica la funcion b
else
b=M(5)*a.^3+M(6)*a.^2+M(7)*a.^1+M(8);
plot(a,b,'k'); %Grafica la funcion b
end
end
h1=inline(h1); %Contruye la funcion de objeto contenida en h1
h2=inline(h2); %Contruye la funcion de objeto contenida en h2
j=input('\n Ingrese el valor de x para interpolar , x=');
if (j<=xn(2))
vi=feval(h1,j); %Reemplaza el valor de x en la funcion h1
else
vi=feval(h2,j); %Reemplaza el valor de x en la funcion h2
end
fprintf('\tEl valor interpolado es %.2f\n ',vi);
plot(j,vi,'*g') %Grafica de la funcion con el valor a interpolar
title(' Splines Cubicos');
xlabel('Eje de Abscisas') % Etiqueta el eje horizontal
ylabel('Eje de Ordenadas') % Etiqueta el eje vertical
legend('Puntos Dados') % Pone una leyenda

También podría gustarte