Tema 0: Introducción al Cálculo Numérico Tema 0: Introducción al Cálculo Numérico Cálculos exactos versus cálculos aproximados Representaciones exactas y métodos exactos: √ 3; resolver x 2 − x − 4 = 0 Representaciones aproximadas y métodos aproximados: √ 3 ≈ 1.732050808; resolver x 7 − x 4 + 2x 2 − x + 2 = 0 Tema 0: Introducción al Cálculo Numérico Cálculos exactos versus cálculos aproximados Rep. exacta Libre de errores Produce cantidades exactas Lento, consume memoria Poco realista en contextos aplicados No siempre podemos producirla Rep. aproximada Conlleva un cierto error Propagación del error Rápido, consume poca memoria Realista Cálculo numérico: parte de las Matemáticas que se encarga de desarrollar métodos aproximados para resolver problemas matemáticos, y de analizar el error cometido. Tema 0: Introducción al Cálculo Numérico Errores. Notación en Coma Flotante Definition Sea z la solución exacta a un problema, y sea z̃ la solución aproximada. Se define el error absoluto como kz − z̃k (donde k · k representa el valor absoluto, cuando z, z̃ son números reales, o el módulo cuando se trate de cantidades vectoriales) Se define el error relativo como kz − z̃k kzk Esta última cantidad puede darse también en porcentaje (multiplicando por 100 la cantidad de arriba). Obs.: Si z = 0, sólo se trabaja con errores absolutos. Tema 0: Introducción al Cálculo Numérico Errores. Notación en Coma Flotante Definition Sea z la solución exacta a un problema, y sea z̃ la solución aproximada. Se define el error absoluto como kz − z̃k (donde k · k representa el valor absoluto, cuando z, z̃ son números reales, o el módulo cuando se trate de cantidades vectoriales) Se define el error relativo como kz − z̃k kzk Esta última cantidad puede darse también en porcentaje (multiplicando por 100 la cantidad de arriba). Ejemplo 1: (a) z = 631 y z̃ = 630; (b) z = 11 y z̃ = 10. Tema 0: Introducción al Cálculo Numérico Errores. Notación en Coma Flotante Definition Decimos que el número p ? aproxima a p con t cifras significativas si t es el mayor entero no negativo para el cuál kp − p ? k < 5 · 10−t kpk Ejemplo 2: p = 0.54617 y p ? = 0.54610. Tema 0: Introducción al Cálculo Numérico Errores. Notación en Coma Flotante Representación de un número en coma flotante: ± 0.d1 d2 . . . dk × 10n , donde 1 ≤ d1 ≤ 9, 0 ≤ di ≤ 9 con i = 2, . . . , k. La primera posición corresponde al signo. La parte 0.d1 d2 . . . dk recibe el nombre de mantisa. El exponente n puede ser positivo o negativo, y está acotado en valor absoluto. Tema 0: Introducción al Cálculo Numérico Errores. Notación en Coma Flotante Consecuencias de la representación en coma flotante: Todas las cantidades irracionales tienen que ser aproximadas!!! No podemos representar todas las cantidades, sólo algunas en un intervalo [a, b]: usualmente, [10−78 , 1076 ] Por debajo, underflow error; por encima, overflow error. Si tenemos un número de la forma ± 0.d1 d2 . . . dk dk+1 dk+2 . . . × 10n , necesitamos reducir el número de dı́gitos en la mantisa a k. El (los) método(s), en la siguiente diapositiva. Tema 0: Introducción al Cálculo Numérico Errores. Notación en Coma Flotante A partir del número y = 0.d1 d2 . . . dk dk+1 dk+2 . . . × 10n , Truncamiento: fl(y ) = 0.d1 d2 . . . dk × 10n Redondeo: si dk+1 ≥ 5, sumamos 1 a dk , y truncamos el desarrollo en el decimal k-ésimo; si dk+1 < 5, truncamos el desarrollo en el decimal k-ésimo sin sumar nada. El error que resulta al sustituir un número por su representación en coma flotante (ya sea por truncamiento o por redondeo) se llama error de redondeo. Tema 0: Introducción al Cálculo Numérico Errores. Notación en Coma Flotante Ejemplo 3: Sea π = 3.14159265 . . . Indı́quese cuál es su representación en coma flotante, considerando una mantisa de 5 dı́gitos, utilizando tanto truncamiento, como redondeo. Indı́quese el error de redondeo en ambos casos. Tema 0: Introducción al Cálculo Numérico Problemas numéricos. Algunos efectos “dramáticos” cuando trabajamos numéricamente: 1. Efecto de los errores de redondeo. 2. Problemas mal condicionados. Tema 0: Introducción al Cálculo Numérico Problemas numéricos. Efecto de los errores de redondeo: debemos tener cuidado con las cantidades muy pequeñas. Por ejemplo, consideremos la ecuación a·x =b Supongamos que a = 10−7 , b = 10−6 . Indı́quese qué sucede, cuando consideramos mantisas de 7, 6 y 5 dı́gitos, respectivamente. Tema 0: Introducción al Cálculo Numérico Problemas numéricos. Efecto de los errores de redondeo: en el caso anterior, resulta fácil predecir el problema de antemano. Lo delicado es que este tipo de situaciones pueden aparecer como etapas intermedias en la ejecución de algoritmos más largos... Tema 0: Introducción al Cálculo Numérico Problemas numéricos. Problemas mal condicionados: Consideremos los siguientes sistemas lineales 10x1 + 7x2 + 8x3 + 7.2x4 7.08x1 + 5.04x2 + 6x3 + 5x4 ?1 ≡ 8x1 + 5.98x2 + 9.89x3 + 9x4 6.99x1 + 4.99x2 + 9x3 + 9.98x4 10x1 + 7x2 + 8x3 + 7.2x4 7x1 + 5x2 + 6x3 + 5x4 ?2 ≡ 8x1 + 6x2 + 10x3 + 9x4 7x1 + 5x2 + 9x3 + 10x4 = 32 = 23 = 33 = 31 = 32 = 22.9 = 32.98 = 31.2 Tema 0: Introducción al Cálculo Numérico Problemas numéricos. Problemas mal condicionados: Solución de ?1 : x1 = −81, x2 = 137, x3 = −34, x4 = 22 Solución de ?2 : x1 = 7.28, x2 = −9.36, x3 = 3.54, x4 = −0.5 Tema 0: Introducción al Cálculo Numérico Problemas numéricos. Problemas mal condicionados: Cuando en un problema pequeños cambios en los datos (input) dan lugar a grandes diferencias en las respuestas (output), decimos que el problema está mal condicionado. Es intrı́nseco al problema, no al método matemático. Dificultad real en la práctica, debido a errores de redondeo. Suponen desafı́os a la hora de mejorar los métodos numéricos existentes. Posibilidad de ser detectados a priori: cálculo del condicionamiento de un problema. Tema 0: Introducción al Cálculo Numérico Tema 0: Introducción al Cálculo Numérico. 1. Cálculos exactos versus cálculos aproximados Decimos que un número √ está representado de forma exacta, si en dicha representación no hay error: por ejemplo, 3, π, e, 23 son representaciones exactas de distintos números. En cambio, una aproximación √ conlleva necesariamente un cierto error: por ejemplo, 1,732050808 es una aproximación de 3, y 0,666666 es una aproximación de 23 . Si bien las representaciones exactas son clásicas en Matemáticas, y tienen indudables ventajas, cuando queremos trabajar con calculadoras y herramientas informáticas (salvo que utilicemos software especializado) en general es necesario aproximar. Esto tiene ventajas y desventajas: por una parte, cuando aproximamos podemos realizar cálculos de manera rápida, sin consumir excesiva memoria en nuestros aparatos; sin embargo, el error crece conforme vamos operando con cantidades que inicialmente ya tenı́an un cierto error. A cambio, los cálculos realizados con cantidades exactas producen a su vez resultados exactos, pero al precio de generar expresiones progresivamente más complicadas, y costosas de almacenar y manejar. Por ejemplo, si evaluamos el polinomio f (x) = x2 − x − 2 en x = π obtenemos f (π) = π 2 − π + 2, que es una expresión más complicada que la inicial (π); sin embargo, si aproximamos x ≈ 3,141592654 se tiene que f (π) ≈ 4,728011750, que es del mismo tamaño que la expresión inicial. Asimismo, decimos que un método de resolución de un problema es exacto si produce soluciones exactas; por ejemplo, para resolver la ecuación x2 − x − 4 = 0 podemos aplicar la fórmula usual, que nos devuelve como soluciones (exactas): √ √ 1 ± 17 1 17 x= = ± 2 2 2 A cambio, decimos que un método es aproximado si proporciona una aproximación de la solución. Los métodos exactos tienen la indudable ventaja de producir resultados libres de errores. Sin embargo, por un lado no siempre es posible aplicar este tipo de métodos. Por ejemplo, no existe ninguna fórmula general que permita calcular las soluciones de una ecuación polinómica de grado superior a 4, o de ecuaciones que no son polinómicas: si queremos resolver x2 + ln(x) = 0, no existen métodos exactos que proporcionen la solución; sin embargo, un método aproximado, aplicado a esta ecuación, arroja la solución 0,652919. Por otra parte, cuando el problema incorpora datos que tienen que ver con procesos de medida (y que en consecuencia están afectados de un cierto error), pierde sentido abordar su resolución de manera exacta. Podemos resumir del siguiente modo las caracterı́sticas de las representaciones y métodos exactos/aproximados: Rep. exacta Rep. aproximada Libre de errores Conlleva un cierto error Produce cantidades exactas Propagación del error Lento, consume memoria Rápido, consume poca memoria Poco realista en contextos aplicados Realista No siempre podemos producirla Podemos definir el Cálculo Numérico como la parte de las Matemáticas que se encarga de desarrollar métodos aproximados para resolver problemas matemáticos, y de estudiar 1 el error cometido. Las caracterı́sticas de los métodos numéricos son, esencialmente, las que constan en la columna de la derecha del cuadro anterior. 2. Errores. Notación en Coma Flotante. Cuando realizamos cálculos aproximados, o con cantidades aproximadas, es importante medir el error que estamos cometiendo. En este sentido, consideramos la siguiente definición. Definición: Sea z la solución exacta a un problema, y sea z̃ la solución aproximada. Se define el error absoluto como kz − z̃k (donde k · k representa el valor absoluto, cuando z, z̃ son números reales, o el módulo cuando se trate de cantidades vectoriales) Se define el error relativo como kz − z̃k kzk Esta última cantidad puede darse también en porcentaje (multiplicando por 100 la cantidad de arriba).1 1 Ejemplo 1: Si z = 631 y z̃ = 630, se tiene un error absoluto de 1, y un error relativo de 631 ; en porcentaje, 0,1585 % (es decir, muy bajo). Sin embargo, si z = 11 y z̃ = 10, se tiene también un 1 error absoluto de 1, pero en cambio un error relativo de 11 , en porcentaje, 9 %. Definición: Decimos que el número p? aproxima a p con t cifras significativas si t es el mayor entero no negativo para el cuál kp − p? k < 5 · 10−t kpk Ejemplo 2: Si p = 0,54617 y p? = 0,54610, se tiene que kp − p? k = 0,0001281652233 < 0,0005 = 5 · 10−4 kpk Por lo tanto, p? es una aproximación de p con cuatro cifras significativas. En buena medida, la importancia del Cálculo Numérico tiene que ver con la utilización masiva de ordenadores para realizar cálculos. En este sentido, en un ordenador los números se almacenan y manipulan mediante su representación en coma flotante: utilizando la notación decimal, ésta es2 ± 0.d1 d2 . . . dk × 10n , 1 ≤ d1 ≤ 9, 0 ≤ di ≤ 9 para i = 2, . . . , k donde: 1 Si z = 0, sólo se trabaja con errores absolutos. En realidad, lo que damos aquı́ es lo que se llama la “forma normalizada”. Hay otras formas equivalentes, si no exigimos que la mantisa esté comprendida entre 0 y 1. Observemos también que aquı́ utilizamos notación decimal, aunque en los ordenadores se utiliza no el sistema decimal, sino el binario, donde cada número se representa mediante una secuencia de 1 y 0. 2 2 la primera posición corresponde al signo. la parte 0.d1 d2 . . . dk recibe el nombre de mantisa. el exponente n puede ser positivo o negativo, y está acotado en valor absoluto. Como consecuencia, para cada número sólo podemos almacenar una cantidad finita de dı́gitos. Esto supone un problema, con respecto a la concepción habitual de las Matemáticas. En concreto, buena parte de las Matemáticas que manejamos operan sobre el conjunto de los números reales, √ R. Sin embargo, en este conjunto todas las cantidades irracionales ( 3, π, e, etc.) tienen infinitas cifras decimales que no se repiten. En consecuencia, cuando trabajamos con ellas en un ordenador (salvo que se utilicen paquetes de software apropiado, llamados de çálculo simbólico“) no tenemos más remedio que aproximarlas. En concreto, para representar un número en coma flotante tenemos que producir una mantisa con k dı́gitos; si el número es y = 0.d1 d2 . . . dk dk+1 dk+2 . . . × 10n , tenemos dos opciones: Truncamiento: fl(y) = 0.d1 d2 . . . dk × 10n Redondeo: si dk+1 ≥ 5, sumamos 1 a dk , y truncamos el desarrollo en el decimal k-ésimo; si dk+1 < 5, truncamos el desarrollo en el decimal k-ésimo sin sumar nada. El error que resulta al sustituir un número por su representación en coma flotante (ya sea por truncamiento o por redondeo) se llama error de redondeo. Observemos que en coma flotante podemos representar números positivos (resp. negativos) en un intervalo [a, b]; por ejemplo, bajo determinadas condiciones este intervalo es [10−78 , 1076 ]. Por lo tanto, para el ordenador cualquier número por debajo del extremo de la izquierda, es 0 (esto se conoce como underflow error); si en los cálculos aparecen cantidades por encima del extremo de la derecha, el ordenador no puede representarlo y produce un mensaje de error (overflow error). Ejemplo 3: Consideremos el número π, que puede escribirse, en forma decimal, como π = 3,14159265 . . . Si consideramos una mantisa de cinco dı́gitos, entonces el truncamiento a cinco decimales producirı́a 3,1415, que en forma normalizada darı́a 0,31415 × 101 Si aplicamos el redondeo, puesto que el último decimal (5) está seguido por un número mayor o igual que cinco (9), se tendrı́a 0,31416 × 101 El error de redondeo, en el primer caso, es del orden de 10−5 ; en el segundo caso, el error es del orden de 10−6 . 3 3. Problemas numéricos. El hecho de trabajar con cantidades aproximadas es generalmente inevitable en Matemática Aplicada. Esto no siempre es problemático, pero en determinados casos puede ocasionar efectos dramáticos. Aquı́ veremos dos ejemplos de este tipo. En primer lugar, veamos el efecto que puede llegar a tener el error de redondeo. Es necesario tener cuidado cuando por efecto de dicho error, acabamos trabajando con cantidades muy pequeñas. Por ejemplo, supongamos que tenemos que resolver la ecuación a·x=b donde a, b son dos números que conocemos, y x es la incógnita que deseamos determinar. Supongamos ahora que a = 10−7 , b = 10−6 . Veamos entonces la respuesta que obtenemos, según el número de dı́gitos que consideremos en la mantisa: Si utilizamos 7 dı́gitos, obtenemos la respuesta exacta: x = 10. Si utilizamos 6 dı́gitos, para el ordenador a = 0. Por lo tanto, obtendrı́amos como respuesta: la ecuación no tiene solución (ya que corresponderı́a a 0 · x = 10−6 ). Si utilizamos 5 dı́gitos, tendriamos que a = b = 0. Por lo tanto, obtendrı́amos como respuesta: la ecuación tiene infinitas soluciones (ya que corresponderı́a a 0 · x = 0). Como segundo ejemplo, consideremos el siguiente sistema lineal: 10x1 + 7x2 + 8x3 + 7,2x4 = 7,08x1 + 5,04x2 + 6x3 + 5x4 = 8x 1 + 5,98x2 + 9,89x3 + 9x4 = 6,99x1 + 4,99x2 + 9x3 + 9,98x4 = 32 23 33 31 La solución del sistema es x1 = −81, x2 = 137, x3 = −34, x4 = 22 Si ahora consideramos el siguiente sistema, cuyos coeficientes están muy próximos al anterior, 10x1 + 7x2 + 8x3 + 7,2x4 = 32 7x1 + 5x2 + 6x3 + 5x4 = 22,9 8x 1 + 6x2 + 10x3 + 9x4 = 32,98 7x1 + 5x2 + 9x3 + 10x4 = 31,2 La solución de este sistema es x1 = 7,28, x2 = −9,36, x3 = 3,54, x4 = −0,5, muy diferente de la anterior!! Este fenómeno no sucede habitualmente, sino únicamente para determinados ejemplos (problemas). En ese caso se dice que se trata de un problema mal condicionado: es decir, decimos que un problema está mal condicionado cuando pequeños cambios en los datos (input) dan lugar a grandes diferencias en las respuestas (output). Este tipo de problemas suponen una complicación real cuando aplicamos métodos numéricos, puesto que sólo con errores de redondeo ya se introducen pequeñas diferencias. También en el caso en 4 que los coeficientes de nuestro problema provienen de un proceso de medida, ya que todos los procesos de medida introducen pequeños errores. Los problemas mal condicionados tienen una dificultad intrı́nseca debida al problema en sı́, y no tanto al método matemático que estemos utilizando. Sin embargo, suponen un desafı́o a la hora de desarrollar métodos mejores, ya que un método mejor tı́picamente manejará esos casos de manera más eficiente. Los problemas mal condicionados no siempre pueden solucionarse satisfactoriamente, pero en determinados casos pueden detectarse a priori; para ello se puede calcular el condicionamiento o número de condición del problema, que es un parámetro que mide hasta qué punto el problema está o no mal condicionado. El cálculo efectivo de este tipo de números está más allá de los objetivos de este curso. Cuestiones: (1) Calcula el error absoluto y el relativo que se produce cuando redondeamos el valor de 2/3 a la quinta cifra decimal. Indica el número de dı́gitos significativos que tendrı́a la aproximación considerada. √ (2) Escribe el valor en coma flotante de 3 cuando utilizamos una mantisa de: (a) cinco dı́gitos; (b) siete dı́gitos. Idem para el valor de − π12 . (3) Describe el problema que plantea el tratamiento de números irracionales en una computadora. (4) Define el concepto de condicionamiento de un problema, y las consecuencias del mismo; proporciona ejemplos. 5