Interpolación
Interpolación
polinomial
Cálculo Numérico
Interpolación
La idea de interpolar es dar un valor a una función en un punto
que no se conoce, utilizando la información conocida.
Por ejemplo, supongamos que tenemos la siguiente información de
las temperaturas en un dı́a según la hora.
hora temperatura
0 12
5 12.5
10 16
12 18.3
16 20
Una preguntar natural es tratar saber qué temperaturas habı́a en la
hora 3,8,11. Como esa información no se encuentra en la tabla,
tratamos de deducirla a partir de esa información.
Interpolación
En el caso general, poseemos la siguiente información.
x0 f0
x1 f1
.. ..
. .
xk fk
.. ..
. .
xn fn
Y nos gustarı́a conocer el valor de f para un punto xI que se
encuentra entre x0 y xn pero que está en la tabla. Lo que hoy
veremos será como hacer interpolación con polinomios
Interpolación
Weierstrass
La interpolación polinomica es buena en el sentido que para una
función continua y dada una tolerancia ε, existe un polinomio que
lo aproxime con tolerancia. Esto se sustenta con el teorema de
aproximación de Weierestrass.
Teorema
Dada una función f (x) continua en [a, b] y una tolerancia ε > 0,
entonces existe un polinomio p(x) tal que ∀x ∈ [a, b]:
|f (x) − P(x)| < ε
Interpolación
Considerando que conocemos n + 1 punto con información, lo
natural para interpolar es hacerlo con un polinomio de grado a lo
más n. Buscamos conocer entonces los coeficientes del polinomio:
pn (x) = x n an + x n−1 an−1 + ... + x 2 a2 + xa1 + a0
A continuación presentamos 3 formas de hacerlo.
Interpolación
Base canónica
Si reemplazamos los n + 1 puntos se tiene n + 1 ecuaciones con
n + 1 incógnitas:
pn (x0 ) = x0n an + x0n−1 an−1 + ... + x02 a2 + x0 a1 + a0 = f0
pn (x1 ) = x1n an + x1n−1 an−1 + ... + x12 a2 + x1 a1 + a0 = f1
.. . .
. = .. = ..
pn (xn ) = xnn an + xnn−1 an−1 + ... + xn2 a2 + xn a1 + a0 = fn
El cual puede ser llevado a la forma Ax = b el cual al resolverlo
entrega los coeficientes del polinomio. Si todos los xi son distintos,
la matriz A resultante es invertible y por lo tanto el sistema
anterior es tiene solución única.
Interpolación
Ejercicio
1
Interpole la función f (x) = para los valores x = 1, 2, 3
x
Cuando la función f (x) es conocida pero quiere que ser interpolada
por un polinomio, existe un error asociado al hacer esto.
Interpolación
Error de interpolación
Se define el error de interpolación en un punto x̄ como
E (x̄) = f (x̄) − pn (x̄)
Este error lo podemos calcular siempre y cuando la función f sea
conocida.
Teorema
Supongamos que f es n + 1 veces continuamente diferenciable en
[a, b], x0 , x1 , ..., xn puntos distintos y pn el polinomio de
interpolación. Entonces ∀x̄ ∈ [a, b] existe ξ = ξ(x̄) tal que:
f (n+1) (ξ)
E (x̄) = f (x̄) − pn (x̄) = (x̄ − x0 )(x̄ − x1 ) · · · (x̄ − xn )
(n + 1)!
Interpolación
En el caso en que los puntos estén equiespaciados, es decir para
cualquier i xi+1 − xi = h el error máximo de interpolación está
dado por:
Mhn+1
4(n + 1)
donde M := máxa≤x≤b |f (n+1) (x)|.
Interpolación
En el caso en que los puntos estén equiespaciados, es decir para
cualquier i xi+1 − xi = h el error máximo de interpolación está
dado por:
Mhn+1
4(n + 1)
donde M := máxa≤x≤b |f (n+1) (x)|.
Ejercicio
Calcule la distancia h entre cada punto de tal forma que la
√
interpolación de x por un polinomio de grado 2 en el intervalo
[1, 2] tenga un error acotado de a lo más ε = 5 · 10−8 .
Interpolación
Interpolación de Lagrange
La idea del método de Lagrange es encontrar polinomios Li (x) con
i = 0, .., n tales que:
pn (x) = f0 L0 (x) + f1 L1 (x) + ... + fn Ln (x)
(Notar que este polinomio que se encontrará será igual al de la
forma anterior, lo que está cambiando es la forma de hallarlo.)
Estos polinomios
( de Lagrange cumplen que:
1 x = xk
Lk (x) =
0 x = xi , i 6= k
Interpolación
La forma de construir estos polinomios es la siguiente:
(x − x1 )(x − x2 ) · · · (x − xn )
L0 (x) = Sin considerar (x − x0 ).
(x0 − x1 )(x0 − x2 ) · · · (x0 − xn )
(x − x0 )(x − x2 ) · · · (x − xn )
L1 (x) = Sin considerar (x − x1 ).
(x1 − x0 )(x1 − x2 ) · · · (x1 − xn )
Ası́ de forma general:
(x − x0 )(x − x1 ) · · · (x − xn )
Lk (x) = Sin considerar (x − xk ).
(xk − x0 )(xk − x1 ) · · · (xk − xn )
Interpolación
Interpolación de Newton
La idea de la interpolación de Newton es tratar de utilizar la menor
información posible para encontrar el polinomio de interpolación.
La estructura es la siguiente:
Comienza interpolando una cantidad pequeña de puntos
(x0 , f0 ), ..., (xk , fk ) (puede ser incluso para (x0 , f0 ) obteniendo
ası́ pk (x). Verificar si pk (x) interpola a todos los puntos.
Si pk (x) no interpola a todos los puntos agregar el punto
(xk+1 , fk+1 ) y buscar el polinomio de interpolación pk+1 (x)
haciendo uso de pk (x)
Para cuando el polinomio encontrado interpola todos los
puntos.
Interpolación
Una idea para implementar lo anterior es generar los siguientes
polinomios:
p0 (x) = a0
p1 (x) = p0 (x) + a1 (x − x0 )
p2 (x) = p1 (x) + a2 (x − x0 )(x − x1 )
.. .
. = ..
pk (x) = pk−1 (x) + ak (x − x0 )(x − x1 ) · · · (x − xk−1 )
Y despejar vı́a sustitución
Interpolación
El módulo para interpolar en python es [Link] Algunas
de las funciones que interpolan polinomios:
[Link](x,y)
[Link](x,y)
[Link](x,y)
Interpolación
Interpolación de Hermite
En lo que hemos visto, dados n + 1 puntos (x0 , f0 ), .., (xn , fn ) se
quiere encontrar un polinomio de grado a lo más n que satisfaga
pn (xk ) = fk , ∀k = 0, 1, ..., n
Ahora supondremos también que la información de las derivadas en
cada punto son conocidas, entonces nuestra información es
(x0 , f0 , f00 ), ..., (xn , fn , fn0 ) y buscamos ahora un polinomio de grado
2n + 1 que denotaremos por H2n+1 que cumpla que:
H2n+1 (xk ) = fk , ∀k = 0, 1, ..., n
0
H2n+1 (xk ) = fk0 , ∀k = 0, 1, ..., n
Al polinomio H2n+1 se le denomina el polinomio de Hermite.
Interpolación
Existencia y unicidad
Teorema
Sea f (x) una función diferenciable en el intervalo [a, b] y
x0 , x1 , ..., xn n + 1 números distintos en [a, b]. Entonces existe un
único polinomio H2n+1 de grado a lo más 2n + 1 tal que:
i) H2n+1 (xk ) = f (xk ), ∀k = 0, 1, ..., n
0
ii) H2n+1 (xk ) = f 0 (xk ), ∀k = 0, 1, ..., n
Interpolación
¿Como construimos este polinomio? Una de las formas en la
que se puede y que mostramos es a través de los polinomios de
Lagrange. Recordemos que:
n
Y (x − xi )
Lk (x) =
(xk − xi )
i=0,i6=k
(
1 x = xk
Y esta función cumple con que: Lk (x) =
0 x = xi , i 6= k
Interpolación
El polinomio de Hermite tendrá la siguiente forma:
n
X n
X
H2n+1 (x) = f (xk )Bk (x) + f 0 (xk )B̂k (x)
k=0 k=0
Donde los polinomios Bk , B̂k se definen como:
Bk (x) = (1 − 2(x − xk )L0k (xk ))L2k (xk )
B̂(x) = (x − xk )L2k (x)
Interpolación
Estos polinomios cumple que:
(
1 x = xk
Bk (x) =
0 x = xi , i 6= k
B̂k (xj ) = 0, ∀j = 0, 1, ..., n
Y sus derivadas cumplen:
(
1 x = xk
B̂k0 (x) =
0 x = xi , i 6= k
Bk0 (xj ) = 0, ∀j = 0, 1, ..., n
Interpolación
Probemos las propiedades anteriores
Interpolación
Ejercicio
Encuentre el polinomio de Hermite para los siguientes datos:
x f(x) f’(x)
1 0 1
2 0.6 0.5
Utilı́celo para interpolar el valor de f (1,5)
Interpolación
A veces no un solo polinomio no se ajusta de mejor manera a la
1
función, por ejemplo, consideremos la función f (x) = 2
25x + 1
Interpolación
A veces no un solo polinomio no se ajusta de mejor manera a la
1
función, por ejemplo, consideremos la función f (x) = 2
25x + 1
Ejercicio*
Interpole la función previa para 5,9 y 15 puntos en el intervalo
[−1, 1], los puntos a considerar deben estar equiespaciados, es
decir la diferencia entre dos puntos consecutivos es la misma.
Utilice BarycentricInterpolator de [Link].
Grafique las 3 funciones obtenidas junto con la función f (x) en el
intervalo [−1, 1]. Las curvas deben ser de distinto color.
Interpolación
Interpolación por intervalos
Debido a casos como la función del ejercicio, resulta una mejor
interpolación hacer una división de intervalos del intervalo mayor y
en cada intervalo hacer una interpolación.
Piecewise Polynomial Interpolation (Interpolación polinomial por
trozos)
Sean n + 1 puntos distintos (x0 , f0 ), (x1 , f1 ), ..., (xn , fn ) donde
a = x0 < x1 < x2 < ... < xn−1 < xn = b. La interpolación
polinomial por trozos consiste en dividir el intervalo [a, b] en n
subintervalos I1 = [x0 , x1 ], I2 = [x1 , x2 ], ..., In = [xn−1 , xn ] y en cada
intervalo Ik hacer una interpolación polinomial pk (x) todos del
mismo grado.
Interpolación
Piecewise Polynomial Interpolation
La interpolación polinomial por trozos puede ser hecha de muchas
formas.
Interpolación lineal por trozos Es una herramienta útil ya
que en cada intervalo se traza una recta, lo que lo hace fácil
de ocupar, sin embargo, si son pocos datos, las curvas no son
suaves ya que la derivada se vuelve discontinua.
Piecewise Hermite Cubic Polynomial Esta interpolación
interpola polinomios cúbicos de hermite en cada intervalo, la
dificultad de esta interpolación está en conocer las derivadas
en cada punto, sin embargo, si esta información es conocida,
se obtienen buenos resultados.
Spline Una Spline es una interpolación que conserva la
suavidad de la función. Se dirá que una spline es de grado s, si
es s − 1 veces continuamente diferenciable. Las más comunes
son las splines cúbicas, y las detallaremos a continuación.
Interpolación
Spline cúbica
Spline cúbica
Sean n + 1 puntos distintos (x0 , f0 ), (x1 , f1 ), ..., (xn , fn ) donde
a = x0 < x1 < x2 < ... < xn−1 < xn = b. La spline cúbica S(x) se
define como:
S1 (x) x0 ≤ x ≤ x1
S2 (x) x1 ≤ x ≤ x2
S(x) = . ..
.. .
Sn (x) xn−1 ≤ x ≤ xn
Donde Sk (x) son polinomios cúbicos.
Interpolación
Spline cúbica
Spline cúbica
Estos polinomios cúbicos cumplen con que
Sk (xk ) = fk , ∀k = 0, .., n
Sk (xk+1 ) = Sk+1 (xk+1 ), ∀k = 1, .., n − 1
Sk0 (xk+1 ) = Sk+1
0 (xk+1 ), ∀k = 1, .., n − 1
Sk00 (xk+1 ) = Sk+1
00 (x
k+1 ), ∀k = 1, .., n − 1
Interpolación
Spline cúbica
Spline cúbica
Estos polinomios cúbicos cumplen con que
Sk (xk ) = fk , ∀k = 0, .., n
Sk (xk+1 ) = Sk+1 (xk+1 ), ∀k = 1, .., n − 1
Sk0 (xk+1 ) = Sk+1
0 (xk+1 ), ∀k = 1, .., n − 1
Sk00 (xk+1 ) = Sk+1
00 (x
k+1 ), ∀k = 1, .., n − 1
Esto nos genera 4n − 2 ecuaciones y nosotros tenemos 4n
incógnitas por lo que debemos agregar condiciones extras.
Interpolación
Las condiciones para poder encontrar todas las incógnitas son las
siguientes:
Condiciones de borde libres: Consiste en imponer la
segunda derivada de los puntos extremos igual a 0.
S 00 (x0 ) = S 00 (xn ) = 0
Condiciones de borde fijo o natural: Consiste en fijar los
valores de las derivadas en los extremos.
S 0 (x0 ) = f 0 (x0 ), S 0 (xn ) = f 0 (xn )
Not a knot: Consiste en imponer la tercera derivada continua
en el punto x1 o xn−1 .
S1000 (x1 ) = S2000 (x1 ) o Sn−1
000
(xn−1 ) = Sn000 (xn−1 )
Interpolación
Las tres formas anteriores de obtener las splines generan 3 splines
que no necesariamente son iguales.
Para ver toda la baterı́a de funciones de interpolación que hay en
scipy pueden visitar:
[Link]
[Link]