pregunta 2

7
PREGUNTA 2 clear all close all fprintf('\n INTERPOLACION DE NEWTON\n'); x=input('ingrese los valores de x: '); y=input('ingrese los valores de y: '); xi=input('ingrese valor a interpolar: '); n=length(x); fdd=zeros(n); fdd(:,1)=y(:); for j=2:n for i=1:n-j+1 fdd(i,j)=(fdd(i+1,j-1)-fdd(i,j-1))/(x(i+j-1)-x(i)); end end xt=1; yint=zeros(1,n); yint(1)=fdd(1,1); Ea=zeros(1,n); fprintf('\ni yint(i) f(x) x Ea(i) \n'); for z=1:n-1 xt=xt*(xi-x(z)); yint2=yint(z)+fdd(1,z+1)*xt; Ea(z)=yint2-yint(z); yint(z+1)=yint2; end for z=1:n if z==n fprintf('%i %12.8f %12.8f %6.2f\n',z-1,yint(z),y(z),x(z))

Upload: fernando-galindo

Post on 09-Nov-2015

216 views

Category:

Documents


2 download

DESCRIPTION

gh

TRANSCRIPT

PREGUNTA 2

clear allclose allfprintf('\n INTERPOLACION DE NEWTON\n');x=input('ingrese los valores de x: ');y=input('ingrese los valores de y: ');xi=input('ingrese valor a interpolar: ');n=length(x);fdd=zeros(n);fdd(:,1)=y(:); for j=2:n for i=1:n-j+1 fdd(i,j)=(fdd(i+1,j-1)-fdd(i,j-1))/(x(i+j-1)-x(i)); endendxt=1;yint=zeros(1,n);yint(1)=fdd(1,1);Ea=zeros(1,n);fprintf('\ni yint(i) f(x) x Ea(i) \n');for z=1:n-1 xt=xt*(xi-x(z)); yint2=yint(z)+fdd(1,z+1)*xt; Ea(z)=yint2-yint(z); yint(z+1)=yint2;endfor z=1:n if z==n fprintf('%i %12.8f %12.8f %6.2f\n',z-1,yint(z),y(z),x(z)) break end fprintf('%i %12.8f %12.8f %6.2f %12.8f\n',z-1,yint(z),y(z),x(z),Ea(z))enddisp('')%%%%PREGUNTA a)disp('')fprintf('\na)Cp(%10.3f)=%8.8f\n',xi,yint(z));%%%%PREGUNTA b)Rn1=fdd(1,n);for i=1:n-1 Rn1=Rn1*(xi-x(i));end fprintf('\nb)Para el polinomio de Newton de grado %3.0f el error es= %8.8f\n',n-2,Rn1);%%%%PREGUNTA c)p=num2str(fdd(1,1));for j=2:n signo=''; if fdd(1,j)>=0 signo='+'; end xt1=''; for i=1:j-1 signo2=''; if x(i)> format long>> T=[280 1000 1200 1700]; %%%% valores reales en el eje x>> CpT=[32.7 52.15 53.7 50.3]; %%%% valores reales en el eje y>> c=polyfit(T,CpT,3) %%%% coeficiente del polinomio interpoladoc =

0.000000000107954 -0.000021206736798 0.054011866610290 19.236915697080942

>> CpT_TI=polyval(c,1100) %%%% valor interpolado

CpT_TI =

53.133504869798500%%%% conjunto de puntos en el eje x para nuestro intervalo>> TT=[280:0.01:1700];

%%%% conjunto de puntos interpolados en el eje y para nuestro intervalo

>> CCppTT=polyval(c,TT);%%%% GRAFICA INTERPOLADAtt>> plot(T,CpT,'ro',TT,CCppTT,'b-')>> hold on>> grid on>> title('TEMPERATURA VS CALOR ESPECIFICO')>> xlabel('T (K)')>> ylabel('Cp (cal/mol.g.K)')>> legend('val reales','val interpolados')

COMANDO INTERP1>> T=[280 1000 1200 1700];>> CpT=[32.7 52.15 53.7 50.3];>> T1=interp1(T,CpT,1100,'cubic') %%%% valor interpolado con cubic

T1 =

53.197648541454768

>> T2=interp1(T,CpT,1100,'spline') %%%% valor interpolado con spline

T2 =

53.133504869798500%%%% conjunto de puntos en el eje x para nuestro intervalo>> TT=linspace(280,1700,1000);%%%% conjunto de puntos interpolados en el eje y para nuestro intervalo con spline>> CCppTT=interp1(T,CpT,[TT],'spline');%%%% GRAFICA INTERPOLADA>> plot(T,CpT,'ro',TT,CCppTT,'b-')>> hold on>> grid on>> title('TEMPERATURA VS CALOR ESPECIFICO')>> xlabel('T (K)')>> ylabel('Cp (cal/mol.g.K)')%%%% conjunto de puntos interpolados en el eje y para nuestro intervalo con cubic>> CCppTT1=interp1(T,CpT,[TT],'cubic');>> hold on>> plot(TT,CCppTT1,'g-')>> legend('val reales','val interpolados (spline)','val interpolados (cubic)')%%%% tambin se puede graficar las tres funciones con un solo plot>> plot(T,CpT,'ro',TT,CCppTT,'b-',TT,CCppTT1,'g-')

PREGUNTA 2

clear allclose allfprintf('\n INTERPOLACION DE NEWTON\n');x=input('ingrese los valores de x: ');y=input('ingrese los valores de y: ');xi=input('ingrese valor a interpolar: ');n=length(x);fdd=zeros(n);fdd(:,1)=y(:); for j=2:n for i=1:n-j+1 fdd(i,j)=(fdd(i+1,j-1)-fdd(i,j-1))/(x(i+j-1)-x(i)); endendxt=1;yint=zeros(1,n);yint(1)=fdd(1,1);Ea=zeros(1,n);fprintf('\ni Tint(i) T(P) P Ea(i) \n');for z=1:n-1 xt=xt*(xi-x(z)); yint2=yint(z)+fdd(1,z+1)*xt; Ea(z)=yint2-yint(z); yint(z+1)=yint2;endfor z=1:n if z==n fprintf('%i %12.8f %12.8f %6.2f\n',z-1,yint(z),y(z),x(z)) break end fprintf('%i %12.8f %12.8f %6.2f %12.8f\n',z-1,yint(z),y(z),x(z),Ea(z))enddisp('')%%%%PREGUNTA a)disp('')fprintf('\na)T(%10.4f)=%8.8f\n',xi,yint(z));%%%%PREGUNTA b)Rn1=fdd(1,n);for i=1:n-1 Rn1=Rn1*(xi-x(i));end fprintf('\nb)Para el polinomio de Newton de grado %3.0f el error es= %8.8f\n',n-2,Rn1);