Curso de Métodos Numéricos Instituto de Matemática Práctico 1: Errores Agosto de 2005 1) Encuentre experimentalmente los siguientes valores de su calculadora: (a) El valor ²mach definido como el minimo número x tal que la representación en punto flotante de 1 + x es mayor a 1. (b) El mayor número representable. (c) El menor número positivo cuya represenatción no sea cero. En todos los casos encuentre los valores con 2 cifras de precisión. 2) Considere el sistema: ( xn = [2xn−1 + yn−1 ] yn = [xn−1 + yn−1 ] donde [u] indica la parte decimal de u. (a) Muestre que si x0 = y0 = 1 , 2 entonces x3 = y3 = perı́odo 3 a lo sumo. ¿Qué sucede para x0 = y0 = 1 , 2 o sea que la solución es periódica de 1 ?. 3 (b) Implemente en Matlab un programa que calcule y grafique1 los 100 primeros puntos (xn , yn ) de cada una de las sucesiones anteriores. ¿Qué conclusiones puede sacar del resultado obtenido?. 3) Error relativo, error absoluto: a) Al determinar una constante C, se obtuvo el valor 92.34, con error relativo estimado en 0.1%. ¿Entre cuáles valores se encuentra C?. b) ¿Cuántos dı́gitos deben tomarse en el cálculo de √ 22 para que el error relativo no exceda el 0.1%?. 1 Para obtener información sobre los comandos for y plot de Matlab use help for y help plot 1 c) Se obtiene en una medición el valor v = 17261. Se sabe que el error relativo es del 1%. ¿Cómo deberı́a escribirse v?. 4) R EPRESENTACI ÓN INTERNA DE N ÚMEROS . Una computadora tiene un sistema de punto flotante decimal, con 5 dı́gitos de precisión y dos dı́gitos para el exponente. ¿Cuántos números pueden representarse con dicha arquitectura?. ¿Cuál es la menor separación en dicho sistema?. 5) C ANCELACI ÓN CATASTR ÓFICA , REESCRIBIR F ÓRMULAS . Z n+1 a) Se desea calcular lim log(x)dx ¿Cómo puede reescribirse dicha integral para ello?. n→∞ n x e para valores grandes de x. ¿Cómo reescribirlo para evitar desborde?. −1 c) Comente los inconvenientes que pueden surgir al implementar un programa para calcular la cos(x + h) − cos(x) derivada de cos(x) utilzando el cociente incremental . ¿Cómo escribirı́a h usted dicho cociente?. b) Se desea calcular ex 6) E RRORES EN OPERACIONES. a) El diámetro interior de un tanque de agua esférico es de 1.5 ± 0.05 mts. Asumiendo que π = 3.1416, calcule el volumen. b) Se quiere medir el área de un campo rectangular. Los lados del campo miden aproximadamente 2.000 por 3.000 metros. ¿Con qué error deberán medirse los lados del campo para que el área tenga un error inferior a un metro cuadrado?. 7) C ÁLCULO DE LA DERIVADA CON EL COCIENTE INCREMENTAL . ∞ Dada f : I → R con f ∈ C(I) , una expresión de la derivada de f en el punto x, es el lı́mite de la diferencia hacia adelante en el punto, o sea: f (x + h) − f (x) h→0 h f 0 (x) = lim 2 Al aproximar numéricamente la derivada por la diferencia hacia adelante (es decir tomando un valor de h pequeño pero finito), se cometen dos tipos de errores. En primer lugar está el error de truncamiento, que proviene de tomar el h finito, y en segundo lugar, los errores numéricos de la máquina, tanto en la representación como en las operaciones. (a) Calcular la derivada primera de la función f (x) = √ x en el punto x = 1, con la diferencia hacia −i adelante, usando h = 1.5 , con i = 0, 1, 2, ..., 100. Calcular, y graficar 2 el error absoluto cometido al usar dicha aproximación, y explicar el comportamiento del mismo. (b) Usando los resultados vistos en clase, sobre los errores de truncamiento y de redondeo, estimar el valor de h óptimo para el cálculo anterior, es decir, aquel que minimice el error cometido. Hallar el h para el cual se obtuvo el menor error en la parte anterior 3 , y compararlo con la estimación obtenida analı́ticamente. (c) Repetir las partes 0a) y 0b) para la función tan(x) en el punto x = 1.57 √ (d) Repetir las partes 0a) y 0b para el cálculo de la derivada segunda de x en el punto x = 1, usando la siguiente discretización: f 00 (x) ' f (x + h) − 2f (x) + f (x − h) h2 (e) Para el problema planteado en la parte 0a, mejorar la aproximación obtenida usando extrapolación de Richardson. 8) Considere el problema del ejercicio 7, en que se desea aproximar el valor de la derivada por cocientes incrementales. (a) A partir del vector de valores aproximados correspondientes a los distintos valores de h, use la extrapolación de Richardson para hallar un nuevo vector de valores aproximados a partir del vector ya calculado (el nuevo vector tendrá un valor menos, ya que se obtuvo un valor extrapolado a partir de cada pareja de valores sucesivos del vector original). (b) Calcule el error cometido y grafı́quelo, comparándolo con el error en la aproximación original. (c) Repita el procedimiento, extrapolando el último vector hallado. 2 3 Es conveniente graficar el error en escala logarı́tmica, para ello ver el comando loglog de Matlab Ver el comando min de Matlab 3 9) Se desea hallar las 4 raı́ces del polinomio P4 (x) = x4 − 12x3 + 54x2 − 108x + 80.99999999999999 (a) Resuelva el problema con el comando roots del Matlab. Qué sucedió con el vector de coeficientes del polinomio?. (b) Observando que P4 (x) = (x − 3)4 − 10−14 , resuelva ”a mano” la ecuación P4 (x) = 0. (c) Considere la ecuación (x − 3)4 = 0 y su solución exacta x = 3, y la correspondiente solución del problema ”perturbado” de la parte (a). Halle el error relativo en la solución: Rx = Ex . x (d) Halle la diferencia relativa en los coeficientes de la ecuación de la parte (a) y la de la parte (b): si d es el vector de los coeficientes, calcule Rd = ||δd|| . ||d|| Saque conclusiones sobre el número de condición del problema, definido como la razón entre el error relativo en la solución y el error relativo en los datos de entrada. 10) Considere el problema que calcular los valores de la función exponencial f (x) = ex a partir de su desarrollo en serie de Taylor: ∞ X xn x2 x3 xn e =1+x+ + + ... + + ... = 2! 3! n! n! n=0 x (a) Use el siguiente programa Matlab para efectuar la suma anterior hasta n = 100, para un rango de valores de x: x=-20:20; sum=ones(size(x)); t=x; n=1; while n<100 sum=sum+t; n=n+1; t=t.*x/n; end (b) Investigue qué sucede con el error relativo 4 en los resultados numéricos obtenidos. Dónde se dan los peores resultados? Justifique. (c) Piense una solución para hacer el calculo en los valores anteriores con mejor precisión. 4 use la función exp de Matlab y grafique con semilogy 4 EJERCICIOS COMPLEMENTARIOS. 11) Se quiere obtener numéricamente la derivada de una función f mediante la expresión: ∆f = f (x + h) − f (x − h) 2h (a) Halle el error de truncamiento. (b) Estime el error de redondeo debido al uso de aritmética de punto flotante. (c) Estime el error total y el h óptimo. (d) Para f (x) = ex compare ∆f con f 0 (x) en x = 0 para diferentes valores de h. Finalmente, obtenga una gráfica experimental que muestre lo obtenido en 3. (e) Haga lo mismo para f (x) = sin(x) en x = 0 y explique los resultados. 12) En versiones anteriores el Matlab daba error al calcular el asinh(x) para valores negativos grandes. El objetivo de esta parte es analizar el problema y proponer una solución. √ Evalue asinh(x) = log(x + x2 + 1) en x = −1e30 utilizando Matlab y usando la función asinh(x) de Matlab (Asumimos que es una versión nueva con el error corregido). Explique el resultado obtenido y proponga una forma de solucionarlo. 13) P ROPAGACI ÓN DEL ERROR DE REDONDEO. (a) Suponga que conoce una cantidad x > 0 con error absoluto δx (pequeño en relación a x). Si √ y = x, estime el error absoluto δy en base a x y δx. Estime también el error relativo en y en base al error relativo en x: Rx = δx . x (b) Si las cantidades x1 , x2 > 0 se conocen con error δx, halle una cota al error absoluto en la √ √ cantidad z = x1 − x2 . (c) Si x1 = 9 × 1014 + 1, x2 = 9 × 1014 − 1, calcule en Matlab el valor z, llamando z1 al resultado obtenido. Estudie el error δz cometido (z = z1 + δz), tomando como verdadero valor de z el resultado del cálculo z = √x1 −x √2 . x1 + x2 Compare con la cota obtenida en el punto anterior, suponiendo que el error se debe sólo a la propagación del error cometido al almacenar x1 y x2 en punto flotante. ¿Qué relación hay entre el error relativo inicial y final?. 5