0% encontró este documento útil (0 votos)
98 vistas31 páginas

Clase 7

Este documento trata sobre diferentes métodos de interpolación polinómica. Explica que la interpolación consiste en estimar valores desconocidos de una función utilizando información conocida de puntos. Luego describe métodos como la interpolación polinómica de Lagrange, Newton y Hermite, así como conceptos como el error de interpolación. Finalmente menciona algunas funciones de interpolación en la biblioteca SciPy de Python.

Cargado por

Engell Cavada
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)
98 vistas31 páginas

Clase 7

Este documento trata sobre diferentes métodos de interpolación polinómica. Explica que la interpolación consiste en estimar valores desconocidos de una función utilizando información conocida de puntos. Luego describe métodos como la interpolación polinómica de Lagrange, Newton y Hermite, así como conceptos como el error de interpolación. Finalmente menciona algunas funciones de interpolación en la biblioteca SciPy de Python.

Cargado por

Engell Cavada
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

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]

También podría gustarte