Capítulo 3 Polinomios 29
30 Polinomios de variable real 31 Polinomios de variable real 311 Evaluación de polinomios Para el cálculo eficiente de los valores de un polinomio se utiliza el algoritmo de Horner, también conocido como multiplicación anidada y como división sintética La regla de Horner para la evaluación de polinomios establece que una expresión polinómica puede reescribirse como una factorización anidada Por ejemplo, el siguiente polinomio de grado 5: puede reescribirse como: p(x) = a 5 x 5 + a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + a 0 (31) p(x) = ((((a 5 x + a 4 )x + a 3 )x + a 2 )x + a 1 )x + a 0 (32) Mediante la regla de Horner es posible construir un algoritmo eficiente para el cálculo del valor, en un punto x 0, de un polinomio p(x) de grado n: input n,(a i : 0 i n), x 0 α a n for k = n 1, n 2,, 0 do α αx 0 + a k output α Nota para el Prof: La regla de Horner funciona bien en los casos normales en los que el exponente más grande es relativamente pequeño Sin embargo, para polinomios con exponente máximo grande, las multiplicaciones repetidas forzadas por los paréntesis anidados pueden dar lugar a una pérdida importante de precisión y a la degradación del rimiento de las operaciones El algoritmo de Horner también se utiliza para realizar una deflación, que es el proceso mediante el cual se cancela un factor lineal del polinomio Si x 0 es un cero del polinomio p(x), entonces (x x 0 ) es un factor de p(x) y los ceros restantes de p(x) son los n 1 ceros del polinomio: q(x) = p(x)/(x x 0 ) (33) Si representamos los polinomios p(x) y el desconocido q(x) como: p(x) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + + a n 1 x n 1 + a n x n (34) q(x) = b 0 + b 1 x + b 2 x 2 + b 3 x 3 + + b n 1 x n 1 (35) cuando las ecuaciones (34) y (35) se substituyen en la ecuación (33), los coeficientes de las potencias correspondientes de x de ambos lados de la ecuación pueden igualarse término a
Evaluación de polinomios 31 término Las ecuaciones que se obtienen son: b n 1 = a n b n 2 = a n 1 + x 0 b n 1 b n 3 = a n 2 + x 0 b n 2 b 1 = a 2 + x 0 b 2 b 0 = a 1 + x 0 b 1 (36) A partir del conjunto de ecuaciones (36), se puede escribir de forma compacta el algoritmo de Horner para calcular q(x) a partir de p(x) y una de sus raíces x 0 como se indica a continuación: input n,(a i : 0 i n), x 0 b n 1 a n for k = n 1, n 2,, 1 do b k 1 a k + x 0 b k output (b i : 0 i n 1) Un tercer uso del algoritmo de Horner, que se deriva directamente del punto anterior, es el cálculo eficiente del valor de las derivadas de cualquier orden del polinomio p(x) en un punto x 0 Presentamos a continuación el pseudocódigo que genera α = p(x 0 ), β = p (x 0 ) y γ = p (x 0 ) suponio que p(x) es de la forma dada por la ecuación (34) y que se proporciona x 0 : input n,(a i : 0 i n), x 0 α a n β 0 γ 0 for k = n 1, n 2,, 0 do γ β + x 0 γ β α + x 0 β α a k + x 0 α γ 2γ output α, β, γ Ejercicio: Desarrolle el algoritmo expresado mediante el pseudocódigo anterior para calcular el polinómio p(x) = x 4 4x 3 + 7x 2 5x 2 en el punto x 0 = 1
32 Polinomios de variable real 312 Interpolación Nos centraremos ahora en el problema de obtener, a partir de una tabla de parejas (x,f(x)) definida en un cierto intervalo [a, b], el valor de la función para cualquier x perteneciente a dicho intervalo Supongamos que disponemos de las siguientes parejas de datos: x x 0 x 1 x 2 x n y y 0 y 1 y 2 y n El objetivo es encontrar una función continua lo más sencilla posible tal que f(x i ) = y i (0 i n) (37) Se dice entonces que la función f(x) definida por la ecuación (37) es una función de interpolación de los datos representados en la tabla Existen muchas formas de definir las funciones de interpolación, lo que da origen a un gran número de métodos (polinomios de interpolación de Newton, interpolación de Lagrange, interpolación de Hermite, etc) Sin embargo, nos centraremos exclusivamente en dos funciones de interpolación: 1 Los polinomios de interpolación de Lagrange 2 Las funciones de interpolación splines Estas funciones son especialmente importantes debido a su idoneidad en los cálculos realizados con ordenador Polinomios de interpolación de Lagrange Un polinomio de interpolación de Lagrange, p, se define en la forma: p(x) = y 0 l 0 (x) + y 1 l 1 (x) + + y n l n (x) = n y k l k (x) (38) en donde l 0, l 1,, l n son polinomios que depen sólo de los nodos tabulados x 0, x 1,, x n, pero no de las ordenadas y 0, y 1,, y n La fórmula general del polinomio l i es: l i (x) = n j=0,j i k=0 x x j x i x j (39) Para el conjunto de nodos x 0, x 1,, x n, estos polinomios son conocidos como funciones cardinales Utilizando estos polinomios en la ecuación (38) obtenemos la forma exacta del polinomio de interpolación de Lagrange Ejemplo: Suponga la siguiente tabla de datos: x 5-7 -6 0 y 1-23 -54-954
Interpolación 33 Construya las funciones cardinales para el conjunto de nodos dado y el polinomio de interpolación de Lagrange correspondiente Las funciones cardinales, empleando la expresión (39), resultan ser: l 0 (x) = (x+7)(x+6)x (5+7)(5+6)5 l 1 (x) = (x 5)(x+6)x l 2 (x) = (x 5)(x+7)x ( 6 5)( 6+7)( 6) l 3 (x) = (x 5)(x+7)(x+6) (0 5)(0+7)(0+6) El polinomio de interpolación de Lagrange es: ( 7 5)( 7+6)( 7) p 3 (x) = l 0 (x) 23l 1 (x) 54l 2 (x) 954l 3 (x) Interpolación de splines Una función spline está formada por varios polinomios, cada uno definido sobre un subintervalo, que se unen entre sí obedecio a ciertas condiciones de continuidad Supongamos que disponemos de n + 1 puntos, a los que denominaremos nudos, tales que t 0 < t 1 < < t n Supongamos además que se ha fijado un entero k 0 Decimos entonces que una función spline de grado k con nudos en t 0, t 1,, t n es una función S que satisface las condiciones: (i) en cada intervalo [t i 1, t i ), S es un polinomio de grado menor o igual a k (ii) S tiene una derivada de orden (k 1) continua en [t 0, t n ] Los splines de grado 0 son funciones constantes por zonas Una forma explícita de presentar un spline de grado 0 es la siguiente: S 0 (x) = c 0 x [t 0, t 1 ) S 1 (x) = c 1 x [t 1, t 2 ) S(x) = S n 1 (x) = c n 1 x [t n 1, t n ) Los intervalos [t i 1, t i ) no se intersectan entre sí, por lo que no hay ambigüedad en la definición de la función en los nudos Un spline de grado 1 se puede definir por: S 0 (x) = a 0 x + b 0 x [t 0, t 1 ) S 1 (x) = a 1 x + b 1 x [t 1, t 2 ) S(x) = S n 1 (x) = a n 1 x + b n 1 x [t n 1, t n ) En las figuras (31) y (32) se muestran las gráficas correspondientes a los splines de grado cero y de grado 1 respectivamente
34 Polinomios de variable real Figura 31: Spline de grado 0 con seis puntos Figura 32: Spline de grado 1 con seis puntos Splines cúbicos El spline cúbico (k = 3) es el spline más empleado, debido a que proporciona un excelente ajuste a los puntos tabulados y su cálculo no es excesivamente complejo Sobre cada intervalo [t 0, t 1 ], [t 1, t 2 ],, [t n 1, t n ], S está definido por un polinomio cúbico diferente Sea S i el polinomio cúbico que representa a S en el intervalo [t i, t i+1 ], por tanto: S 0 (x) x [t 0, t 1 ) S 1 (x) x [t 1, t 2 ) S(x) = S n 1 (x) x [t n 1, t n ) Los polinomios S i 1 y S i interpolan el mismo valor en el punto t i, es decir, se cumple: S i 1 (t i ) = y i = S i (t i ) (1 i n 1) por lo que se garantiza que S es continuo en todo el intervalo Además, se supone que S y S son continuas, condición que se emplea en la deducción de una expresión para la función del spline cúbico Aplicando las condiciones de continuidad del spline S y de las derivadas primera S y segunda S, es posible encontrar la expresión analítica del spline No vamos a obtener esta
Interpolación 35 expresión, ya que su demostración queda fuera del ámbito de estos apuntes Simplemente diremos que la expresión resultante es: S i (x) = z i 6h i (t i+1 x) 3 + z i+1 ( ) 6h i (x t i ) 3 + yi+1 h i + z i+1h i 6 ( (x t i ) + yi h i z ih i 6 ) (t i+1 x) En la expresión anterior, h i = t i+1 t i y z 0, z 1,, z n son incógnitas Para determinar sus valores, utilizamos las condiciones de continuidad que deben cumplir estas funciones El resultado (que tampoco vamos a demostrar) es: h i 1 z i 1 + 2(h i + h i 1 )z i + h i z i+1 = 6 h i 1 (y i+1 y i ) 6 h i 1 (y i y i 1 ) La ecuación anterior, con i = 1, 2,, n 1 genera un sistema de n 1 ecuaciones lineales con n + 1 incógnitas z 0, z 1,, z n Podemos elegir z 0 y z n de forma arbitraria y resolver el sistema de ecuaciones resultante para obtener los valores de z 1, z 2,, z n 1 Una elección especialmente adecuada es hacer z 0 = z 1 = 0 La función spline resultante se denomina spline cúbico natural y el sistema de ecuaciones lineal expresado en forma matricial es: en donde: u 1 h 1 h 1 u 2 h 2 h 2 u 3 h 3 h n 3 u n 2 h n 2 h n 2 u n 1 h i = t i+1 t i z 1 z 2 z 3 z n 2 z n 1 u i = 2(h i + h i 1 ) h2 i 1 u i 1 b i = 6 h i (y i+1 y i ) = ν 1 ν 2 ν 3 ν n 2 ν n 1 (310) ν i = b i b i 1 h i 1ν i 1 u i 1 (311) Este sistema de ecuaciones, que es tridiagonal, se puede resolver mediante eliminación gaussiana sin pivoteo como se muestra en la figura (33) El código acepta como entrada un conjunto de nodos (t i ) y el conjunto de los valores de la función correspondiente (y i ) y produce un vector con los vectores z i Por último, el valor del spline S en un punto x cualquiera interpolado se puede calcular de forma eficiente empleando la siguiente expresión: S i (x) = y i + (x t i ) [C i + (x t i ) [B i + (x t i )A i ]] (312) en donde A i = 1 6h i (z i+1 z i ) B i = z i 2 C i = h i 6 z i+1 h i 3 z i + 1 h i (y i+1 y i ) (313)
36 Polinomios de variable real input n,(t i ),(y i ) for i = 0, 1,, n 1 do h i t i+1 t i b i 6(y i+1 y i )/h i u 1 2(h 0 + h 1 ) ν 1 b 1 b 0 for i = 2, 3,, n 1 do u i 2(h i + h i 1 ) h 2 i 1 /u i 1 ν i b i b i 1 h i 1 ν i 1 /u i 1 z n 0 for i = n 1, n 2,, 1 do z i (ν i h i z i+1 )/u i z 0 0 output (z i ) Figura 33: Algoritmo para encontrar los coeficientes z i de un spline cúbico Veamos un ejemplo para ilustrar el empleo de los splines cúbicos para interpolar los valores de una tabla En la tabla (31) se muestran algunos valores de una serie de valores tabulados a intervalos regulares de la función f(x) = x en el intervalo [0,225] También se indican los valores interpolados empleando el correspondiente spline cúbico así como el error absoluto cometido Obsérvese que el error es cero para los nudos En la figura (34) se representan gráficamente los valores tabulados En la figura (35) se muestra otro ejemplo Se representan gráficamente los puntos interpolados mediante una función spline cúbica para la función y = sen(x)
Interpolación 37 x x Si (x) ε a (x) 00000 00000 00000 00000E+00 00625 01426 10732E-01 01250 02782 75266E-02 01875 03997 33261E-02 02500 05000 05000 00000E+00 03125 05744 15440E-02 03750 06285 16155E-02 04375 06701 86732E-03 05000 07071 07071 00000E+00 17500 13228 13228 00000E+00 18125 13462 68994E-07 18750 13693 59953E-06 19375 13919 87004E-06 20000 14142 14142 00000E+00 20625 14361 24522E-05 21250 14577 47329E-05 21875 14790 46215E-05 22500 15000 15000 00000E+00 Cuadro 31: Valores interpolados mediante un spline cúbico para la función y = x e indicación del error cometido (en valor absoluto) 18 16 14 12 1 08 06 04 02 0 0 05 1 15 2 25 3 Figura 34: Representación de la función y = x Los círculos representan los valores tabulados de la función y la línea continua los puntos interpolados mediante una función spline cúbica
38 Polinomios de variable real 1 08 06 04 02 0-02 -04-06 -08-1 0 1 2 3 4 5 6 7 8 Figura 35: Representación de la función y = sen(x) Los círculos representan los valores tabulados de la función y la línea continua los puntos interpolados mediante una función spline cúbica