interpolacion con trazadores o splines ( señales y sistemas

25
Ing Yamil Armando Cerquera Rojas [email protected] Universidad Surcolombiana – Neiva – Huila – Colombia 1 de 25 INTERPOLACIÓN CON TRAZADORES O SPLINES Ing. Yamil Armando Cerquera Rojas Especialista en Sistemas U. Nacional de Colombia Docente Universidad Surcolombiana SPLINES CÚBICOS DEFINICIÓN FUNCIONES SPLINES DE GRADO 1 FUNCIONES SPLINES DE GRADO 2 FUNCIONES SPLINES CUBICOS Ejemplo Spline Cúbico Un caso particular El caso general Solución Con MatLab Ejercicios TRAZADORES CÙBICOS: SPLINES CÙBICOS Este tipo de interpolación que ha demostrado poseer una gran finura y que inclusive es usado para el diseño asistido por computadora, por ejemplo, de tipos de letra. Esta interpolación se llama interpolación segmentaria o interpolación por splines. La idea central es que en vez de usar un solo polinomio para interpolar todos los datos, se pueden usar segmentos de polinomios entre pares coordenados de datos y unir cada uno de ellos adecuadamente para ajustar los datos. Vale la pena resaltar que entre todas las formas de ajustar datos, los splines cúbicos han resultado ser los más adecuados para cualquier tipo de aplicación. Así pues, se puede decir de manera informal, que una función spline está formada por varios polinomios, cada uno definido en un intervalo y que se unen entre si bajo ciertas condiciones de continuidad. Para un conjunto numeroso de puntos no es muy útil calcular el polinomio interpolante que pasa por estos puntos, pues éste tiende a tener grandes oscilaciones. Más aconsejable es hacer una interpolación secuencial de grado bajo sobre subconjuntos más pequeños del total de puntos, definiendo así una función a trozos. La interpolación a trozos más útil y de uso generalizado en diversos campos tales como el diseño, los gráficos por computadora, la economía, etc., es la que se realiza mediante polinomios de grado tres llamados trazadores o splines cúbicos que se definen en cada uno de los sub intervalos ) , ( 1 + k k x x definidos por las abscisas de los puntos ) , ( i i y x a interpolar. La idea es construir estos polinomios cúbicos de tal forma que cualesquiera dos de ellos definidos en intervalos contiguos ) , ( 1 k k x x y ) , ( 1 + k k x x , ambos coincidan en x k no solo

Upload: jose

Post on 26-Nov-2015

347 views

Category:

Documents


0 download

TRANSCRIPT

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 1 de 25

    INTERPOLACIN CON TRAZADORES O SPLINES

    Ing. Yamil Armando Cerquera Rojas Especialista en Sistemas U. Nacional de Colombia

    Docente Universidad Surcolombiana SPLINES CBICOS DEFINICIN FUNCIONES SPLINES DE GRADO 1 FUNCIONES SPLINES DE GRADO 2 FUNCIONES SPLINES CUBICOS Ejemplo Spline Cbico Un caso particular El caso general Solucin Con MatLab Ejercicios

    TRAZADORES CBICOS: SPLINES CBICOS Este tipo de interpolacin que ha demostrado poseer una gran finura y que inclusive es usado para el diseo asistido por computadora, por ejemplo, de tipos de letra. Esta interpolacin se llama interpolacin segmentaria o interpolacin por splines. La idea central es que en vez de usar un solo polinomio para interpolar todos los datos, se pueden usar segmentos de polinomios entre pares coordenados de datos y unir cada uno de ellos adecuadamente para ajustar los datos. Vale la pena resaltar que entre todas las formas de ajustar datos, los splines cbicos han resultado ser los ms adecuados para cualquier tipo de aplicacin. As pues, se puede decir de manera informal, que una funcin spline est formada por varios polinomios, cada uno definido en un intervalo y que se unen entre si bajo ciertas condiciones de continuidad. Para un conjunto numeroso de puntos no es muy til calcular el polinomio interpolante que pasa por estos puntos, pues ste tiende a tener grandes oscilaciones. Ms aconsejable es hacer una interpolacin secuencial de grado bajo sobre subconjuntos ms pequeos del total de puntos, definiendo as una funcin a trozos. La interpolacin a trozos ms til y de uso generalizado en diversos campos tales como el diseo, los grficos por computadora, la economa, etc., es la que se realiza mediante polinomios de grado tres llamados trazadores o splines cbicos que se definen en cada uno

    de los sub intervalos ),( 1+kk xx definidos por las abscisas de los puntos ),( ii yx a interpolar. La idea es construir estos polinomios cbicos de tal forma que cualesquiera dos de ellos

    definidos en intervalos contiguos ),( 1 kk xx y ),( 1+kk xx , ambos coincidan en xk no solo

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 2 de 25

    como funcin sino tambin en su primera y segunda derivada, con el fin de que haya suavidad en los puntos (xk,yk) de coincidencia de ambas grficas.

    En cada sub intervalo (xi-1,xi).

    s(x) tiene derivada continua hasta de orden k-1 en (xo,xn). FUNCIONES SPLINES DE GRADO 0 Los splines de grado 0 son funciones constantes por zonas. Una forma explcita de presentar un spline de grado 0 es la siguiente:

    =

    ==

    = ),(....)(

    ....),(....)(),(....)(

    )(

    111

    2111

    1000

    nnnn ttxcxS

    ttxcxSttxcxS

    xS

    Los intervalos (ti-1,ti) (xi-1,xi) no se intersectan entre s, por lo que no hay ambigedad en la definicin de la funcin en los nodos.

    Figura 1: Spline de grado 0 con seis puntos.

    FUNCIONES SPLINES DE GRADO 1 Los splines de grado 1 son funciones polinomiales de grado 1 (Rectas de la forma f(x)=ax+b) que se encargan de unir cada par de coordenadas mediante una recta. Dados los n+1 puntos

    x x0 x1 x2 ..... xny y0 y1 y2 .... yn

    Una funcin spline de grado 1 que interpole los datos es simplemente unir cada uno de los puntos (Par coordenados) mediante segmentos de recta, como se ilustra en las siguientes figuras:

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 3 de 25

    Fig 2 Fig 3: Spline de grado 1 con 6 puntos

    Claramente esta funcin cumple con las condiciones de la spline de grado 1. As, se tiene que para este caso:

    +=

    +=+=

    = ),(....)(

    ....),(....)(),(....)(

    )(

    1111

    21111

    10000

    nnnnn ttxbxaxS

    ttxbxaxSttxbxaxS

    xS

    +=

    +=+=

    = ),(....)(

    ....),(....)(),(....)(

    )(

    1111

    21111

    10000

    nnnnn xxxbxaxS

    xxxbxaxSxxxbxaxS

    xS

    Donde:

    1. sj(x) es un polinomio de grado menor o igual que 1 2. s(x) tiene derivada continua de orden k-1=0. 3. s(xj)=yj, para j=0,1,2,...,n

    Por lo tanto, el spline de grado 1 queda definido como: [ ] )(, 0210 xxxxfy + si [ ]10 , xxx

    [ ] )(, 1121 xxxxfy + si [ ]21 , xxx

    s(x) = { [ ] )(, 111 + nnnn xxxxfy si [ ]nn xxx ,1 }

    Donde f[xi,xj] es la diferencia dividida de Newton. FUNCIONES SPLINES DE GRADO 2 Los splines de orden dos, se encargan de unir cada par coordenado con ecuaciones polinomiales de orden dos. Las ecuaciones son de la forma cbxax ++2 . Para aclarar bien la idea, vea un ejemplo concreto,

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 4 de 25

    Ejemplo 2: Considere los siguientes datos:

    x 3 4.5 7 9 y 2.5 1 2.50.5

    Proceda a calcular la interpolacin por splines de grado 2. Primero que nada, observe que se forman tres intervalos en los datos sobre el eje x: [ ]5.4,3

    [ ]7,5.4 [ ]9,7

    Para cada uno de los tres (3) intervalos, se debe definir una funcin polinomial de grado 2, tal como se ilustra a continuacin:

    112

    1 cxbxa ++ si [ ]5.4,3x 22

    22 cxbxa ++ si [ ]7,5.4xs(x) = {

    332

    3 cxbxa ++ si [ ]9,7x }

    Vale la pena aclarar que la ecuacin 112

    1 cxbxa ++ , une los puntos cuyas coordenadas estn dadas por (3,2.5) y (4.5,1), la ecuacin 22

    22 cxbxa ++ , une los puntos cuyas coordenadas

    estn dadas por (4.5,1) y (7,2.5), y la ecuacin 332

    3 cxbxa ++ los puntos cuyas coordenadas estn dadas por (7,2.5) y (9,0.5). En conclusin siendo 4 par coordenados se unen estos mediante tres ecuaciones polinomiales de orden 2. Para resolver el problema, primero, se hace que el spline pase por los puntos de la tabla de datos (por cada par coordenado). Es decir, se debe cumplir que:

    s(3)=2.5, s(4.5)=1, s(7)=2.5 y s(9)=0.5

    Teniendo en cuenta lo anterior, se forman las siguientes ecuaciones:

    s(3) =2.5 { 5.239 111 =++ cba } Ec 1 S(4.5)=1 { 15.45.4 111

    2 =++ cba 15.45.4 222

    2 =++ cba }Ec 2

    Ec 3

    S(7)=2.5 { 5.2749 222 =++ cba 5.2749 333 =++ cba }Ec 4

    Ec 5

    S(9)=0.5 { 5.0981 333 =++ cba } Ec 6

    Hasta aqu, se tiene un total de 6 ecuaciones vs. 9 incgnitas. El siguiente paso es manejar la existencia de las derivadas continuas. En el caso de los splines de grado 2, se necesita que el spline tenga derivada continua de orden k-1=1, es decir, primera derivada continua. Se calcula primero la primera derivada:

    S(x) = { 112 bxa + si [ ]5.4,3x

    222 bxa + si [ ]7,5.4x 332 bxa + si [ ]9,7x }

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 5 de 25

    Se observa que las derivadas anteriores, estn formadas por segmentos de rectas, que pudieran presentar discontinuidad en los cambios de intervalo. Es decir, las posibles discontinuidades se daran en x=4.5 y x=7.0 Por lo tanto para que s'(x) sea continua, se debe cumplir que: 2a1(4.5)+b1=2a2(4.5)+b2, siendo igual a:

    S(4.5) { 9a1+b1=9a2+b2 } Ec 7

    y tambin debe cumplirse que: 2a2(7)+b2=2a3(7)+b3, siendo igual a:

    S(7) { 14a2+b2=14a3+b3 } Ec 8

    As que ahora, se tiene un total de 8 ecuaciones versus 9 incgnitas; esto da un grado de libertad para elegir alguna de las incgnitas. Se elige por simple conveniencia 01 =a . De esta forma, se tiene un total de 8 ecuaciones vs. 8 incgnitas, siendo las ecuaciones las siguientes:

    5.23 11 =+ cb Ec 1 15.4 11 =+ cb Ec 2 15.425.20 222 =++ cba Ec 3 5.2749 222 =++ cba Ec 4 5.2749 333 =++ cba Ec 5 5.0981 333 =++ cba Ec 6 09 221 = bab Ec 7 01414 3322 =+ baba Ec 8

    Este sistema de ecuaciones tiene la siguiente forma matricial:

    3 1 0 0 0 0 0 0 b1 2.5 4.5 1 0 0 0 0 0 0 c1 1

    0 0 20.25 4.5 1 0 0 0 a2 1 0 0 49 7 1 0 0 0 b2 2.5 0 0 0 0 0 49 7 1 c2 2.5 0 0 0 0 0 81 7 1 a3 0.5 1 0 -9 -1 0 0 0 0 b3 0 0 0 14 1 0 -14 -1 0 c3

    =

    0

    Haciendo uso de MatLab Scilab, se tendra lo siguiente:

    x=[3 1 0 0 0 0 0 0 4.5 1 0 0 0 0 0 0 0 0 20.25 4.5 1 0 0 0 0 0 49 7 1 0 0 0 0 0 0 0 0 49 7 1 0 0 0 0 0 81 9 1 1 0 -9 -1 0 0 0 0 0 0 14 1 0 -14 -1 0];

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 6 de 25

    b=[2.5;1;1;2.5;2.5;0.5;0;0]; x=inv(x)*b

    x = -1.0000 5.5000 0.6400 -6.7600 18.4600 -1.6000 24.6000 -91.3000

    usando Mathematica se obtiene la siguiente solucin:

    b1 -1c1 5.5a2 0.64b2 -6.76c2 18.46a3 -1.6b3 24.6c3 -91.3

    Sustituyendo estos valores (junto con a1=0), se obtiene la funcin spline cuadrtica que interpola la tabla de datos dada:

    5.5+ x si [ ]5.4,3x 46.1876.664.0. 2 + xx si [ ]7,5.4x s(x) = { 3.916.246.1 2 + xx si [ ]9,7x }

    La Figura 4, contiene tanto los puntos iniciales de la tabla de datos, as como el spline cuadrtico. Esta grfica se gener usando Mathematica.

    Fig 4

    El mismo ejercicio anterior resuelto por MatLab sera de la siguiente manera

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 7 de 25

    Cdigo 1: Produce Fig 5 Cdigo 2: Produce Fig 6

    X=[3 4.5 7 9]; Y=[2.5 1 2.5 0.5] X1=3:0.1:9; Spl1=spline(X,Y,X1); plot(X,Y,X1,Spl1); axis([0,10,0,3.5]) grid on

    X=[3 4.5 7 9]; Y=[2.5 1 2.5 0.5] X1=3:0.1:9; Spl1=spline(X,Y,X1); plot(X,Y,X1,Spl1,X,Y,'o','MarkerFaceColor','g'); axis([0,10,0,3.5]) grid on

    Fig. 5 Fig. 6

    haciendo uso de la funcin interp1 de MatLab se puede dar as:

    X=[3 4.5 7 9]; Y=[2.5 1 2.5 0.5] X1=3:0.1:9; Int1=interp1(X,Y,X1,'spline'); plot(X,Y,X1,Int1,X,Y,'o','MarkerFaceColor','g');

    El siguiente caso, que es el ms importante en las aplicaciones, sigue exactamente los mismos pasos del ejemplo que acabamos de resolver, solamente que en vez de trabajar con polinomios cuadrticos, lo hace con polinomios cbicos. FUNCIONES CON SPLINES CUBICOS El spline cbico (k=3) es el mtodo ms empleado como se ha mencionado anteriormente, debido a que proporciona un excelente ajuste a los puntos tabulados y su clculo no es excesivamente complejo.

    Sobre cada intervalo [ ] [ ] [ ]nn tttttt ,,...,,,, 12110 , S est definido por un polinomio cbico diferente. Sea Si el polinomio cbico que representa a S en el intervalo [ ]1, ii tt , por tanto:

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 8 de 25

    = ),()...(

    ....),()....(),()....(

    )(

    11

    211

    100

    nnn ttxxS

    ttxxSttxxS

    xS

    Los polinomios Si-1 y Si interpolan el mismo valor en el punto ti, es decir, se cumple:

    Si-1(ti) = yi = Si(ti) 11 ni Por lo que se garantiza que S es continuo en todo el intervalo. Adems, se supone que S' y S'' son continuas, condicin que se emplea en la deduccin de una expresin para la funcin del spline cbico.

    Aplicando las condiciones de continuidad del spline S y de las derivadas primera S' y segunda S'', es posible encontrar la expresin analtica del spline. No vamos a obtener esta expresin, ya que su demostracin queda fuera del mbito de estos apuntes. Simplemente se dir que la expresin resultante es:

    ))(6

    ())(6

    ()(6

    )(6

    )( 111313

    1 xthz

    hytxhz

    hytx

    hzxt

    hzxS iii

    i

    ii

    ii

    i

    ii

    i

    ii

    i

    ii ++++= +++++

    En la expresin anterior, hi=ti+1-ti y z0,z1,...,zn son incgnitas. Para determinar sus valores, se utilizan las condiciones de continuidad que deben cumplir estas funciones. El resultado (que tampoco se demuestra) es:

    )(6)(6)(2 11

    11

    1111

    +

    + =+++ iii

    iii

    iiiiiii yyhyy

    hzhzhhzh

    La ecuacin anterior, con i=1,2,....,n-1 genera un sistema de n-1 ecuaciones lineales con n+1 incgnitas z0,z1,...,zn. Se puede elegir z0 y z1 de forma arbitraria y resolver el sistema de ecuaciones resultante para obtener los valores de z1,z2,...,zn-1. Una eleccin especialmente adecuada es hacer z0=z1=0. La funcin spline resultante se denomina spline cbico natural y el sistema de ecuaciones lineal expresado en forma matricial es:

    En donde:

    iii tth = +1

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 9 de 25

    1

    21

    1 )(2

    +=

    i

    iiii u

    hhhu

    )(6 1 iii

    i yyhb = +

    1

    111

    =

    i

    iiiii u

    vhbbv (71)

    Algoritmo para encontrar los coeficientes zi de un spline cbico.

    Este sistema de ecuaciones, que es tridiagonal, se puede resolver mediante eliminacin gaussiana sin pivoteo. El cdigo acepta como entrada un conjunto de nodos (ti) y el conjunto de los valores de la funcin correspondiente (yi) y produce un vector con los vectores zi. Por ltimo, el valor del spline S en un punto x cualquiera interpolado se puede calcular de forma eficiente empleando la siguiente expresin: [ ][ ]iiiiiiii AtxBtxCtxyxS )()()()( +++=

    En donde: )(61

    1 iii

    i zzhA = + , 2ii

    zB = , )(136 11 iii

    ii

    ii yy

    hzhzhC += ++

    Se muestra un ejemplo para ilustrar el empleo de los splines cbicos para interpolar los valores de una tabla. En la tabla 1 se muestran algunos valores de una serie de valores

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 10 de 25

    tabulados a intervalos regulares de la funcin xxf =)( en el intervalo [0,2.25]. Tambin se indican los valores interpolados empleando el correspondiente spline cbico as como el error absoluto cometido. Obsrvese que el error es cero para los nudos. En la figura 7 se representan grficamente los valores tabulados.

    Tabla 1: Valores interpolados mediante un spline cbico para la funcin N+1 e indicacin del error cometido (en valor absoluto).

    x x Si(x) )(xa 0.0000 0.0000 0.0000 0.0000E+00 0.0625 0.1426 1.0732E-01 0.1250 0.2782 7.5266E-02 0.1875 0.3997 3.3261E-02 0.2500 0.5000 0.5000 0.0000E+00 0.3125 0.5744 1.5440E-02 0.3750 0.6285 1.6155E-02 0.4375 0.6701 8.6732E-03 0.5000 0.7071 0.7071 0.0000E+00

    1.7500 1.3228 1.3228 0.0000E+00 1.8125 1.3462 6.8994E-07 1.8750 1.3693 5.9953E-06 1.9375 1.3919 8.7004E-06 2.0000 1.4142 1.4142 0.0000E+00 2.0625 1.4361 2.4522E-05 2.1250 1.4577 4.7329E-05 2.1875 1.4790 4.6215E-05 2.2500 1.5000 1.5000 0.0000E+00

    En la figura 8 se muestra otro ejemplo. Se representan grficamente los puntos interpolados mediante una funcin spline cbico para la funcin y=sin(x).

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 11 de 25

    Figure 7: Representacin de la funcin 1+N . Los crculos representan los valores tabulados de la funcin

    y la lnea continua los puntos interpolados mediante una funcin spline cbica.

    Figure 8: Representacin de la funcin y=sin(x). Los crculos representan los valores tabulados de la funcin

    y la lnea continua los puntos interpolados mediante una funcin spline cbica. Ejemplo Spline Cbico: Para hacer ms firme el entendimiento, se escribe la definicin correspondiente a este caso (k=3).

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 12 de 25

    Dados n+1 datos:

    x x0 x1 x2 ..... xny y0 y1 y2 .... yn

    Un Spline cbico que interpola estos datos, es una funcin s(x) definida como sigue:

    Donde cada si(x) es un polinomio cbico; si(xi)=yi, para toda i=0,1,....,n y tal que s(x) tiene primera y segunda derivadas continuas en (xo,xn) Ejemplo 3. Interpolar los siguientes datos mediante un spline cbico:

    x 2 3 5

    y -1 2 -7

    Solucin: Se define un polinomio cbico en cada uno de los intervalos que se forman: A continuacin, Se busca que se cumpla la condicin de que la spline debe pasar por los puntos dados en la tabla, o sea s(x)=y, as, se tiene que:

    s(2) = -1 8a1+ 4b1+2c1+d1 = -1 Ec 1 27a1+ 9b1+3c1+d1 = 2 Ec 2 s(3)

    = 2 27a2+ 9b2+3c2+d2 = 2 Ec 3 s(5) = -7 125a2+25b2+5c2+d2 = -7 Ec 4

    Ahora se calcula la primera derivada de s(x) :

    3a1x2+2b1x+c1 si x [2,3] s'(x)= {3a2x2+2b2x+c2 si x [3,5]

    Al igual que en el caso de los splines cuadrticos, se presentan ecuaciones que pueden tener discontinuidad en los cambios de intervalo; las posibles discontinuidades son los puntos donde se cambia de intervalo, en este caso x=3. Para evitar esta discontinuidad, se evala en x=3 los dos polinomios y se igualan de la siguiente manera: 3a1(3)2+2b1(3)+c1= 3a2(3)2+2b2(3)+c2. Siendo igual a:

    27a1+6b1+c1=27a2+6b2+c2 Ec 5

    De la misma manera se procede con la segunda derivada:

    6a1x+2b1 si x [2,3] s''(x)= {6a2x+2b2 si x [3,5]

    Para lograr que s''(x) sea continua en el punto x=3m 6a1(3)+2b1= 6a2(3)+2b2, que correspondera a:

    18a1+2b1= 18a2+2b2 Ec 6

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 13 de 25

    En este punto contamos con 6 ecuaciones y 8 incgnitas, por lo tanto se tienen 2 grados de libertad; en general, se agregan las siguientes 2 condiciones:

    s''(xo)=0 s''(xn)=0

    De lo cual se obtiene:

    s''(2)=0 entonces 6a1(2)+2b1 = 0 :: 12a1+2b1 = 0 Ec 7 s''(5)=0 entonces 6a2(5)+2b2 = 0 :: 30a2+2b2 = 0 Ec. 8

    Con lo cual, se ha completado un juego de 8 ecuaciones vs. 8 incgnitas, como sigue:

    8a1+ 4b1+2c1+d1 = -1 27a1+ 9b1+3c1+d1 = 2 27a2+ 9b2+3c2+d2 = 2 125a2+25b2+5c2+d2 = -7 27a1+6b1+c1 -27a2 - 6b2 - c2 = 0 18a1+2b1 -18a2 - 2b2 = 0 12a1+2b1 = 0 30a2+ 2b2 = 0

    Cuya forma matricial es la siguiente:

    8 4 2 1 0 0 0 0 a1 -127 9 3 1 0 0 0 0 b1 2 0 0 0 0 27 9 3 1 c1 2 0 0 0 0 125 25 5 1 d1 -727 6 1 0 -27 -6 -1 0 a2 0 18 2 0 0 -18 -2 0 0 b2 0 12 2 0 0 0 0 0 0 c2 0 0 0 0 0 30 2 0 0 d2

    =

    0

    Usando Matlab se tendra la solucin con el siguiente cdigo:

    hold off Xi=[2 3 5]; Yi=[-1 2 -7]; x=[8 4 2 1 0 0 0 0; 27 9 3 1 0 0 0 0; 0 0 0 0 27 9 3 1; 0 0 0 0 125 25 5 1; 27 6 1 0 -27 -6 -1 0; 18 2 0 0 -18 -2 0 0; 12 2 0 0 0 0 0 0; 0 0 0 0 30 2 0 0]; y=[-1;2;2;-7;0;0;0;0]; var=inv(x)*y; plot(Xi,Yi,'o','MarkerFaceColor','g') axis([0 6 -8 4]); grid on y1=2:0.1:3; y2=3:0.1:5; x1=var(1:4); x2=var(5:8); yi1=polyval(x1,y1); yi2=polyval(x2,y2); hold on; plot(y1,yi1,y2,yi2)

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 14 de 25

    %var = % 7.5000 % -67.5000 % 198.0000 % -187.0000 % -0.0000 % 0.0000 % -4.5000 % 15.5000

    Fig. 9

    Si se agregan las siguientes dos lneas para realizarlo directamente con la funcin spline del matlab se tendr la siguiente figura:

    xx=0:0.1:6; Int1=interp1(Xi,Yi,xx,spline); plot(xx,Int1,r);

    Fig. 10

    usando Mathematica, se obtiene la siguiente solucin:

    a1 = -1.250

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 15 de 25

    b1 = 7.500c1 = -10.750d1 = 0.500a2 = 0.625b2 = -9.375c2 = 39.875d2 = -50.125

    Sustituyendo estos valores en la funcin inicial, se ve que el spline cbico para la tabla de datos dada, queda definida como sigue:

    Se muestra la grfica correspondiente a este ejercicio, creada tambin en Mathematica.

    Fig. 11

    Obsrvese la finura con la que se unen los polinomios cbicos que conforman el spline. Prcticamente ni se nota que se trata de dos polinomios diferentes!. Esto es debido a las condiciones que se impusieron sobre las derivadas de la funcin. Esta finura casi artstica, es la que permite aplicar los splines cbicos, para cuestiones como el diseo de letras por computadoras, o bien a problemas de aplicacin donde la interpolacin que se necesita es de un caracter bastante delicado, como podra tratarse de datos mdicos sobre algn tipo de enfermedad. Ejemplo 4: Interpolar los siguientes datos utilizando splines cbicos:

    x -1 1 2 4 y -1 1 5 -2

    Solucin: Nuevamente, se define un polinomio cbico en cada uno de los intervalos:

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 16 de 25

    Despus, se hace que el Spline pase por los puntos dados en la tabla. As, se tiene que: s(-1)= -1 implica que, 11111 =++ dcba

    s(1)=1 implica que, 11111 =+++ dcba , 12222 =+++ dcba

    s(2)=5 implica que, 5248 2222 =+++ dcba , 5248 3333 =+++ dcba

    Y finalmente s(4)= -2 implica que, 241664 3333 =+++ dcba

    Enseguida, se calcula la primera derivada:

    Vemos entonces, que las posibles discontinuidades de s'(x) son x=1 y x=2. Por lo tanto, para hacer que s'(x) sea continua, se igualan las ecuaciones correspondientes en ambos valores:

    Ahora se procede a calcular la segunda derivada:

    Nuevamente, las posibles discontinuidades son x=1 y x=2. Por lo tanto, para que s''(x) sea continua, se igualan las ecuaciones en ambos valores:

    Finalmente, se agregan las condiciones de que la doble derivada se anule en los puntos inicial y final de la tabla. En este caso,

    Con esto se tiene un juego de Doce ecuaciones vs. Doce incgnitas:

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 17 de 25

    Este sistema tiene la siguiente forma matricial:

    Usando Mathematica, se obtiene la solucin :

    , ,

    , ,

    , ,

    , , Por lo tanto, la Spline cbico es:

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 18 de 25

    Finalmente, se muestra la grfica correspondiente (creada en Mathematica):

    Fig. 12

    Un caso particular Vamos a ilustrar el proceso de construccin con el ejemplo siguiente, en el cual se trata de hallar el trazador cbico para los puntos

    )2,6(),(),3,4(),(),4,3(),(),2,1(),( 33221100 ==== yxyxyxyx .

    Fig. 13

    Como puede observarse, es necesario construir el trazador S(x) que se define como So(x) en el intervalo [1,3], como S1(x) en el intervalo [3,4] y como S2(x) en el intervalo [4,6], donde

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 19 de 25

    Como 10 =x , 31 =x , 42 =x y 63 =x , es claro que

    Adems se define )( 323 xSa = . En los siguientes pasos se dan condiciones que deben cumplir los coeficientes de los polinomios cbicos jjjj dcba ,,, , para j=0,1,2

    1. Continuidad. En primer lugar, se pide que So(x) coincida con S1(x) en x1. Adems, S1(x) debe coincidir con S2(x) en x2. Estas dos condiciones, junto a la definicin que se hizo antes de que )( 323 xSa = conducir a las tres ecuaciones:

    Ec 1

    2. donde: jj xxhj = +1 , para j=0,1,2.

    3. Suavidad. Como 2' )(3)(2)( jjjjjj xxdxxcbxS ++= , para j=0,1,2

    Ahora debe cumplirse que )()( 1'11

    ' xSxSo = y que )()( 2'22'1 xSxS = . Al agregarle a estas dos condiciones la definicin de )(' 323 xSb = , se obtienen las tres ecuaciones:

    21 3 jjjjjj hdhcbb ++=+ , para j=0,1,2 Ec 2

    4. Coincidencia en concavidad. Calculando la segunda derivada de cada uno de los polinomios )(xS j :

    Ahora se le pide la condicin )()( 1

    "11

    " xSxSo = y )()( 2"22"1 xSxS = . Como jjj cxS 2)('' = para j=0,1,2. De manera similar a como se hizo en los anteriores casos, se agrega la definicin de 2/)('' 323 xSc = , se obtienen las ecuaciones:

    Ec 3

    5. Despejando jd de la ecuacin 3 se obtiene:

    Ec 4

    6. sustituyendo jd en 1 y en 2 se obtienen las relaciones 5 y 6:

    Ec 5

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 20 de 25

    Ec 6

    7. Despejando jb de la ecuacin 5

    Ec 7

    8. y haciendo un corrimiento de ndices, se obtiene:

    Ec 8

    9. De igual forma, en la ecuacin 6 se hace un corrimiento de ndices para obtener

    Ec 9

    10. Al sustituir en esta ltima ecuacin la expresin para bj obtenida en (7) y en (8), y

    haciendo las simplificaciones del caso se obtiene el sistema de ecuaciones:

    11. )(3)(3)(2 11

    11111

    ++ =+++ jjj

    jjjjjjjjj aahaa

    hjchchhch , para j=1,2

    12. Concretamente, es el sistema:

    13. 14. Trazador cbico con frontera libre

    Hay varios tipos de trazadores que se pueden obtener, dependiendo de las condiciones de frontera que le pongamos en los extremos x0 ,xn, en el cual se est haciendo la interpolacin. En este material, y continuando con el ejemplo que estamos trabajando, le pedimos al trazador )(xS las condiciones:

    0)('' 0 =xS y 0)('' 3 =xS , por lo que se concluye que c0 =0y que 03 =c . De esta manera el sistema anterior puede escribirse en forma matricial:

    En nuestro ejemplo el sistema anterior toma la forma:

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 21 de 25

    La solucin de este sistema es:

    Como ya se saba desde antes,

    De la ecuacin 4 se calcula:

    De la ecuacin 7 se obtiene:

    Finalmente, se concluye que el trazador cbico con frontera libre es:

    Fig. 14

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 22 de 25

    El caso general Para un conjunto de N+1 puntos ),(),...,,(),,(),,( 22110 nn yxyxyxyx , en el proceso de construccin del trazador cbico, se buscan los coeficientes jjj cba ,, y jd , que cumplan las siguientes relaciones:

    1. 32 )()()()( jjjjjjjj xxdxxcxxbaxS +++= , para j=0,1,2,n-1

    2. jjjj yxSa == )( , para j=0,1,2,.. n-1. Adems, nnnn yxsa == )(1

    3. jjj xxh = +1 , para j=0,1,2,n-1

    4. )(31

    1 jjj

    j cchd = + , para j=0,1,2,n-1

    5. )2(3

    )(1 11 ++ += jjjjjj

    j cch

    aah

    b , para j=0,1,2,n-1

    6. Se forma un sistema de 1n ecuaciones con 1+N incgnitas nccc ,...,, 10 :

    Al agregarle a este sistema las condiciones de frontera libre 0)()( "" == no xSxS , se concluye que 00 == ncc y el sistema resulta con una matriz tridiagonal de coeficientes que tiene solucin nica. Adems, esta es una solucin explcita.

    7. Algoritmo de trazador con frontera libre.

    Entrada: ),),...(,(),,( 1100 nn yxyxyx , con nxxx ...10

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 23 de 25

    [5] Para 1,...,2,1 = nj se define

    [6] Para 0,...,1,1 = nnj se define

    Prctica con MATLAB En primer lugar se espera que el usuario resuelva el sistema de ecuaciones lineales con el que se concluy la seccin introductoria y use los comandos especficos de MATLAB para su solucin. En efecto, se puede seguir la siguiente secuencia de instrucciones para determinar la solucin del sistema. A = [ 1.331 1.21 1.1 1 ; 12.167 5.29 2.3 1 ; 59.319 15.21 3.9 1 ; 132.651 26.01 5.1 1 ]; b = []; b = [ 3.887 ; 4.276 ; 4.651 ; 2.117 ]; c = A\b c = -0.2015 1.4385 -2.7477 5.4370 Con este proceso se han obtenido los coeficientes del polinomio. Otra manera de resolverlo es directamente con comandos especficos del software, como se explica a continuacin. MATLAB realiza varias tareas de interpolacin mediante el comando INTERP1, el cual, dependiendo de los parmetros con que sea evaluado, ejecuta mtodos diferentes de interpolacin2 Para hallar los coeficientes del polinomio interpolante podemos recurrir al comando polyfit, que tiene sintaxis polyfit(X,Y,m), el cual retorna el polinomio de mnimos cuadrados de grado de mejor ajuste a los datos. Es bien sabido que si tenemos puntos el polinomio de

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 24 de 25

    grado que mejor se ajusta a esos datos en el sentido de mnimos cuadrados es precisamente el polinomio interpolante. Por ejemplo, para hallar el resultado del polinomio interpolante que pasa por los cuatro puntos ,, y al evaluarlo en el valor de , se puede seguir la siguiente secuencia de instrucciones: X=[1.1, 2.3, 3.9, 5.1]; Y=[3.8870, 4.2760, 4.65110, 2.1170]; P = polyfit(X,Y,3) Resultado=Polyval(P,2.5) Esto da como resultado P = -0.2015 1.4387 -2.7481 5.4372 Resultado = 4.4108 El resultado obtenido en la variable P son los coeficientes del polinomio de interpolacin dispuestos en un vector: P = -0.2015 1.4387 -2.7481 5.4372 Estos coeficientes se interpretan como el polinomio:

    4372.57481.24387.12015. 23 ++ xxx

    Note que la instruccin >> Resultado=Polyval(P,2.5), permite encontrar el valor del polinomio evaluado en 2.5. Esta funcin de MATLAB permite tambin evaluar un polinomio en un vector de valores y en este caso retornara un vector de resultados. Esta adaptabilidad de la funcin Polyval para evaluarse en un vector de valores la hace muy til para graficar cualquier polinomio en un intervalo dado, como se ver en el siguiente ejemplo. La siguiente secuencia de instrucciones est orientada al clculo del polinomio interpolante para los puntos (1,5), (3,1), (4,3), (5,-1), (7,4) y (10,2) y, alternativamente la aproximacin y visualizacin del trazador cbico (splines). hold off x=[1 3 4 5 7 10]; y=[5 1 3 -1 4 2]; P = polyfit(x,y,5); t=0:0.1:11; W=polyval(P,t); plot(x,y,'*k') hold on; plot(t,W,'k')

  • Ing Yamil Armando Cerquera Rojas [email protected]

    Universidad Surcolombiana Neiva Huila Colombia 25 de 25

    z=interp1(x,y,t,'spline'); plot(t,z,'r') En figura 15 puede compararse el trazador cbico con el polinomio interpolante para los seis puntos. Como puede notarse, el trazador cbico se acomoda mejor a los datos y no produce oscilaciones indeseables para efecto de hacer extrapolaciones ms apropiadas.

    Fig. 15