13
INTERPOLACI ´ ON SEGMENTARIA C ´ UBICA Universidad Aut´ onoma Metropolitana - Azcapotzalco etodos Num´ ericos March 1, 2006 Contents 1 INTERPOLACION CUBICA DE TRAZADOR 2 2 TRAZADOR CUBICO NATURAL 7 List of Algorithms 1 TRAZADOR CUBICO NATURAL ........................... 8 List of Figures 1 Joven pato en vuelo ................................... 2 2 Serie de segmentos de recta ............................... 3 3 Interpolaci´ on de trazadores c´ ubicos .......................... 4 4 Joven Pato en vuelo ................................... 9 5 Joven Pato en vuelo ................................... 10 6 Joven pato en vuelo ................................... 11 7 Joven pato en vuelo ................................... 12 8 Parte superior del pato en MatLab ........................... 13 1

Seg Cubic a Burden

Embed Size (px)

Citation preview

Page 1: Seg Cubic a Burden

INTERPOLACIONSEGMENTARIA CUBICA

Universidad Autonoma Metropolitana - AzcapotzalcoMetodos Numericos

March 1, 2006

Contents

1 INTERPOLACION CUBICA DE TRAZADOR 2

2 TRAZADOR CUBICO NATURAL 7

List of Algorithms

1 TRAZADOR CUBICO NATURAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

List of Figures

1 Joven pato en vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Serie de segmentos de recta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Interpolacion de trazadores cubicos . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Joven Pato en vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Joven Pato en vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Joven pato en vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Joven pato en vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Parte superior del pato en MatLab . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1

Page 2: Seg Cubic a Burden

1 INTERPOLACION CUBICA DE TRAZADOR

En las secciones anteriores de este capıtulo nos preocupamos por la aproximacion de funcionesarbitrarias en intervalos cerrados usando polinomios. Aunque este metodo de aproximacion esapropiado en muchas circunstancias, la naturaleza oscilatoria de los polinomios de grado mayor yla propiedad de que una fluctuacion sobre una porcion pequena del intervalo puede inducir fluc-tuaciones muy grandes sobre el rango entero, ver figura 1 restringen su uso cuando se aproximanmuchas de las funciones que surgen en situaciones fısicas reales.

Figure 1: Joven pato en vuelo

Un enfoque alternativo que puede usarse para obtener funciones interpolantes consiste en dividirel intervalo en una coleccion de subintervalos y construir un polinomio aproximante diferente(generalmente) en cada subintervalo. La aproximacion con funciones de este tipo se llama aprox-imacion polinomica segmentaria.

El tipo mas simple de aproximacion polinomica segmentaria es la interpolacion lineal segmentariaque consiste en unir un conjunto de datos de puntos

{(x0, f(x0)), (x1, f(x1)), . . . , (xn, f(xn))}

con una serie de lıneas rectas, ver figura 2. Este es el metodo de interpolacion usado en cursos ele-mentales que contienen el estudio de funciones trigonometricas o logarıtmicas cuando se requierenlos valores intermedios de una coleccion de valores tabulados. La desventaja de enfocar un pro-blema de aproximacion usando funciones de este tipo es que en cada uno de los extremos de lossubintervalos, no hay ninguna seguridad de diferenciabilidad, lo cual, en un contexto geometrico,significa que la funcion interpolante no es “suave” en esos puntos.

Frecuentemente por las condiciones fısicas es claro que se requiere esta condicion y en estos casosla funcion aproximante debe ser continuamente diferenciable. Un procedimiento que podrıa uno

2

Page 3: Seg Cubic a Burden

Figure 2: Serie de segmentos de recta

seguir serıa usar un polinomio segmentario del tipo de Hermite. Por ejemplo, si se conocen losvalores f y f’ en cada uno de los puntos x0 < x1 < . . . < xn, se podrıa usar un polinomio deHermite de grado 3 en cada uno de los subintervalos

[x0, x1], [x1, x2], ..., [xn−1, xn]

para obtener una funcion que sea continuamente diferenciable en el intervalo [x0, xn].

El determinar el polinomio cubico de Hermite apropiado en un intervalo dado es simplemente cosade calcular la funcion H3(x) para ese intervalo. Como los polinomios interpolantes de Lagrangenecesarios para determinar H3 son de primer grado, esto puede realizarse sin mayor dificultad.Los polinomios cubicos de Hermite se usan comunmente en los problemas relacionados con elestudio del movimiento de partıculas en el espacio. Sin embargo, para considerar esta aplicacion,la teorıa debe extenderse a funciones multivariadas. Una referencia a este material es Schultz.

La dificultad del uso de polinomios segmentarios de Hermite para problemas generales de inter-polacion estriba en la necesidad de conocer la derivada de la funcion que se esta aproximando.En las situaciones mas usuales, se conocen datos de la funcion pero no de su derivada. En loque resta de esta seccion consideramos aproximaciones usando polinomios segmentarios que norequieren informacion acerca de la derivada, excepto en los extremos del intervalo en el cual lafuncion se esta aproximando.

Posiblemente el tipo mas simple de funcion polinomica segementaria diferenciable en un intervaloentero [x0, xn] es la funcion que se obtiene ajustando un polinomio cuadratico entre cada par denodos sucesivos. Esto se hace construyendo una cuadratica en [x0, x1] que coincida con la funcionen x0 y x1, otra cuadratica en [x1, x2] que coincida con la funcion en x1 y x2, y ası sucesivamente.

Como un polinomio cuadratico general tiene tres constantes arbitrarias-el termino constante, elcoeficiente de x y el coeficiente de x2- y solo se requieren dos condiciones para ajustar los datos enlos extremos de cada subintervalo, existe la flexibilidad suficiente para permitir que las cuadraticasse escojan ademas de tal manera que, la interpolante tenga derivada continua en [x0, xn].

La dificultad de este procedimiento surge cuando hay la necesidad de especificar las condicionesreferentes a la derivada de la interpolacion en los extremos x0 y xn. No hay un numero suficiente

3

Page 4: Seg Cubic a Burden

Figure 3: Interpolacion de trazadores cubicos

de constantes para asegurar que las condiciones se satisfacen.

La aproximacion polinomica segmentaria mas comun usando polinomios cubicos entre parejassucesivas de nodos se llama interpolacion cubica de trazador.

Un polinomio cubico general involucra cuatro constantes; ası que hay suficiente flexibilidad enel procedimiento del trazador cubico para garantizar no solamente que la interpolante sea con-tinuamente diferenciable en el intervalo, sino que tenga tambien una segunda derivada continua.La construccion del trazador cubico, sin embargo, no supone que las derivadas de la interpolantecoinciden con las de la funcion ni siquiera en los nodos, ver figura3.

Dada la funcion f definida en [a, b]y un conjunto de numeros, llamados los nodos, a = x0 <x1 < ... < xn = b, un interpolante cubico de trazador, S, para f es una funcion que satisface lassiguientes condiciones:

a) S es un polinomio cubico, denotado Sj , en el subintervalo [xj , xj+1] para cada j = 0, 1, . . . , n−1;

b) S(xj) = f(xj) para cada j = 0, 1, ..., n;

c) Sj+1(xj+1) = Sj(xj+1) para cada j = 0, 1, . . . , n − 2;

d) S′j+1(xj+1) = S′j(xj+1) para cada j = 0, 1, ..., n − 2;

e) S”j+1(xj+1) = S”j(xj+1) para cada j = 0, 1, . . . , n − 2;

f) se satisface una del siguiente conjunto de condiciones de frontera:

(i) S”(x0) = S”(xn) = 0 (frontera libre)

(ii) S′(x0) = f ′(x0) y S′(xn) = f ′(xn) (frontera sujeta)

4

Page 5: Seg Cubic a Burden

Aunque los trazadores cubicos pueden definirse con otras condiciones de frontera, las condicionesdadas arriba son suficientes para nuestros propositos. Cuando se satisfacen las condiciones defrontera libre, el trazador se llama trazador natural y su grafica se aproxima a la forma quetomarıa una varilla larga flexible si se forzara a pasar por cada uno de los puntos de los datos{(x0, f(x0)), (x1, f(x1)), . . . , (xn, f(xn))}

En general, las condiciones de frontera sujeta nos llevaran a aproximaciones mas exactas ya queincluyen mas informacion acerca de la funcion; sin embargo, para que este tipo de condicion a lafrontera se implemente, es necesario tener, ya se los valores de la derivada en los extremos, o unaaproximacion precisa de estos valores.

Para construir el interpolante cubico de trazador para una funcion f dada, se pueden aplicar lascondiciones de la definicion a los polinomios cubicos.

Sj(x) = aj + bj(x − xj) + cj(x − xj)2 + dj(x − xj)3

Para cada j = 0, . . . , n − 1.

Claramente,

Sj(xj) = aj = f(xj)

Y si se aplica la condicion (c),

aj+1 = Sj+1(xj+1) = Sj(xj+1) = aj + bj(xj+1 − xj) + cj(xj+1 − xj)2 + dj(xj+1 − xj)3

Para cada j = 0, 1 . . . , n − 2

Como el termino (xj+1 − xj) se usara repetidamente en este desarrollo, es conveniente introducirla notacion mas simple,

hj = (xj+1 − xj)

Para cada j = 0, 1, . . . , n− 1. Si, ademas definimos an = f(xn), se puede ver que esto implica quela ecuacion

aj+1 = aj + bjhj + cjh2j + djh

3j (1)

se satisface para cada j = 0, 1, . . . , n − 1.

De una manera similar, definimos bn = S′(xn) y observamos que

S′j(x) = bj + 2cj(x − xj) + 3dj(x − xj)2

implica que S′j(xj) = bj para cada j = 0, 1, . . . , n − 1. Aplicando la condicion (d),

5

Page 6: Seg Cubic a Burden

bj+1 = bj + 2cjhj + 3djh2j (2)

para cada j = 0, 1, . . . , n − 1.

Otra relacion entre los coeficientes de Sj se puede obtener definiendo cn = S′′(xn)/2 y aplicandola condicion (e). En este caso (3.28)

cj+1 = cj + 3djhj (3)

para cada j = 0, 1, . . . , n − 1.

Despejando dj de la ecuacion 3 y sustituyendo este valor en las ecuaciones 1 y 2 da las nuevasecuaciones

aj+1 = aj + bjhj +h2

j

3(2cj + cj+1) (4)

y

bj+1 = bj + hj(cj + cj+1) (5)

para cada j = 0,1, . . . , n - 1.

La relacion final que involucra a los coeficientes se puede obtener resolviendo la ecuacion apropi-ada en la forma de la ecuacion 4, primero para bj ,

bj =1hj

(aj+1 − aj) −hj

3(2cj + cj+1) (6)

y luego, con una reduccion del ındice, para bj−1

bj−1 =1

hj−1(aj − aj−1 −

hj−1

3(2cj−1 + cj)

Sustituyendo estos valores en la ecuacion derivada de la ecuacion, cuando el ındice se reduce enuno, se obtiene el sistema lineal de ecuaciones 5

hj−1cj−1 + 2(hj−1 + hj)cj + hjcj+1 =3hj

(aj+1 − aj) −3

hj−1(aj − aj−1) (7)

para cada para cada j = 1,2,. . . , n - 1. Este sistema tiene como incognitas solo a {cj}nj=0 ya que

los valores de {hj}nj=0 y de {aj}n

j=0 estan dados por el espaciamiento entre los nodos {xj}nj=0 y

los valores de f en los nodos.

Notese que una vez que se conocen los valores de {cj}nj=0 encontrar las constantes restantes

{bj}n−1j=0 partiendo de la ecuacion 7 y {dj}n−1

j=0 de la ecuacion 3 y construir los polinomios cubicos

6

Page 7: Seg Cubic a Burden

{Sj}n−1j=0 es una cuestion sencilla.

La mayor pregunta que surge en conexion con esta construccion es si los valores de {cj}nj=0 pueden

ser encontrados usando el sistema de ecuaciones dado en (3.32) y si es ası, si estos valores sonunicos. Los siguientes teoremas indican que, cuando cualquiera de las ecuaciones de fronteradadas en la parte (f) de la definicion se imponen, la respuesta a ambas preguntas es afirmativa.Las demostraciones de estos teoremas requieren material de algebra lineal.

Teorema. Si f es una funcion definida en [a, b], entonces f tiene un unico interpolante detrazador natural; o sea un unico interpolante de trazador que satisface las condiciones de fronteralibre S′′(a) = S′′(b) = 0.

Demostracion. Con la notacion usual a = x0 < x1 < . . . < xn = b, las condiciones de fronteraen este caso implican que cn = S′′(xn)/2 = 0 y que

0 = S′′′(x0 = 2c0 + 6d0(x0 + x)

Ası que c0 = 0

Las dos ecuaciones c0 = 0 y cn = 0 junto con las ecuaciones en 7 producen un sistema linealdescrito por la ecuacion vectorial Ax = B, donde A es la matriz de (n + 1) × (n + 1)

A =

1 0 0 . . . . . . 0

h0 2(h0 + h1) h1...

0 h1 2(h1 + h2) h2...

... 0

... hn−2 2(hn−2 + hn−1) hn−1

0 · · · · · · 0 0 1

y donde b y x son los vectores

b =

0

3h1

(a2 − a1) − 3h1

(a1 − a0)...

3hn−1

(an − an−1) − 3hn−1

(an−1 − an−2)

y x =

c0

c1...

cn

La matriz A es estrictamente dominante diagonalmente, ası que satisface las hipotesis del teorema.Por lo tanto, el sistema lineal tiene una solucion unica para c0, c1, . . . , cn.

2 TRAZADOR CUBICO NATURAL

La solucion al problema del trazador cubico con las condiciones de frontera S′′(x0) = S′′(xn) = 0se puede obtener aplicando el algoritmo 1.

7

Page 8: Seg Cubic a Burden

Algorithm 1 TRAZADOR CUBICO NATURALRequire: n, x0, x1, . . . , xn, a0 = f(x0), a1 = f(x1), . . . , an = f(xn)Ensure: aj , bj , cj , dj para j = 0, 1, . . . , n − 1

(Nota: S(x) = Sj(x) = aj + bj(x − xj) + cj(x − xj)2 + dj(x − xj)3 para xj < x < xj+1){Para construir el interpolante cubico de trazador S para la funcion f , definida en los numerosx0 < x1 < . . . < xn y que satisface S′′(x0) = S′′(xn) = 0 }Paso 1for ( i desde 0 hasta n − 1) do

hi = xi+1 − xi

end forPaso 2for ( i desde 1 hasta n − 1, ) do

αi = 3hi

(ai+1 − ai) − 3hi−1

(ai − ai−1)

end for{ Los pasos 3, 4 y 5 y parte del paso 6 resuelven un sistema lineal tridiagonal }Paso 3l0 = 1µ0 = 0z0 = 0Paso 4for i desde 1 hasta n − 1, ) do

li = 2(xi+1 − xi−1) − hi−1µi−1

µi = hi/lizi = (αi − hi−1zi−1)/li

end forPaso 5Tome ln = 1zn = 0cn = 0Paso 6for ( i desde n-1 hasta 0, -1) do

cj = zj − µjcj+1

bj = (aj+1 − aj)/hj − hj(cj+1 + 2cj)/3dj = (cj+1 − cj)/(3hj)

end forPaso 7 SALIDA (aj , bj , cj , dj para j = 0, 1, . . . , n − 1)

8

Page 9: Seg Cubic a Burden

Figure 4: Joven Pato en vuelo

Ejemplo. La figura 4 representa a un joven pato en vuelo. Mediante los interpolantes detrazadores cubicos se va a aproximar la parte superior del pato. Se traza la curva en una cuadrıculaa partir de la cual se construyo la tabla. Utiliza el algoritmo para construir los trazadores cubicoscorrespondientes y dibujar la parte superior del pato.

x f(x)0.9000 1.30001.3000 1.50001.9000 1.85002.1000 2.10002.6000 2.60003.0000 2.70003.9000 2.40004.4000 2.15004.7000 2.05005.0000 2.10006.0000 2.25007.0000 2.30008.0000 2.25009.2000 1.950010.5000 1.400011.3000 1.400011.6000 0.700012.0000 0.600012.6000 0.500013.0000 0.400013.3000 0.2500

Al utilizar el algoritmo anterior para generar el trazador cubico libre con estos datos, se obtienenlos coeficientes que aparecen en la tabla. Esta curva de trazador es casi identica al perfil, como

9

Page 10: Seg Cubic a Burden

Figure 5: Joven Pato en vuelo

se observa en la figura 5.

j xj aj bj cj dj

0 0.9 1.3000 0.5396 0.0000 -0.24761 1.3 1.5000 0.4208 -0.2972 0.94692 1.9 1.8500 1.0868 1.4073 -2.95644 2.1 2.1000 1.2949 -0.3666 -0.44664 2.6 2.6000 0.5934 -1.0365 0.44515 3.0 2.7000 -0.0222 -0.5025 0.17426 3.9 2.4000 -0.5034 -0.0322 0.07817 4.4 2.1500 -0.4771 0.0849 1.31428 4.7 2.0500 -0.0713 1.2676 -1.58129 5.0 2.1000 0.2623 -0.1555 0.043110 6.0 2.2500 0.0808 -0.0261 -0.004711 7.0 2.3000 0.0146 -0.0401 -0.024412 8.0 2.2500 -0.1390 -0.1135 0.017513 9.2 1.9500 -0.3358 -0.0506 -0.012714 10.5 1.4000 -0.5318 -0.1002 -0.020315 11.3 0.9000 -0.7312 -0.1490 1.213416 11.6 0.7000 -0.4929 0.9431 -0.839317 12.0 0.6000 -0.1413 -0.0640 0.036418 12.6 0.5000 -0.1789 0.0014 -0.448019 13.0 0.4000 -0.3928 -0.5361 0.595720 13.3 0.25

A fin de facilitar la comparacion, la figura 7 ofrece un ejemplo grafico de la curva que se genera

10

Page 11: Seg Cubic a Burden

Figure 6: Joven pato en vuelo

con un polinomio interpolante de Lagrange que corresponde a los datos de la tabla, generandoseuna extrana ilustracion del lomo del pato en vuelo o en otra posicion. En este caso, el polinomiointerpolante es de grado 20 y oscila demasiado.

El siguiente script en MatLab grafica el perfil del pato, el cual se muestra en la figura 8. Nota: Estescript requiere que ya hayan sido calculados los coeficientes aj , bj , cj , dj para j = 0, 1, . . . , n − 1).Para ejecutar el script teclear desde MatLab

>> t r a z ado r g r a f (n , x , a , b , c , d )

11

Page 12: Seg Cubic a Burden

Figure 7: Joven pato en vuelo

Listing 1: Script trazador graf.m� �1 function t r a z ado r g r a f (n , vecx , a , b , c , d )%Entradas :

3 % n:=Numero de datos% vecx :=Vector de datos X

5 % a , b , c , d:=Vector Coe f i c i e n t e s de l a s ecuac ionesfor i =1:n−1

7 fpr intf ( ’ Ecuacion %d : %f xˆ3 + (%f ) xˆ2 + (%f ) x + (%f ) \n ’ ,i , d ( i ) , c ( i ) , b ( i ) , a ( i ) ) ;

9 ends e l e c=input ( ’ \nDesea g r a f i c a r e s t a s func i one s ( s i =1/no=0): ’ ) ;

11 axis ( [ 0 14 −6 4 ] ) ;hold on ;

13 i f s e l e c==1for i =1:n−1,

15 x=vecx ( i ) : 0 . 1 : vecx ( i +1);s=(d( i ) . ∗ ( ( x−vecx ( i ) ) . ˆ 3 ) )+( c ( i ) . ∗ ( ( x−vecx ( i ) ) . ˆ 2 ) )

17 +(b( i ) . ∗ ( x−vecx ( i )))+( a ( i ) ) ;plot (x , s )

19 endend

21 hold o f f ;� �12

Page 13: Seg Cubic a Burden

Figure 8: Parte superior del pato en MatLab

13