DEPARTAMENTO DE MATEMATICA MAT-270 ANÁLISIS NUMÉRICO TAREA Nº 1. Fecha de entrega: 9 de Abril de 2007. Integrantes: Matthias Breytmann 2504082-1 Felipe Hernández 2511022-6 Profesor: 1 Wilmer Bazan INDICE INTRODUCCION 3 OBJETIVOS 4 PREGUNTA UNO 5 PREGUNTA DOS 8 PREGUNTA TRES 9 PREGUNTA CUATRO 13 PREGUNTA CINCO 14 CONCLUSION FINAL 16 ANEXOS 17 2 INTRODUCCIÓN La siguiente tarea consiste en la resolución de cinco problemas correspondientes a temas tales como aritmética de punto flotante en donde se analiza la propagación del error, método de Newton, métodos de iteración, solución de un problema de aritmética de dígitos significativos y por último una solución a un sistema de ecuaciones no lineales. Cabe destacar que para la resolución de los problemas se utilizaron softwares numéricos los cuales ayudaron a realizar las iteraciones y algoritmos necesarios para encontrar las soluciones. Es importante mencionar que al estar trabajando con un computador siempre se presentarán errores de redondeo los cuales se deben a que la máquina realiza los cálculos únicamente con representaciones aproximadas de los números verdaderos. Un computador realiza sus operaciones solo con un subconjunto pequeño del sistema de números reales para poder representarlos a todos. Este pequeño sistema contiene sólo números racionales y almacena la parte fraccionaria junto con una parte exponencial, lo que implica que al realizar operaciones entre ellos se generarán errores. La tarea consiste en realizar operaciones en donde se van acumulando errores los cuales deben ser identificados y encontrar alguna solución con un error lo bastante pequeño para que sea aceptada. 3 OBJETIVOS • Adquirir una noción en cuanto a los diferentes tipos de errores numéricos que se generan a partir de la modelación de un problema, los cuales deben de estar fundamentados correctamente con respecto a su orden de magnitud. Para obtener de esta forma un resultado fidedigno a los intereses para los cuales se desea emplear su solución. • Lograr el manejo de un software matemático, con el fin de programar los algoritmos necesarios para encontrar soluciones a problemas de mayor complejidad. Capacitar al alumno para que tenga la capacidad de resolver problemas matemáticos, a los que se puede ver enfrentado en su profesión o a lo largo de su carrera, a través de métodos numéricos. • • Ser capaces de interpretar los resultados y adquirir un cierto lenguaje para enfrentar problemas de tipo ingenieril. 4 Pregunta 1 El problema consta en buscar el error absoluto y relativo para x representado como punto flotante normalizado en base 10 y redondeado de 2 maneras diferentes. a;i) Obtener rd ( x) − x ≤ 0,5 ⋅ 10 b −t con rd ( x) = ε (0.α 1 ...α t ) ⋅ 10 b si α t +1 < 5 rd ( x ) − ( x ) ≤ 0,5 ⋅ 10 b − t ε (0 , α 1 ...α t ) ⋅ 10 b − ε (0, α 1 ...α t α t +1α t + 2 ) ⋅ 10 b (0,000 .....α t +1α t + 2 ) ⋅ 10 b El cero se repite t veces, entonces (0,000.....α t +1α t +2 ) ⋅10 b = 0, α t +1 ⋅ 10 −t ⋅ 10 b ⇒ 0.α t +1 ⋅ 10 b −t ≤ 0,5 ⋅ 10 b −t Como α t +1 < 5 se cumple la desigualdad. t b b;i) Obtener rd ( x) − x ≤ 0,5 ⋅ 10 b −t con rd ( x ) = ε (0.α 1 ...α t + 10 ) ⋅ 10 si α t +1 ≥ 5 ( rd ( x ) − ( x ) = (0.α ...α ) rd ( x ) − ( x ) = 0.α 1 ...α t + 10 − t ⋅ 10 b − (0.α 1 ...α t α t +1α t + 2 ) ⋅ 10 b 1 t ) ⋅ 10 b + 10 −t ⋅ 10 b − (0.α 1 ...α t α t +1α t + 2 ) ⋅ 10 b = − 0.α t +1 ⋅ 10 −t ⋅ 10 b + 10 b −t = (−0.α t +1 + 1) ⋅ 10 b −t ( − 0 , α t + 1 + 1) ⋅ 10 b − t ≤ 0 , 5 ⋅ 10 b − t Como α t +1 ≥ 5 se cumple la desigualdad. 5 rd ( x) − x ≤ 0,5 ⋅ 10 −t con rd ( x) = ε (0.α 1 ...α t ) ⋅ 10 b si α t +1 < 5 x a;ii) Obtener rd ( x )− ( x ) = x = (0,α1 ...α t )⋅10 b − (0,α1 ...α t α t +1α t +2 )⋅10 b (0,α1 ...α t α t +1α t + 2 )⋅10 b (0,α1 ...α t )− (0,α1 ...α t α t +1α t + 2 ) (0,α1 ...α t α t +1α t + 2 ) = (0,α1 ...α tα t +1α t +2 ) = b;ii) Obtener − (0 , 00...α t +1α t + 2 ) (0,α1 ...α t α t +1α t + 2 ) = 0, α1...α tα t +1α t + 2 ≥ 10 ⇒ −1 rd ( x) − x ≤ 0,5 ⋅ 10 −t con x −t b t 1 1 t −t t 1 1 t t +1α t + 2 b )⋅10 b t t +1α t + 2 ) t +1 t + 2 (− 0,00...α α = (0,α ...α α t t +1α t + 2 ) Como α t +1 ≥ 5 y α1 ≥ 1 ⇒ 0, α 1 ...α t α t +1α t + 2 ≥ 10 −1 t +1 t + 2 +10 1 10 −1 t +1 t + 2 (0,α ...α +10 )− (0,α ...α α = (0 ,α ...α α α ) 1 t 0 ,α t +1 ⋅10 − t −t ≤ 0 , 5⋅10 − t 10 −1 = 5 ⋅ 10−t rd ( x) = ε (0.α1...α t + 10t ) ⋅10b si α t +1 ≥ 5 (0,α ...α +10 )⋅10 − (0,α ...α α = (0,α ...α α α )⋅10 1 = 0 ,α t +1 ⋅10 −t 0 ,α 1 ...α t α t +1α t + 2 (0, 00...α t +1α t + 2 ) Como α1 ≥ 1 ⇒ = ) = (− 0,α α ⋅10 +10 ) (0 ,α ...α α α ) −t t +1 t + 2 1 t 6 t +1 t + 2 −t −t −t ⇒ (−0(,0α,αt +11...αtα+t2α⋅10t +1α+t +102 ) ) ≤ 0, 5⋅10− t 10−1 = 5 ⋅10−t Conclusión Se puede concluir que al realizar los cálculos en los software computacionales siempre se presentaran errores ya que el programa trabaja solo con un número finito de cifras lo que implica que al realizar operaciones se van perdiendo datos y generando pequeños errores los que van incrementándose a media que aumentan los cálculos. De los errores que se analizaron cabe mencionar que el error relativo tiene mayor precisión que el absoluto, debido a que al dividir el error absoluto por el numero de maquina, se obtiene una expresión que abarca el tamaño del error. 7 Pregunta 2 Se probara la siguiente afirmación en base 10: EPS y ≤ x B Usando EPS = 5 * 10 − t y reemplazando en la desigualdad. 10 − t y ≤ 5* x 10 y ≤ 5 * 10 −( t +1) x El valor critico de y se encuentra en el caso que y = 5 * 10 − ( t +1) x por lo que reemplazando se obtiene x + *(5 *10 −( t +1) x ) = x . Debido a que la precisión máxima es 5 * 10 −t , el valor 5 * 10 − (t +1) se trunca a cero, porque es más pequeño que la precisión máxima que puede tomar. Se probara ahora la siguiente afirmación en base 2 EPS x y ≤ B Usando EPS = 2 − t y reemplazando en la desigualdad. 2 −t x 2 y ≤ 2 −( t +1) x y ≤ El valor critico de y se encuentra en el caso que y = 2 − ( t +1) x Entonces x + *2 − ( t +1) x = x Como la máxima precisión es 2 − t , el valor 2 − (t +1) es redondeado a cero, pues esta fuera de la precisión. Conclusión Se puede concluir que el sumar un numero muy pequeño con uno mas grande, el termino menor es despreciado en la operación debido a que la computadora realiza la operación con una determinada precisión y éste al estar muy por debajo de esa precisión mínima se redondea o se trunca a cero. 8 Pregunta 3 n 1 Sea ϕ (n ) = n![e − ∑ ] n=0,1,2,… , n ∈ Ζ i = 0 i! a) Demuestre que ϕ (n ) es monótona decreciente y que Lim ϕ (n) = 0 n → +∞ Utilizando el programa Matemática se introdujo la siguiente funcion, y luego obtenemos la grafica de esta con el comando plot. n p[n _] = n!(e − ∑ i1! ) i =0 Plot[p[n],{n,0,14}] 1.75 1.5 1.25 1 0.75 0.5 0.25 2 4 6 8 10 12 14 Se ve claramente que se cumple ϕ (n + 1) < ϕ (n) por lo tanto se comprueba que la función es monótona decreciente. Demostración del límite: Expandiendo e x mediante la serie de Taylor se obtiene: ex = 1+ x + como Rn,a x 2 x3 xn + + ... + + Rn ( x) 2! 3! n! f ( n +1) (t ) = ( x − a) n +1 (n + 1)! t ∈ (a, x), ( x > a) 9 Centrando la serie en cero se obtiene et Rn , a = − ⋅ x n +1 t ∈ [0,1] (n + 1)! Para x = 1 1 1 1 e = 1 + 1 + + + ... + + Rn 2! 3! n! t e 3 Rn = − < (n + 1)! (n + 1)! n 1 3 e − ∑ = Rn < (n + 1)! i =0 i! n 1 3 Multiplicando por n! se obtiene 0<e−∑ < (n + 1)! i = 0 i! 3 ⋅ n! 0 < Rn ⋅ n!< (n + 1)n! 3 Por teorema del sándwich, n → +∞ 0 < ϕ ( n) < (n + 1) Lim ϕ (n) = 0 n → +∞ b) Demostrar que ϕ (n + 1) = (n + 1)ϕ (n) − 1 n 1 ϕ (n ) = n![e − ∑ ] i = 0 i! n=0,1,2,… Evaluando en (n+1) se obtiene n +1 1 ϕ (n + 1) = (n + 1)![e − ∑ ] Descomponiendo el factorial y resolviendo n+1 en la sumatoria i = 0 i! se llega a n 1 1 ϕ (n + 1) = (n + 1) ⋅ n![e − ∑ − ] (n + 1)! i = 0 i! n 1 1 ϕ (n + 1) = (n + 1) ⋅ n![e − ∑ ] − [ (n + 1) ⋅ n!] (n + 1)! i = 0 i! 1 (n + 1) ⋅ n!] (n + 1)! 1 ϕ (n + 1) = (n + 1) ⋅ ϕ (n) − [ (n + 1) ⋅ n!] simplificando (n + 1) ⋅ n! ϕ (n + 1) = (n + 1) ⋅ ϕ (n) − [ Se obtiene: ϕ (n + 1) = (n + 1) ⋅ ϕ (n) − 1 10 Utilizando el algoritmo anterior se obtienen los siguientes valors para ϕ (n ) Para ϕ (0 ) =e-1=1.71828182 n = 0 ϕ (1) = (e − 1) − 1 = e − 2 =0.71828183 Para n = 1 ϕ (2 ) = 2(e − 2) − 1 = 2e − 5 =0.43656366 Para n = 2 ϕ (3) = 3(2e − 5) − 1 = 6e − 16 =0.30969097 Para n = 3 ϕ (4 ) = 4(6e − 16) − 1 = 24e − 65 =0.23876388 Para n = 4 ϕ (5) = 5(24e − 65) − 1 = 120e − 326 =0.19381942 Resumiendo los valores y representándolos en tabla se obtiene lo siguiente: n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ϕ (n ) 0.71828183 0.43656366 0.30969097 0.23876388 0.19381942 0.16291649 0.14041543 0.12332347 0.10991122 0.09911218 0.09023403 0.08280826 0.07650566 0.07107544 0.06640625 Observando la tabla anterior se puede corroborar al límite calculado anteriormente que la función ϕ (n ) tiene claramente a 0. 11 c) El algoritmo usado para calcular ϕ (15) esta en el anexo de la pregunta 3 y el resultado es 0.06640625. Se puede observar una pequeña diferencia al calcular directamente con n=15 en la sumatoria y se obtiene 0.0662025447581982. El error relativo para este caso es entonces: a = 0.0662025447581982 b = 0.06640625 a-b = 0.3077 *10 −2 a Cabe mencionar que el error que se presenta al utilizar el algoritmo es bastante grande. d) La fuente del error que se genera se debe al estar utilizando el algoritmo. Se produce debido a la aproximación que hace el programa con la función exponencial, ya que ésta queda representada en el programa por un número finito. Al estar multiplicando sucesivamente una aproximación se va generando cada vez un error mayor. Es por esto que el algoritmo varía en comparación con introducir el número directamente a la función original. 12 Problema 4 Al graficar la función se observa claramente que la menor solución positiva se encuentra cercana al punto x= 2,5 1 0.8 0.6 0.4 0.2 2 4 6 8 10 12 14 -0.2 -0.4 Al aplicar el algoritmo para este método se encontró la solución de x0=2.404825558 con un error de 1.32368 ⋅ 10 −10 Para encontrar el punto solución cercano a 2.5 se utilizó el método de la bisección el cual consiste en ir subdividiendo intervalos. Se debe lograr siempre que f(a)f(b)<0 para seguir realizando la iteración. Éste método es muy claro desde el punto de vista conceptual claro que un inconveniente es que converge lentamente a la solución. Sin embargo este método tiene la importante propiedad de que siempre converge a un punto. 13 Pregunta 5 Este problema se realizó mediante la ayuda del software Matlab 7.1, el cual permitió lograr una aproximación bastante cercana a la solución del sistema de ecuaciones no lineales. El método utilizado fue el Método de Newton el cual basta con realizar la operación x k = x k −1 − J −1 ( x ( k −1) ) ⋅ F ( x ( k −1) ) , e iterando una cierta cantidad de veces se logra el acercamiento al punto solución. Como las ecuaciones del sistema son: α3 p = 2 T (µ1 + µ 2 ) 3 − m 1 − 0, 2 = 5 ln( p ) + 8 .75 ln( µ 1 ) − m 2 − 0, 2 = 5 ln( p ) + 8 .75 ln( µ 2 ) f 1 Se obtiene F ( p, µ1 , µ 2 ) = f 2 f 3 α3 − p3 T ( µ1 + µ 2 ) f 2 = 5 ln( p) + 8.75 ln( µ1 ) + m1 + 0,2 f 3 = 5 ln( p ) + 8.75 ln( µ 2 ) + m2 + 0,2 f1= con 2 Y la matriz jacobiana J(x) para este sistema es − p3 5 J ( p , µ1 , µ 2 ) = p 5 p − α3 T 2 ( µ1 + µ 2 ) 2 8,75 µ1 0 − α3 2 2 T ( µ1 + µ 2 ) 0 8.75 µ2 Entonces con estos datos se puede realizar el Método de Newton para sistemas. Con la ayuda del programa Matlab se logra invertir la matriz jacobiana tantas veces como sea necesario y realizar x k = x k −1 − J −1 ( x ( k −1) ) ⋅ F ( x ( k −1) ) . El punto inicial x0 = (0.5,2,2) se eligió mediante la ayuda del programa Maple en el cual se pudo graficar las funciones implícitas y encontrar una solución aproximada. 14 Entonces se introduce en el programa x0 y éste realiza las iteraciones correspondientes hasta lograr una aproximación lo mas cercana posible a x. Se tomó como máximo un error relativo x k − x ( k −1) < 10 −10 . q= x k El programa que se realizó arroja como solución el punto. p= 0.15877514186010 µ1 = 1.73104208506590 µ 2 =1.40918187114396 Después de realizar 8 iteraciones y presenta un error relativo q= 2.821988760697672 ⋅ 10 −14 , lo cual es un resultado aceptable debido al error que es prácticamente mínimo. Conclusión Se puede decir que el método de Newton requiere un valor inicial lo suficientemente preciso y debe existir siempre J −1 ( pto) , en el problema realizado no se presentaron problemas debido a que se eligió un punto lo bastante cercano y es por eso que se pudo realizar la inversión de la matriz jacobiana. Se concluye además que al dar un punto inicial lo bastante preciso el método converge rápidamente a la solución (en el problema realizo solo 8 iteraciones). 15 Conclusión final Se concluye que al realizar operaciones matemáticas con la ayuda de computadores se presentan siempre errores que provienen de las aproximaciones que realiza éste. El análisis numérico identifica estos errores y si es posible se pueden corregir mediante el uso de los métodos. Es por esto que se deben realizar algoritmos con la menor cantidad de operaciones entre éstos con el fin de reducir dicha propagación del error. Los objetivos de esta tarea se cumplieron y se logró entender e interpretar los problemas a los que se enfrentaron. 16 ANEXO Pregunta 3: El siguiente algoritmo realiza la iteración para calcular ϕ (n) a=1; for n = 1:15; a=a*n; a2=1; suma=1; for j = 1:n; a2=a2*j; suma=suma+(1/a2); end p=a*exp(1)-suma*a; p end El programa arroja los siguientes valores de la función ϕ (n + 1) = (n + 1)ϕ (n) − 1 : p= p= p= p= p= p= p= p= p= p= p= p= p= p= 0.71828182845905 0.43656365691809 0.30969097075427 0.23876388301710 0.19381941508550 0.16291649051277 0.14041543358871 0.12332346869516 0.10991121840198 0.09911218471825 0.09023402631283 0.08280825614929 0.07650566101074 0.07107543945313 p = 0.06640625000000 ( valor de ϕ (15) utilizando algoritmo encontrado en b.) Evaluando directamente se obtiene lo siguiente: n p[n _] = n!(e − ∑ i1! ) i =0 p[15]//N 0.066202544758198 (valor de ϕ (15) al evaluarlo directamente) 17 Anexo Pregunta 4 Se definió la función en el programa Mathematica y luego se realizo el siguiente algoritmo: X0=-2 e y0=5 representa el primer intervalo que se subdivide sucesivamente. K es el número de iteraciones que realiza. E0=100 representa el error inicial El programa arroja los siguientes resultados: xr30 2.404825560 2.710906825 ´ 10- 7 xr31 2.404825557 1.355453414 ´ 10- 7 xr32 2.404825558 6.777267066 ´ 10- 8 xr33 2.404825557 3.388633534 ´ 10- 8 xr34 2.404825558 1.694316767 ´ 10- 8 xr35 2.404825558 8.471583835 ´ 10- 9 xr36 2.404825558 4.235791917 ´ 10- 9 xr37 2.404825558 2.117895959 ´ 10- 9 xr38 2.404825558 1.058947979 ´ 10- 9 xr39 2.404825558 5.294739897 ´ 10- 10 xr40 2.404825558 2.647369948 ´ 10- 10 xr41 2.404825558 1.323684974 ´ 10- 10 *Nota: Se copiaron los últimos resultados ya que los otros no son importantes. El último valor es la aproximación a la solución con su respectivo error a su derecha. 18 Anexo Pregunta 5: Algoritmo utilizado para resolver el sistema no lineal al=4.6; t=88; m1=4.2; m2=6.0; x0=[0.5;2;2]; i=1 while i<1000, p=x0(1); u1=x0(2); u2=x0(3); f1=al^3/(t^2*(u1+u2)) -p^3; f2=5*log(p)+8.75*log(u1)+m1+0.2; f3=5*log(p)+8.75*log(u2)+m2+0.2; J=[-3*p.^2 -al.^3/(t.^2*(u1+u2).^2) -al.^3./(t.^2*(u1+u2).^2); 5./p 8.75./u1 0;5./p 0 8.75./u2]; Jinv=J^(-1); F=[f1;f2;f3]; xsiguiente=x0-Jinv*F; k=xsiguiente-x0; q=norm(k,inf)/norm(xsiguiente,inf); {q es el error relativo} if q<10^-10, break end x0=xsiguiente; i=i+1; end x0 q i El programa arroja como resultado x0 = 0.15877514186010 1.73104208506590 1.40918187114396 q= 2.821988760697672e-014 i= 8 19