Está en la página 1de 3

%Programa que calcula la funcion por Splines cuadraticos

clear all;
syms x; % define la variable simblica para crear el polinomio
n=input('\n Ingrese el numero de puntos: '); % nmero de puntos
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
A=[xn(1) 1 0 0 0 0 0 0;xn(2) 1 0 0 0 0 0 0;
0 0 xn(2)^2 xn(2) 1 0 0 0; 0 0 xn(3)^2 xn(3) 1 0 0 0;
0 0 0 0 0 xn(3)^2 xn(3) 1 ; 0 0 0 0 0 xn(4)^2 xn(4) 1;
1 0 -2*xn(2) -1 0 0 0 0 ; 0 0 2*xn(3) 1 0 -2*xn(3) -1 0];
b=[yn(1);yn(2);yn(2);yn(3); yn(3);yn(4);0;0];
M=inv(A)*b;
c=['a1';'b1';'c1';'d1';'a2';'b2';'c2';'d2'];
Ab=[A b];
rref(Ab);
fprintf('\n\tLa matriz es: \n');
disp(A);
fprintf('\n\tLa matriz resuelta es: \n');
disp(rref(Ab));
fprintf('\n\tLos valores son: \n');
disp(M);
h1=0*x^2+M(1)*x+M(2);
h2=M(3)*x^2+M(4)*x^1+M(5);
h3=M(6)*x^2+M(7)*x^1+M(8);
fprintf('\n\tLas funciones son:\n');
fprintf('\n\t En el intervalo: [%.2f ; %.2f] ', xn(1),xn(2));
pretty(h1) ;
fprintf('\n\t En el intervalo: [%.2f ; %.2f] ', xn(2),xn(3));
pretty(h2) ;
fprintf('\n\t En el intervalo: [%.2f ; %.2f] ', xn(3),xn(4));
pretty(h3) ;
grid on;
a =xn(1)-3:0.3:xn(4)+3;
for i=xn(1)-13:xn(4)+13
if (i<=xn(2))
b=M(1)*a+M(2);
plot(a,b,'c');
else
if (i<=xn(3))
b=M(3)*a.^2+M(4)*a.^1+M(5);
plot(a,b,'b');
else
b=M(6)*a.^2+M(7)*a.^1+M(8);
plot(a,b,'m');
end
end
end
h1=inline(h1);
h2=inline(h2);
h3=inline(h3);
j=input('\n Ingrese el valor de x para interpolar , x=');
if (j<=xn(2))
vi=feval(h1,j);
else
if (j<=xn(3))
vi=feval(h2,j);
else
vi=feval(h3,j);
end
end
fprintf('\tEl valor interpolado es %.2f\n ',vi);
plot(j,vi,'*g')
title(' Splines Cuadraticos');
xlabel('Eje de Abscisas') % Etiqueta el eje horizontal
ylabel('Eje de Ordenadas') % Etiqueta el eje vertical
legend('Puntos Dados') % Pone una leyenda
________________________________________________________________________________
______
%Programa que calcula la funcion por Splines
clear all;
syms x; % define la variable simblica para crear el polinomio
n=input('\n Ingrese numero de puntos: '); % nmero de puntos
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
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;
c=['a1';'b1';'c1';'d1';'a2';'b2';'c2';'d2'];
Ab=[A b];
rref(Ab);
fprintf('\n\tLa matriz es: \n');
disp(A);
fprintf('\n\tLa matriz resuelta es: \n');
disp(rref(Ab));
fprintf('\n\tLos valores son: \n');
disp(M);
h1=M(1)*x^3+M(2)*x^2+M(3)*x^1+M(4);
h2=M(5)*x^3+M(6)*x^2+M(7)*x^1+M(8);
fprintf('\n\tLas funciones son:\n');
fprintf('\n\t En el intervalo: [%.2f ; %.2f] ', xn(1),xn(2));
pretty(h1) ;
fprintf('\n\t En el intervalo: [%.2f ; %.2f] ', xn(2),xn(3));
pretty(h2) ;
grid on;
a =xn(1)-13:0.3:xn(3)+13;
for i=xn(1)-13: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');
else
b=M(5)*a.^3+M(6)*a.^2+M(7)*a.^1+M(8);
plot(a,b,'k--');
end
end
h1=inline(h1);
h2=inline(h2);
j=input('\n Ingrese el valor de x para interpolar , x=');
if (j<=xn(2))
vi=feval(h1,j);
else
vi=feval(h2,j);
end
fprintf('\tEl valor interpolado es %.2f\n ',vi);
plot(j,vi,'*g')
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