You are on page 1of 10

1.

INTERPOLACIÓN MEDIANTE TRAZADORES (SPLINES)

La interpolación mediante trazadores (Splines) consiste en colocar polinomios


de grado inferior en subconjuntos de los datos.

Las curvas de tercer grado empleadas para unir cada par de datos se llaman
trazadores cúbicos. Esas funciones se pueden construir de tal forma que las
conexiones entre ecuaciones cúbicas adyacentes resulten visualmente suaves.
Podría parecer que la aproximación de tercer grado de los trazadores sería
inferior a la expresión de séptimo grado.

El concepto de trazador se originó en la técnica de dibujo que usa una cinta


delgada y flexible (llamada spline, en inglés), para dibujar curvas suaves a través
de un conjunto de puntos. El proceso se representa en la figura 18.15 para una
serie de cinco alfileres (datos). Una curva cúbica suave resulta al entrelazar la
cinta entre los alfileres. De aquí que se haya adoptado el nombre de “trazador
cúbico” (en inglés: “cubic spline”) para los polinomios de este tipo.

 Trazadores Cúbicos
El objetivo en los trazadores cúbicos es obtener un polinomio de tercer grado
para cada intervalo entre los nodos:

𝑓𝑖 (𝑥) = 𝑎𝑖 𝑥 3 + 𝑏𝑖 𝑥 2 + 𝑐𝑖 𝑥 + 𝑑𝑖

Así, para n + 1 datos (i = 0, 1, 2,..., n), existen n intervalos y, en consecuencia,


4n incógnitas a evaluar. Como con los trazadores cuadráticos, se requieren 4n
condiciones para evaluar las incógnitas. Éstas son:
1. Los valores de la función deben ser iguales en los nodos interiores (2n –
2 condiciones).
2. La primera y última función deben pasar a través de los puntos extremos
(2 condiciones).
3. Las primeras derivadas en los nodos interiores deben ser iguales (n – 1
condiciones).
4. Las segundas derivadas en los nodos interiores deben ser iguales (n – 1
condiciones).
5. Las segundas derivadas en los nodos extremos son cero (2
condiciones).

La interpretación visual de la condición 5 es que la función se vuelve una línea


recta en los nodos extremos. La especificación de una condición tal en los
extremos nos lleva a lo que se denomina trazador “natural”. Se le da tal nombre
debido a que los trazadores para el dibujo naturalmente se comportan en esta
forma (figura 18.15). Si el valor de la segunda derivada en los nodos extremos
no es cero (es decir, existe alguna curvatura), es posible utilizar esta información
de manera alternativa para tener las dos condiciones finales.

Los cinco tipos de condiciones anteriores proporcionan el total de las 4n


ecuaciones requeridas para encontrar los 4n coeficientes. Mientras es posible
desarrollar trazadores cúbicos de esta forma, presentaremos una técnica
alternativa que requiere la solución de sólo n – 1 ecuaciones.

Ecuación Cubica para cada intervalo:

𝑓𝑖" (𝑥𝑖−1 ) 3
𝑓𝑖" (𝑥𝑖 )
𝑓𝑖 (𝑥) = (𝑥𝑖 − 𝑥) + (𝑥 − 𝑥𝑖−1 )3
6(𝑥𝑖 − 𝑥𝑖−1 ) 6(𝑥𝑖 − 𝑥𝑖−1 )
𝑓 (𝑥𝑖−1 ) 𝑓 " (𝑥𝑖−1 )(𝑥𝑖 − 𝑥𝑖−1 )
+[ − ] (𝑥𝑖 − 𝑥)
𝑥𝑖 − 𝑥𝑖−1 6
𝑓(𝑥𝑖 ) 𝑓 " (𝑥𝑖 )(𝑥𝑖 − 𝑥𝑖−1 )
+[ − ] (𝑥 − 𝑥𝑖−1 )
𝑥𝑖 − 𝑥𝑖−1 6
Esta ecuación contiene sólo dos incógnitas (las segundas derivadas en los
extremos de cada intervalo). Las incógnitas se evalúan empleando la siguiente
ecuación:

(𝑥𝑖 − 𝑥𝑖−1 )𝑓 " (𝑥𝑖−1 ) + 2(𝑥𝑖+1 − 𝑥𝑖−1 )𝑓 " (𝑥𝑖 ) + (𝑥𝑖+1 − 𝑥𝑖 )𝑓 " (𝑥𝑖+1 )
6 6
= [𝑓(𝑥𝑖+1 ) − 𝑓(𝑥𝑖 )] + [𝑓(𝑥𝑖−1 ) − 𝑓(𝑥𝑖 )]
𝑥𝑖+1 − 𝑥𝑖 𝑥𝑖 − 𝑥𝑖−1

Si se escribe esta ecuación para todos los nodos interiores, resultan n – 1


ecuaciones simultáneas con n – 1 incógnitas. (Recuerde que las segundas
derivadas en los nodos extremos son cero).

Ejemplo:

1. Ajuste trazadores cúbicos a los siguientes datos. Utilice los


resultados para estimar el valor en x = 5.

x F(x)
3.0 2.5
4.5 1.0
7.0 2.5
9.0 0.5
Solución.
Usar la ecuación para generar el conjunto de ecuaciones simultáneas que se
utilizarán para determinar las segundas derivadas en los nodos.

Para el primer nodo interior:

(𝑥𝑖 − 𝑥𝑖−1 )𝑓 " (𝑥𝑖−1 ) + 2(𝑥𝑖+1 − 𝑥𝑖−1 )𝑓 " (𝑥𝑖 ) + (𝑥𝑖+1 − 𝑥𝑖 )𝑓 " (𝑥𝑖+1 )
6 6
= [𝑓(𝑥𝑖+1 ) − 𝑓(𝑥𝑖 )] + [𝑓(𝑥𝑖−1 ) − 𝑓(𝑥𝑖 )]
𝑥𝑖+1 − 𝑥𝑖 𝑥𝑖 − 𝑥𝑖−1

(4.5 − 3)𝑓 " (3) + 2(7 − 3)𝑓 " (4.5) + (7 − 4.5)𝑓 " (7)
6 6
= [2.5 − 1] + [2.5 − 1]
(7 − 4.5) 4.5 − 3

1.5𝑓 " (3) + 8𝑓 " (4.5) + 2.5𝑓 " (7) = 9.6


8𝑓 " (4.5) + 2.5𝑓 " (7) = 9.6

Para el segundo punto interior:

(7 − 4.5)𝑓 " (4.5) + 2(9 − 4.5)𝑓 " (7) + (9 − 7)𝑓 " (9)
6 6
= [0.5 − 2.5] + [1 − 2.5]
(9 − 7) (7 − 4.5)

2.5𝑓 " (4.5) + 9𝑓 " (7) + 2𝑓 " (9) = −9.6

2.5𝑓 " (4.5) + 9𝑓 " (7) = −9.6

Las dos ecuaciones se resuelvan simultáneamente:

8𝑓 " (4.5) + 2.5𝑓 " (7) = 9.6 (2.5)

2.5𝑓 " (4.5) + 9𝑓 " (7) = −9.6 (-8)

20𝑓 " (4.5) + 6.25𝑓 " (7) = 24

−20𝑓 " (4.5) − 72𝑓 " (7) = 76.8


100.8
−65.75𝑓 " (7) = 100.8 𝑓 " (7) = = −1.53308.
−65.75

” (4.5)
9.6 − 2.5𝑓 " (7) 9.6 − 2.5(−1.53308)
𝑓 = = = 1.67909.
8 8

Trazador cubico para el primer intervalo (i=1);

𝑓𝑖" (𝑥𝑖−1 ) 𝑓𝑖" (𝑥𝑖 ) 𝑓(𝑥𝑖−1 )


𝑓𝑖 (𝑥 ) = )
(𝑥𝑖 − 𝑥)3 + )
(𝑥 − 𝑥𝑖−1 )3 + [ −
6(𝑥𝑖 − 𝑥𝑖−1 6(𝑥𝑖 −𝑥𝑖−1 𝑥𝑖 −𝑥𝑖−1

𝑓 " (𝑥𝑖−1 )(𝑥𝑖 −𝑥𝑖−1 ) 𝑓(𝑥𝑖 ) 𝑓 " (𝑥𝑖 )(𝑥𝑖 −𝑥𝑖−1 )


] (𝑥𝑖 − 𝑥 ) + [ − ] (𝑥 − 𝑥𝑖−1 )
6 𝑥𝑖 −𝑥𝑖−1 6
𝑓1" (3) 3 𝑓𝑖" (4.5) 𝑓(𝑥𝑜 )
𝑓1 (𝑥 ) = (𝑥 − 𝑥) +
) 1 )
(𝑥 − 𝑥𝑜 )3 + [ −
6(𝑥1 − 𝑥𝑜 6(𝑥1 −𝑥𝑜 𝑥1 −𝑥𝑜

𝑓 " (𝑥𝑜 )(𝑥1 −𝑥0 ) 𝑓(𝑥1 ) 𝑓 " (𝑥1 )(𝑥1 −𝑥𝑜 )


] (𝑥1 − 𝑥 ) + [ − ] (𝑥 − 𝑥𝑜 )
6 𝑥1 −𝑥0 6

1.67909 2.5 0(1.5)


𝑓1 (𝑥) = 0(𝑥1 − 𝑥)3 + (𝑥 − 3)3 + [ − ] (4.5 − 𝑥)
6(1.5) 1.5 6
1 1.67909(1.5)
+[ − ] (𝑥 − 3)
1.5 6

𝑓1 (𝑥) = 0.1866(𝑥 − 3)3 + 1.6667(4.5 − 𝑥) + 0.2469(𝑥 − 3)

Para el segundo intervalo (i=2);

1.67909 (−1.53308)
𝑓2 (𝑥) = (7 − 𝑥)3 + (𝑥 − 4.5)3
6(7 − 4.5) 6(7 − 4.5)

1 1.67909(2.5) 2.5 (−1.53308)(2.5)


+[ − ] (7 − 𝑥) + [ − ] (𝑥 − 4)
2.5 6 2.5 6

𝑓2 (𝑥) = 0.1119(7 − 𝑥)3 − 0.1022(𝑥 − 4.5)3 − 0.2996(7 − 𝑥) +


1.6388(𝑥 − 4.5)

Para el tercer intervalo (i=3);

−1.53308 3
𝑓 " (9)
𝑓3 (𝑥) = (9 − 𝑥) + (𝑥 − 7)3
6(2) 6(2)

2.5 (−1.53308)(2) 0.5 𝑓 " (9)(2)


+[ − ] (9 − 𝑥) + [ − ] (𝑥 − 7)
2 6 2 6

𝑓3 (𝑥) = −0.1278(9 − 𝑥)3 + 1.7610(9 − 𝑥) + 0.25(𝑥 − 7)

El valor de x=5, está dentro del segundo intervalo.

𝑓2 (𝑥) = 0.1119(7 − 5)3 − 0.1022(5 − 4.5)3 − 0.2996(7 − 5) +


1.6388(5 − 4.5) = 1.1026 𝑓2 (5) = 1.1026
2. INTERPOLACION INVERSA

Los valores de f(x) y x en la mayoría de los problemas de interpolación son las


variables dependiente e independiente, respectivamente. En consecuencia, los
valores de las x con frecuencia están espaciados uniformemente.

Un ejemplo simple es una tabla de valores obtenida para la función f(x) = 1/x.

X 1 2 3 4 5 6 7
F(x) 1 0.5 0.3333 0.25 0.2 0.1667 0.1429

Ahora suponga que usted debe usar los mismos datos, pero que se le ha dado
un valor de f(x) y debe determinar el valor correspondiente de x. Por ejemplo,
para los datos anteriores, suponga que se le pide determinar el valor de x que
corresponda a f(x) = 0.3. En tal caso, como se tiene la función y es fácil de
manipular, la respuesta correcta se determina directamente, x = 1/0.3 = 3.3333.

A ese problema se le conoce como interpolación inversa. En un caso más


complicado, usted puede sentirse tentado a intercambiar los valores f(x) y x [es
decir, tan sólo graficar x contra f(x)] y usar un procedimiento como la
interpolación de Lagrange para determinar el resultado. Por desgracia, cuando
usted invierte las variables no hay garantía de que los valores junto con la nueva
abscisa [las f(x)] estén espaciados de una manera uniforme. Es más, en muchos
casos, los valores estarán “condensados”. Es decir, tendrán la apariencia de una
escala logarítmica, con algunos puntos adyacentes muy amontonados y otros
muy dispersos. Por ejemplo, para f(x) = 1/x el resultado es:

F(x) 0.1429 0.1667 0.2 0.25 0.3333 0.5 1


X 7 6 5 4 3 2 1

Tal espaciamiento no uniforme en las abscisas a menudo lleva a oscilaciones en


el resultado del polinomio de interpolación. Esto puede ocurrir aun para
polinomios de grado inferior. Una estrategia alterna es ajustar un polinomio de
interpolación de orden n-ésimo, fn(x), a los datos originales [es decir, con f(x)
contra x]. En la mayoría de los casos, como las x están espaciadas de manera
uniforme, este polinomio no estará mal condicionado. La respuesta a su
problema, entonces, consiste en encontrar el valor de x que haga este polinomio
igual al dado por f(x). Así, ¡el problema de interpolación se reduce a un problema
de raíces!

Por ejemplo, para el problema anterior, un simple procedimiento podría ser


ajustar los tres puntos a un polinomio cuadrático (4, 0.25) (3, 3.3333) y (2, 0.5).

(4, 0.25) 16x2 + 4x + c =0.25


(3, 0.3333) 9x2 + 3x + c =0.3333
(2, 0.5) 4x2 + 2x + c =0.5

El resultado sería F2(x)= 0.041667x2 – 0.375x + 1.08333

La respuesta al problema de interpolación inversa para determinar la x


correspondiente a F(x)= 0.3 sería equivalente a la determinación raíces de: 0.3=
0.041667x2 – 0.375x + 1.08333

Para este caso simple la formula cuadrática de pude usar para calcular:

0.375±√− 0.3752 −4(0.041667∗0.78333)


𝑥= = 5.704158 y 3.295842
2(0.041667)

Así, la segunda raíz (3.296) es una buena aproximación del valor real de 3.3333.
Si se desea una mayor exactitud, se podría emplear un polinomio de tercer o
cuarto orden con uno de los métodos para la localización de raíces.

Otro método para resolver una interpolación inversa es utilizando el método de


newton, pero intercambiando las columnas de F(x) y x de la siguiente manera:
F(x) X Primera Segunda
X0 0.5 2
-5.9988
X1 0.3333 3 24.024
-12.0048
X2 0.25 4

El procedimiento para resolverlo sería la misma fórmula de newton solo que


invirtiendo las f(x) con las x:

P3(x)= X0 + F(X0, X1) (x - F(x0)) + F(X0, X1, X2) (x - F(x0)) (x - F(x1))

De esta forma la interpolación es:

P3(x)= 2 – 5.9988 (x - 0.5) + 24.024 (x – 0.5) (x – 0.3333)

P3(x)= 24.024 x2 - 26.018 x + 9.003

Entonces una aproximación de x de la función 0.3 seria:

P3(0.3)= 24.024 (0.32) - 26.018(0.3) + 9.003

P3(0.3)= 3.36

Si se requiere más exactitud en la aproximación se puede utilizar un número


mayor de datos es decir un polinomio de grado 3 o uno de grado 4
3. INTERPOLACION MULTIDIMENSIONAL
Los métodos de interpolación para problemas unidimensionales se pueden
extender a la interpolación multidimensional. En esta sección se describirá el
caso más sencillo de interpolación bidimensional en coordenadas cartesianas.

 Interpolación bilineal

Sirve para determinar valores intermedios para funciones de dos o más variables
𝑍 = 𝑓(𝑋𝑖, 𝑌𝑖) se tienen valores en cuatro puntos 𝑓(𝑥2, 𝑦1) 𝑓(𝑥1, 𝑦2) 𝑓(𝑥2, 𝑦2). Se
desea interpolar entre estos puntos para estimar el valor de un punto intermedio
𝑓(𝑥𝑖, 𝑦𝑖). Si se usa una función lineal, el resultado es un plano que conecta los
puntos. Tales funciones se les conocen como bilineales. Una forma sencilla de
desarrollar la función bilineal. Primero se puede mantener fijo el valor de y aplicar
interpolación lineal unidimensional en la dirección X. Usando la forma de
LaGrange el resultado en (Xi, Yi) es

𝑋𝑖−𝑋2 𝑥𝑖−𝑥1
𝑓(𝑋𝑖, 𝑌𝑖) = 𝑋1−𝑋2 𝑓(𝑋1, 𝑌1) + 𝑥2−𝑥1 𝑓(𝑥2, 𝑦1) ec1

Y en (𝑥𝑖, 𝑦2) es
𝑥𝑖−𝑥2 𝑥𝑖−𝑥1
𝑓(𝑥𝑖, 𝑦2) = 𝑓(𝑥1, 𝑦2) + 𝑓(𝑥2, 𝑦2) ec2
𝑥1−𝑥2 𝑥2−𝑥1

Estos puntos se pueden entonces usar para interpolar linealmente a lo largo de


la dimensión y ara obtener el resultado final,

𝑦𝑖−𝑦2 𝑦𝑖−𝑦1
𝑓(𝑥𝑖, 𝑦𝑖) = 𝑦1−𝑦2 𝑓(𝑥𝑖, 𝑦1) + 𝑦2−𝑦1 𝑓(𝑥𝑖, 𝑦2) ec3

Se puede desarrollar una sola ecuación sustituyendo las ecuaciones 1 y 2 en la


ecuación 3 para dar:

𝑥𝑖 − 𝑥2 𝑦𝑖 − 𝑦2 𝑥𝑖 − 𝑥1 𝑦𝑖 − 𝑦2
𝑓(𝑥𝑖, 𝑦𝑖) = 𝑓(𝑥1, 𝑦1) + 𝑓(𝑥2, 𝑦1)
𝑥1 − 𝑥2 𝑦1 − 𝑦2 𝑥2 − 𝑥1 𝑦1 − 𝑦2
𝑥𝑖 − 𝑥2 𝑦𝑖 − 𝑦1 𝑥𝑖 − 𝑥1 𝑦𝑖 − 𝑦1
+ 𝑓(𝑥1, 𝑦2) + 𝑓(𝑥2, 𝑦2)
𝑥1 − 𝑥2 𝑦2 − 𝑦1 𝑥2 − 𝑥1 𝑦2 − 𝑦1
Ejemplo:

Al graficar pixel a pixel un objeto 3D, se proyectan en la pantalla (coordenadas


CRT) pixeles contiguos en las coordenadas normalizadas (0,0), (1,0), (0,1), (1,1)
con intensidades de u= 4, 8, 2, 10, respectivamente. Se desea hacer un “zoom”
del despliegue, ¿cómo determinaría la intensidad de un punto localizado en (x,
y) = (0.25, 0.75)? Dé la o las fórmulas generales para calcular u en cualquier
punto (x, y) que satisfaga 0  x  1 y 0  y  1.

Hay varios criterios; por vecino más próximo, el pixel más cercano a (0.25, 0.75)
es (0,1), cuya intensidad es u = 2. por interpolación, como hay cuatro vecinos,
escogemos interpolación bilineal; tenemos valores intermedios (en el diagrama,
i, j = 0,0 en nuestro caso particular)

𝑓(𝑥1, 𝑦1) = 𝑓(0,0) = 4


𝑓(𝑥1, 𝑦2) = 𝑓(0,1) = 2

𝑓(𝑥2, 𝑦1) = 𝑓(1,0) = 8

𝑓(𝑥2, 𝑦2) = 𝑓(1,1) = 10

Xi=0.25 Yi=0.75

Sustituyendo en la ecuación la ecuación 3.

0.25 − 1 0.75 − 1 0.25 − 1 0.75 − 1 0.25 − 1 0.75 − 0


𝑓(𝑥𝑖, 𝑦𝑖) = 4+ 8+ 2
0−1 0−1 1−0 0−1 0−1 1−0
0.25 − 0 0.75 − 0
+ 10
1−0 1−0

𝑓(0.25,0.75) = 4.25

You might also like