3.
2 Interpolación de Newton
Algoritmo
1.Entrada: Lista de puntos x y sus valores correspondientes f(x).
2.Inicialización: Crear una matriz de diferencias divididas mdd con f(x) en la primera columna.
3.Cálculo de las Diferencias Divididas:
• Para cada columna j de la matriz mdd:
• Para cada fila i en la columna j:
• Calcular la diferencia dividida y almacenarla en mdd(i,j).
4.Construcción del Polinomio de Newton:
• Inicializar el polinomio con el primer término.
• Para cada término adicional, multiplicar por el producto correspondiente y agregar al polinomio.
5.Salida: Polinomio de interpolación y gráfico de la interpolación.
Diagrama de flujo
% Ingresamos datos
fprintf('Datos para la interpolacion\n');
Datos para la interpolacion
x = [1 2 3 5 7 8];
fx = [3 6 19 99 291 444];
n = length(fx);
mdd = zeros(n, n);
% Llenar la primera columna de la matriz de diferencias divididas con fx
for i = 1:n
mdd(i, 1) = fx(i);
end
% Calcular las diferencias divididas
for j = 2:n
for i = j:n
mdd(i, j) = (mdd(i, j-1) - mdd(i-1, j-1)) / (x(i) - x(i-j+1));
end
end
% Mostrar la matriz de diferencias divididas
disp('Matriz de diferencias divididas:');
1
Matriz de diferencias divididas:
disp(mdd);
3 0 0 0 0 0
6 3 0 0 0 0
19 13 5 0 0 0
99 40 9 1 0 0
291 96 14 1 0 0
444 153 19 1 0 0
% Construir el polinomio de interpolación de Newton
syms X;
polinomio = mdd(1, 1);
producto = 1;
for k = 1:n-1
producto = producto * (X - x(k));
polinomio = polinomio + mdd(k+1, k+1) * producto;
end
% Simplificar el polinomio
polinomio = simplify(polinomio);
% Mostrar el polinomio
disp('Polinomio de interpolación de Newton:');
Polinomio de interpolación de Newton:
disp(polinomio);
% Graficar el polinomio y los puntos dados
fplot(polinomio, [min(x) max(x)]);
hold on;
plot(x, fx, 'ro');
title('Polinomio de interpolación de Newton');
xlabel('x');
ylabel('f(x)');
legend('Polinomio de Newton', 'Datos originales');
grid on;
2
3