INTERPOLACI´ON: algunos aspectos básicos.

Anuncio
INTERPOLACIÓN: algunos aspectos básicos.
Apuntes de Jerónimo Lorente Pardo
13 de Diciembre de 2007
1
Métodos de Interpolación: Lagrange y Newton.
1.1
Método de Lagrange
Si bien, la técnica que se presenta se desarrolló desde la resolución del problema de Interpolación polinomial clásica,
aquı́ la consideraos para el caso general y posteriormente se aplicará a los casos más conocidos; a saber, la Interpolación
lagrangiana, la de Taylor, y la interpolación clásica de Hermite.
Problema General de Interpolación
Sea f ∈ F y L1 , L2 , . . . , LN N–formas lineales sobre F. El problema de hallar p ∈ V (subespacio de dim V = N )
verificando:
Li (p) = Li (f )
i = 1, 2, . . . , N
admite solución única ⇐⇒ det (Li (ϕj ))i,j 6= 0
siendo
{ϕ1 , ϕ2 , . . . , ϕN } una base de V .
Ahora bien, supongamos construida una base de V , {Φ1 , Φ2 , . . . , ΦN } , dual respecto de las formas lineales dadas;
es decir,


 1 i=j
i = 1, 2, . . . , N.
Li (Φj ) = δij =

 0 i 6= j
Entonces, la única solución del Problema general de interpolación se puede expresar como:
p = L1 (f )Φ1 + L2 (f )Φ2 + · · · + LN (f )ΦN
(1)
que se denomina Fórmula de Lagrange para el Problema General de Interpolación Lineal Finita (P.G.I.L.F.).
Observaciones:
• Si el P.G.I.L.F. es unisolvente, es evidente que se pueden construir las Φj y recı́procamente. Además, una base
de este tipo se llama Base de Lagrange .
Por tanto, de lo anterior puede decirse que el método de Lagrange consiste en la resolución inicial de N–problemas
canónicos (un dato con valor 1 y el resto 0), y desde ellos poder resolver cualquier otro (datos con valores arbitrarios)
sin más que utilizar la Fórmula de Lagrange.
Interpolación Polinomial Clásica (I. Lagrangiana)
1
Sea D = {(xi , yi ) i = 0, 1, . . . , n} el conjunto de datos de interpolación con nodos, xi , distintos. Vamos a usar
la idea anteriormente expuesta al Problema:
Hallar
p(x) ∈ Pn / p(xi ) = yi
i = 0, 1, . . . , n
(2)
Ası́, construimos una Base de Lagrange en Pn ; es decir, sean l0 (x), l1 (x), . . . , ln (x) n + 1–polinomios de grado n
verificando:
li (xj ) =


 1
i=j

 0
i 6= j
i = 0, 1, . . . , n
(3)
Por tanto, desde (3) se deduce que cada li (x) es un polinomio de grado n que se anula en n–nodos. Más concretamente,


n
Y


li (x) = Ai  (x − xj )
j=0
j6=i
donde Ai se obtiene sin más que imponer: li (xi ) = 1. Ası́,
li (x) =
n
Y
x − xj
)
(
xi − xj
j=0
i = 0, 1, . . . , n
(4)
j6=i
Tales polinomios son denominados, a menudo, polinomios de Lagrange. Y, desde aquı́, es claro que la solución
del problema (2) es:
p(x) = y0 l0 (x) + y1 l1 (x) + · · · + yn ln (x)
(5)
La expresión (5) recibe el nombre de Fórmula de Lagrange para el interpolante.
Interpolación Clásica de Hermite
Pretendemos, ahora obtener la Fórmula de Lagrange para el problema:
Hallar
H(x) ∈ P2m+1 /


 H(xi ) = f (xi )
i = 0, 1, . . . , m
(6)

 H 0 (x ) = f 0 (x )
i
i
Para el problema (6) la obtención de una base de Lagrange es algo más compleja; a saber: sean Hi (x) y Ki (x) con
i = 0, 1, . . . , m polinomios de grado 2m + 1 verificando:

Hi (xj ) = δij H 0 i (xj ) = 0 j = 0, 1, . . . , m 

i = 0, 1, . . . , m

Ki (xj ) = 0 K 0 i (xj ) = δij j = 0, 1, . . . , m 
Ası́, teniendo en cuenta las caracterı́sticas, respecto a los ceros, de Hi (x) y Ki (x) se pueden escribir de la forma:
2
Hi (x)
Ki (x)
=
=



(Ai x + Bi ) · (li (x))2
i = 0, 1, . . . , m
2

Ci · (x − xi ) · (li (x)) 
donde l0 (x), l1 (x), . . . , lm (x) son los polinomios clásicos de Lagrange asociados a los nodos x0 , x1 , . . . , xm .
Ahora, imponiendo las condiciones de interpolación que restan, en cada caso; se obtiene:

Hi (xi ) = 1 

=⇒
Hi (x) = [1 − 2l0 i (xi )(x − xi )] · (li (x))2 i = 0, 1, . . . , m

H 0 i (xi ) = 0 
y, análogamente:
K 0 i (xi ) = 1
Ki (x) = (x − xi ) · (li (x))2
=⇒
i = 0, 1, . . . , m
Con esto se deduce la Fórmula de Lagrange para el interpolante de Hermite:
H(x) = f (x0 )H0 (x) + f 0 (x0 )K0 (x) + · · · + f (xm )Hm (x) + f 0 (xm )Km (x)
1.2
(7)
Método de Newton.
El objetivo del método de Newton es la obtención del interpolante de una forma recursiva.
A tal fin, se intenta encontrar la relación entre el interpolante para k + 1-datos y el interpolante para k-datos de
ellos.
Veamos como se lleva esta idea a la práctica según el problema a resolver.
Interpolación Polinomial Clásica.
Pretendemos, aquı́, resolver el problema (2).
Sea pk (x) el polinomio de grado ≤ k interpolante para los datos, D = {(xi , yi )
i = 0, 1, . . . , k}, entonces:
pk+1 (x) − pk (x) ∈ Pk+1
y se anula en los nodos, x0 , x1 , . . . , xk ; por consiguiente,
pk+1 (x) − pk (x) = Ak+1 · (x − x0 ) · · · (x − xk )
con
Ak+1 = C te
Imponiendo la condición pk+1 (xk+1 ) = yk+1 se obtiene el valor de Ak+1 ; a saber:
Ak+1 =
yk+1 − pk (xk+1 )
(xk+1 − x0 ) · · · (xk+1 − xk )
Desde aquı́, es trivial que el polinomio buscado (solución de (2) ) es:
p(x) = pn (x) = A0 + A1 · (x − x0 ) + · · · + An · (x − x0 ) · (x − x1 ) · · · (x − xn−1 )
La expresión (8) recibe el nombre de Fórmula de Newton para la interpolación lagrangiana.
3
(8)
No obstante, el cálculo de las ctes. Ak puede simplificarse. Para ello, debido a la dependencia respecto de los nodos
correspondientes, notamos:
Ai = f [x0 , x1 , . . . , xi ]
y la llamamos Diferencia Dividida de orden i de f en los nodos x0 , x1 , . . . , xi (D.D. orden i). De su cálculo nos
ocupamos en la sección siguiente.
1.3
Diferencias Divididas. Diferencias Finitas.
En primer lugar, nuestro objetivo es obtener una relación de recurrencia, apropiada, para el cálculo de las D.D. en
general, y de las ctes. Ai en particular para la obtención del polinomio de interpolación para el problema de Lagrange
y el problema de Hermite.
Propiedades
1. Para cada k ≥ 0, se tiene: f [x0 , x1 , . . . , xk ] =
Pk
i=0
Q
f (xi )
(xi −xj )
j6=i
2. Para cada permutación, (i0 , i1 , . . . , ik ), de los ı́ndices {0, 1, . . . , k} se verifica:
f [xi0 , xi1 , . . . , xik ] = f [x0 , x1 , . . . , xk ]
Ası́, estamos en disposición de obtener la relación de recurrencia para las D.D. de órdenes sucesivos. Esta se expresa
en el teorema siguiente:
Teorema 1.1 Sea f ∈ C([a, b]) y {xi }i ⊂ [a, b], entonces:
1. f [xj ] = f (xj )
2. Para cada k ≥ 1 se verifica: f [x0 , x1 , . . . , xk ] =
f [x1 ,...,xk ]−f [x0 ,...,xk−1 ]
xk −x0
Con la relación de recurrencia anterior, se puede obtener una tabla de D.D. de órdenes 1, 2, ..., k, ... como sigue:
xi
f (xi ) o yi
D.D. 1
D.D. 2
D.D. 3
x0
f (x0 )
-
-
-
x1
f (x1 )
f [x0 , x1 ]
-
-
x2
f (x2 )
f [x1 , x2 ]
f [x0 , x1 , x2 ]
-
x3
f (x3 )
f [x2 , x3 ]
f [x1 , x2 , x3 ]
f [x0 , x1 , x2 , x3 ]
..
.
..
.
..
.
..
.
..
.
Entonces, calculada la tabla, se obtiene la formula de interpolación de Newton:
p(x) = f (x0 ) + f [x0 , x1 ] · (x − x0 ) + · · · + f [x0 , . . . , xn ] · (x − x0 ) · · · (x − xn−1 )
4
(9)
Esta idea es extensible al problema de Hermite y al de Taylor. Para ello es de gran interés la propiedad siguiente:
Proposición 1.1 Si f ∈ C n ([a, b]), entonces
f [x0 , x1 , . . . , xn ] =
f n) (ξ)
n!
donde ξ es un nodo entre los xi .
Esta propiedad permite, sin mucha dificultad, extender la noción de D.D. al caso en que sus argumentos puedan
ser repetidos. Más concretamente:
Definición 1.1 Sean los nodos x0 ≤ x1 ≤ · · · ≤ xk en un intervalo [a, b] donde f es suficientemente derivable,
entonces:
 k)
f (x0 )

si x0 = xk

k!
f [x0 , x1 , . . . , xk ] =

 f [x1 ,...,xk ]−f [x0 ,...,xk−1 ]
si x0 6= xk
xk −x0
Ası́, la solución del problema de Hermite (6) adoptarı́a la forma de Newton siguiente:
H(x) = f (x0 ) + f [x0 , x0 ] · (x − x0 ) + f [x0 , x0 , x1 ] · (x − x0 )2 + · · · +
(10)
2
2
+f [x0 , x0 , . . . , xn , xn ] · (x − x0 ) · · · (x − xn−1 ) · (x − xn )
donde las D.D. consideradas se obtienen desde la tabla:
xi
f (xi ) o yi
D.D. 1
D.D. 2
D.D. 3
x0
f (x0 )
-
-
-
x0
f (x0 )
f 0 (x0 )
-
-
x1
f (x1 )
f [x0 , x1 ]
f [x0 , x0 , x1 ]
-
x1
f (x1 )
f 0 (x1 )
f [x0 , x1 , x1 ]
f [x0 , x0 , x1 , x1 ]
5
Ejemplo:
Calculemos el polinomio de gardo ≤ 5, interpolante de Hermite, verifivando:
p(0) = 1
p(1) = −1
p0 (0) = 0 p0 (1) = 5
p(3) = 2
p0 (3) = 2
Para ello usamos la tabla de D.D. del tipo anterior que da lugar a:
xi
f (xi ) o yi
0
0
1
1
3
3
1
1
-1
-1
2
2
D.D. 1
D.D. 2
D.D. 3
3
2
-2
7
- 47
35
12
2
1
4
0
-2
5
D.D. 4
D.D. 5
143
36
47
36
95
54
9
-
-
1
Por tanto el interpolante de Hermite es:
H(x) = 1 − 2x2 + 9x2 (x − 1) −
143 2
36 x (x
− 1)2 +
95 2
54 x (x
La gráfica del interpolante se da en la Figura 1.
Figura 1: Interpolante de Hermite
6
− 1)2 (x − 3)
1.4
Diferencias Finitas: Fórmulas de Newton Progresiva y Regresiva.
Nos preguntamos, ahora, ¿cómo puede expresarse el polinomio de interpolación para datos lagrangianos; es decir,
p (xi ) = f (xi ) = yi cuando los nodos están igualmente espaciados?.
Supongamos que los nodos son de la forma: a = x0 < x1 < · · · < xn = b con xi = a + ih, i = 0, . . . , n y h = b−a
n ;
entonces, podemos relacionar las diferencias divididas de f (x) con las llamadas Diferencias Finitas (D.F.) de f (x).
Pero, ¿cómo se definen?.
Definición 1.2 Llamamos D.F. progresiva de f de orden k > 0 en un punto x, al valor:


 f (x) si k = 0
k
∆ f (x) =
f (x + h) − f (x) si k = 1

 ∆ ∆k−1 f (x) si k > 1
Si usamos como punto un nodo de interpolación, entonces las D.F. progresivas serán:
∆0 yi = yi , i = 0, 1, . . . , n
∆yi = yi+1 − yi , i = 0, . . . , n − 1
∆k yi = ∆ ∆k−1 yi , i = 0, . . . , n − k
De forma similar pueden definirse las D.F. regresivas para f o datos; a saber,
Definición 1.3 Llamamos D.F. regresiva de f de orden k > 0 en un punto x, al valor:
∇0 f (x) = f (x)
∇f (x) = f (x) − f (x − h)
∇k f (x) = ∇ ∇k−1 f (x)
o bien,
∇0 yi = yi , i = 0, 1, . . . , n
∇yi = yi − yi−1 , i = 1, . . . , n
∇k yi = ∇ ∇k−1 yi , i = k, . . . , n
Ahora, con esta nomenclatura, es fácil comprobar la propiedad siguiente:
Proposición 1.2 Dada f evaluada en nodos igualmente espaciados, xi = a + ih, i = 0, . . . n , entonces:
1. f [x0 , x1 , . . . , xk ] =
∆k y 0
,
k!hk
2. f [xn , xn−1 , . . . , xn−k ] =
k = 0, . . . , n (D.D. ascendentes mediante D.F. progresivas)
∇k y n
,
k!hk
k = 0, . . . , n (D.D. descendentes mediante D.F. regresivas).
Por lo tanto, desde las dos propiedades anteriores, el polinomio de interpolación en la forma de Newton admite las
representaciones que especificamos a continuación.
1.4.1
Fórmula de Newton Progresiva.
Esta la obtenemos usando la fórmula de Newton clásica para el interpolante de Lagrange; es decir,
PN (x) = f [x0 ] + f [x0 , x1 ] (x − x0 ) + · · · + f [x0 , x1 , . . . , xn ] (x − x0 ) (x − x1 ) · · · (x − xn−1 )
Esta expresión quedarı́a reducida a la siguiente:
PN (x) = ∆0 y0 +
∆y0
∆n y 0
(x − x0 ) + · · · +
(x − x0 ) (x − x1 ) · · · (x − xn−1 )
h
n!hn
pero si realizamos el cambio de variable:
s=
x − x0
x − xi
x − (x0 + ih)
⇒
=
=s−i
h
h
h
7
entonces,
s(s−1)
s(s−1)···(s−n+1)
2
n
∆0 y0 + ∆y
=
n!
!0 s + ∆ y0 2! + · · · + ∆ y0
n
P
s
=
∆k y 0
k
k=0
PN (s) =
1.4.2
(11)
Fórmula de Newton Regresiva.
Si, en el método de interpolación de Newton, usamos un proceso descendente; es decir, desde el nodo xn hasta el nodo
x0 tendrı́amos la Fórmula de Newton siguiente:
PN (x) = f [xn ] + f [xn , xn−1 ] (x − xn ) + · · · + f [xn , xn−1 , . . . , x0 ] (x − xn ) (x − xn−1 ) · · · (x − x1 )
y, desde aquı́, de forma similar pero con las diferencias regresivas llegamos a la expresión:
∇yn
∇n yn
(x − xn ) (x − xn−1 ) · · · (x − x1 )
(x − xn ) + · · · +
h
n!hn
Como antes, si hacemos el cambio:
PN (x) = ∇0 yn +
t=
xn − x
xn−i − x
(xn − ih) − x
⇒
=
=t−i
h
h
h
tenemos la expresión:
n
+ · · · + (−1) ∇n yn t(t−1)···(t−n+1)
=
P (t) = ∇0 yn − ∇yn t +!∇2 yn t(t−1)
2!
n!
n
P
t
k
=
(−1)
∇k y n
k
k=0
Observación.- En las expresiones (11) y (12) he usado el combinatorio formal:
!
w
con w = s ó w = t.
= w(w−1)···(w−k+1)
k!
k
EJEMPLO
Calculamos la tabla respectivas de diferencias finitas progresivas y regresivas para los datos:
{(−2, 3) , (0, −1) , (2, 3) , (4, 5)} y damos las respectivas expresiones del interpolante.
Solución: Las diferencias finitas (progresivas y regresivas) son:
∆k y 0
&
yi = ∆0 yi
∆yi
∆2 yi
∆3 yi
↓
↓
↓
↓
3
-4
−1
8
4
3
-10
-2
2
5
%
k
∇ yn
↑
yi = ∇0 yi
8
↑
∇yi
↑
↑
∇2 yi
∇3 yi
(12)
Por lo tanto, los respectivos polinomios de interpolación son:
FORMA PROGRESIVA (coeficientes en azul-morado):
p(s) = 3 − 4s + 8 s(s−1)
− 10 s(s−1)(s−2)
2
6
donde s =
x+2
2
(pues h = 2, y x0 = −2)
FORMA REGRESIVA (coeficientes en rojo-morado):
p(s) = 5 − 2t − 2 t(t−1)
+ 10 t(t−1)(t−2)
2
6
donde t =
1.5
4−x
2
(pues h = 2, y x3 = 4)
Error en la Interpolación Polinomial.
Cuando calculamos el polinomio de interpoalción para el problema de Lagrange o Hermite y, en general, estamos
dando una estimación del modelo exacto por lo que se comete un error que pretendemos analizar de forma escueta en
esta sección. Analizamos los dos problemas más clásicos: Interpolación polinomial lagrangiana y de Hermite clásica.
Ası́ supongamos que los datos vienen de la función f (x) y sea p(x) es el interpolante de f(x) entonces llamamos
error de interpolación en ”x” al valor:
E(x) = f (x) − p(x)
En esta situación, nos preguntamos si podemos dar una estimación manejable de este valor. Veámoslo en los casos
comentados anteriormente.
Sea pn (x) el interpolante de f (x) en los nodos x0 , x1 , . . . , xn , entonces, el error lo escribimos como En (x) =
f (x) − pn (x). Si usamos la fórmula de Newuton, tenemos que:
pn (x) = f (x0 ) + f [x0 , x1 ] · (x − x0 ) + · · · + f [x0 , . . . , xn ] · (x − x0 ) · · · (x − xn−1 )
y también, si agregamos un nuevo nodo de interpolación, xn+1 = x
b tendremos la expresión formal de Newton:
pn+1 (x; x
b) = pn (x) + f [x0 , . . . , xn , x
b] · (x − x0 ) · · · (x − xn−1 ) · (x − x
b)
Pues bien, si suponemos que el nodo elegido es precisamente el nodo genérico x
b = x, es evidente que la expresión
anterior es una forma de escribir la función f (x); es decir,
f (x) ≡ pn+1 (x; x) = pn (x) + f [x0 , . . . , xn , x] · (x − x0 ) · · · (x − xn−1 ) · (x − xn )
Por lo tanto, el error de interpolación polinomial es:
En (x) = f (x) − pn (x) = f [x0 , . . . , xn , x] · (x − x0 ) · · · (x − xn−1 ) · (x − xn )
Si usamos la propiedad que relaciona las diferencias difididas con la derivabilidad de una función podemos obtener
el resultado siguiente:
Teorema 1.2 Sea f ∈ C n+1 ([a, b]) y sea pn (x) el polinomio de interpolación de f en los nodos xi i = 0, 1, . . . , n del
intervalo [a, b]. Entonces,
9
1. En (x) = f (x) − pn (x) =
f n+1) (ξx )
(n+1)! Π(x)
donde Π(x) = (x − x0 ) · (x − x1 ) · · · (x − xn ) =
n
Q
(x − xi )
i=0
2. Una estimación del error es la siguiente: |En (x)| ≤
intervalo [a, b].
M
(n+1)!
|Π(x)| donde M es una cota para f n+1) (x) en el
Ası́, podemos observad que el error de interpolación puede estar controlado para funciones suaves pero el término
que depende de los nodos en una forma especial puede presentar grandes oscilaciones debido a tal propiedad intrı́nsica
de los polinomios de grado elevado. Nos preguntamos, pues, si interpolamos una función dada en un intervalo [a,b]
mediante el aumento sucesivo de nodos de interpolación será más pequo el error; es decir, ¿convergerá la sucesión de
polinomios de interpolación a la función cuandon → ∞?
La respuesta, en general, es negativa, a menos que los nodos sean elegidos de forma especial. Observe esto con el
ejemplo de la Figura 2.
Figura 2: función e interpolantes p2 (x), p6 (x) y p10 (x)
La función considerada es: f (x) =
1
1+x2
en el intervalo ]-5, 5[ y nodos de interpolación igualmente espaciados:
10 20
20 10
, − , 0, , , 5}; {−5, −4, −3, −2, −1, 0, 1, 2, 3, 4, 5}
6
6
6 6
En estas gráficas puede apreciarse que el error de interpolación no disminuye con el grado sino que es mayor, por lo
que esta distribución de nodos conduce a una sucesión de polinomios divergente. Nos preguntamos, pues, ¿es posible
elegir unos nodos óptimos respecto del error de interpolación?
En términos más precisos,
{−5, 0, 5}; {−5, −
¿existen nodos xi en el intervalo de interpolación para los que max {|Π(x)|} sea mı́nimo?
x∈[a,b]
La respuesta a esta cuestión está en las propiedades de los llamados polinomios de Chebyshev cuyo análisis detallado
se hace en el capı́tulo 5.
Tales polinomios vienen definidos, en el intervalo [-1,1] mediante la relación de recurrencia:
T0 = 1, T1 = x, Tn+1 = 2xTn − Tn−1 n ≥ 1
Ası́ por ejemplo los cinco primeros polinomios de Chebyshev son:
T0 = 1, T1 = x, T2 = 2x2 − 1, T3 = 4x3 − 3x, T4 = 8x4 − x2 + 1
Pues bien, estos polinomios tienen propiedades muy interesantes en relación al error de interpolación.
10
1. p(x) =
Tn+1
2n
es un polinomio de grado n+1 y coeficiente lı́der 1 que cumple:
1
|Tn+1 (x)|
= n
kp(x)k∞ = max
2n
2
x∈[−1,1]
2. para cualquier polinomio de grado n+1 y coeficiente lı́der 1, q(x), se cumple:
kq(x)k∞ ≥
1
2n
3. El polinomio de Chebyshev, Tn+1 , tiene exactamente n+1 ceros distintos en el intervalo ] − 1, 1[ que vienen dados
por la igualdad:
2i + 1 π
xi = cos
·
i = 0, 1, . . . , n
n+1 2
(esta igualdad proviene de la igualdad siguiente: Tn+1 (x) = cos ((n + 1)θ), con θ = arccos(x))
Como consecuencia de estas dos propiedades podemos asegurar que los mejores n + 1 nodos de interpolación para
una función en el intervalo [-1,1] serı́an los ceros del polinomio de Chebyshev Tn+1 pues, en tal caso, el polinomio Π(x)
cuyo valor máximo en el intervalo [-1,1] es lo más pequeo posible y por tanto el error de interpolación serı́a
serı́a T2n+1
n
óptimo.
Pero, ¿qué ocurre si deseamos interpolar una función suave en un intervalo [a, b] 6= [−1, 1]? Pues, lo único que hay
que hacer es un cambio de variable adecuado que transforme los nodos del intervalo [-1,1] en nodos del intervalo [a,b].
Con el cambio de variable se tienen los nodos en [a, b]:
b−a
2i + 1 π
xi = a +
1 + cos
·
i = 0, 1, . . . , n
2
n+1 2
En la tabla siguiente se dan los nodos óptimos para n=2, 3, 4 en intervalos diferentes:
2
3
4
[−1, 1]
{−0.866025, 0., 0.866025}
{−0.92388, −0.382683, 0.382683, 0.92388}
{−0.951057, −0.587785, 0., 0.587785, 0.951057}
[−5, 5]
{−4.33013, 0., 4.33013}
{−4.6194, −1.91342, 1.91342, 4.6194}
{−4.75528, −2.93893, 0., 2.93893, 4.75528}
Observe y compare el comportamiento de los interpolantes en las Figuras 2 y 3.
Figura 3: Interpolantes con nodos óptimos para f (x) =
11
1
1+x2
en [−5, 5]
2
Interpolación mediante splines (polinomios a trozos)
En las figuras siguientes se puede observar alguno de los problemas que la interpolación clásica con polinomios puede
plantear debido, en parte, a la relación directa entre el grado del polinomio interpolante y el número de datos a
interpolar (en general, grado n para n+1 datos).
3
2.5
2
1.5
1
0.5
2
4
6
8
10
Figura 4: Datos de interpolación.
3
3
2.5
2.5
2
2
1.5
1.5
1
1
0.5
0.5
2
4
6
8
2
10
(a) Interpolante clásico.
4
6
8
10
(b) Spline interpolante.
Figura 5: Dos tipos de interpolantes.
¿Qué entenderemos por función spline (polinomial)?
Pues bien, éstas serán funciones polinómicas a trozos asociadas a una partición de cierto intervalo real; a saber: Dado
el intervalo real [a, b] con nodos a = x0 < x1 < · · · < xn−1 < xn = b, una función spline, s(x), puede describirse por:


s0



 s1
s(x) =
..


.



sn−1
x0 ≤ x < x1
x1 ≤ x < x2
(13)
xn−1 ≤ x ≤ xn
donde cada si = si (x) es un polinomio de cierto grado (1, 2, ó 3 es lo habitual). Además, la función total ha de
cumplir ciertas propiedades de suavidad (continua, derivable, etc.). Vamos a considerar los casos particulares siguientes:
2.1
Spline Lineal (poligonales continuas)
Una función como la de (13) se dice que es un spline lineal si cada si = si (x) es un polinomio de grado ≤ 1 y la función
es continua en todo el intervalo; es decir, si−1 (xi ) = si (xi ) para i = 1, . . . , n − 1.
12
Al conjunto de funciones de este tipo lo notamos1 por: S (1, 0; {x0 , x1 , . . . , xn })
Ejemplo 1.1
(a) Es un spline lineal.
(b) No es un spline lineal.
Figura 6: Funciones lineales a trozos.
Proposición 2.1 El conjunto S (1, 0; {x0 , x1 , . . . , xn }) satisface las propiedades siguientes:
1. Es un espacio vectorial con dim (S (1, 0; {x0 , x1 , . . . , xn })) = n + 1
2. Una base de tal espacio es: 1, x, (x − x1 )+ , (x − x2 )+ , . . . , (x − xn−1 )+
La propiedad 2 nos permite escribir una función spline lineal en forma global como:
s(x) = a + bx +
n−1
P
i=1
αi (x − xi )+
En esta expresión aparecen funciones denominadas potencias truncadas que, en general, se definen por:
(
0
si x ≤ a
k
(x − a)+ =
k
(x − a) si x > a
(14)
(15)
Interpolación con spline lineales.
Para los datos {(xi , yi )
i = 0, 1, . . . , n} con los nodos en orden creciente, el problema es:
Hallar
s(x) ∈ S (1, 0; {x0 , x1 , . . . , xn })
s(xi ) = yi i = 0, 1, . . . , n
verificando :
(16)
El problema (16) admite una única solución que puede obtenerse trozo a trozo como sigue:
Hallar si (x) verificando :
si (xi ) = yi ;si (xi+1 ) = yi+1
Calculados los trozos se escribe la solución en la forma:


s0 = y0 + P0 (x − x0 )
x0 ≤ x < x1



 s1 = y1 + P1 (x − x1 )
x1 ≤ x < x2
s(x) =
.
..





sn−1 = yn−1 + Pn−1 (x − xn−1 ) xn−1 ≤ x ≤ xn
1 En ocasiones se usan notaciones diversas para los espacios de splines; a saber: S k ({x , x , . . . , x }) indica el mismo espacio que
n
0
1
m
S (m, k; {x0 , x1 , . . . , xn }). Además, si se omite el valor k se entiende que es m − 1.
13
donde P0 , P1 , . . . , Pn−1 son las diferencias divididas de orden 1 (o pendientes) para los datos iniciales. Otra forma
de calcular la solución del problema (16) es usar la forma global del spline lineal (14) e imponer las condiciones de
interpolación resolviendo el sistema resultante.
Ejemplo 1.2
Calcular el spline lineal para los datos:
−1
0
xi
yi
1 3
2 −1
6
3
Solución
Método con una base de potencias truncadas:
En este caso el espacio a considerar es: S(1, 0; {−1, 1, 3, 6}) (su dimensión es 4) con base:
1, x, (x − 1)+ , (x − 3)+
Ası́, consideramos la expresión del spline lineal siguiente:
s(x) = a + bx + c (x − 1)+ + d (x − 3)+
Imponemos las condiciones de interpolación; es decir,
s(−1) = 0
s(1) = 2
s(3) = −1
s(6) = 3
7
→
7→
7
→
7→
a−b=0
a+b=2
a + 3b + 2c = −1
a + 6b + 5c + 3d = 3









5
17
⇒ a = b = 1; c = − ; d =
2
6
Por lo tanto, el spline lineal solución del problema es:
s(x) = 1 + x −
5
17
(x − 1)+ +
(x − 3)+
2
6
Método a trozos:
Usamos las D.D. de orden 1; a saber:
xi
−1
1
3
6
yi (D.D.0)
0
2
−1
3
D.D.1
1
− 32
4
3
Desde esta tabla se deducen las expresiones para cada trozo del spline lineal; a saber:
s(x) =













2.2
x+1
2−
3
2
−1 +
−1 ≤ x < 1
(x − 1)
4
3
(x − 3)
1≤x<3
3≤x≤6
Spline Cúbico clase 1
Una función como la de (13) se dice que es un spline cúbico clase 1 si cada si = si (x) es un polinomio de grado ≤ 3 y
la función es continua y derivable en todo el intervalo; es decir, para i = 1, 2, . . . , n − 1
si−1 (xi ) = si (xi )
s0i−1 (xi ) = s0i (xi )
Al conjunto de funciones de este tipo lo notamos por: S (3, 1; {x0 , x1 , . . . , xn })
14
Proposición 2.2 El conjunto S (3, 1; {x0 , x1 , . . . , xn }) satisface las propiedades siguientes:
1. Es un espacio vectorial con dim (S (3, 1; {x0 , x1 , . . . , xn })) = 2(n + 1);
n
o
2
3
2
3
2. Una base de tal espacio es: 1, x, x2 , x3 ; (x − x1 )+ , (x − x1 )+ , . . . , (x − xn−1 )+ , (x − xn−1 )+
La propiedad 2 nos permite escribir una función spline cúbico clase 1, en forma global, como:
s(x) = a + bx + cx2 + dx3 +
n−1
Ph
i=1
2
3
αi (x − xi )+ + βi (x − xi )+
i
(17)
Interpolación con spline cúbicos clase 1.
Como la dimensión del espacio es 2(n+1), tomaremos en cada nodo de interpolación dos datos; es decir, valor (yi )
y derivada (di ). Ası́, el problema es:
Hallars(x) ∈ S (3, 1; {x0 , x1 , . . . , xn }) verificando :
s(xi ) = yi i = 0, 1, . . . , n
s0 (xi ) =di i = 0, 1, . . . , n
(18)
El problema (18) admite una única solución que puede obtenerse trozo a trozo (si (x)) como sigue:
si (xi ) = yi
s0i (xi ) = di
si (xi+1 ) = yi+1
s0i (xi+1 ) = di+1
Este problema se resuelve como en el caso del interpolante cúbico de Hermite sin más que intercambiar los papeles
de x0 , x1 por los de xi−1 , xi (es decir, 0 ↔ i − 1y1 ↔ i). Calculados los trozos se escribe la solución en la forma:


s0
x0 ≤ x < x1



 s1
x1 ≤ x < x2
s(x) =
.
..





sn−1 xn−1 ≤ x ≤ xn
con
si = yi + di (x − xi ) +
Pi −di
hi (x
− xi ) 2 +
di+1 +di −2Pi
(x
h2i
− xi )2 (x − xi+1 )
Aquı́, P0 , P1 , . . . , Pn−1 son las diferencias divididas de orden 1 (o pendientes) para los datos iniciales y d0 , d1 , d2 , . . . , dn
son derivadas o aproximaciones de derivadas en los nodos xi (hi = xi+1 − xi i = 0, 1, 2, , n − 1).
En la práctica habitual no se conocen las derivadas pues los datos suelen ser de tipo experimental, en cuyo caso,
se utilizan valores que representen aproximaciones de ellas (razones de cambio de una magnitud respecto de la otra).
Una forma común es la siguiente:
Conocidos los datos {(xi , yi ) i = 0, 1, . . . , n}, se toman los valores siguientes para las derivadas (desde las D.D.1 o
pendientes):
d 0 = P0
i +hi Pi−1
di = hi−1hPi +h
i−1
=
↑
sihi =h∀i
Pi−1 +Pi
2
para i = 1, 2, . . . , n − 1
dn = Pn−1
También puede utilizarse la base del espacio de spline cúbicos clase 1 para resolver el problema (18) .
15
Ejemplo 1.3
Calcular el spline cúbico clase 1 para los datos (con derivadas conocidas) siguientes:
xi
yi
di
−1
1
0
0 1
5 7
1 0
Solución
Método Global (uso de una base):
El espacio que usamos es: S (3, 1; {−1, 0, 1}) cuya base es:
1, x, x2 , x3 ; x2+ , x3+
Para dar una expresión global hemos de escribir el spline como:
s(x) = a + bx + cx2 + dx3 + αx2+ + βx3+
Imponemos las condiciones de interpolación en todos los nodos resultando el sistema:
s0 (−1) = 0 →
7
b − 2c + 3d = 0
s0 (0) = 1 →
7
b=1
0
s (1) = 0 →
7
b + 2c + 3d + 2α + 3β = 0
s(−1) = 1 7→
a−b+c−d=1
s(0) = 5 7→
a=5
s(1) = 7 7→ a + b + c + d + α + β = 7
cuya solución es: a=5, b=1, c= −10, d= −7, α= 14,β= 4
Por lo tanto la solución se escribe como:
s(x)=5 + x−10x2 −7x3 +14x2+ +4x3+
Método Local (trozo a trozo)
La construcción a trozos es la que sigue (usando la tabla de D.D. con argumentos repetidos):
xi
−1
−1
0
0
yi
1
1
5
5
D.D.1
−
0
4
1
D.D.2
−
−
4
−3
D.D.3
−
−
−
−7
xi
0
0
1
1
yi
5
5
7
7
D.D.1
−
1
2
0
D.D.2
−
−
1
−2
D.D.3
−
−
−
−3
Tabla 1: D.D. para s1 (x) y para s2 (x)respectivamente.
Desde aquı́ se deduce la expresión, a trozos, del spline interpolante siguiente:
(
s1 = 1 + 4(x + 1)2 − 7(x + 1)2 x − 1 ≤ x ≤ 0
s(x) =
s2 = 5 + x + x2 − 3x2 (x − 1)0 ≤ x ≤ 1
Cuando no se dispone de las derivadas, éstas se han de obtener antes de calcular las D.D. asociadas a cada trozo.
2.3
Spline Cúbico clase 2
Una función como la de (13) se dice que es un spline cúbico clase 2 si cada si = si (x) es un polinomio de grado ≤ 3 y
la función es continua y derivable 2 veces en todo el intervalo; es decir, para i = 1, 2, . . . , n − 1
16
si (xi ) = si−1 (xi )
s0i (xi ) = s0i−1 (xi )
s00i (xi ) = s00i−1 (xi )
Al conjunto de funciones de este tipo lo notamos por: S (3, 2; {x0 , x1 , . . . , xn })
Proposición 2.3 El conjunto S (3, 2; {x0 , x1 , . . . , xn }) satisface las propiedades siguientes:
1. Es un espacio vectorial con dim (S (3, 2; {x0 , x1 , . . . , xn })) = n + 3;
n
o
3
3
2. Una base de tal espacio es: 1, x, x2 , x3 ; (x − x1 )+ , . . . , (x − xn−1 )+
La propiedad 2 nos permite escribir una función spline cúbico, en forma global, como:
s(x) = a + bx + cx2 + dx3 +
n−1
P
i=1
3
αi (x − xi )+
(19)
Interpolación con spline cúbicos clase 2.
Como la dimensión del espacio es n+3, tendremos dos libertades en la resolución del problema de interpolar n+1
datos {(xi , yi ); i = 0, 1, ..., n}. Ası́, un problema clásico es:
Hallars(x) ∈ S (3, 2; {x0 , x1 , . . . , xn }) verificando :
s(xi ) = yi i = 0, 1, . . . , n
s00 (x0 ) =0 = s00 (xn )
(20)
El problema (20) admite una única solución llamada: ”SPLINE CÚBICO NATURAL”. Esta solución puede
obtenerse desde la construcción del Spline Cúbico clase 1. Para ello, hemos de generar las derivadas d0 , d1 , d2 , . . . , dn
usando, para ello, las condiciones necesarias para que tal spline sea dos veces derivable y cumpla las dos condiciones
agregadas (s00 (x0 ) =0 = s00 (xn )) a las de interpolación básica (s(xi ) = yi ∀i).
Más concretamente, el SPLINE


s0



 s1
s(x) =
..


.



sn−1
x0 ≤ x < x1
x1 ≤ x < x2
xn−1 ≤ x ≤ xn
con
si = yi + di (x − xi ) +
Pi −di
hi (x
− xi ) 2 +
di+1 +di −2Pi
(x
h2i
− xi )2 (x − xi+1 )
será solución de (20) si las derivadas d0 , d1 , d2 , . . . , dn son la única solución del S.E.L. de orden (n + 1) × (n + 1)
siguiente (forma matricial):








2
h1
..
.
0
0
1
0
2(h1 + h0 )
h0
..
..
.
.
···
hn−1
···
0
···
0
···
0
..
..
.
.
2(hn−1 + hn−2 ) hn−2
1
2

d0
d1
..
.






  dn−1
dn
o, equivalentemente,
17


 
 
 
=
 
 
 
3P0
3 (h1 P0 + h0 P1 )
..
.
3 (hn−1 Pn−2 + hn−2 Pn−1 )
3Pn−1








(21)








2
1
h0
..
.
0
0
1
2( h10 +
..
.
···
···
0
1
h1 )
1
h1
..
.
1
hn−2
0
···
···
..
.
1
2( hn−2 +
1
0
0
..
.
1
hn−1 )
1
hn−1
2

d0
d1
..
.






  dn−1
dn


 
 
 
=
 
 
 

3P0
3 Ph00 +
..
.
Pn−2
3 hn−2 +

P1
h1







Pn−1

hn−1
(22)
3Pn−1
Aquı́, de nuevo, P0 , P1 , . . . , Pn−1 son las diferencias divididas de orden 1 (o pendientes) para los datos iniciales
{(xi , yi ) i = 0, 1, . . . , n}
También puede usarse la base del espacio de spline cúbicos para resolver el problema (20) .
Ejemplo 1.4
Calcular el SPLINE NATURAL para los datos siguientes:
xi
yi
−1
1
0 1
5 7
Solución
Método Global (uso de una base)
El espacio que usamos es: S (3, 2; {−1, 0, 1}) cuya base es: 1, x, x2 , x3 ; x3+
Una expresión del spline es: s(x) = a + bx + cx2 + dx3 + αx3+
Imponemos las condiciones de interpolación básica y las condiciones adicionales sobre la derivada segunda en los
extremos resultando el sistema:
s(−1) = 1
s(0) = 5
s(1) = 7
00
s (−1) = 0
s00 (1) = 0
7→
7
→
7
→
7
→
7
→
a−b+c−d=1
a=5
a+b+c+d+α=7
2c − 6d = 0
2c + 6d + 6α = 0









 a = 5, b = 3
cuya solución es:
c = − 32 , d = − 12


 α=1





Por lo tanto la solución se escribe como: s(x)=5 + 3x− 23 x2 − 12 x3 +x3+
Método Local (trozo a trozo)
Para la construcción a trozos lo primero es calcular las derivadas necesarias resolviendo el sistema (22) que en este
caso particular (aquı́ hi = 1 ∀i) es:

2

 1
0
cuya solución es: d0 = 92 , d1 = 3, d2 =
1
4
1

 

0
d0
12

 

1   d1  =  18 
2
d2
6
3
2
18
Ası́, usando estas derivadas podemos proceder como en el Ejemplo 1.3 (las tablas de D.D. con nodos repetidos se
verán afectadas por las nuevas derivadas):
xi
−1
−1
0
0
yi
1
1
5
5
D.D.1
−
9
2
4
3
D.D.2
−
−
− 12
−1
D.D.3
−
−
−
− 12
xi
0
0
1
1
yi
5
5
7
7
D.D.1
−
3
2
3
2
D.D.2
−
−
−1
− 12
D.D.3
−
−
−
− 12
Tabla 2: D.D. para s1 (x) y para s2 (x) respectivamente.
Desde aquı́ se deduce la expresión, a trozos, del SPLINE NATURAL siguiente:

9
1
1
2
2

 s1 = 1 + 2 (x + 1) − 2 (x + 1) − 2 (x + 1) x −1 ≤ x ≤ 0
s(x) =

 s = 5 + 3x − x2 + 1 x2 (x − 1)
0≤x≤1
2
2
Otros spline cúbicos clásicos son los llamados:
• Spline sujeto.- Es el que cumple las condiciones adicionales:
s0 (x0 ) = A, s0 (xn ) = B
con A y B valores conocidos (por ejemplo, las derivadas exactas de la función f (x) si los datos son del tipo
yi = f (xi )).
• Spline periódico.- Sus condiciones adicionales son:
s0 (x0 ) = s0 (xn ), s00 (x0 ) = s00 (xn )
en este caso, por la periodicidad, se supone que s(x0 ) = y0 = yn = s(xn ).
Para calcular el spline sujeto podemos razonar como en el caso del Natural pero, ahora, conocemos los valores de
las derivadas en x0 y en xn ; es decir, d0 = A, dn = B por lo que el sistema se puede escribir como:








1
1
h0
..
.
0
0
0
1
2( h0 +
..
.
···
···
0
1
h1 )
1
h1
..
.
1
hn−2
0
···
···
..
.
1
2( hn−2 +
0
0
0
..
.
1
hn−1 )
1
hn−1
1

d0
d1
..
.






  dn−1
dn



A
 
3 Ph00
 

 
=
   
  3 Pn−2
hn−2
+
..
.
P1
h1







Pn−1
+ hn−1 
B
que eliminando los valores d0 = A, dn = B (ecuaciones primera y última) el sistema queda reducido a:
19
(23)









2( h10 +
1
h1
..
.
0
0
1
h1 )
1
h1
2( h11 +
..
.
···
···
···
···
..
.
1
2( hn−3 +
0
1
h2 )
1
h2
..
.
hn−3
0

3
P0
+ Ph11 − hA0
h
0
3 Ph11 + Ph22
..
.
3
d1
d2
..
.






1
1
 d
n−2

hn−2 )
hn−2
1
1
1
dn−1
2( hn−2 + hn−1 )
hn−2
1



=




0
0
..
.
Pn−2
hn−2
+
Pn−1
hn−1
−
B
hn−1




=











(24)
Resolviendo el sistema (24) (es de orden (n − 1) × (n − 1)) se puede obtener el spline sujeto trozo a trozo mediante
interpolación de Hermite en cada intervalo.
Error en la intepolación con spline.
Para terminar damos algunas estimaciones básicas del error cometido al evaluar una determinada función, f (x),
mediante un spline que interpola la función en los nodos x0 < x1 < · · · < xn . Pues bien, sea E(x)=f(x)-s(x) el error
cometido en x ∈ [a = x0 , b = xn ]; entonces, un análisis similar al realizado en la interpolación de Hermite nos permite
obtener los resultados siguientes:
Teorema 2.1 Sean f ∈ C 4 ([a, b]), M una cota para |f iv) (x)| en [a, b] y h = max{hi }. Entonces,
i
1. Si s(x) es el spline cúbico de clase 1 que interpola f (x) y su derivada f 0 (x) en los nodos xi i = 0, 1, . . . , n;
entonces:
M 4
kEk = max {|f (x) − s(x)|} 6
h
a≤x≤b
384
2. Si s(x) es el spline cúbico de clase 1 que interpola f (x) en los nodos xi i = 0, 1, . . . , n y usa derivadas s0 (xi ) =
di i = 0, . . . , n ; entonces:
M 4 h
h + max{|di − f 0 (xi )|}
kEk 6
384
4 i
3. Si s(x) es el spline cúbico sujeto que interpola f (x) en los nodos xi i = 0, 1, . . . , n y s0 (x0 ) = A = f 0 (x0 ), s0 (xn ) =
B = f 0 (xn ) ; entonces:
5M 4
h
kEk 6
384
Este resultado permite asegurar la convergencia del interpolante spline a la función cuando h → 0. También, el
spline natural que interpola una función como la del teorema tiene una estimación del error del mismo orden (es
proporcional a h4 ) que el sujeto pero más compleja de expresar. En cuanto al error de interpolación para el spline
lineal es proporcional a h2 y por tanto converge a la función interpolada.
20
Descargar