An´
alisis Num´
erico
Julio C. Carrillo E.
Ser capaz de automatizar los c´alculos con una computadora es una habilidad esencial para los ingenieros, matem´aticos y cient´ıficos. Aun-que hay una amplia variedad de problemas pr´acticos en cuya solu-ci´on las computadoras se utilizan, tambi´en hay un n´ucleo de ideas comunes a muchos c´alculos con computadoras y muchas disciplinas profesionales.
1.
Terminolog´ıa
La terminolog´ıa que a continuaci´on se define, busca servir de gu´ıa, m´as que ser un ejercicio de pureza sem´antica. Esta terminolog´ıa ser-vir´a adem´as para establecer el contexto en el cual se utilizaran las definiciones de t´erminos en el resto del curso.
1.1. C´alculo num´erico y simb´olico
Un c´alculo num´erico involucra n´umeros, a diferencia de los s´ımbolos para los cuales los n´umeros son representados en una ecuaci´on. En c´alculo num´erico, por lo tanto, se produce un resultado num´erico y no una expresi´on matem´atica. Cuando se eval´ua una expresi´on num´erica, se realizan c´alculos num´ericos. En contraste, un c´alculo simb´olico involucra la manipulaci´on de s´ımbolos matem´aticos sin que necesariamente ellos hagan referencia a los valores num´ericos que tales s´ımbolos puedan tomar. As´ı,
1,862 − 1
1,86 − 1 = 2,86 es un c´alculo num´erico y
x2 − 1
x − 1 = x + 1
Un aspecto importante del c´alculo num´erico es el uso de aproxima-ciones en lugar de valores num´ericos exactos. De hecho, parte im-portante del c´alculo num´erico consiste en obtener la aproximaci´on de cantidades que no se pueden calcular exactamente mediante un n´umero finito de d´ıgitos. Por ejemplo, la fracci´on 1/3 es una expre-si´on simb´olica que representa la diviexpre-si´on del entero 1 por el entero 3. Cuando se eval´ua esta expresi´on a mano, o mediante una compu-tadora, se obtiene como resultado una expresi´on num´erica truncada, la cual depende de cuantos d´ıgitos decimales se permiten en la re-presentaci´on de tal resultado. As´ı, el resultado puede ser 0,333333, 0,33333333 o alg´un otro valor. Igualmente, el valor de π utilizado en un programa de computadora ser´a una aproximaci´on truncada del valor simb´olico exacto. Cuando un humano o una computadora rea-liza operaciones matem´aticas con cantidades num´ericas, tales como 0,33333 en lugar de 1/3, el proceso es llamado c´alculo num´erico. El c´alculo simb´olico puede involucrar s´ımbolos, como x, n´umeros
racio-nales, como 1/3, o n´umeros trascendentes, como π, sin que exista restricci´on alguna sobre el n´umero de d´ıgitos asociados con estos s´ımbolos.
Los c´alculos num´ericos son realizables con lenguajes de programaci´on tales como Fortran, Basic, Pascal, C, C++ y Java. La representaci´on de los c´alculos num´ericos en las computadoras se realizan mediante una representaci´on binaria (i.e., mediante 0 y 1). As´ı, cuando a una variable se le asigna un valor num´erico, la computadora lo convierte a un n´umero binario y de esta manera lo almacena en su memo-ria. Como no todos los n´umeros decimales pueden ser representados exactamente en base 2, el hecho de asignarle un valor num´erico a una variable introduce una aproximaci´on. El error en esta aproximaci´on contribuye a subsecuentes errores en la evaluaci´on de formulas que utilizan esta variable. Los valores que surgen al trabajar con valo-res num´ericos son usualmente peque˜nos. En algunos casos, errores num´ericos peque˜nos pueden ser significativos.
Los c´alculos simb´olicos pueden ser realizados por programas de compu-tadora (software) tales como Reduce R, Derive R, Macsyma R, y Mathe-matica R. Tales c´alculos pueden realizarse sin las aproximaciones que son necesarias para el c´alculo num´erico. En general, esto hace que los resultados num´ericos sean obtenidos m´as r´apidamente con un c´alculo num´erico que con la evaluaci´on num´erica de un c´alculo simb´olico. El c´alculo simb´olico es un aspecto complementario e importante de la inform´atica, sin embargo, los c´alculos simb´olicos son utiliza-dos ´unicamente para resaltar el comportamiento fundamental de los c´alculos num´ericos.
1.2. M´etodos num´ericos y algoritmos
Aunque “m´etodo num´erico” suele considerarse como sin´onimo de “al-goritmo num´erico”, no es as´ı. Un m´etodo num´erico es una descrip-ci´on matem´atica de los c´alculos a realizar; un algoritmo num´erico es
una sucesi´on precisa de acciones para obtener un resultado que se desea obtener. La distinci´on entre ellos reconoce impl´ıcitamente que un buen m´etodo (i.e., uno que tiene unas propiedades matem´aticas convenientes) puede ser implementado con diferentes algoritmos, es posible que un algoritmo sea mejor, por alguna raz´on, que otro al-goritmo que involucra el mismo m´etodo.
Muchas de las empresas humanas involucran algoritmos. Un prop´osito espec´ıfico puede ser obtenido mediante diferentes m´etodos, y cada m´etodo puede realizarse con diferentes algoritmos. Por ejemplo, exis-ten varias formas de obexis-tener una taza de cafe. Podr´ıa utilizarse una cafetera de filtro, una m´aquina de caf´e expreso, o cualquier otro dis-positivo. Una vez el “m´etodo mec´anico” es elegido, uno puede utilizar m´as de un algoritmo para elaborar el caf´e. Por ejemplo, puede utili-zar granos de caf´e y otro caf´e molido.
El que un algoritmo de elaboraci´on del caf´e haga o no una diferencia significativa depende de la precisi´on y la exactitud del paladar. La
elecci´on del algoritmo puede ser tambi´en influenciada por el uso que se le de a la taza de caf´e. As´ı, es posible que un algoritmo para obtener un capuchino sea m´as apropiado para obtener una taza de caf´e cuando se consume un postre muy fino o un desayuno elegante, mientras que un algoritmo para obtener una taza de caf´e mediante una cafetera de filtro es m´as apropiado cuando se estudia tarde en la noche.
En general, la elecci´on de un algoritmo la determina el balance al-tamente subjetivo de tres criterios: f´acil de entender, exactitud en el logro del objetivo propuesto, y eficiencia en el uso de recursos inform´aticos.
Una vez el algoritmo es escogido, debe ser implementado en un c´odigo de computadora, o simplemente, c´odigo. Un c´odigo es la traducci´on de un algoritmo es una sucesi´on de declaraciones en un lenguaje de computadora (o lenguaje de programaci´on) en particular. Al igual que un m´etodo puede ser implementado por diferentes algoritmos,
tambi´en un algoritmo puede ser implementado mediante diferentes c´odigos. La forma de obtener un c´odigo en un lenguaje de progra-maci´on que sea eficaz, es un asunto que se debe discutir despu´es.
1.3. M´etodos num´ericos y an´alisis numerico
El an´alisis num´erico es el estudio de los m´etodos num´ericos. Es po-sible realizar el an´alisis num´erico sin utilizar una computadora. De hecho, muchas de las t´ecnicas utilizadas hoy d´ıa fueron desarrolladas mucho antes de la presente era digital. Cuando los matem´aticos, inge-nieros y cient´ıficos no pueden encontrar una soluci´on anal´ıtica exacta de un problema pr´actico, ellos desarrollan procedimientos secuen-ciales para calcular aproximaciones de tal soluci´on anal´ıtica. En la ´epoca en que los c´alculos se realizaban manualmente, la importancia de minimizar esfuerzos mientras se maximiza la precis´on permiti´o el desarrollo del an´alisis num´erico como una rama de las matem´aticas.
El ´enfasis de an´alisis num´erico es mas acerca de entender el com-portamiento general de los m´etodos num´ericos y menso sobre como aplicar estos m´etodos a la soluci´on de un problema en particular. La invenci´on de los computadores digitales modernos y sus aplicaciones a todos los aspectos de las ciencias y la industria a aumentado la importancia del an´alisis num´erico.
Los resultados del an´alisis num´erico ayudan a elegir un m´etodo apro-piado y el algoritmo. Ellos tambi´en dan informaci´on a priori impor-tante sombre las limiimpor-tantes del m´etodo y una estimaci´on de la pre-cisi´on (accuracy) del resultado obtenido. Al usar los resultados del an´alisis num´erico, un programador pude incrementar la probabilidad que el resultado obtenido este m´as cercano de la soluci´on “verdade-ra”. Sin el an´alisis num´erico, los programadores podr´an descubrir los m´eritos de cada m´etodo por experimentaci´on (ensayo y error), pero tambi´en, el puede suceder que sea dif´ıcil generalizar el conocimiento ganado durante el desarrollo de cualquier otro programa.
De acuerdo con esta perspectiva, este curso de an´alisis num´erico bus-ca ser intermedio entre el an´alisis num´erico y la implementaci´on de t´ecnicas num´ericas. Por esto, los resultado del an´alisis num´erico ser´an utilizados para anticipar el desempe˜no de los m´etodos num´ericos y para explicar la diferencia entre los correspondiente m´etodos. Aun-que la experimentaci´on puede ser usada para motivar la comprensi´on, esta nunca podr´a ser un substituto del an´alisis.
2.
Sistemas num´
ericos y errores de c´
alculo
Es necesario considerar los m´etodos para representar n´umeros en un computador y los errores que se generan por esta representaci´on. Tambi´en es necesario considerar las fuentes de los diferentes tipos de errores computaciones y su subsecuente propagaci´on.
2.1. Fuentes de error
Desde el punto de vista de los m´etodos num´ericos, usualmente in-teresa considerar las fuentes de error que puedan surgir debido a:
1. Errores de c´omputo por hardware (misiles patriot, guerra del Golfo P´ersico). Anterior a la era de los computadores estos errores proven´ıan de los c´alculos num´ericos realizados a mano; en la actualidad, se refiere en especial al error que es producto del dise˜no en la l´ogica de los procesadores de los computadores. 2. Datos cr´ıticos incorrectos.
3. Errores en el software (M´etodos num´ericos y algorit-mos) (bugs).
4. Errores debido al c´alculo num´erico o errores de m´aquina (chopping and rounding errors): dado que la aritm´etica que rea-liza una calculadora o una computadora (rep. decimal finita) es distinta de la aritm´etica de los n´umeros reales con la cual esta-mos acostumbrados a trabajar (rep. decimal finita o infinita). Desde el punto de vista del an´alisis num´erico, a parte de lo anterior, tambi´en interesan las fuentes de error ocasionadas por,
1. Modelado de un problema f´ısico.
2. Errores de programaci´on (An´alisis num´erico) (blunder ) 3. Incertidumbre de los datos (inestabilidad num´erica, ill
con-ditioned problems)
3.
Representaci´
on de n´
umeros en
compu-tadoras
En general, los computadores tienen un modo entero y un modo de punto flotante para representar los n´umeros. El primero modo es uti-lizado para representar n´umeros enteros y el segundo para represen-tar n´umeros reales. La representaci´on de punto flotante de n´umeros reales es muy cercana a lo que es llamada la notaci´on cient´ıfica.
Sea β que denota la base del n´umero a ser usado en la computadoraa
Entonces un n´umero no nulo x es almacenado en la computadora esencialmente de la forma
x = σ · (.a1a2 · · · an)β · βe, (1)
a
Los n´umeros utilizados por computadoras son decimales. Muchos compu-tadores utilizan base 2 (binaria), o alguna de sus variantes como en base 8 (octal) o base 16 (hexadecimal).
con σ = ±, 0 ≤ ai ≤ β − 1, e is an integer, and (.a1a2 · · · an)β = a1 β1 + a2 β2 + · · · + an βn .
El t´ermino σ es llamado el signo, e es llamado el exponente, y e es llamado el exponente, o caracter´ıstica, y (.a1a2 · · · an)β es llamada
la mantisa del n´umero de punto flotante x. El n´umero β es llama-do tambi´en radix y el punto precedienllama-do a1 es el punto radix, por
ejemplo, el punto decimal cuando β = 10 y el punto binario cuando β = 2. El entero n da el n´umero de d´ıgitos base β en la representa-ci´on. Siempre asumimos
a1 6= 0
dando la que es llamada la representaci´on de punto flotante norma-lizada. Tambi´en asumimos que
lo cual limita el posible tama˜no de x.
M´aquina S/D R/C β n L U δ M
IBM 3033 S C 16 6 −64 63 9.5E-7 1.66E7
IBM 3033 D C 16 6 −64 63 2.22.5E-16 9.01E15
S/D: precisi´on simple o doble, R/C: redondeo o recorte, δ: unidad de redondeo, M : cota exacta para enteros.
3.1. Recorte y redondeo
Muchos n´umeros reales x no pueden ser representados exactamente mediante la representaci´on de punto flotante definida anteriormente, y por ello deben ser aproximados por un n´umero representable en la m´aquina, si es posible. Dado un n´umero real arbitrario x, f l(x) denotar´a su aproximaci´on en la m´aquina, si esta existe. Existen dos formas de obtener f l(x) a partir de x: recortando o redondeando.
Sea x un n´umero real escrito de la forma
x = σ · (.a1a2 · · · anan+1 · · · )β · βe
con a1 6= 0 y asumimos que e satisface (2). La representaci´on de
m´aquina recortada de x es
f l(x) = σ · (.a1a2 · · · an)β · βe.
La raz´on de introducir recorte es porque muchos computadores utili-zan m´as recorte que redondeo despu´es de cada operaci´on aritm´etica.
Ejemplo 1. El n´umero π tiene una representaci´on decimal infinita de la forma π = 3,14159265 · · · . Escrito en forma decimal normalizada es
π = 0.314159265 · · · × 101.
La forma de punto flotante de π usando recorte a 5 d´ıgitos es f l(π) = 0.31415 × 101 = 3.1415,
y usando redondeo a 5 d´ıgitos es
f l(π) = 0.31416 × 101 = 3.1416.
La representaci´on redondeada de x es dada como f l(x) = σ · (.a1a2 · · · an)β · βe si 0 ≤ an+1 < β2 σ · [(.a1a2 · · · an)β + (.0 · · · 01)β] · βe, si β2 ≤ an+1 < β, donde (.0 · · · 01)β = β−n.
3.2. Almacenamiento
Los computadores almacenan un n´umero no con precisi´on infinita sino m´as bien de una manera aproximada que le permita empaquetarlo en un n´umero fijo de bits (d´ıgitos binarios) o bytes (grupos de 8 bites). Casi todos los computadores le permiten al programador elegir entre diferentes representaciones o tipos de datos. El tipo de datos puede diferir en el n´umero de bits utilizados (longitud de la palabra), pero tambi´en en si el n´umero almacenado es representado en formato de punto fijo (int o long) o en formato de punto flotante (float o double).
Un n´umero entero tiene representaci´on exacta. La aritm´etica de n´umeros en representaci´on entera exacta es tambi´en exacta, con la aclaraci´on de que (i) la respuesta no puede estar por fuera del rango de enteros (usual-mente con signo) que puedan ser representados, y (ii) que la divisi´on es representada mediante un resultado entero, sin considerar cualquier residuo entero.
En representaci´on de punto flotante, un n´umero es representado inter-namente por un bit con signo s (interpretado como mas o menos) , un exponente entero exacto e, y una mantisa entera positiva exacta M .
Juntas representan el n´umero
s · M · βe−E (3)
donde nuevamente β es la base de la representaci´on (usualmente es β = 2, pero algunas veces β = 16), y E es el sesgo del exponente (para la repre-sentaci´on adecuada de n´umeros con magnitud peque˜na), una constante entera fija para cualquier m´aquina y representaci´on dada. Como ejem-plo, ver la siguiente tabla. Por ejemejem-plo, la representaci´on de 1/2 en un formato de t´ıpico de 32 bits (4 bytes), o de precisi´on simple, se escribe de la forma 1 2 = s z}|{ 0 e z }| { 1 0 0 0 0 0 0 0 M z }| { 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 . En representaci´on binaria, este sistema de representaci´on da un n´umero de punto flotante de la forma
donde 1023 = 2 − 1 es la magnitud del mayor n´umero de 10 bits que se puede representar en base 2. As´ı, la mayor magnitud del n´umero en base 10 que se puede expresar en doble precisi´on es
21023 ∼ 9 × 10307
Tipo de dato Fortan Rango
Entero −32768 ≤ I ≤ 32767 −3,40 × 1038 ≤ x ≤ −1,18 × 10−38 Simple precisi´on o 1,18 × 10−38 ≤ x ≤ 3,40 × 1038 −1,8 × 10308 ≤ x ≤ −2,23 × 10−308 Doble precisi´on o 2,23 × 10−308 ≤ x ≤ 1,80 × 10308
Complejo a + bi, donde i = √−1 y
Para la mayor´ıa de n´umeros reales x, se tiene que f l(x) 6= x. En este caso puede demostrarse que
x − fl(x) x = −ǫ (error relative) donde −β−n+1 ≤ ǫ ≤ 0 f l(x) recortado (4) −12β−n+1 ≤ ǫ ≤ 1 2β−n+1 f l(x) redondeado (5)
Esta f´ormula es escrita de la forma equivalente f l(x) = (1 + ǫ)x
con ǫ dado por (4) y (5). En consecuencia, f l(x) se puede considerar como una peque˜na perturbaci´on de x. Esta f´ormula de f l(x) tambi´en permite tratar precisamente con los efectos de error por recorte o redondeo en operaciones aritm´eticas en computadoras. La definici´on de f l(x) se debe a Wilkinson, y es ampliamente usada en el an´alisis de los efectos de error por redondeo.
3.3. Exactitud (accuracy ) de la representaci´on de punto
flotan-te
Tipo bit del signo bits del exponente bits de la mantisa Total de bits sesgo del exponente Media1 1 5 10 16 15 Simple 1 8 23 32 127 Doble 1 11 52 64 1023 Extendida 1 15 112 128 16383