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