Subido por Sky Solución

Guia8 20 Covid 19 Inicia 20 Abril 2020

Anuncio
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  xn1 ),
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 [ x1 , x0 ]  f [ x0 , x1 ])  ( x  x0 ) 2 f [ x1 , x0 , x1 ] 
2
x  x0
( x  x1 )( x  x1 )( f [ x2 , x1 , x0 , x1 ]  f [ x1 , x0 , x1 , x2 ]) 
2
( x  x0 ) 2 ( x  x1 )( x  x1 ) f [ x2 , x1 , x0 , x1 , x2 ] 
x  x0
( x  x2 )( x  x1 )( x  x1 )( x  x2 ) *
2
 f [ x3 , x2 , x1 , x0 , x1 , x2 , ]  f [ x2 , x1 , x0 , x1 , x2 , x3 ]  
( x  x0 ) 2 ( x  x2 )( x  x1 )( x  x1 )( x  x2 ) f [ x3 , x2 , x1 , x0 , x1 , x2 , x3 ]  ... 
x  x0
( x  x2 m 1 )( x  x2 m  2 )...( x  x2 m  2 )( x  x2 m 1 ) *
2
 f [ x2 m ,..., x2 m 1 ]  f [ x2 m 1 ,..., x2 m ] 
( x  x0 ) 2 ( x  x2 m 1 )( x  x2 m  2 )...( x  x2 m 3 )( x  x2 m  2 )( x  x2 m 1 ) *
f [ x2 m , x2 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 [ x1 , x0 ]  f [ x0 , x1 ]  s 2 h 2 f [ x1 , x0 , x1 ] 
2
s ( s 2  1) h3
 f [ x2 , x1 , x0 , x1 ]  f [ x1 , 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.
Descargar