0% encontró este documento útil (0 votos)
70 vistas7 páginas

13 Analisis

Este documento describe un programa en Matlab que implementa el método de mínimos cuadrados para determinar la función que mejor se ajusta a un conjunto de puntos de datos experimentales. El programa permite al usuario ingresar los puntos de datos y seleccionar entre una recta, polinomio, función potencial o función exponencial. Luego calcula la función que minimiza el error cuadrático medio entre los valores predichos y observados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
70 vistas7 páginas

13 Analisis

Este documento describe un programa en Matlab que implementa el método de mínimos cuadrados para determinar la función que mejor se ajusta a un conjunto de puntos de datos experimentales. El programa permite al usuario ingresar los puntos de datos y seleccionar entre una recta, polinomio, función potencial o función exponencial. Luego calcula la función que minimiza el error cuadrático medio entre los valores predichos y observados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Instituto Politécnico Nacional

Unidad Profesional Interdisciplinaria

en Ingeniería y Tecnologías Avanzadas

Nombre: Orenday Martínez Ariel Omar

Fecha de realización: 5 de abril de 2017

Fecha de entrega: 20 de abril de 2017

Nombre de la práctica:

“Método de Mínimos cuadrados”

Profesor: Fernando Estrada Olivas

Código fuente: Matlab


function [ ] = MinimosCuadrados( ) g=input('\nIndique el grado deseado del polinomio:
%Práctica numero trece de análisis numérico ');
format long; gg=g+g;
fprintf('Método de Minimos Cuadrados \n'); sx=zeros(gg+1,1);
for p=1:gg+1
fprintf('Siga los siguientes pasos para ingresar los for i=1:n
puntos experimentales. \n\n'); sx(p)=sx(p)+(a(i,1)^(p-1));
n=input('Indique el número de puntos experimentales a end
ingresar: '); end
a=zeros(n,2); sxy=zeros(g+1,1);
for p=1:g+1;
for i=1:n
fprintf('\nEscriba los componentes de cada punto en el
sxy(p)=sxy(p)+(a(i,2)*(a(i,1)^(p-1)));
siguiente orden: \n');
end
for J=1:n
end
fprintf('X%d: ',J);
fprintf('sxy');
a(J,1)=input('');
disp(sxy);
fprintf('Y%d: ',J);
m=zeros(g+1,g+1);
a(J,2)=input('');
for i=0:g
end
for j=1:g+1
m(i+1,j)=sx(j+i,1);
fprintf('\nLos puntos experimentales ingresados son: end
\n\n'); end
disp(a); M=horzcat(m,sxy);
f=input('\nIndique el método a utilizar.\n[1] Recta\n[2] fprintf('\nLa matriz resultante para obtener el
Polinomio\n[3] Funcón potencial\n[4]Funcion polinomio es:');
exponencial\n\nSu decisión: '); disp(M);

if f==1 %%Gauss
sx=0; [m,no]=size(M);
sy=0; j=1;
sxc=0; for j=1:m
sxy=0; for i=2:m
for i=1:n if M(j,j)==0
sx=sx+a(i,1); h=M(j,:);
sy=sy+a(i,2); M(j,:)=M(i,:);
sxc=sxc+(a(i,1))^2; M(i,:)=h;
sxy=sxy+(a(i,1)*a(i,2)); end
end end
m=((n*sxy)-(sx*sy))/((n*sxc)-(sx^2)); end
b=((sxc*sy)-(sxy*sx))/((n*sxc)-(sx^2)); y=0;
for j=1:m
fprintf('\nLa recta resultante es:\n y= if M(j,j)~=0
(%d) x + (%d)\n',m,b); y=y+1;
yp=zeros(n,1); end
for i=1:n end
yp(i)=(m*a(i,1))+b; if y~=m
end fprintf('\nEl sistema de acuaciones no tiene solución
E=zeros(n,1); única.\n');
for i=1:n else
E(i)=(abs(a(i,2)-((m*a(i,1))+b)))^2; for j=1:m-1
end for i=j+1:m
SE=0; l=M(i,j)/M(j,j);
for i=1:n M(i,:)=M(i,:)-M(j,:)*l;
SE=SE+E(i); end
end end
fprintf('\nEl error absoluto promedio es:');
disp(SE); x=zeros(1,m);
plot(a(1:n,1),yp); for j=m:-1:1
hold on c=0;
for i=2:m
elseif f==2 c=c+M(j,i)*x(i);
end for i=1:n
x(j)=(M(j,no)-c)/M(j,j); E(i)=(abs(a(i,2)-((m*(log(a(i,1))))+lb)))^2;
end end
fprintf('\nEl polinomio de grado %d resultante SE=0;
es:\n\n',g); for i=1:n
for j=m:-1:1 SE=SE+E(i);
fprintf('(%d)(x^%d) ',x(j),j-1); end
if j~=1 fprintf('\nEl error absoluto promedio es:');
fprintf(' + '); disp(SE);
else plot(a(1:n,1),exp(yp));
fprintf('\n'); hold on
end
end elseif f==4
end sx=0;
%%finGauss sly=0;
sxc=0;
yp=zeros(n,1); sxly=0;
for i=1:n for i=1:n
sum=0; sx=sx+a(i,1);
for j=m:-1:1 sly=sly+log(a(i,2));
sum=sum+(x(j)*(a(i,1)^(j-1))); sxc=sxc+(a(i,1))^2;
end sxly=sxly+(a(i,1)*log(a(i,2)));
yp(i)=sum; end
end m=((n*sxly)-(sx*sly))/((n*sxc)-(sx^2));
E=zeros(n,1); lb=((sxc*sly)-(sxly*sx))/((n*sxc)-(sx^2));
for i=1:n
sum2=0; fprintf('\nLa función logaritmica exponencial
for j=m:-1:1 resultante es:\n ln(y) = (%d) * x +
sum2=sum2+(x(j)*(a(i,1)^(j-1))); (%d)\n',m,lb);
end yp=zeros(n,1);
E(i)=(abs(a(i,2)-sum2))^2; for i=1:n
end yp(i)=(m*a(i,1))+lb;
SE=0; end
for i=1:n E=zeros(n,1);
SE=SE+E(i); for i=1:n
end E(i)=(abs(log(a(i,2))-((m*a(i,1))+lb)))^2;
fprintf('\nEl error absoluto promedio es:'); end
disp(SE); SE=0;
plot(a(1:n,1),yp); for i=1:n
hold on SE=SE+E(i);
end
elseif f==3 fprintf('\nEl error absoluto promedio es:');
sx=0; disp(SE);
sly=0; plot(a(1:n,1),exp(yp));
sxc=0; hold on
sxly=0;
for i=1:n end
sx=sx+log(a(i,1));
sly=sly+log(a(i,2));
%%if f==3
sxc=sxc+(log(a(i,1)))^2;
%% loglog(a(1:n,1),a(1:n,2),'.');
sxly=sxly+log((a(i,1))*log(a(i,2)));
%% grid on
end
%% grid minor
m=((n*sxly)-(sx*sly))/((n*sxc)-(sx^2));
%%else
lb=((sxc*sly)-(sxly*sx))/((n*sxc)-(sx^2));
plot(a(1:n,1),a(1:n,2),'.');
grid on
fprintf('\nLa función logaritmica potencial resultante grid minor
es:\n ln(y) = (%d) * ln(x) + (%d)\n',m,lb); %%end
yp=zeros(n,1);
for i=1:n
yp(i)=(m*log(a(i,1)))+lb;
end end
E=zeros(n,1);
Obteniendo la función de la recta

>> MinimosCuadrados 0.005000000000000 0.096300000000000


Método de Minimos Cuadrados 0.006000000000000 0.129400000000000
Siga los siguientes pasos para ingresar los 0.007000000000000 0.255120000000000
puntos experimentales. 0.008000000000000 0.518700000000000
0.009000000000000 0.800700000000000
Indique el número de puntos experimentales a 0.010000000000000 1.235120000000000
ingresar: 10

Escriba los componentes de cada punto en el Indique el método a utilizar.


siguiente orden: [1] Recta
X1: 1 [2] Polinomio
Y1: 2.6 [3] Funcón potencial
X2: 2 [4]Funcion exponencial
Y2: 7.2
X3: 3 Su decisión: 1
Y3: 21.5
X4: 4 La recta resultante es:
Y4: 57.3
X5: 5
Y5: 96.3
X6: 6
Y6: 129.4
X7: 7
Y7: 255.12
X8: 8
Y8: 518.7
X9: 9
Y9: 800.7
X10: 10
Y10: 1235.12

Los puntos experimentales ingresados


y = (1.197560e+02) x + (-3.462640e+02)
son:

El error absoluto promedio es:


1.0e+03 *
3.715261747200000e+05
0.001000000000000 0.002600000000000
0.002000000000000 0.007200000000000
0.003000000000000 0.021500000000000
0.004000000000000 0.057300000000000
Obteniendo la función del polinomio

>> MinimosCuadrados Indique el método a utilizar.


Método de Minimos Cuadrados [1] Recta
Siga los siguientes pasos para ingresar los puntos [2] Polinomio
experimentales. [3] Funcón potencial
[4]Funcion exponencial
Indique el número de puntos experimentales a ingresar:
10 Su decisión: 2

Escriba los componentes de cada punto en el siguiente Indique el grado deseado del polinomio: 2
orden: sxy 1.0e+05 *
X1: 1
Y1: 2.6 0.031239400000000
X2: 2 0.270615400000000
Y2: 7.2 2.422739800000000
X3: 3
Y3: 21.5
X4: 4 La matriz resultante para obtener el polinomio es:
Y4: 57.3 1.0e+05 *
X5: 5
Y5: 96.3 0.000100000000000 0.000550000000000
X6: 6 0.003850000000000 0.031239400000000
Y6: 129.4 0.000550000000000 0.003850000000000
X7: 7 0.030250000000000 0.270615400000000
Y7: 255.12 0.003850000000000 0.030250000000000
X8: 8 0.253330000000000 2.422739800000000
Y8: 518.7
X9: 9
Y9: 800.7 El polinomio de grado 2 resultante es:
X10: 10
Y10: 1235.12 (2.523432e+01)(x^2) + (-1.578215e+02)(x^1) +
(2.088910e+02)(x^0)
Los puntos experimentales ingresados son:
El error absoluto promedio es:
1.0e+03 * 3.531118487454549e+04

0.001000000000000 0.002600000000000
0.002000000000000 0.007200000000000
0.003000000000000 0.021500000000000
0.004000000000000 0.057300000000000
0.005000000000000 0.096300000000000
0.006000000000000 0.129400000000000
0.007000000000000 0.255120000000000
0.008000000000000 0.518700000000000
0.009000000000000 0.800700000000000
0.010000000000000 1.235120000000000
Obteniendo la función logarítmica potencial

>> MinimosCuadrados 0.002000000000000 0.007200000000000


Método de Minimos Cuadrados 0.003000000000000 0.021500000000000
Siga los siguientes pasos para ingresar los puntos 0.004000000000000 0.057300000000000
experimentales. 0.005000000000000 0.096300000000000
0.006000000000000 0.129400000000000
Indique el número de puntos experimentales a 0.007000000000000 0.255120000000000
ingresar: 10 0.008000000000000 0.518700000000000
0.009000000000000 0.800700000000000
Escriba los componentes de cada punto en el 0.010000000000000 1.235120000000000
siguiente orden:
X1: 1
Y1: 2.6 Indique el método a utilizar.
X2: 2 [1] Recta
Y2: 7.2 [2] Polinomio
X3: 3 [3] Funcón potencial
Y3: 21.5 [4]Funcion exponencial
X4: 4
Y4: 57.3 Su decisión: 3
X5: 5
Y5: 96.3 La función logaritmica potencial resultante es:
X6: 6 ln(y) = (-8.129706e+00) * ln(x) +
Y6: 129.4 (1.678682e+01)
X7: 7
Y7: 255.12 El error absoluto promedio es:
X8: 8 2.534743386557699e+06
Y8: 518.7
X9: 9
Y9: 800.7
X10: 10
Y10: 1235.12

Los puntos experimentales ingresados son:

1.0e+03 *

0.001000000000000
0.002600000000000
Obteniendo la función logarítmica exponencial

>> MinimosCuadrados
Método de Minimos Cuadrados
Siga los siguientes pasos para ingresar los puntos Indique el método a utilizar.
experimentales. [1] Recta
[2] Polinomio
Indique el número de puntos experimentales a [3] Funcón potencial
ingresar: 10 [4]Funcion exponencial

Escriba los componentes de cada punto en el Su decisión: 4


siguiente orden:
X1: 1 La función logaritmica exponencial resultante es:
Y1: 2.6 ln(y) = (6.614706e-01) * x +
X2: 2 (8.692909e-01)
Y2: 7.2
X3: 3 El error absoluto promedio es:
Y3: 21.5 1.024015549665793
X4: 4
Y4: 57.3
X5: 5
Y5: 96.3
X6: 6
Y6: 129.4
X7: 7
Y7: 255.12
X8: 8
Y8: 518.7
X9: 9
Y9: 800.7
X10: 10
Y10: 1235.12

Los puntos experimentales ingresados son:

1.0e+03 *

0.001000000000000 0.002600000000000
0.002000000000000 0.007200000000000
0.003000000000000 0.021500000000000
0.004000000000000 0.057300000000000
0.005000000000000 0.096300000000000
0.006000000000000 0.129400000000000
0.007000000000000 0.255120000000000
0.008000000000000 0.518700000000000
0.009000000000000 0.800700000000000
0.010000000000000 1.235120000000000

También podría gustarte