Está en la página 1de 4

Cdigos creo q para el anlisis Newton

X=[1 4 6 5]; Y=log(X); n=length(X); fdd=zeros(n); xint=2; %llenando fdd con diferencias divididas for i=1:n fdd(i,1)=Y(i); end for i=2:1:n for j=1:1:n+1-i fdd(j,i)=(fdd(j+1,i-1)-fdd(j,i-1))/(X(i+j-1)-X(j)); end end Pol=''; Prod=''; for i=1:1:n-1 Prod=''; for j=1:1:i Prod=[Prod,'(X - ',num2str(X(j)),')']; end Pol=[Pol,'(',num2str(fdd(1,i+1)),')',Prod,' + ']; end Pol=['F(x) = ',Pol,num2str(Y(1)),'\n\n']; fprintf('Matriz de diferencias divididas:\n'); fdd fprintf('Polinomio de Newton calculado:\n\n'); fprintf(Pol); fint=0; xprod=1; sum=fdd(1,1); for i=1:1:n-1 fint=fdd(1,i+1); xprod=1; for j=1:1:i xprod=xprod*(xint-X(j)); end fint=fint*xprod; sum=sum+fint; end fint=sum; %graficando el polinomio de newton fint1=0; xprod1=1; xn=1:0.01:max(X)+max(X)*0.25; yn=[]; for k=1:1:length(xn) sum1=fdd(1,1); for i=1:1:n-1 fint1=fdd(1,i+1); xprod1=1; for j=1:1:i xprod1=xprod1*(xn(k)-X(j)); end

fint1=fint1*xprod1; sum1=sum1+fint1; end fint1=sum1; yn(k)=fint1; end Error=abs((log(xint)-fint)/log(xint)); fprintf('Evaluando el polinomio en X = %f resulta: %f\n\n',xint,fint); xg=1:0.1:max(X)+max(X)*0.25; yg=log(xg); plot(xg,yg,'r') hold on; plot(X,Y,'bo'); hold on; plot(xint,fint,'r+'); hold on; plot(xn,yn,'b'); hold on; plot(xint,log(xint),'ro'); hold off; title('Representacion grafica de Ln(x) y el polinomio de Newton'); xlabel('X'); ylabel('Y = Ln(X)'); legend('Ln(x)','Puntos insertados','Valor interpolado','polinomio de Newton','valor real'); Vari=['X = ',num2str(xint),' Y = ',num2str(fint),' Er = ',num2str(Error),' Ea = ',num2str(Error*100),' %']; text(xint+xint*.1,fint,Vari);

LAGRANGE
X=[1 4 5 6]; Y=log(X); x=2; %dato para calcular n=length(X);%grado del polinomio de interpolacion suma=0; fprintf('Grado \tF(x) \tError Rel \tError Abs\n'); for grado=1:1:n suma=0; for i=1:1:grado producto=Y(i); for j=1:1:grado if(i~=j) producto=producto*(x - X(j))/(X(i) - X(j)); end end suma=suma+producto; end Lagrange_calculado=suma; %fprintf('\nEl valor para %f interpolado es %f\n',x,Lagrange_calculado); Error=abs((log(x)-Lagrange_calculado)/log(x)); %fprintf('\nEl Error estimado de los calculos: Error = %f\n',Error); %fprintf('\nEl Error estimado porcentual de los calculos: Error porcentual = %f %%\n\n',Error*100); fprintf('%i\t %f \t%f \t%f %%\n',grado1,Lagrange_calculado,Error,Error*100); end

fprintf('\n'); xg=1:0.1:6; yg=log(xg); plot(xg,yg,'r') hold on; plot(X,Y,'bo'); hold on; plot(x,Lagrange_calculado,'r+'); hold off; title('Grafica de funcion e interpolacion de lagrange'); xlabel('X'); ylabel('Y = Ln(X)'); legend('Ln(x)','Puntos','Interpolado'); Vari=['X = ',num2str(x),' Y = ',num2str(Lagrange_calculado),' Er = ',num2str(Error),' Ea = ',num2str(Error*100),' %']; text(x,Lagrange_calculado,Vari);

MNIMOS CUADRADOS
x=[1 2 3 4 5 6 7]; y=[0.5 2.5 2.0 4.0 3.5 6.0 5.5]; n=length(x); %coeficientes %Error estandar del estimado syx=0; %coeficiente de determinacion y coeficiente de correlacion r^2 r=0; r2=0; sumx=0; sumxy=0; st=0; sumy=0; sumx2=0; sr=0; ygp=[]; for i=1: 1: n sumx=sumx+x(i); sumy=sumy+y(i); sumxy=sumxy+x(i)*y(i); sumx2=sumx2+x(i)^2; end A=[n sumx;sumx sumx2]; B=[sumy;sumxy]; a=inv(A)*B; ym=sumy/n; for i=1: 1: n st=st + (y(i) - ym)^2; sr=sr + (y(i) - a(1,1) - a(2,1)*x(i))^2; end syx=(sr/(n -2))^0.5; r2=(st - sr)/st; r=sqrt(r2); Sy=(st/n-1)^0.5; clc fprintf('\nLa ecuacion queda: Y = %f X + ( %f )\n\n',a(1,1),a(2,1)); fprintf('a0 = %f\ta1 = %f\tSyx = %f\tSr = %f\tSt = %f\tSy = %f\n\n',a(1,1),a(2,1),syx,sr,st,Sy); if(syx < Sy) fprintf('Como Sxy < Sy el modelo de regresion lineal es adecuado.\n\n');

else fprintf('Como Sxy > Sy el modelo de regresion lineal no es adecuado.\n\n'); end fprintf('Los resultados indican que el modelo de regresion lineal explico el %f %% de la incertidumbre original\n\n',r2*100); plot(x,y,'r*'); hold on; yg = a(2,1)*x + a(1,1); plot(x,yg,'b'); Ec=['Y = ',num2str(a(2,1)),' X + ( ',num2str(a(1,1)),' )']; %Algoritmo para los miminoms cuadrados polinomiales m=5; %grado del polinomio de ajuste Apol=zeros(m+1); Bpol=zeros(m+1,1); if(n<(m+1)) fprintf('La regresion polinomial no es posible, debido a que el orden es mayor que el numero de puntos\n\n') legend('Datos','Lineal'); else for i=1:1:m+1 for j=1:1:i k=i + j - 2; sum=0; for l=1:1:n sum=sum+x(l)^k; end Apol(i,j) = sum; Apol(j,i) = sum; end sum=0; for l=1:1:n sum=sum + y(l)*x(l)^(i-1); end Bpol(i,1)=sum; end apol=inv(Apol)*Bpol; xgg=x(1):0.1:x(n); for i=1:1:length(xgg) ygp(i)=0; end for j=1:1:length(xgg) for i=m+1:-1:1 ygp(j)=ygp(j)+ apol(i,1)*xgg(j)^(i-1); end end plot(xgg,ygp,'r'); legend('Datos','Lineal','Polinomial'); Ec='Y( X ) = '; for i=m+1:-1:1 Ec=[Ec,'(',num2str(apol(i,1)),') X^',num2str((i-1)),' + ']; end fprintf('\nEl polinomio calculado queda:\n\n'); Ec=[Ec,' 0 ']; fprintf([Ec,'\n\n']); end hold off; title('Minimos cuadrados lineales');

También podría gustarte