Cálculo de la línea recta mejor ajuste por el método de mínimos cuadrados
Enviado por vigtor2020garcia • 20 de Septiembre de 2020 • Práctica o problema • 288 Palabras (2 Páginas) • 188 Visitas
“Cálculo de la línea recta mejor ajuste por el método de mínimos cuadrados”
Objetivo:
Aprender a programar en Matlab método de mínimos cuadrados de línea recta de mejor ajuste.
Introducción:
Método de mínimos cuadrados de una línea recta mejor ajuste.
Mínimos cuadrados es una técnica de análisis numérico encuadrada dentro de la optimización matemática, en la que, dados un conjunto de pares ordenados: variable independiente (y), variable dependiente (x), y una familia de funciones, se intenta encontrar la función, dentro de dicha familia, que mejor se aproxime a los datos (un "mejor ajuste"), de acuerdo con el criterio de mínimo error cuadrático. De esta manera, cuanto menor sea el error que estemos cometiendo, mejor será la aproximación que estemos haciendo de ese conjunto de valores.
Este método consiste, básicamente, en aproximar un conjunto de puntos (n) mediante una recta de la forma y=mx+b , donde los valores m y b, los deberemos calcular mediante las siguientes fórmulas:
[pic 1]
Algoritmo minimos cuadrados mejor ajuste para línea recta:
clear all
clc
fprintf('minimos cuadrados mejor ajuste para linea recta\n');
VecX =input('ingresa los valores de VecX:\n');
VecY=input('ingresa los valores de VecY:\n');
xm=input('ingresa un valor de x para analisar la pendiente:\n');
n=length(VecX);
p=VecX.';
q= VecY.';
r=p.*q;
s=p.*p;
a1=sum(VecX);
a2=sum(VecY);
a3=sum(r);
a4=sum(s);
m=b/n;
j=sum((VecY -m).^2);
A=[a4 a1;a1 n];
B=[a3 a2];
b=sum y(sum x^2) -sumx(sum(x*y)/n(sum x^2)-|sum x|^2
X=inv(A)*(B');
l=X(1);r=X(2);
fprintf('\nLos coeficientes de la ecuacion son:\n')
fprintf(' a1 a2 \n')
fprintf('%8.8f%10.8f\n',l,r)
fun=input('\nLa funcion lineal es y=','s');
y=l* VecX +r;
t=sum((VecY -y).^2);
r2=1-(t/j);
z=(r2)^0.5;
m=diff(fun);
x=xm;
n=eval(m);
fprintf('\n El coeficiente de determinacion r^2=');
fprintf('%5.5f\n',r2);
if(n>0)
fprintf('\n El coeficiente de correlacion r=');
fprintf('%5.5f\n',z);
elsefprintf('\n El coeficiente de correlacion r=');
fprintf('%5.5f\n',-z);
end
hold on
ezplot(fun),grid on,
plot(VecX, VecY,'m.'),
hold off
Resultados:
[pic 2]
Conclusiones:
La búsqueda de información para llevar a cabo esta práctica permitió tener noción de la mecánica para programar el método en Matlab.
Referencias:
Metodos numéricos básicos para ingeniería. Carlos Armando de Castro
Matlab: una introducción con ejemplos prácticos. Amos Gilat
...