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 = [2x n 1 + y n 1] donde [u] indica la parte decimal de u y n = [x n 1 + y n 1 ] (a) Muestre que si x 0 = y 0 = 1, entonces x 2 3 = y 3 = 1, o sea que la solución es periódica de 2 período 3 a lo sumo Qué sucede para x 0 = y 0 = 1? 3 (b) Implemente en Matlab un programa que calcule y grafique 1 los 100 primeros puntos (x n, y n ) 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 9234, con error relativo estimado en 01% 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 01%? 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) REPRESENTACIÓ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) CANCELACIÓN CATASTRÓFICA, REESCRIBIR FÓRMULAS a) Se desea calcular lim n n+1 e x n log(x)dx Cómo puede reescribirse dicha integral para ello? b) Se desea calcular para valores grandes de x Cómo reescribirlo para evitar desborde? e x 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? 6) ERRORES EN OPERACIONES a) El diámetro interior de un tanque de agua esférico es de 15 ± 005 mts Asumiendo que π = 31416, calcule el volumen b) Se quiere medir el área de un campo rectangular Los lados del campo miden aproximadamente 2000 por 3000 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) = lim h 0 f(x + h) f(x) h 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 adelante, usando h = 15 i, 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 = 157 (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 (x) f(x + h) 2f(x) + f(x h) h 2 (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 Es conveniente graficar el error en escala logarítmica, para ello ver el comando loglog de Matlab 3 Ver el comando min de Matlab 3
9) Se desea hallar las 4 raíces del polinomio P 4 (x) = x 4 12x 3 + 54x 2 108x + 8099999999999999 (a) Resuelva el problema con el comando roots del Matlab Qué sucedió con el vector de coeficientes del polinomio? (b) Observando que P 4 (x) = (x 3) 4 10 14, resuelva a mano la ecuación P 4 (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: R x = E x 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 R d = δd Saque conclusiones sobre el número de d 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) = e x a partir de su desarrollo en serie de Taylor: e x = 1 + x + x2 2! + x3 xn + + 3! n! + = x n n! n=0 (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 end sum=sum+t; n=n+1; t=t*x/n; (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) = e x compare f con f (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 + x 2 + 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) PROPAGACIÓ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: R x = δx x (b) Si las cantidades x 1, x 2 cantidad z = x 1 x 2 > 0 se conocen con error δx, halle una cota al error absoluto en la (c) Si x 1 = 9 10 14 + 1, x 2 = 9 10 14 1, calcule en Matlab el valor z, llamando z 1 al resultado obtenido Estudie el error δz cometido (z = z 1 + δz), tomando como verdadero valor de z el resultado del cálculo z = x 1 x 2 x1 + x 2 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 x 1 y x 2 en punto flotante Qué relación hay entre el error relativo inicial y final? 5