La interpolación de Lagrange es una técnica para calcular un polinomio que pasa por un conjunto de puntos.
Interpolación de un vector como un polinomio
Ejemplos
Una línea recta a través de dos puntos
Consideremos que si tenemos dos puntos, pueden ser interpolados con una línea. Por ejemplo, dados y , podemos trazar una línea que interseca ambos puntos, la cual sería un polinomio de grado , .
Un solo punto
Ahora consideremos que si tenemos un solo punto, podemos trazar una línea a través de ese punto con un polinomio de grado 0. Por ejemplo, si el punto es podemos trazar una línea a través de él (que es un polinomio de grado ).
Tres puntos y una parábola
El patrón de que podemos “trazar un polinomio a través de” puntos con un polinomio de (como máximo) grado se mantiene para cualquier número de puntos. Por ejemplo, los puntos pueden ser interpolados con . Si esos puntos resultaran estar en una línea recta, por ejemplo , entonces podríamos trazar una línea a través de y con un polinomio de grado 1 , pero en general, tres puntos no serán colineales, por lo que necesitaremos un polinomio de grado 2 para cruzar todos los puntos.
Código Python para la interpolación de Lagrange
Para nuestros propósitos, no es importante entender cómo calcular este polinomio, ya que existen bibliotecas matemáticas que lo harán por nosotros. El algoritmo más común es la interpolación de Lagrange y a continuación mostramos cómo hacerlo en Python.
Ejemplo con float
Podemos calcular un polinomio que cruza a través de los puntos usando la interpolación de Lagrange.
from scipy.interpolate import lagrange
x_values = [1, 2, 3, 4]
y_values = [4, 8, 2, 1]
print(lagrange(x_values, y_values))
# 3 2
# 2.5 x - 20 x + 46.5 x - 25
Ejemplo con campo finito
Usemos el mismo polinomio de antes, pero esta vez usaremos un campo finito en lugar de números de punto flotante.
import galois
import numpy as np
GF17 = galois.GF(17)
xs = GF17(np.array([1,2,3,4]))
ys = GF17(np.array([4,8,2,1]))
p = galois.lagrange_poly(xs, ys)
assert p(1) == GF17(4)
assert p(2) == GF17(8)
assert p(3) == GF17(2)
assert p(4) == GF17(1)
Unicidad del polinomio interpolador
Volviendo a nuestro ejemplo de los puntos , el polinomio de menor grado que los interpola es . En general,
Para un conjunto de puntos, existe un único polinomio de menor grado de como máximo grado que los interpola.
El polinomio de menor grado que interpola los puntos a veces se denomina polinomio de Lagrange.
La consecuencia de esto es que
Si usamos los puntos como los valores de para convertir un vector de longitud a un polinomio mediante la interpolación de Lagrange, entonces el polinomio resultante es único.
En otras palabras, dada una base consistente de valores de x sobre la cual interpolar un vector, existe un único polinomio que interpola un vector dado. Dicho de otra manera, todo vector de longitud tiene una representación polinómica única.
De manera informal, todo vector de grado tiene un único polinomio de grado que lo “representa”. El grado podría ser menor si, por ejemplo, los puntos son colineales, pero el vector será único.
La parte del “menor grado” es importante. Dados dos puntos, hay una cantidad extremadamente grande de polinomios que cruzan esos dos puntos, pero el polinomio de menor grado es único.