Objetivo
El objetivo de esta práctica es desarrollar e implementar un programa en MATLAB capaz de
resolver problemas de ajuste de curvas mediante dos métodos de regresión: lineal y
exponencial. A través de este código, se busca que el usuario pueda ingresar un conjunto de
coordenadas y obtener, de forma automática, la ecuación que mejor se ajusta a dichos datos,
ya sea una recta de la forma y = a₀ + a₁x o una curva exponencial de la forma y = a·eᵇˣ.
Además, el programa genera una representación gráfica de los resultados, lo que permite
visualizar qué tan bien el modelo se aproxima a los datos originales. En términos más
generales, la práctica tiene como fin reforzar la comprensión de los métodos numéricos de
regresión y su aplicación computacional para resolver problemas de interpolación y
predicción de datos
Descripción del Problema
Se desarrollará un código en Matlab para la resolución de un problema mediante Regresión
Lineal y Regresión Exponencial.
clear;
clc;
op = 1;
while op == 1 || op ==2
op = input("Ingrese 1 para hacer una regresion lineal. Ingrese 2 para
hacer una regresion exponencial. Ingrese cualquier otra tecla para salir. ")
switch op
case 1
%REGRESION LINEAL
for i=1 : 1 : 5
X(i) = input("Ingrese el valor de X para la coordenada: ");
Y(i) = input("Ingrese el valor de Y para la coordenada: ");
end
Sx = 0;
Sy = 0;
XY = 0;
XX = 0;
for i=1 : 1 : 5
Sx = Sx + X(i);
Sy = Sy + Y(i);
XY = XY + X(i)*Y(i);
XX = XX + X(i)*X(i);
end
Px = Sx/5;
Py = Sy/5;
PXY = XY/5;
%Ecuaciones
Scx = XX -(Sx^2/5);
Scy = XY - (Sx)*(Sy)/5;
a1 = Scy/Scx;
a0 = (Py) - a1*(Px);
%Recta
syms x;
y = a0 + a1*x;
disp("La recta es: y = ");
disp(y);
% Crear puntos para evaluar y graficar
x_vals = min(X)-1 : 0.1 : max(X)+1;
%Tabular
Y_vals = double(subs(y, x, x_vals));
subplot(1,2,1);
plot(x_vals, Y_vals, 'b', X, Y, 'ro', 'MarkerFaceColor', 'r');
grid on;
case 2
%REGRESION EXPONENCIAL
for i=1 : 1 : 5
X(i) = input("Ingrese el valor de X para la coordenada: ");
Y(i) = input("Ingrese el valor de Y para la coordenada: ");
end
Yln = 0;
XYln = 0;
Sx = 0;
Sy = 0;
XY = 0;
XX = 0;
for i = 1:1:5
Sx = Sx + X(i);
XX = XX + X(i)^2;
Yln = Yln + log(Y(i));
XYln = XYln + X(i)*log(Y(i));
end
B = (5*XYln - Sx*Yln) / (5*XX - Sx^2);
A = (Yln - B*Sx) / 5;
a = exp(A);
b = B;
% Coeficiente a
% Coeficiente b
%Recta
syms x_exp;
y_exp = a * exp(b * x_exp);
disp("La curva exponencial es: y = ");
disp(y_exp);
x_vals_exp = min(X)-1 : 0.1 : max(X)+1;
Y_vals_exp = double(subs(y_exp, x_exp, x_vals_exp));
% Graficar regresión exponencial
subplot(1,2,2);
plot(x_vals_exp, Y_vals_exp, 'g', X, Y, 'ro', 'MarkerFaceColor',
'r');
grid on;
title('Regresión Exponencial');
xlabel('X');
ylabel('Y');
legend('Curva exponencial', 'Datos');
end
end
Resultado en Consola
Conclusión
En conclusión, esta práctica dejó en claro que elegir el modelo de regresión correcto depende
directamente del comportamiento de los datos: cuando la tendencia es constante y
proporcional, la regresión lineal es suficiente; cuando los datos crecen o decrecen de forma
acelerada, la regresión exponencial ofrece un ajuste mucho más preciso. Saber identificar esa
diferencia y aplicar el método adecuado es una habilidad fundamental en el análisis
numérico.