Está en la página 1de 12

Tema 4

Interpolación e integración numérica

Interpolación

Introducción
Un problema común en cálculos científicos es el siguiente: conocemos el valor de
una función f(x) en un conjunto de puntos xi i=1,2,…,n tales que {x0 < x1 <…< xn}, pero
carecemos de una expresión analítica para f(x) que nos permita evaluarla en un punto
arbitrario. Los valores conocidos f(xi) provienen a menudo de medidas experimentales o
cálculos numéricos, que, sin embargo, no arrojan información alguna sobre la forma
funcional de f(x).
Nuestro objetivo es estimar el valor de f(x) para un x arbitrario, mediante técnicas
numéricas que vienen a ser equivalentes a hacer pasar una función suave (y conocida) por
los puntos {xi,f(xi)}. Si el valor x para el cual deseamos conocer f(x) es tal que
x ∈ {x1 , x2, ..., xn } entonces nuestro problema es una interpolación. Si por el contrario

x < x1 o x > xn , se trata de una extrapolación. En general, las predicciones de una


extrapolación son mucho más inseguras y sujetas a error que las de una interpolación.
La forma funcional de f(x) más corriente en problemas de interpolación es la
polinómica, que es la única que vamos a discutir con cierto detalle en esta lección.

Interpolación de Lagrange
Consideremos el caso más sencillo de interpolación polinómica, es decir aquel en el
que conocemos el valor de la función en dos puntos, { y1 , y2 } = { f ( x1 ), f ( x2 )} . La ecuación
de la recta que pasa por estos es:
x − x1 x − x0
y= y0 + y1 (1.1)
x0 − x1 x1 − x0
Que podemos reescribir como:

1
y = P( x) = Lo ( x) y0 + L1 ( x) y1 ,
x − x1 x − x0 (1.2)
L0 ( x) = , L1 ( x) =
x0 − x1 x1 − x0
Donde los polinomios Li toman los valores:
L0 ( x0 ) = 1, L0 ( x1 ) = 0, L1 ( x0 ) = 0, L1 ( x1 ) = 1.
El siguiente caso sería el de la parábola que pasa por tres puntos
{ y1 , y2 , y3 } = { f ( x1 ), f ( x2 ), f ( x3 )} :

y = P( x) = Lo ( x) y0 + L1 ( x) y1 + L2 ( x) y2
( x − x1 )( x − x2 ) ( x − x0 )( x − x2 ) ( x − x0 )( x − x1 ) (1.3)
L0 ( x) = , L1 ( x) = , L2 ( x) =
( x0 − x1 )( x0 − x2 ) ( x1 − x0 )( x1 − x2 ) ( x2 − x0 )( x2 − x1 )
Donde, igualmente:
L0 ( x0 ) = 1, L0 ( x1 ) = 0, L0 ( x2 ) = 0, etc
Podemos, por fin, generalizar al caso de n puntos:
n −1
P( x) = ∑ Lk ( x) yk
k =0
(1.4)
( x − xi )
Lk ( x) = ∏
0≤ i ≠ k ≤ n ( xk − xi )

Donde:
Lk ( x j ) = 1, j = k
(1.5)
= 0, j ≠ k

Ejemplo
Suponed que conocemos los valores de la función f(x) = 1/x en cuatro puntos, según
la siguiente tabla:
x 2 3 4 5
f(x) = 1/x 0.5 0.333333 0.25 0.2

Y deseamos estimar su valor en x = 3.5. La posibilidad más sencilla consiste en


interpolar un polinomio de grado uno, es decir una recta, a los valores 3 y 4, y a
continuación utilizar dicho polinomio para predecir el valor de la función en 3.5. De
acuerdo a la fórmula de Lagrange:

2
x −4 1 x−3 1 1 1
P( x) = L0 ( x) f ( x0 ) + L1 ( x) f ( x1 ) = + = ( x − 3) − ( x − 4)
3− 4 3 4−3 4 4 3
El valor del polinomio en x = 3.5 es:
1 1
P( x = 3.5) = (3.5 − 3) − (3.5 − 4) = 0.2917 mientras que el valor real de la
4 3
función en ese punto es f (3.5) = 0.2857 .
Podemos, a continuación interpolar un polinomio de grados dos a los puntos x =
2,3,4 o bien x = 3,4,5. En el primer caso, tenemos:
P( x) = L0 ( x) f ( x0 ) + L1 ( x) f ( x1 ) + L2 ( x) f ( x2 )
1 1
L0 ( x) = ( x − 3)( x − 4), L1 ( x) = −( x − 2)( x − 4), L2 ( x) = ( x − 2)( x − 3)
2 2

De tal manera que f (3.5) = 0.2813 . En el segundo caso:

P( x) = L0 ( x) f ( x0 ) + L1 ( x) f ( x1 ) + L2 ( x) f ( x2 )
1 1
L0 ( x) = ( x − 4)( x − 5), L1 ( x) = −( x − 3)( x − 5), L2 ( x) = ( x − 3)( x − 4)
2 2

De tal manera que f (3.5) = 0.2876 . Finalmente podemos intentar interpolar un


polinomio de grado tres a todos los puntos disponibles, obteniendo:
P( x) = L0 ( x) f ( x0 ) + L1 ( x) f ( x1 ) + L2 ( x) f ( x2 ) + L3 ( x) f ( x3 )
1 1
L0 ( x) = − ( x − 3)( x − 4)( x − 5), L1 ( x) = ( x − 2)( x − 4)( x − 5)
6 2
1 1
L2 ( x) = − ( x − 2)( x − 3)( x − 5), L3 ( x) = ( x − 2)( x − 3)( x − 4)
2 6
De tal manera que f (3.5) = 0.2844 . Por lo tanto, los errores de las cuatro
interpolaciones son 0.0060, -0.0045, 0.0018 y –0.0013.
¿Qué error cometemos al interpolar un polinomio de grado n –1 a n puntos?
Definiendo:
n
ψ n ( x) = ∏ ( x − xi ) (1.6)
i=0

Puede demostrarse que una cota superior en el error de interpolación viene dada por:
1
ε max = n+2
| ψ n ( x) | (1.7)
x0

3
Las implicaciones de las fórmulas (1.6) y (1.7) son las siguientes. El error de
interpolación se reduce a medida que el producto (1.6) se reduce (lo cual ocurre
normalmente a medida que aumenta el orden del polinomio interpolador) pero también se
reduce a medida que el primer punto de la interpolación se hace grande. Esto nos explica,
en particular, porqué, a la hora de interpolar una parábola al ejemplo anterior, es preferible
utilizar los puntos (3,4,5) (x0 = 3) que los puntos (2,3,4) (x0 = 2).
Es importante darnos cuenta que un polinomio no suele ser apropiado para
extrapolar una función, a no ser que el punto al que queramos extrapolar esté próximo al
intervalo en el cual conocemos la función. En otro caso el término 1/(x0 n+2) hace que el
error aumente muy deprisa.
Finalmente, debemos insistir en que la interpolación polinómica no da buenos
resultados cuando la función que queremos interpolar no es lo suficientemente suave.

Un problema que plantea la implementación práctica del algoritmo de Lagrange es


el hecho de que el grado del polinomio interpolador requerido para alcanzar una cierta
precisión no se conoce de antemano y por lo tanto uno está obligado a repetir la
interpolación completa cada vez, con polinomios de grado creciente, hasta alcanzar la
precisión requerida (notad que los Li son diferentes para una recta, una parábola, etc, como
hemos visto en el ejemplo anterior). La consecuencia obvia es que debemos modificar el
algoritmo buscando métodos iterativos que mejoren (presumiblemente) la precisión de la
interpolación a cada paso hasta obtener la que se desea. El método de Newton de las
diferencias divididas es un ejemplo de este tipo de métodos iterativos.

Algoritmo de Newton de las diferencias divididas


Supongamos que deseamos interpolar un polinomio de grado n a la función f(x) en
los puntos {x0 < x1 <…< xn}, para lo cual definimos un conjunto de coeficientes {p0, p1,
…pn}, tales que:
P( x) = p0 + p1 ( x − x0 ) + p2 ( x − x0 )( x − x1 ) + ... + pn ( x − x0 )( x − x1 )...( x − xn ) (1.8)

Para determinar los p0 , p1 ,..., pn aplicamos las ecuaciones (1.4) y (1.5):

4
P( x0 ) = f ( x0 ) = p0
P( x1 ) = f ( x1 ) = p0 + p1 ( x1 − x0 )
(1.9)
P( x2 ) = f ( x2 ) = p0 + p1 ( x2 − x0 ) + p1 ( x2 − x0 )( x2 − x1 )
....
Introduciendo las diferencias divididas:
f [ x0 ] = f ( x0 )
( f [ x1 ] − f [ x0 ])
f [ x0 , x1 ] =
( x1 − x0 )
( f [ x1 , x2 ] − f [ x0 , x1 ])
f [ x0 , x1 , x2 ] = (1.10)
( x2 − x0 )
...
( f [ x1 , x2 ,...xk +1 ] − f [ x0 , x1 ,...xk ])
f [ x0 , x1 , x2 ,...xk +1 ] =
( xk +1 − x0 )
Podemos escribir:
P( x0 ) = p0 = f ( x0 ) = f [ x0 ]
P( x1 ) = p0 + p1 ( x1 − x0 ) = f [ x1 ]
P( x2 ) = p0 + p1 ( x2 − x0 ) + p1 ( x2 − x0 )( x2 − x1 ) f ( x2 ) = f [ x2 ]
....
De tal manera que:
p0 = f [ x0 ]
f [ x0 ] − f [ x1 ]
p1 = = f [ x0 , x1 ]
( x1 − x0 )
1
p2 = ( f ( x2 ) − p0 − p1 ( x2 − x0 )) =
( x2 − x0 )( x2 − x1 )
1 f ( x1 ) − f ( x0 )
( f ( x2 ) − f ( x0 ) − ( x2 − x0 )) =
( x2 − x0 )( x2 − x1 ) x1 − x0
1
(( x1 − x0 )( f ( x2 ) − f ( x0 )) − ( x2 − x0 )( f ( x1 ) − f ( x0 )) =
( x2 − x0 )( x2 − x1 )( x1 − x0 )
f ( x2 ) f ( x1 ) f ( x0 )
+ +
( x2 − x0 )( x2 − x1 ) ( x2 − x1 )( x1 − x0 ) ( x2 − x0 )( x1 − x0 )

Por otra parte:

5
f [ x1 , x2 ] − f [ x0 , x1 ]
f [ x0 , x1 , x2 ] = =
x2 − x0
1 f ( x2 ) − f ( x1 ) f ( x1 ) − f ( x0 )
( − )=
x2 − x0 x2 − x1 x1 − x0
1 f ( x2 ) − f ( x1 ) f ( x1 ) − f ( x0 )
( − )=
x2 − x0 x2 − x1 x1 − x0
1
(( x1 − x0 )( f ( x2 ) − f ( x1 )) − ( x2 − x1 )( f ( x1 ) − f ( x0 )) =
( x2 − x0 )( x2 − x1 )( x1 − x0 )
f ( x2 ) f ( x1 ) f ( x0 )
+ +
( x2 − x0 )( x2 − x1 ) ( x2 − x1 )( x1 − x0 ) ( x2 − x0 )( x1 − x0 )
Y por lo tanto:
p0 = f [ x0 ]
p1 = f [ x0 , x1 ]
p2 = f [ x0 , x1 , x2 ] (1.11)
....
n
P( x) = f [ x0 ] + ∑ f [ x0 , x1 ,..., xk ]( x − x0 )( x − x1 )...( x − xk −1 )
k =1

La ecuación (1.11) no es sino una relación de recurrencia que nos permite, obtener
el polinomio interpolador que pasa por n puntos, a partir del polinomio que pasa por n – 1
puntos. Supongamos por ejemplo que queremos interpolar un polinomio a una función
cuyo valor conocemos en cuatro puntos, tal como la del ejemplo anterior:
x 2 3 4 5
f(x) = 1/x 0.5 0.333333 0.25 0.2

Quedándonos a orden uno en la ecuación (1.11) obtenemos:


f ( x1 ) − f ( x0 )
P( x) = f [ x0 ] + f [ x0, x1 ]( x − x0 ) = f ( x0 ) + ( x − x0 ) =
( x1 − x0 )
f (4) − f (3) 1 1 1
f (3) + ( x − 3) = + ( − )( x − 3)
(4 − 3) 3 4 3
P(3.5) = 0.3333 + (0.2500 − 0.3333)(3.5 − 3) = 0.2917
Como en el caso anterior. Sin embargo, si ahora queremos interpolar un polinomio
de grado dos (a los puntos 3,4,5), nos basta con expandir la fórmula (1.11) otro orden:

6
P ( x) = f [ x0 ] + f [ x0, x1 ]( x − x0 ) + f [ x0, x1 , x2 ]( x − x0 )( x − x1 )

Los primeros dos términos ya están calculados y sólo nos falta añadir el término
adicional:
f [ x1 , x2 ] − f [ x0 , x1 ]
f [ x0, x1 , x2 ] =
( x2 − x0 )
f ( x1 ) − f ( x0 ) f (4) − f (3)
f [ x0 , x1 ] = = = 0.25 − 0.3333 = −0.0833
( x1 − x0 ) (4 − 3)
f ( x2 ) − f ( x1 ) f (5) − f (4)
f [ x1 , x2 ] = = = 0.20 − 0.25 = −0.05
( x2 − x1 ) (5 − 4)
−0.05 + 0.0833
f [ x0, x1 , x2 ] = = 0.01665
5−3

De tal manera que:


P (3.5) = 0.2917 + 0.01665(3.5 − 3)(3.5 − 4) = 0.2917 − 0.0041 = 0.2876

Podemos, además, obtener una estimación del error que cometemos en la


interpolación comparando el valor obtenido para n –1 y n puntos. Básicamente la estrategia
consiste en añadir términos hasta que el cambio sea menor que la precisión especificada.

Algoritmo de Neville
Este es otro ejemplo de método iterativo, basado en una relación de recurrencia. Sea
P1 el valor en x del polinomio único de grado cero (es decir, una constante) que pasa por el
punto (x1,y1), y1 = f(x1). Definimos de manera análoga P2, P3,...,PN. Sea ahora P12 el valor
en x del único polinomio de grado uno que pasa por los puntos (x1,y1) y (x2,y2).
Análogamente, definimos P23, P34,...,P(N-1),N. De manera similar, definimos los sucesivos
polinomios de orden superior hasta llegar al polinomio P1,2,3,...,N que es el valor del
polinomio único de grado n –1 que pasa por los n puntos.
De manera análoga a como hemos obtenido la ecuación (1.11) es posible encontrar
la relación de recurrencia entre un polinomio “hijo” P y sus dos “padres”:
( x − xi + m ) Pi (i +1)...(i + m −1) + ( xi − x) Pi (i +1)(i + 2)...(i + m )
Pi (i +1)...(i + m ) = (1.12)
xi − xi + m

7
Consideremos, por ejemplo, el caso de una parábola que pasa por los puntos
( x1 , y1 ), ( x2 , y2 ), ( x3 , y3 ) . Los polinomios relevantes son:

P1 = y1 P2 = y2 P3 = y3
( x − x2 ) P1 + ( x1 − x) P2 ( x − x2 ) y1 + ( x1 − x) y2
P12 = =
( x1 − x2 ) ( x1 − x2 )
( x − x3 ) P2 + ( x2 − x) P3 ( x − x3 ) y2 + ( x2 − x) y3
P23 = =
( x2 − x3 ) ( x2 − x3 )
( x − x3 ) P12 + ( x1 − x) P23
P123 = =
( x1 − x3 )
( x − x2 ) y1 + ( x1 − x) y2 ( x − x3 ) y2 + ( x2 − x) y3
( x − x3 ) + ( x1 − x)
( x1 − x2 ) ( x2 − x3 )
=
( x1 − x3 )
( x − x2 )( x − x3 ) ( x − x1 )( x − x3 ) ( x − x1 )( x − x3 ) ( x − x)( x2 − x)
y1 − y2 − y2 + 1 y3 =
( x1 − x2 )( x1 − x3 ) ( x1 − x2 )( x1 − x3 ) ( x2 − x3 )( x1 − x3 ) ( x2 − x3 )( x1 − x3 )
( x − x2 )( x − x3 ) ( x − x1 )( x − x3 ) ( x − x1 )( x − x2 )
y1 + y2 + y3
( x1 − x2 )( x1 − x3 ) ( x2 − x1 )( x2 − x3 ) ( x3 − x2 )( x3 − x1 )

La ecuación (1.12) nos permite obtener los polinomios interpoladores como un


tablero, con “antepasados” a la izquierda del tablero que resultan en “descendientes” a la
derecha. Por ejemplo, para N = 4:
x1 : y1 = P1
P12
x2 : y2 = P2 P123
P23 P1234 (1.13)
x3 : y3 = P3 P234
P34
x4 : y4 = P4

Ejercicio: Calcular el tablero (1.13) para la función f(x) = 1/x en los puntos
(2,3,4,5).

8
x1 = 2 : y1 = P1 = 0.5000
P12 = 0.2500
x2 = 3 : y2 = P2 = 0.3333 P123 = 0.2813
P23 = 0.2917 P1234 = 0.2844
x3 = 4 : y3 = P3 = 0.2500 P234 = 0.2875
P34 = 0.2750
x4 = 5 : y4 = P4 = 0.2000

Integración Numérica

Introducción
Nuestro problema es calcular la integral definida de una función f(x):
b

∫ f ( x)dx
a

Donde, en general, f(x) no es integrable analíticamente, o bien no conocemos la


expresión analítica de f(x) sino sólo sus valores en ciertos puntos. La forma más inmediata
de atacar el problema consiste en utilizar una interpolación polinomial para aproximar f(x).
Es decir, podemos elegir n puntos e interpolar por Lagrange:
b b n −1 n −1 b n −1

∫ f ( x) ≈ ∫ ∑ f ( xi ) Lni ( x)dx = ∑ f ( xi ) ∫ Lni ( x)dx = ∑ Ai f ( xi )


a a i =0 i =0 a i =0
(1.14)
Ai = ∫ Lni ( x)dx

Ejercicio
Integrar la función seno aproximándola por una parábola.

Regla del Trapecio


El caso más sencillo de integración polinomial consiste en escoger un polinomio de
grado uno, o sea una recta que interpole los extremos a,b donde integramos la función, esto
es:

9
P( x) = Lo ( x) f (a ) + L1 ( x) f (b)
b−x x−a
Lo ( x) = L1 ( x) =
b−a b−a
b

∫ f ( x )d ( x ) = f ( a ) A
a
0 + f (b) A1

b b
1 1 (1.15)
A0 = ∫ Lo ( x)dx = ∫ (b − x)dx = (b − a )
a
b−aa 2
b b
1 1
A1 = ∫ L1 ( x)dx = ∫ ( x − a )dx = (b − a )
a
b−aa 2
b−a
b

∫ f ( x )d ( x ) =
a
2
( f (a ) + f (b))

Una forma inmediata de refinar la regla del trapecio consiste en dividir el intervalo
de integración (a,b) tal que a = x0 < x1 < x2 <,... <, xn = b y aplicar la regla a cada uno de los

b−a
subintervalos. Si escogemos un espaciado o paso de rosca constante h = , de tal
n
manera que:
xi = a + ih
f 0 = f (a ), f1 = f (a + h) = f ( x1 )...etc
Entonces:
b a+h a+2h b

∫ f ( x)dx = ∫
a a
f ( x)dx + ∫
a+h
f ( x)dx +... ∫ f ( x)dx =
b−h

h h h
( f 0 + f1 ) + ( f1 + f 2 ) + ... ( f n −1 + f n ) = (1.16)
2 2 2
n −1
1 h
h( f 0 + f1 + f 2 + ... + f n −1 + f n ) = ( f (a ) + f (b) + 2∑ f (a + ih))
2 2 i =1

Obtenemos así la regla del trapecio compuesta. El orden del error en la regla del
trapecio es O(h3 f ’’) .

Regla de Simpson
La regla de Simpson la obtenemos utilizando una parábola como polinomio
interpolador, en lugar de una recta. Tomando como tercer punto el punto medio entre los
extremos a y b del intervalo:

10
b−a a+b
b

∫ f ( x)dx =
a
6
( f (a ) + 4 f (
2
) + f (b)) (1.17)

Análogamente al caso anterior, la regla de Simpson repetida es:


b
h
∫ f ( x)dx = 3 ( f
a
0 + 4 f1 + 2 f 2 + 4 f 4 + 2 f 5 + ... + 4 f n −1 + f n ) =
(1.18)
h n/2
∑ f ( x2i −2 ) + 4 f ( x2i−1 ) + f ( x2i )
3 i =1

El orden del error para la regla de Simpson es O(h5 f (4) ) . Análogamente podemos
obtener fórmulas interpolando polinomios de grado 3, 4, etc, etc.

Integración de Romberg
La regla de suma de Euler-MacLaurin establece una relación entre la integral
definida de una función, I, y la aproximación a dicha integral a partir de la regla trapezoidal
con n intervalos, Tn:
b
I = ∫ f ( x)dx = Tn + A2 h 2 + A4 h 4 + A6 h 6 + ... (1.19)
a

Donde los coeficientes Ai son números complicados de calcular que dependen en


general de los valores de las derivadas de la función en el extremo del intervalo, pero que
son, por otra parte, independientes del paso de integración h.
Esta relación nos permite mejorar la regla de integración Tn. Como podemos ver a
partir de (1.19), el error dominante es de orden h2. Si ahora calculamos la regla de
integración T2n (es decir la trapezoidal con el doble de puntos o lo que es lo mismo con un
paso de integración que sea la mitad del anterior, o sea h/2) obtenemos:
b
I = ∫ f ( x)dx = Tn + A2 h 2 + A4 h 4 + A6 h 6 + ...
a
b
(1.20)
h h h
I =∫ f ( x)dx = T2 n + A2 ( ) 2 + A4 ( ) 4 + A6 ( )6 + ...
a
2 4 6

Por lo tanto, multiplicando la segunda de las ecuaciones (1.20) por cuatro y


restándole la primera, obtenemos:
4T2 n − Tn
I= + O(h 4 ) (1.21)
3

11
Así pues hemos pasado de una regla con error O(h 2 ) a otra con error O(h 4 ). Con
esta técnica podemos reducir el orden del error tanto como se quiera. Duplicando otra vez
el número de intervalos obtendremos ahora una combinación que nos permitirá calcular la
integral a orden O(h 6 ) y así sucesivamente. Esta técnica se conoce como extrapolación de
Richardson.
El uso conjunto de la extrapolación de Richardson y la regla trapezoidal duplicando
sucesivamente el número de intervalos se conoce como regla de Romberg. La idea es
interpolar un polinomio al conjunto:
{(h1 , F1 ), (h2 , F2 ), (h3 , F3 )...(hn , Fn )}, donde
b−a b−a b−a
h1 = , h2 = , h3 = ...
1 2 4
F1 = F (h1 ) = T2 + A2 h12 + A4 h14 + ... (1.22)
F2 = F (h2 ) = T4 + A h + A h + ...
2
2 2
4
4 2

F3 = F (h3 ) = T8 + A2 h32 + A4 h34 + ...


Una vez interpolado el polinomio, podemos extrapolar al valor h = 0. Naturalmente,
la extrapolación es tanto mejor cuanto más cerca estemos del punto cero y más puntos
tomemos para interpolar. Veremos una aplicación explícita del método en la práctica
correspondiente.

12

También podría gustarte