%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