0% encontró este documento útil (0 votos)
9 vistas4 páginas

Codigos de Matlab

El documento presenta un laboratorio sobre la interpolación de Newton utilizando diferencias divididas para estimar el valor de f(x) en un punto específico. Se detalla la construcción de la matriz de diferencias divididas y se muestra el polinomio resultante. Finalmente, se evalúa el polinomio en el punto de interés, obteniendo un valor estimado de 1.386176 para x = 8.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas4 páginas

Codigos de Matlab

El documento presenta un laboratorio sobre la interpolación de Newton utilizando diferencias divididas para estimar el valor de f(x) en un punto específico. Se detalla la construcción de la matriz de diferencias divididas y se muestra el polinomio resultante. Finalmente, se evalúa el polinomio en el punto de interés, obteniendo un valor estimado de 1.386176 para x = 8.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Métodos Numéricos - Laboratorio

Solución del avance de Guía de Laboratorio N°3


Hecho por: Grupo: 01
Fecha: 8-Abril-2025

Diagrama de Flujo:

1
% Interpolación de Newton - Diferencias Divididas (versión sencilla)
clc; clear;

% DATOS
x = [0 5 10 15]; % Puntos x conocidos
y = [1.792 1.519 1.308 1.140]; % Valores f(x)
x_interp = 8; % Punto donde se quiere interpolar

n = length(x); % Número de puntos

2
% MATRIZ DE DIFERENCIAS DIVIDIDAS
tabla = zeros(n,n);
tabla(:,1) = y'; % Primera columna = f(x)

for j = 2:n
for i = j:n
tabla(i,j) = (tabla(i,j-1) - tabla(i-1,j-1)) / (x(i) - x(i-j+1));
end
end

% MOSTRAR MATRIZ
disp('Matriz de diferencias divididas:');

Matriz de diferencias divididas:

disp(tabla);

1.7920 0 0 0
1.5190 -0.0546 0 0
1.3080 -0.0422 0.0012 0
1.1400 -0.0336 0.0009 -0.0000

% POLINOMIO DE NEWTON
syms X
polinomio = tabla(1,1);
producto = 1;

fprintf('\nPolinomio de Newton:\n');

Polinomio de Newton:

fprintf('P(X) = %.6f', tabla(1,1));

P(X) = 1.792000

for k = 1:n-1
producto = producto * (X - x(k));
nuevo_termino = tabla(k+1,k+1) * producto;
polinomio = polinomio + nuevo_termino;

% Mostrar término actual


fprintf(' + (%.6f)', tabla(k+1,k+1));
for j = 1:k
fprintf('(X - %.2f)', x(j));
end
end

+ (-0.054600)
(X - 0.00)
+ (0.001240)
(X - 0.00)(X - 5.00)
+ (-0.000025)

3
(X - 0.00)(X - 5.00)(X - 10.00)

% MOSTRAR POLINOMIO SIMPLIFICADO


fprintf('\n\nPolinomio simplificado:\n');

Polinomio simplificado:

disp(simplify(polinomio));

% EVALUAR EN x_interp
y_interp = double(subs(polinomio, X, x_interp));
fprintf('\nValor estimado en x = %.2f es: %.6f\n', x_interp, y_interp);

Valor estimado en x = 8.00 es: 1.386176

ANÁLISIS DEL CÓDIGO DE INTERPOLACIÓN DE NEWTON

Entrada de datos

x = [0 5 10 15];
y = [1.792 1.519 1.308 1.140];
x_interp = 8;

• Se definen 4 puntos conocidos.


• Se desea interpolar el valor de f(x) cuando x = 8.

Construcción de la matriz de diferencias divididas

tabla = zeros(n,n);
tabla(:,1) = y';

• Se inicializa una matriz cuadrada tabla.


• La primera columna se llena con los valores conocidos de f(x).

for j = 2:n
for i = j:n
tabla(i,j) = (tabla(i,j-1) - tabla(i-1,j-1)) / (x(i) - x(i-j+1));
end
end

• Se calculan las diferencias divididas sucesivas.


• Cada columna contiene diferencias de orden superior.

Resultado: se obtiene una matriz triangular superior, útil para formar el polinomio de Newton.

También podría gustarte