Documentos de Académico
Documentos de Profesional
Documentos de Cultura
“TRABAJO PRÁCTICO # 2”
2.3 Comparación de los resultados con el método de Splines y el Método de Interpolación con
Polinomios
Figura 3: Datos del problema dibujados con una cruz en negro, valores estimados con las Splines con un
símbolo de rojo y, los valores estimados con el Polinomio de Interpolación con otro símbolo de color azul.
3. Conclusiones
3.1 En la comparación de los resultados entre los códigos desarrollados y las funciones integradas
de MATLAB, se observó una coherencia notable en los valores numéricos, evidenciando
diferencias mínimas que sugieren una implementación precisa de los métodos de interpolación.
La validación cruzada en distintos conjuntos de datos respaldó la consistencia y robustez de las
implementaciones, generando así confianza en la exactitud de los resultados obtenidos.
3.2 El polinomio de interpolación exhibió oscilaciones más pronunciadas, especialmente en los
extremos del intervalo de interpolación, un fenómeno esperado debido al comportamiento de
Runge. En contraste, los splines cúbicos demostraron ser eficaces en controlar las oscilaciones
no deseadas, generando curvas suaves y más representativas de la naturaleza continua de los
datos.
La simplicidad inherente de los splines, al dividir el conjunto de datos en segmentos, condujo
a una representación más clara y fácilmente interpretable, en comparación con la complejidad
inherente de los polinomios de interpolación de alto grado. La visualización gráfica confirmó
que los splines proporcionan una interpolación más suave y adaptada a la naturaleza de los
datos, especialmente en situaciones donde los polinomios de interpolación pueden generar
oscilaciones excesivas.
4. Anexo
4.1 Método de Interpolación con Polinomios
function [yi, p, b] = inter_newton(x, y, xi)
% Validación de las entradas
if nargin ~= 3
error('Se requieren tres argumentos de entrada.');
end
n = length(x);
b = zeros(n);
x1 = '';
for i = 1:j-1
signo2 = '';
if x(i) >= 0
signo2 = '+';
end
x1 = strcat(x1, '*(x', signo2, num2str(-x(i)), ')');
end
for k = 1:length(xi_range)
xi_current = xi_range(k);
% Interpolación de Newton
yi_newton(k) = b(1, 1);
for j = 1:n-1
term = b(1, j+1);
for i = 1:j
term = term * (xi_current - x(i));
end
yi_newton(k) = yi_newton(k) + term;
end
% Graficar la diferencia
figure;
plot(xi_range, diff, 'o-');
xlabel('x');
ylabel('Diferencia entre Newton y Polyfit/Polyval');
title('Diferencia entre Interpolación de Newton y Polyfit/Polyval para diferentes
xi');
end
l = zeros(1, n-2);
mu = zeros(1, n-2);
z = zeros(1, n-2);
for j = n-2:-1:1
c(j) = z(j) - mu(j) * c(j+1);
b(j) = (y(j+1) - y(j)) / h(j) - h(j) * (c(j+1) + 2 * c(j)) / 3;
d(j) = (c(j+1) - c(j)) / (3 * h(j));
end
for i = 1:n-1
indices = find(x_evaluar >= x(i) & x_evaluar <= x(i+1));
xx = x_evaluar(indices);
yy = y(i) + b(i) * (xx - x(i)) + c(i) * (xx - x(i)).^2 + d(i) * (xx -
x(i)).^3;
y_splines(indices) = yy;
end
legend;
xlabel('x');
ylabel('y');
title('Interpolación con Splines Cúbicos');
end
• Función
function comparar_interpolaciones(x, y, x_evaluar)
% Calcular interpolación con splines cúbicos
y_splines = spline_interpolacion(x, y, x_evaluar);
% Calcular la diferencia
diferencia = y_interp1 - y_splines;
% Graficar resultados
figure;
plot(x_evaluar, y_splines, 'r-', 'DisplayName', 'Interpolación con Splines');
hold on;
plot(x_evaluar, y_interp1, 'b-', 'DisplayName', 'Interpolación con Interp1');
xlabel('Temperatura');
ylabel('% de alargamiento');
title('Comparación entre Splines e Interp1');
legend;
end
4.3 Comparación de los resultados con el Método de Splines y el Método de Interpolación con
Polinomios
function comparar_metodos_interpolacion(temperaturas, alargamientos)
% Puntos de evaluación para la interpolación
x_evaluar = linspace(min(temperaturas), max(temperaturas), 1000);
% Método de Splines
y_splines = spline_interpolacion(temperaturas, alargamientos, x_evaluar);
% Graficar resultados
figure;
hold on;
% Datos originales
plot(temperaturas, alargamientos, 'kx', 'DisplayName', 'Datos Originales');
% Splines
plot(x_evaluar, y_splines, 'r-', 'DisplayName', 'Splines');
xlabel('Temperatura (°C)');
ylabel('Porcentaje de Alargamiento');
title('Comparación de Métodos de Interpolación');
legend;