CÁTEDRA DE ANÁLISIS NUMÉRICO GUIA DE LABORATORIO N° 8 PERIODO DE LABORATORIO: Semana del 20 al 24 de Abril del 2020 TEMAS A CUBRIR: 1. Diferencias Divididas: Progresivas, Regresivas y Centradas. 2. Ejercicios Propuestos , Puede utilizar programas en Pyhton para resolver esta guía. 1. Diferencias Divididas: Progresivas, Regresivas y Centradas. El programa sugerido que se debe usar para resolver este tipo de problemas es el ALG032, en Scilab. Existen dos variantes de dicho programa: ALG032_DIF_DIV y ALG032_MOD. En sus últimas versiones, estos dos últimos evalúan el polinomio progresivo en un nodo de interpolación y al mismo tiempo presentan toda la tabla de diferencia divididas. Es de tomar en consideración que se puede hacer uso de ellos para los tres tipos de polinomios de interpolación: Progresivos (por defecto), Regresivos y Centrados (bajo ciertas consideraciones). También debe tomar en cuenta que se tienen distintas fórmulas para los distintos casos de separación entre nodos, sin embargo, la fórmula general de nodos no equidistantes funciona tanto para NO Equidistantes como para Equidistantes. El ALG032, cuenta con 3 opciones para la entrada de los datos opcionales. (1) Teclado, (2) Archivo ó (3) Función. Los resultados que presenta son los coeficientes a0 , a1 ,..., an , de un polinomio de grado n de la forma: Pn ( x) a0 a1 ( x x0 ) a2 ( x x0 )( x x1 ) ... an ( x x0 )( x x1 )...( x xn1 ), Para completar la solución a un problema de interpolación con este método, hace falta escribir la forma del polinomio Pn(x) y luego evaluar en dicho polinomio el valor de x particular en el que se quiere interpolar. Ejemplo: Suponiendo que se tiene la siguiente tabla de datos: i f ( xi ) xi 0 8.1 16.94410 Utilizar el algoritmo32 para construir todos los polinomios 1 8.3 17.56492 2 8.6 18.50515 interpolantes de grado 1, 2 y 3 posibles. 3 8.7 18.82091 Y usar cada polinomio para aproximar el valor de f(8.4) Solución: Utilizando el algoritmo 3.2, se pueden calcular: Un polinomio cúbico, utilizando x0 , x1 , x2 , x3 . Cuatro polinomios cuadráticos, utilizando 0 1 2 1 Cuatro polinomios lineales, utilizando los pares de nodos: x ,x ,x , x , x2 , x3 , x0 , x1 , x3 , x0 , x2 , x3 . x0 , x2 , x0 , x3 , x1 , x2 , x1 , x3 . La característica a considerar para elegir los nodos para crear un polinomio de cualquier orden es que el valor de x 8.4 , que se busca quede comprendido en cada uno de los intervalos definidos por los nodos extremos. Primero se calculará el polinomio de grado mayor: P3 ( x) ., en la pantalla de la PC veremos: Newtons form of the interpolation polynomial Choice of input method: 1. Input entry by entry from keyboard 2. Input data from a text file 3. Generate data using a function F Choose 1, 2, or 3 please 1 Input n 3 Input X(0) and F(X(0)) on separate lines 8.1 16.94410 Input X(1) and F(X(1)) on separate lines 8.3 17.56492 Input X(2) and F(X(2)) on separate lines 8.6 18.50515 Input X(3) and F(X(3)) on separate lines 8.7 18.82091 Select output destination 1. Screen 2. Text file Enter 1 or 2 1 NEWTONS INTERPOLATION POLYNOMIAL Input data follows: X(0) = 8.10000000 F(X(0)) = X(1) = 8.30000000 F(X(1)) = X(2) = 8.60000000 F(X(2)) = X(3) = 8.70000000 F(X(3)) = 16.94410000 17.56492000 18.50515000 18.82091000 The coefficients Q(0,0), ..., Q(N,N) are: 16.94410000 3.10410000 0.06000000 -0.00208333 Es decir que al sustituir los valores de los coeficientes obtenidos en la forma del polinomio se obtiene: P3 ( x) 16.9441 3.1041*( x - 8.1) 0.06*( x - 8.1) *( x - 8.3) - 0.00208333*( x - 8.1) *( x - 8.3) *( x - 8.6) Y evaluando en el valor deseado se obtiene P3 (8.4) 17.87714249998000 . Aplicando el mismo procedimiento y el algoritmo 3.2 para obtener los coeficientes de cada polinomio de grado dos y uno se obtiene: Para x=8.1, 8.3 y 8.6. El polinomio es: P2 ( x) 16.9441 3.1041*( x - 8.1) 0.06*( x - 8.1) *( x - 8.3) P2 (8.4) 17.87713 Para x= 8.3, 8.6, 8.7. El polinomio es: P2 ( x) 17.56492 3.1341*( x - 8.3) 0.05875*( x - 8.3) *( x - 8.6) P2 (8.4) 17.877155 Para x= 8.1, 8.3, 8.7. El polinomio es: P2 ( x) 16.9441 3.1041*( x - 8.1) 0.05979167*( x - 8.1) * ( x - 8.3) P2 (8.4) 17.87712375 Para x= 8.1, 8.6, 8.7. El polinomio es: P2 ( x) 16.9441 3.1221*( x - 8.1) 0.05916667*( x - 8.1) * ( x - 8.6) Para x= 8.1, 8.6. P2 (8.4) 17.8771799998 P1 ( x) 16.9441 3.1221*( x - 8.1) P1 (8.4) 17.88073 . Para x= 8.1, 8.7. P1 ( x) 16.9441 3.12801667*( x - 8.1) P1 (8.4) 17.882505001 . Para x= 8.3, 8.6. P1 ( x) 17.56492 3.1341*( x - 8.3) P1 (8.4) 17.87833 . Para x= 8.3, 8.7. P1 ( x) 17.56492 3.139975*( x - 8.3) P1 (8.4) 17.8789175 . De los resultados se concluye que con diferentes valores de x, se puede construir diferentes polinomios del mismo grado. Además, si los nodos iniciales se encuentran más cerca del valor de x que se desea aproximar, la aproximación es más exacta. Así como también, se concluye que a mayor grado del polinomio se obtiene una mejor aproximación al valor verdadero. Las Diferencias dividas pueden ser Progresivas, o Regresivas. Si el conjunto de valores están ordenados ya sea de manera ascendente (o progresiva) x0 x1 x2 ... xn o descendente (o regresiva) x0 x1 x2 .... xn . La fórmula original de las diferencias divididas, se aplica a puntos no equidistantes. Es posible modificar esa fórmula de tal manera que se generen tres fórmulas: Diferencias Divididas Progresivas, Diferencias Divididas Regresivas y Diferencias Divididas Centradas para puntos equidistantes. Se puede adaptar el ALG032.sce para que independientemente de cual sea el caso equidistantes o no y cualquier tipo de diferencia progresiva, regresiva o centrada siempre funcione. (RETO: ¿Es Ud. Capaz de hacer este Programa ?.) Fórmula de la Diferencias Divididas Progresivas (Para puntos no equidistantes) Pn ( x) f [ x0 ] f [ x0 , x1 ]( x x0 ) f [ x0 , x1 , x2 ]( x x0 )( x x1 ) f [ x0 , x1 , x2 , x3 ]( x x0 )( x x1 )( x x2 ) ... f [ x0 , x1 ,..., xn ]( x x0 )...( x xn 1 ) Fórmula de la Diferencias divididas progresivas (Para puntos equidistantes) s s Pn ( x ) f [ x0 ] 1!h1 f [ x0 , x1 ] 2! h 2 f [ x0 , x1 , x2 ] 1 2 s s 3 n 3! h f [ x0 , x1 , x2 , x3 ] ... n ! h f [ x0 , x1 ,..., xn ] 3 n h xi 1 xi s x x0 h Fórmula de la Diferencias divididas Regresivas (Para puntos no equidistantes) Pn ( x) f [ xn ] f [ xn , xn 1 ]( x xn ) f [ xn , xn 1 , xn 2 ]( x xn )( x xn 1 ) f [ xn , xn 1 , xn 2 , xn 3 ]( x xn )( x xn 1 )( x xn 2 ) ... f [ xn , xn 1 ,..., x0 ]( x xn )...( x x1 ) Fórmula de la Diferencias divididas Regresivas (Para puntos equidistantes) Pn ( x) f [ xn ] shf [ xn , xn 1 ] s ( s 1) h 2 f [ xn , xn 1 , xn 2 ] s ( s 1)( s 2)h3 f [ xn , xn 1 , xn 2 , xn 3 ] ... s ( s 1)( s 2)...( s n 1)h n f [ xn , xn 1 ,..., x0 ] h xi 1 xi s x xn h Fórmula de la Diferencias divididas Centradas (Para puntos no equidistantes) Pn ( x ) f [ x0 ] x x0 ( f [ x1 , x0 ] f [ x0 , x1 ]) ( x x0 ) 2 f [ x1 , x0 , x1 ] 2 x x0 ( x x1 )( x x1 )( f [ x2 , x1 , x0 , x1 ] f [ x1 , x0 , x1 , x2 ]) 2 ( x x0 ) 2 ( x x1 )( x x1 ) f [ x2 , x1 , x0 , x1 , x2 ] x x0 ( x x2 )( x x1 )( x x1 )( x x2 ) * 2 f [ x3 , x2 , x1 , x0 , x1 , x2 , ] f [ x2 , x1 , x0 , x1 , x2 , x3 ] ( x x0 ) 2 ( x x2 )( x x1 )( x x1 )( x x2 ) f [ x3 , x2 , x1 , x0 , x1 , x2 , x3 ] ... x x0 ( x x2 m 1 )( x x2 m 2 )...( x x2 m 2 )( x x2 m 1 ) * 2 f [ x2 m ,..., x2 m 1 ] f [ x2 m 1 ,..., x2 m ] ( x x0 ) 2 ( x x2 m 1 )( x x2 m 2 )...( x x2 m 3 )( x x2 m 2 )( x x2 m 1 ) * f [ x2 m , x2 m 1 ,..., x2 m 1 , x2 m ] Fórmula de la Diferencias divididas Centradas (Para puntos equidistantes) Pn ( x) f [ x2 m 1 ] f [ x0 ] sh f [ x1 , x0 ] f [ x0 , x1 ] s 2 h 2 f [ x1 , x0 , x1 ] 2 s ( s 2 1) h3 f [ x2 , x1 , x0 , x1 ] f [ x1 , x0 , x1 , x2 ] ... 2 s ( s 2 1)...( s 2 m ) h 2 m 1 f [ x m 1 ,..., xm ] f [ x m ,..., xm 1 ] 2 s 2 ( s 2 1)( s 2 4)...( s 2 ( m 1) 2 ) h 2 m f [ x m ,..., xm ] 2 n 2m 1, pero si n 2m, se elimina el primero o el último x i h xi 1 xi s x x0 h El algoritmo ALG032_DIF_DIV.m presenta una tabla con todas las Diferencias Divididas Calculadas en el algoritmo32. Ejemplo. Aproximar f (0.05), f (0.65), f (0.43) mediante los siguientes datos y la fórmula de diferencias divididas progresivas, regresivas y centradas; tanto para puntos equidistantes y puntos no equidistantes. x f ( x) 0.0 1.00000 0.2 1.22140 0.4 1.49182 0.6 1.82212 0.8 2.22554 Solución: Primero se generan las diferencias divididas mediante el algoritmo “ALG032_DIF_DIV.m”: xi f [ xi ] 0.0 1.00000 0.2 1.22140 Primeras Diferencias Divididas Segundas Diferencias Divididas Terceras Diferencias Divididas Cuartas Diferencias Divididas 1.10700 0.61275 1.35210 0.4 1.49182 0.22625 0.74850 1.65150 0.6 1.82212 0.06197917 0.27583 0.91400 2.01710 0.8 2.22554 Luego se aplican las fórmulas progresivas para aproximar f(0.05), las regresivas para aproximar f(0.65) y las centradas para aproximar f(0.43). Diferencias Divididas Progresivas (Puntos no equidistantes) P4 (0.05) 1.0 1.107(0.05 0.0) 0.61275(0.05 0.0)(0.05 0.2) 0.22625(0.05 0.0)(0.05 0.2)(0.05 0.4) 0.06197917(0.05 0.0)(0.05 0.2)(0.05 0.4)(0.05 0.6) P4 (0.05) 1.0512587988 Diferencias Divididas Progresivas (Puntos equidistantes) h x1 x0 0.2 0.0 0.2 0.05 0.0 0.25 0.2 P4 (0.05) 0.0 (0.25)(0.2) 1.0 (0.25)(0.2)(1.107) s (0.25)(0.25 1)(0.2) 2 (0.61275) (0.25)(0.25 1)(0.25 2)(0.2)3 (0.22625) (0.25)(0.25 1)(0.25 2)(0.25 3)(0.2) 4 (0.06197917) P4 (0.05) 0.0 (0.25)(0.2) 1.0512587988233 Fórmula de la Diferencias divididas Regresivas (Para puntos no equidistantes) P4 (0.65) 2.22554 2.01710(0.65 0.8) 0.91400(0.65 0.8)(0.65 0.6) 0.27583(0.65 0.8)(0.65 0.6)(0.65 0.4) 0.06197917(0.65 0.8)(0.65 0.6)(0.65 0.4)(0.65 0.2) P4 (0.65) 1.91555051758156 Fórmula de la Diferencias divididas Regresivas (Para puntos equidistantes) h x1 x0 0.2 0.0 0.2 0.65 0.8 3 0.75 0.2 4 P4 (0.65) P4 [0.8 (0.75)(0.2)] 2.22554 ( 0.75)(0.2)(2.01710) s (0.75)( 0.75 1)(0.2) 2 (0.91400) ( 0.75)( 0.75 1)(0.75 2)(0.2)3 (0.27583) (0.75)(0.75 1)(0.75 2)(0.75 3)(0.2) 4 (0.06197917) P4 (0.65) P4[0.8 (0.75)(0.2)] 1.91555051758156 Fórmula de la Diferencias divididas Centradas (Para puntos no equidistantes) P4 (0.43) 1.49182 0.43 0.4 (1.3521 1.6515) (0.43 0.4) 2 (0.74850) 2 0.43 0.4 (0.43 0.2)(0.43 0.6)(0.22625 0.27583) 2 (0.43 0.4) 2 (0.43 0.2)(0.43 0.6)(0.06197917) P4 (0.43) 1.53725099707996 Fórmula de la Diferencias divididas Centradas (Para puntos equidistantes) n 2m 1 2(2) 1 5, es impar, por lo tanto no se elimina ninguna fila h x1 x0 0.6 0.4 0.2 s x x0 0.43 0.4 0.15 h 0.2 P4 (0.43) P4 0.4 0.15 0.2 1.49182 (0.15)(0.2) (1.35210 1.65150) 2 (0.15)((0.15) 2 1)(0.2)3 (0.15) 2 (0.2) 2 (0.74850) 0.22625 0.27583 2 (0.15) 2 ((0.15) 2 1)(0.4) 4 (0.06197917) P4 (0.43) P4 0.4 0.15 0.2 1.53725099707996 Trate por su propia cuenta de crear el código que se implementa en el programa modificado del ALG032.sce. Incorpore la mejora a los programas anteriores de que impriman el polinomio usado para el cálculo. Obtenga los códigos que implementan el uso de tic-toc, timer() y etime(), para cada uno de los programas relacionados a este tema, en el caso de que no existan créelos Ud. mismo(a). 2. EJERCICIOS PROPUESTOS. 1. Aplique el Método de Neville para aproximar a 3 con la función f x 3x y los valores: x0 2, x1 1, x2 0, x3 1, x4 2. 2. Aplique el Método de Neville para aproximar a 3 con la función f x x y los valores: x0 0, x1 1, x2 2, x3 4, x4 5. Compare la exactitud con la del ejercicio 1. 3. Use las siguientes funciones para interpolar usando el ALG032.sce en los nodos dados: a) f x x ln x en x 8.4 use como nodos en x : x0 8.1, x1 8.3, x2 8.6, x3 8.7. b) f x x 3 +4.001x 2 +4.002x 1.001 en x 1 use como nodos en x : 3 x0 .75, x1 .5, x2 .25, x3 0. c) f x xCos x -2x 2 +3x 1 en x 0.25 use como nodos en x : x0 .1, x1 .2, x2 .3, x3 .4 d) f x Sen e x 2 en x 0.9 use como nodos en x : x0 .6, x1 .7, x2 .8, x3 1.0 4. Crear archivos de texto cuyos datos sean los generados por la aplicación de las funciones a los nodos dados en cada literal del ejercicio anterior y ejecutar el ALG032 llamando los datos desde los archivos. 5. Aplique el ALG032_DIF_DIV a los ejercicios del numeral 3. Tarea a entregar: Según los ejercicios propuestos, subir los programas utilizados de los dos métodos anteriores para los numerales 2 y 3 de los literales a) y b).Con sus respectivos resultados, considerar que el programa se debe ingresar la función, el intervalo, la tolerancia, el número de iteraciones y si la función ingresada puede tener una o más raíces calcular la de todas. Además, debe incluir el gráfico respectivo. Las indicaciones del nombre del archivo en RAR. Use el formato: carnet_gp_08.rar, cambié "carnet" por su respectivo número de carnet y “gp” por su respectivo grupo de laboratorio. Fin del Laboratorio.