Interpolación de Newton por diferencias

 Fundamento teórico

La interpolación de Newton por diferencias es un método para encontrar un polinomio interpolante que pasa por un conjunto de puntos conocidos (x0,y0),(x1,y1),...,(xn,yn)(x_0, y_0), (x_1, y_1), ..., (x_n, y_n). Este método es útil cuando los puntos tienen valores de xx no equidistantes.

El polinomio interpolante en su forma general es:

P(x)=f[x0]+f[x0,x1](xx0)+f[x0,x1,x2](xx0)(xx1)++f[x0,...,xn](xx0)...(xxn1)P(x) = f[x_0] + f[x_0,x_1](x - x_0) + f[x_0,x_1,x_2](x - x_0)(x - x_1) + \dots + f[x_0,...,x_n](x - x_0)...(x - x_{n-1})

Donde f[xi,...,xj]f[x_i, ..., x_j] son las diferencias divididas, que se calculan de forma recursiva.


Pasos del algoritmo

  1. Organizar los datos conocidos (xi,yi)(x_i, y_i).

  2. Calcular la tabla de diferencias divididas.

  3. Construir el polinomio interpolante con la forma de Newton usando los coeficientes de la primera fila.

  4. Evaluar el polinomio en el punto deseado si es necesario.


Ejemplo resuelto paso a paso

Dado:

xf(x)112439\begin{array}{|c|c|} \hline x & f(x) \\ \hline 1 & 1 \\ 2 & 4 \\ 3 & 9 \\ \hline \end{array}

Paso 1: Calcular diferencias divididas

xf[x]f[xi,xi+1]f[xi,xi+1,xi+2]114121=3(53)31=1249432=539\begin{array}{|c|c|c|c|} \hline x & f[x] & f[x_i,x_{i+1}] & f[x_i,x_{i+1},x_{i+2}] \\ \hline 1 & 1 & \frac{4-1}{2-1} = 3 & \frac{(5-3)}{3-1} = 1 \\ 2 & 4 & \frac{9-4}{3-2} = 5 & \\ 3 & 9 & & \\ \hline \end{array}

Paso 2: Polinomio interpolante

P(x)=f[x0]+f[x0,x1](xx0)+f[x0,x1,x2](xx0)(xx1)P(x) = f[x_0] + f[x_0,x_1](x - x_0) + f[x_0,x_1,x_2](x - x_0)(x - x_1)
P(x)=1+3(x1)+1(x1)(x2)P(x) = 1 + 3(x - 1) + 1(x - 1)(x - 2)

Simplificando:

P(x)=1+3(x1)+(x1)(x2)=x2P(x) = 1 + 3(x - 1) + (x - 1)(x - 2) = x^2

Resultado: P(x)=x2P(x) = x^2


Código del método (Python)


def diferencias_divididas(x, y): n = len(x) coef = [[0 for _ in range(n)] for _ in range(n)] for i in range(n): coef[i][0] = y[i] for j in range(1, n): for i in range(n - j): coef[i][j] = (coef[i + 1][j - 1] - coef[i][j - 1]) / (x[i + j] - x[i]) return [coef[0][j] for j in range(n)] # Coeficientes del polinomio def newton_interpol(x_data, coef, x): n = len(coef) result = coef[0] for i in range(1, n): term = coef[i] for j in range(i): term *= (x - x_data[j]) result += term return result # Ejemplo x_vals = [1, 2, 3] y_vals = [1, 4, 9] coef = diferencias_divididas(x_vals, y_vals) print("Coeficientes:", coef) # Evaluar en x = 2.5 x_eval = 2.5 print(f"P({x_eval}) =", newton_interpol(x_vals, coef, x_eval))

Resultado

Coeficientes: [1, 3.0, 1.0] P(2.5) = 6.25

Conclusión sobre su uso y aplicación en la vida real

La interpolación de Newton es muy útil cuando se tienen datos en forma de tabla y se desea:

  • Aproximar valores intermedios.

  • Obtener una función que modele datos experimentales.

  • Utilizar datos con puntos no equidistantes.

Aplicaciones comunes:

  • Ciencias experimentales (química, física, ingeniería).

  • Finanzas (interpolación de tasas).

  • Computación gráfica y procesamiento de señales.

Ventajas:

  • Se puede extender fácilmente si se agregan nuevos puntos.

  • Útil con puntos no equidistantes.

Desventajas:

  • Menos eficiente para muchos puntos comparado con métodos como spline.

  • Sensible al orden de los puntos (el polinomio cambia si se altera el orden).

Comentarios

Entradas más populares de este blog

Métodos Numéricos: Cuando la Matemática se Vuelve Práctica