Capitulo # 1 - V1.pdf

download Capitulo # 1 - V1.pdf

of 31

Transcript of Capitulo # 1 - V1.pdf

  • 5

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    CAPITULO 1: REPRESENTACIN DE NMEROS REALES EN COMPUTADORA Y ERRORES

    PROBLEMA: Uno de los requisitos para utilizar apropiadamente una computadora para realizar clculos matemticos, es entender cmo sta representa los nmeros reales; este conocimiento permite comprender, en particular, las limitaciones de la representacin y los errores que podran resultar.

    El proceso de representacin de nmeros reales en computadora comprende, principalmente, la conversin sistema decimal sistema binario y la

    representacin o escritura lectura en el soporte fsico de la computadora.

    1.1 SISTEMAS NUMERICOS

    Un sistema numrico para representar nmeros reales est caracterizado por una base b y un conjunto de dgitos di. Algunos sistemas relacionados con la representacin numrica en computadora son:

    SISTEMA BASE DIGITOS decimal 10 0 1 2 3 4 5 6 7 8 9

    binario 2 0 1

    octal 8 0 1 2 3 4 5 6 7

    hexagesimal 16 0 1 2 3 4 5 6 7 8 9 A B C D E F

    Nota: en todos los sistemas, por familiaridad, los dgitos se representan en el sistema decimal; sin embargo, el sistema hexagesimal necesita ms dgitos de los que posee el sistema decimal por lo que se utiliza las letras A, B, C, D, E y F para completar el conjunto de dgitos, ellos corresponden a los nmeros 10, 11, 12, 13,

    14 y 15 del sistema decimal, respectivamente.

    Notacin: los nmeros escritos en un determinado sistema sern representados entre parntesis y la base ser indicada en subndice i.e. (...,...)b

    El sistema ms utilizado es el sistema decimal, se cree que el uso de los 10 dedos para la aritmtica es el origen de esa preferencia. Naturalmente, el sistema decimal

    ser utilizado como sistema de referencia.

    Las computadoras usan el sistema binario para representar los nmeros reales, el primer problema que se considerar entonces es la operacin de conversin ms

    general de un sistema cualquiera al sistema decimal y viceversa.

    1.2 CONVERSIN ENTRE SISTEMAS NUMRICOS

    1.2.1 Conversin al Sistema Decimal

    Para entender la representacin de un nmero en un sistema numrico, es til recordar que sta no es ms que una forma condensada de escribir los nmeros, que

    se basa en la utilizacin del cero y en la asignacin de un peso a la posicin del dgito en la representacin e.g. el nmero 354.69 escrito en el sistema decimal

    representa:

    ( ) 2 1 0 1 210

    345.69 3*10 4 *10 5*10 6 *10 9 *10

    = + + + +

  • 6

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    Se observa que, a partir del punto decimal, a la izquierda, cada dgito debe multiplicarse por una potencia de base 10 positiva que corresponde a su posicin

    calculada desde el punto decimal disminuida de una unidad; a la derecha, cada dgito debe multiplicarse por una potencia negativa de base 10 que corresponde a

    su posicin calculada desde el punto decimal.

    Por lo que precede y dado que los dgitos y base de un sistema ya estn escritos en decimal, la conversin de cualquier sistema al decimal se reduce a sumar los

    productos de los dgitos por potencias de la base del sistema en consideracin utilizando la regla sealada anteriormente e.g.

    ( ) ( )3 2 1 0 1 2 31101.101 1* 2 1* 2 0 * 2 1* 2 1* 2 0 * 2 1* 2 8 4 0 1 0.5 0 0.125 13.625 102

    = + + + + + + = + + + + + + =

    ( ) ( )1015625.209403125.0125.0640020482

    8*21

    8*10

    8*61

    8*52

    8*03

    8*4812.4056 =+++++=

    +

    ++++=

    ( ) ( )1 0 1 2 1 0 1 2BC.A8 B *16 C *16 A *16 8 *16 11*16 12 *16 10 *16 8 *16 176 12 0.625 0.03125 188.65625 1016

    = + + + = + + + = + + + =

    1.2.2 Conversin del Sistema Decimal a Otro Sistema

    La operacin de convertir del sistema decimal a otro sistema se realiza en dos partes, se convierte la parte entera y la parte decimal por separado.

    Parte entera: bsicamente, partiendo con la parte entera como dividendo, se realiza la conversin efectuando divisiones enteras sucesivas del cociente entre la base del sistema hasta que el cociente sea nulo. La parte entera en el nuevo sistema se obtiene escribiendo los residuos en orden inverso al que fueron

    calculados.

    ( )10 2)

    )

    1 1

    -1 1 0 1 1 0

    1 2

    1 0 1 1 0 0 0

    2 3

    1 2 1 1 2 1 1 1

    1

    2 1 2 1 2

    ... ...

    * ( ...

    ( ...

    ( )

    ( ) *2 *2 *2

    2 2* *2 *2

    2* 2* *2 *2

    ...

    2* 2* *2

    m m

    m m m m

    m m

    m m

    m m

    m m

    m m m m m m

    n d d d d d d d d

    n n r d d d d d r

    n n r d d d d d r

    n n r d d d+

    = + + + +

    + = + + + + =

    = + = + + + + =

    = + = +

    =

    =

    2 2

    1 1 1 1 1

    2* 2*

    2*0

    m m

    m m m m m m m

    m m m m m

    nd r

    n n r d d d r

    n r d d r

    =

    = + = + =

    = + = =

    =

    1 1 0 1 1 0... ...

    m m m md d d d r r r r

    =

    Parte decimal: comenzando con la parte decimal del nmero, se efecta la conversin realizando multiplicaciones sucesivas de la parte decimal por la base del sistema, para cada multiplicacin se debe separar la parte entera de la parte decimal, hasta que el producto sea nulo o se haya obtenido la precisin o

    nmero de dgitos requeridos. La parte decimal en el nuevo sistema se obtiene escribiendo las partes enteras de las multiplicaciones en el orden en que

    fueron calculados.

  • 7

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    ( )10 21

    1 2

    2 3

    1 2 3

    1 2 3 1 2 3

    1 1

    1 1 2 1 1

    1 2

    2 2 3 2 2

    3 3 4

    .... ....

    ( ... ....)

    ( ... ....)

    (

    (0. ) 0. *2 *2 *2

    2*0. 0. *2 *2

    2*0. 0. *2 *2

    2*0. 0. *

    m

    m

    m

    m

    n

    n

    dec d d d d d d

    dec n dec d d d d

    dec n dec d d d d

    dec n dec d d

    +

    +

    = + + +

    + = + + + + =

    + = + + + + =

    + = +

    =

    =

    =

    =( )

    21 2 3 1 2 31 3

    3 3

    . .... ....

    ... ....)

    0. 0. 0.2 *2

    ...

    m

    mn

    dec d d d n n nd d

    +

    =

    + + + =

    =

    Ejemplo 1.1: se trata de convertir (74.38)10 a los diferentes sistemas mencionados,

    i) binario:

    parte entera parte decimal 74 = 2*37 + 0 0.38*2 = 0.76 + 0

    37 = 2*18 + 1 0.76*2 = 0.52 + 1

    18 = 2*9 + 0 0.52*2 = 0.04 + 1

    9 = 2*4 + 1 0.04*2 = 0.08 + 0

    4 = 2*2 + 0 0.08*2 = 0.16 + 0

    2 = 2*1 + 0 0.16*2 = 0.32 + 0

    1 = 2*0 + 1 0.32*2 = 0.64 + 0

    0.64*2 = 0.08 + 1....

    (74)10 = (1001010)2 (0.38)10 = (0.01100001...)2 (74.38)10 = (1001010.01100001...)2

    ii) octal:

    parte entera parte decimal 74 = 8* 9 + 2 0.38*8 = 0.04 + 3

    9 = 8* 1 + 1 0.04*8 = 0.32 + 0

    1 = 8*0 + 1 0.32*8 = 0.56 + 2

    0.56*8 = 0.48 + 4.....

    (74)10 = (112)8 (0.38)10 = (0.3024...)8 (74.38)10 = (112.3024...)8

    ii) hexagesimal:

    parte entera parte decimal 74 = 16* 4 + 10 (A) 0.38*16 = 0.08 + 6

    4 = 16* 0 + 4 0.08*16 = 0.28 + 1

    0.28*16 = 0.48 + 4...

    (74)10 = (4A)16 (0.38)10 = (0.614...)16 (74.38)10 = (4A.614...)16

    Nota: la parte entera siempre tiene un nmero finito de dgitos, en cambio la parte decimal puede tener una infinidad.

  • 8

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    1.2.3 Conversin de Binario a Octal o Hexagesimal, y Viceversa

    La conversin de decimal a binario o viceversa, puede ser bastante tediosa por cuanto el nmero de operaciones de divisin o multiplicacin puede ser bastante

    elevado. Sin embargo, se puede simplificar el proceso realizando primeramente la conversin a octal o hexagesimal y luego a binario; obviamente, este

    procedimiento es vlido si esta ltima operacin es inmediata, lo que es el caso.

    i) Binario a Octal o Hexagesimal

    Para obtener la parte entera, se agrupa los dgitos de la parte entera del nmero escrito en binario en grupos de 3 (octal) o 4 (hexagesimal) partiendo de la coma hacia la izquierda y cada grupo se convierte a decimal para obtener el dgito del sistema al que se quiere convertir.

    Para la parte decimal, se agrupa los dgitos de la parte decimal del nmero escrito en binario en grupos de 3 (octal) o 4 (hexagesimal) partiendo de la coma hacia la derecha y cada grupo se convierte a decimal para obtener el dgito del sistema al que se quiere convertir.

    Ejemplo 1.2: Se trata de convertir a octal y hexagesimal el nmero escrito en binario (100101010011.0010101011)2

    (100101010011.0010101011)2 = (100 101 010 011. 001 010 101 100)2 = (4 5 2 3. 1 2 5 4)8

    (100101010011.0010101011)2 = (1001 0101 0011. 0010 1010 1100)2 = (9 5 3. 2 A C)16

    Nota: cuando es necesario, se puede aumentar ceros a la izquierda de la parte entera o a la derecha de la parte decimal para completar los grupos, esta operacin no altera obviamente el nmero.

    ii) Octal o Hexagesimal a Binario

    Para convertir un nmero escrito en octal o hexagesimal al sistema binario, es suficiente convertir cada dgito en un nmero binario escrito con 3 dgitos

    (octal) o 4 dgitos (hexagesimal).

    Ejemplo 1.3: Se trata de convertir al sistema binario los nmeros (7 3 2 1. 6 3 0 1)8 y (3 A 7 F. 2 B C)16

    (7 3 2 1. 6 3 0 1)8 = (111 011 010 001. 110 011 000 001)2

    (3 A 7 F. 2 B C)16 = (0011 1010 0111 1111. 0010 1011)2

    1.3 REPRESENTACIN EN COMA FLOTANTE (FLOATING-POINT)

    La representacin en coma flotante (estndar) es un mtodo que permite escribir un nmero en cualquier sistema de manera nica. En esa representacin, se escribe el

    nmero de la siguiente forma:

  • 9

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    0con ...'

    *.... 021

    210

    exponente

    mantisa

    deee

    bdddd nm

    44 844 76

    43421

    donde y son los signos del nmero y el exponente, respectivamente, d1 a dn son los dgitos de la mantisa, b es la base del sistema y e1 a em son los dgitos del

    exponente, este ltimo debe ser entero. La condicin 00

    d asegura que la representacin de cada nmero es nica.

    Ejemplo 1.4: se trata de escribir nmeros escritos en los diferentes sistemas utilizando la representacin en coma flotante, (7 3 2 1. 6 3 0 1)8 = + 7.3216301 * 8

    +3 (-0.0 0 0 3 A F 2 B C)16 = - 3.AF2BC * 16

    -4 (-1001010.011001)2 = - 1.001010011001 * 2

    + 110

    1.4 ALMACENAMIENTO DE NMERO REALES EN LA COMPUTADORA

    De manera resumida, la computadora maneja como unidad bsica para almacenar informacin la palabra (word) que corresponde a un cierto nmero de bits (binary

    digit); un bit representa la unidad fsica bsica que permite a la computadora almacenar una variable que tiene dos estados, generalmente escritos 1 y 0. En la actualidad, prcticamente es uso comn las palabras a 32 bits; sin embargo, por comodidad, en lo que sigue se utilizarn palabras a 16 bits.

    Nota: el nmero de bits tambin se contabiliza en bytes = 8 bits.

    1.4.1 Almacenamiento en Coma Flotante (FlOATING-POINT)

    Para almacenar un nmero real con el mtodo de la coma flotante, se debe primeramente convertir el nmero al sistema binario, representarlo en coma flotante

    y, finalmente, almacenar el nmero en una palabra utilizando una determinada convencin fijada por el constructor de la computadora y que consiste en fijar: 1

    bit para el signo, e bits para el exponente y m bits para la mantisa.

    # bits Word # bits Signo # bits Exponente = e # bits Mantisa = m

    16 1 7 8

    32 1 8 23

    64 1 11 52

    Especficamente, para el almacenamiento, la representacin en coma flotante se escribe bajo la forma:

    mbbbx ....12)1(

    21

    ) (-1 =

    y se podra almacenar de la siguiente manera:

    Signo del nmero y exponente: se representa con 0 si es positivo y 1 si es negativo, se almacena en el primer bit.

  • 10

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    Exponente: se escribe como un entero con signo y e-1 dgitos, se almacena el signo en el segundo bit y los e-1 dgitos del exponente en los siguientes e-1 bits,

    Mantisa: dejando como sobreentendido (no se almacena) el primer dgito entero, se almacena en los ltimos m bits

    Esquemticamente, una palabra de 16 bits se representa entonces como 16 espacios, cada espacio corresponde a un bit donde se puede escribir un 1 o un 0.

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    Signo Exponente Mantisa

    Nota: Con palabras de 32 (64) bits, generalmente se utiliza 1 bit para el signo del nmero, 23 (52) bits para la mantisa y 8 (11) bits para el exponente.

    Ejemplo 1.5: Se trata de determinar la representacin del nmero real x = 74.77 que almacena la mquina.

    x = (74.89)10 = (4A.E35)16 = (0100 1010.1110 0011 0101)2 = + 1. 0010 1011 1000 1101 01 * 2+ 110

    ,

    como no se tiene espacio para almacenar todos los dgitos de la mantisa, se decide ignorar aquellos para los cuales no existe espacio, entonces:

    xA = + 1. 0010 1011 * 2+ 110

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1

    Nota: Se constata que el nmero que almacena la computadora no es exactamente x sino,

    xA = + 1. 0010 1011 * 2+ 110

    = (01 0010 10.11)2 = (4A.C)16 = (74.75)10

    Propiedades del Almacenamiento:

    Redondeo: ocurre frecuentemente que la mantisa posee ms de 8 dgitos y slo existen 8 bits para almacenar todos los dgitos de la mantisa; en ese caso, se debe decidir sobre cmo tomar en cuenta los dgitos que no pueden ser almacenados. Se puede proceder de dos maneras,

    i) Operacin de truncado o cortado: se ignoran todos los dgitos a partir del 9no, ii) Operacin de redondeo: se considera el valor del noveno dgito, si ste es 1, se escriben los primeros 8 dgitos con el 8vo dgito incrementado de una

    unidad, sin embargo, si es 0 se escriben los primeros 8 dgitos sin ninguna modificacin.

    Ejemplo 1.6: Para el ejemplo anterior se tendra, por truncado y redondeo, respectivamente, x = (74.89)10 = + 1.0010 1011 1000 1101 01 * 2+ 110

  • 11

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    Truncado: xA = + 1. 0010 1011 * 2+ 110

    = (74.75)10

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1

    Redondeo: xA = + 1. 0010 1100 * 2+ 110

    = (75.00)10

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    0 0 0 0 0 1 1 1 0 0 1 0 1 1 0 0

    El nmero limitado de bits para almacenar la mantisa hace que no sea posible representar exactamente el nmero, es as que en el ejemplo 1.6, el nmero

    que almacena la computadora con la tcnica del truncado es (74.75)10 y con la tcnica del redondeo (75.00)10. Esta situacin es una primera fuente de error

    en el clculo matemtico con computadoras; sin embargo, se puede atenuar este problema aumentando el nmero de bits para la mantisa, la mayora de las

    computadoras trabajan hasta hace unos aos con palabras de 32 bits, actualmente las computadoras trabajan con 64 bits (doble precisin). Como se

    mencion anteriormente, con palabras de 32 (64) bits, se utiliza 23 (52) bits para la mantisa.

    Por otra parte, es tambin obvio que la computadora representar el conjunto de nmeros reales no como un conjunto continuo de nmeros sino como un

    conjunto discreto de puntos e.g. en el ejemplo numrico anterior, suponiendo que se utiliza la tcnica del redondeo, la computadora no representar

    exactamente (74.89)10, los nmeros ms prximos que representar exactamente seran (74.75)10 y (75.00)10 y no existe ningn nmero real entre esos

    valores que la computadora pueda representar exactamente.

    Nota: en Matlab se prioriza la precisin respecto a la rapidez ya que utiliza palabras de 64 bits. Se puede constatar que (74.26)10 representa con el nmero

    74.890000000000001, es decir que a pesar de los 64 bits no representa exactamente dicho nmero.

    Nmero Positivo Ms Grande y Ms Pequeo No Nulo

    Dadas las caractersticas descritas para el almacenamiento de un nmero real por la computadora, sta no puede almacenar un nmero positivo

    arbitrariamente grande como tampoco un nmero no nulo positivo arbitrariamente pequeo.

    El nmero positivo ms grande y el nmero positivo no nulo ms pequeo que puede almacenar una computadora que trabaja con palabras de 16 bits, tienen

    las representaciones siguientes, respectivamente:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0

  • 12

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    que corresponden a xMG = + 1. 1111 1111 * 2+111111

    = 1.841071527669059*1019

    y a xMP = + 1. 0000 0000 * 2-111111

    = 1.084202172485504*10-19

    ,

    respectivamente

    Por lo tanto, esta propiedad es otra limitacin de la computadora ya que, por una parte, no se puede escribir nmeros positivos ms grandes que

    1.841071527669059*1019

    , de intentarlo se tendra una situacin de overflow y la computadora dejara de calcular (esta situacin se presenta por ejemplo

    cuando se realizan por inadvertencia divisiones por nmeros muy pequeos). En Matlab se tiene un mensaje con la palabra NaN (Not a Number).

    Por otra parte, no se podran tampoco escribir nmeros positivos no nulos ms pequeos que 1.084202172485504*10-19

    . En este se caso de tiene una

    situacin de underflow y la computadora asimila el nmero a cero y sigue calculando.

    Nota: en Matlab, el nmero positivo ms grande se denomina realmax y el ms pequeo no nulo realmin y tienen los valores, respectivamente,

    1.797693134862316*10308

    y 2.225073858507201*10-308

    .

    Unidad de Redondeo

    Este parmetro representa la sensibilidad o precisin de la computadora para almacenar los nmeros reales. Se define como el nmero real positivo ms

    pequeo tal que, el nmero que se obtiene al aadirle a uno, (1+), es representado por la computadora como un nmero mayor a uno. La unidad de redondeo depende del nmero de bits asignado a la mantisa, si por ejemplo la mantisa tiene m bits, se tiene:

    =+

    redondeopor

    dopor trunca

    2

    2

    )1(

    )(

    m

    m

    , para m = 8 se tiene

    =

    ==

    redondeopor

    dopor trunca

    50.001953122

    0.003906252

    9

    8

    Nota: En Matlab, este parmetro se denota eps y tiene el valor numrico eps = 2.220446049250313*10-16

    (= 2-52), lo que implicara que trunca.

    Optimizacin de la Representacin del Exponente:

    La representacin del exponente utilizando un bit para el signo no es la ms eficiente, debido a que el cero es representado por dos configuraciones, +0 y 0,

    respectivamente:

    2 3 4 5 6 7 8 2 3 4 5 6 7 8

    1 0 0 0 0 0 0 =-0 0 0 0 0 0 0 0 =+0

    La idea es evitar esa redundancia y utilizar una de las configuraciones para representar un nmero adicional: cuando se utiliza el segundo bit para escribir el

    signo del exponente, las valores que se puede almacenar en el exponente son los enteros que van de (63)10 a (+63)10,

    Bias para potencia ms pequeas

    Si se aade a cada trmino de esa secuencia +64 (bias), se genera una nueva secuencia que va de (+1)10 a (+127)10, como estos nmeros son todos

    positivos no se necesita almacenar el signo y, adems, todos ellos pueden ser representados con 7 bits, justo los asignados para almacenar el exponente.

  • 13

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    La optimizacin de la representacin resulta del hecho de que con 7 bits se puede generar 128 configuraciones, de stas 127 pueden ser utilizadas para

    representar la secuencia de (+1)10 a (+127)10 y queda una configuracin que representa el cero, que corresponde a los 7 bits con valores de cero i.e. ahora se puede representar con los 7 bits asignados al exponente la secuencia (0)10 a (127)10. Para obtener el exponente original, se debe sustraer a la secuencia

    64 (bias) con lo que se obtendra la nueva secuencia que se puede representar efectivamente en el exponente, de (64)10 a (+63)10. Al poderse almacenar

    en el exponente (64)10, ahora el nmero positivo no nulo ms pequeo que se puede escribir es 5.421010862427522*10-20

    . Esquemticamente:

    (Exponente)2

    con signo

    (Exponente)10 Aade

    Bias

    (Exponente)10

    modificado

    (Exponente)2

    modificado

    (Exponente)10

    modificado

    Sustrae

    Bias

    (Exponente)10

    correcto

    0 111111 = + 63 + 64 = + 127 1 111111 = + 127 - 64 = + 63

    . .

    0 000000 = + 0 + 64 =

    + 64 1 000000 = + 64 - 64 = 0

    1 000000 = - 0 + 64

    . .

    1 111111 = - 63 + 64 = + 1 0 000001 = + 1 - 64 = - 63

    0 000000 = 0 - 64 = -64

    De manera general, si el exponente consta de n bits, entonces el bias es igual a 2n-1

    para optimizar hacia los exponentes ms pequeos.

    Bias para potencias ms grandes

    En el caso de la mquina a 16 bits, donde se dispone de n = 7 bits para el exponente, el bias sera 63 y el rango del exponente va de -63 a +64, el nmero

    ms grande que se puede representar es 3.682143055338118*10+19

    . De manera general, para optimizar hacia los exponentes ms grandes, si se dispone de

    n bits para el exponente, se utiliza como bias 2n-1

    -1.

    En la tabla que sigue se muestran las operaciones en detalle:

    (Exponente)2

    con signo

    (Exponente)10 Aade

    Bias

    (Exponente)10

    modificado

    (Exponente)2

    modificado

    (Exponente)10

    modificado

    Sustrae

    Bias

    (Exponente)10

    correcto

    1 111111 = + 127 - 63 + 64

    0 111111 = + 63 + 63 = + 126 1 111110 = + 126 - 63 = + 63

    . .

    0 000000 = + 0 + 63 = + 63 0 111111 = + 63 - 63 = + 0

    1 000000 = - 0 + 63

    . .

    1 111111 = - 63 + 63 = + 0 0 000000 = + 0 - 63 = - 63

    almacenamiento lectura

    almacenamiento lectura

  • 14

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    Dependiendo de la mquina o software, un nmero se escribe entonces en la representacin en coma flotante bajo la forma:

    mbbbx ....12)1( 21

    bias - exponente =

    Nota: Se puede calcular el nmero total de nmero reales NR que la computadora representa exactamente, si m es el nmero de bits para la mantisa y e el nmero total de bits para el exponente,

    Con optimizacin: NR = 2*[(M-1)*E+1]+1=2*[(2

    m-1)*(2

    e)+1]+1=2

    m+e+1 - 2

    e+1 + 3,

    M = 2m es el nmero de valores que puede tomar la mantisa,

    E = 2e es el nmero de valores diferentes que el exponente puede tomar,

    El factor 2 se debe a que el nmero puede ser positivo o negativo.

    El producto se debe a que cada valor de la mantisa puede ser escrito con cada valor que puede tomar el exponente, salvo el uno que es

    separado.

    El valor 1 fuera del corchete toma en cuenta del cero que necesita una representacin especial.

    Para el caso de la mquina a 16 bits, m=8 y e=7 entonces NR = 65283.

    Recta Real Recta Real segn la computadora

    Ejemplo 1.7: Se trata de determinar la representacin del nmero real x = (-237.69)10 en binario con la tcnica del bias que favorece los exponentes

    pequeos, optimiza la mantisa y redondea. Calcular igualmente el nmero decimal correspondiente.

    Para determinar la representacin binaria con bias de un nmero decimal, las etapas a seguir son: convertir el nmero a binario pasando por hexagesimal y escribirlo en representacin en coma flotante, La conversin a

    x = (-237.69)10 = (-ED.B0)16 = (-1110 1101.1011 0000)2 = -1.1101 1011 0110*27,

    El clculo del exponente a ser almacenado utilizando el bias sera:

    e = 7 e + bias = 7+64 = 71 = (47)16 = (100 0111)2

    El nmero escrito en coma flotante con las tcnicas de optimizacin y por redondeo sera:

    0 0 -xmax +xmax

    xmin

  • 15

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    x = -1.1101 1011 0110*2100 0111

    xc = -1.1001 1011 * 2100 0111,

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    1 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1

    El nmero almacenado convertido a decimal es xc = -(20 +2

    -1 +2

    -2+ 2

    -4 + 2

    -5 + 2

    -7 +2

    -8)* 2

    +7 =237.5, donde al exponente almacenado se le ha sustrado

    el bias.

    Ejemplo 1.8: Se trata de calcular el nmero decimal almacenado utilizando tcnicas de optimizacin (con bias que favorece el exponente negativo) como,

    0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 1

    Para convertir a decimal el exponente: se convierte el exponente al sistema decimal y se sustrae el bias para obtener el verdadero exponente.

    Exponente = (0001111)2 = (15)10 Exponente correcto = 15-64 = -49

    Por lo tanto se tiene el nmero:

    x = +(1.1101 0101*2-49

    )2 = +(20 + 2

    -1 +2

    -2 + 2

    -4 + 2

    -6 + 2

    -8) *2

    -49 = (+3.254341240932490*10

    -15)10

    Ejemplo 1.9: Se trata de calcular el nmero justo ms grande y justo ms pequeo que w =-6.2945*10-3 que la computadora que trabaja con palabras de 16

    bits (que utiliza la tcnica del redondeo e incorpora todas las tcnicas de optimizacin, para el exponente hacia los exponentes positivos),

    puede representar exactamente:

    w =-6.2945*10-3

    = (-0.0062945)10 = (-0.019C8)16 = (-0.0000 0001 1001 1100 1000)2 =-1. 1001 1100 1000 *2-8+63=55=0110111

    Cuya representacin sera: wA= -1. 1001 1101 *20110111

    = 6.301879882813*10-3

    1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1

    Justo ms pequeo: como el nmero es negativo, el nmero justo ms pequeo es ms grande en valor absoluto (se puede ver fcilmente que

    ste se obtiene aumentando una unidad el ltimo dgito que se puede almacenar de la mantisa)

    wjmp= -1. 1001 1101 *20110111

    = -1. 1001 1101 *255-63=-8

    =(-0.0000 0001 1001 1101)2 = (-0.0 1 9 D)16 = (-0.006301879882813)10

    Justo ms grande: como el nmero es negativo, el nmero justo ms pequeo es ms pequeo en valor absoluto (se puede ver fcilmente que

    ste se obtiene truncando en el ltimo dgito que se puede almacenar de la mantisa)

    Wjmg= -1. 1001 1100 *2

    0110111 = -1. 1001 1101 *2

    55-63=-8= (-0.0000 0001 1001 1100)2 = (-0.0 1 9 C)16 = (- 0.006286621093750)10

  • 16

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    Ejemplo 1.10: Se trata de calcular con una computadora que trabaja con palabras de 16 bits, utiliza la tcnica del redondeo e incorpora todas las tcnicas de

    optimizacin (para el exponente hacia los exponentes ms grandes), la operacin:

    z = u - v, donde u = 7.774*10+1

    y v = 6.991*10+1

    .

    Primeramente, se convierte esos nmeros al sistema binario pasando por el sistema hexagesimal: u = 7.774*10

    +1 = (77.74)10 = (1D.BD)16 = (0100 1101. 1011 1101 )2 = 1. 0011 0110 1111 01 *2

    6+63=69=1000101

    uC= 1. 0011 0111 *21000101

    con mantisa optimizada y bias +63

    Representacin almacenada:

    0 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1

    Ese nmero en decimal es: uC = 1. 0011 0111 *21000101=69-63=6

    = (100 1101. 1100)2 = (4D.C)16 = (77.75)10

    De la misma manera, se tiene para v:

    v = 6.991*10+1

    = (69.91)10 = (45.E8)16 = (0100 0101. 1110 1000)2 = 1. 0001 0111 1010 *26+63=69=1000101

    vC= 1. 0001 1000 *21000101

    con mantisa optimizada y bias +63

    Representacin almacenada:

    0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0

    En decimal se tiene: vC = 1. 0001 1000 *21000100=69-63=6

    = (100 0110. 00)2 = (46.0)16 = (70)10

    Segundo, para calcular z, la computadora realiza la sustraccin requerida en binario (los algoritmos para realizar las operaciones elementales de suma, resta, multiplicacin y divisin son similares a las decimales):

    C Cz u v= %

    1100.1011 000

    0000 .0110 100

    1100 .1101 100

    C Cz u v= % = 1. 1111 0000 * 2+2

    Ese nmero, la computadora debe almacenar en su memoria antes de presentarlo como resultado (con mantisa optimizada y bias +63):

    C C Cz u v= = 1. 1111 0000*22+63=65=1000001

    Representacin almacenada:

  • 17

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0

    Finalmente, la computadora debe convertir a decimal para dar el resultado en la pantalla:

    zC= 1. 1111 0000 *21000001=65-63=2

    = (0111. 1100)2 = (7.C)16 = 7.75 (resultado que da el PC).

    El resultado exacto es: z = u v = 7.83, de manera que el error relativo (ver ms adelante) es:

    relativoerror de %02.10102.0)Rel(

    =z

    zzz C

    C

    Nota: una manera alternativa de realizar este clculo, sin recurrir a la operacin de resta en binario (lo que no ocurre en la realidad), consiste en,

    Calcular directamente en decimal: C Cz u v= % =77.75- 70 = 7.75

    Convertir ese nmero a binario: C Cz u v= % = (7.C)16 = (0111. 1100)2 = 1. 1111 00 *22

    El nmero almacenado en binario sera entonces: Cz = 1. 1111 0000**22+63

    = 1. 1111 0000*265

    =1. 1111 0000 *2100 0001

    0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0

    que es idntico al obtenido realizando la operacin de resta en binario.

    1.4.2 Almacenamiento de Nmeros Enteros

    Los nmeros enteros se representan de la misma manera que los exponentes de los nmeros reales, slo que utilizando el total de bits asignados para la

    palabra. Si se tienen N bits y se utiliza el bias el rango de nmeros enteros n sera:

    =321 1 1

    =321 1 1

    2 2 1 con =2 2147483648 2147483647

    2 1 2 con =2 1 2147483647 2147483648

    NN N N

    NN N N

    n bias n

    n bias n

    +

    + +

    Nota: en Matlab, el entero positivo ms grande y pequeo son intmax = 2147483647 e intmin =-2147483648, respectivamente. Segn la anterior aplicacin, se constata que Matlab utiliza palabras de N=32 bits para representar los nmeros enteros y que optimiza la representacin utilizando como bias 2

    N-1.

    1.5 CONCEPTOS SOBRE ERRORES Y PROPAGACIN DE ERRORES

    1.5.1 Solucin Numrica de Problemas

    El proceso de resolver un problema de ingeniera con la ayuda de una computadora consiste normalmente en las siguientes etapas:

  • 18

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    Modelizacin: se formula el problema en trminos matemticos i.e. se construye un modelo matemtico que implica la formulacin de ecuaciones I-Programacin: se elige un lenguaje o software para realizar los clculos y se escriben los cdigos que se requieren en ese lenguaje II- Eleccin de algoritmos numricos biblioteca numrica: se elige los mtodos numricos que se van a utilizar para resolver las ecuaciones del modelo, se

    escriben los cdigos o se recurre a bibliotecas numricas e.g. GNU GSL (software libre para C y C++), NAG Library, IMSL Fortran Numerical Library Validacin: se realizan las pruebas de validacin de los programas, es decir, se realizan clculos preliminares para casos simples cuya solucin se conoce y se

    verifica que los resultados con el cdigo desarrollado coincide con los resultados exactos Clculos: se efectan los clculos que requiere la solucin del problema Interpretacin de resultados: se verifica la coherencia de los resultados y, eventualmente, se realizan clculos suplementarios si es necesario Ejemplo 1.11a: se considera el problema de la cada libre de un cuerpo en el aire y se quiere calcular la posicin del cuerpo en funcin del tiempo

    Modelo: por la segunda ley Newton, se puede considerar el cuerpo sometido a la fuerza de gravedad y a la fuerza de resistencia del aire. Como esta ltima se opone al movimiento y suponiendo que depende con alguna potencia de la velocidad:

    2 2

    2 2( ) ( ) ( ) ( )( ) ( )

    d b d bd dz t g z t z t z t g

    m mdt dtdt dtma t mg bv t

    = + = =

    Software: como el parmetro no se conoce con exactitud (depende por ejemplo de la densidad del aire que vara con la altura), la ecuacin diferencial no se puede resolver analticamente en el caso general, y es necesario recurrir a una computadora. En

    particular, se podra decidir trabajar con Matlab.

    Algoritmo numrico biblioteca numrica: como Matlab tiene una biblioteca numrica muy buena para resolver ecuaciones diferencial, se puede utilizar unos de los programas que oferta e.g. ODE23 o ODE45, que est basado en el mtodo de Runga-Kutta.

    Validacin: se conoce exactamente la solucin para =1, 1 2

    ( ) exp( )b m

    z t c c t g tm b

    = + + donde las constante c1 y c2 se fijan con las condiciones iniciales e.g.

    para (0) 0( )z m= y (0) 0( / )v m s= ,

    2

    2(( ) exp( ) 1)

    mt

    b

    m bz t g t g

    mb

    = + ; entonces se puede resolver numricamente el problema y comparar los

    resultados con los que se obtiene por la relacin exacta, si hay un acuerdo significa que el cdigo escrito es correcto.

    Clculos: utilizando el cdigo se puede ahora calcular la posicin en funcin del tiempo. En la figura se muestra las curvas para = 1, 1.25, 1.5, 1.75 y 2, cuando b/m=0.1 y g=10. Para = 1, se muestra la solucin exacta, (( ) 1000 exp( 0.1 ) 1) 100tz t t= + la misma que valida el clculo con el cdigo elaborado.

    Interpretacin: observando los resultados se puede concluir de qu manera el cuerpo cae, en efecto, se observa que a medida que aumenta la distancia recorrida en el mismo tiempo es menor, lo cual es razonable ya que entonces la resistencia del aire es mayor.

    z

    FG

    R

    0

  • 19

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    Ejemplo 1.11b: se considera el problema de la cada libre de un cuerpo en el aire y se quiere calcular la velocidad del cuerpo en funcin del tiempo

    Modelo: por la segunda ley Newton, se puede considerar el cuerpo sometido a la fuerza de gravedad y a la fuerza de resistencia del aire. Como esta ltima se opone al movimiento y suponiendo que depende con alguna potencia de la velocidad:

    ( )( ) ( ) ( )d

    v t gdt

    bma t mg bv t v t

    m

    = =

    .

    Validacin: =1, ( ) (1 exp( ))m b

    v t g tb m

    = para (0) 0( / )v m s= .

    Clculos: utilizando el cdigo se puede ahora calcular la posicin en funcin del tiempo para el cuerpo que se estudia. En la figura se muestra las curvas para los

    casos = 1, 1.25, 1.5, 1.75 y 2, cuando b/m=0.25 y g=10. Para el caso = 1, se muestra la solucin exacta, (1( ) 40 * exp( 0.25 ))v t t= la misma que

    valida el clculo con el cdigo elaborado.

  • 20

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    Los resultados de un problema resuelto en computadora no son estrictamente exactos debido a que se cometen errores o simplificaciones en las diferentes etapas

    mencionadas anteriormente. Se podran mencionar por ejemplo:

    Errores de modelado matemtico: aproximaciones consideradas en el momento de formular las ecuaciones del modelo matemtico e.g. en el ejemplo anterior no se toma en cuenta que la gravedad vara con la altura o la fuerza de Coriolis debido a la rotacin de la Tierra; los errores que resultan no pueden ser

    eliminados por un mtodo numrico.

    Errores de programacin: se refiere a los errores que se cometen al escribir los programas o cdigos; generalmente, los diferentes lenguajes permiten detectarlos y corregirlos a travs de instrumentos (debbugers) que los mismos lenguajes disponen; debido a estos errores, se sugiere escribir cdigos compuestos

    de pequeas unidades lo que facilita la deteccin de dichos errores.

    Errores de truncado matemtico: se deben al carcter aproximativo de las expresiones matemticas o algoritmos numricos utilizados para aproximar relaciones exactas u operaciones e.g. en el ejemplo anterior se utiliz un programa para resolver ecuaciones diferenciales basado en el mtodo de Runga-Kutta,

    como se trata de un mtodo numrico no es exacto. En algunos casos, la eleccin de otro algoritmo numrico puede atenuar el error.

    Errores de redondeo: son los errores que resultan de las limitaciones de la computadora para representar o almacenar nmeros reales. Errores experimentales: se deben a que los datos de entrada son inexactos e.g. en el ejemplo anterior no se tiene una estimacin exacta del parmetro .

    Una combinacin de estos errores puede estar presente implcitamente en los clculos. Como el proceso de clculo implica muchas operaciones, esos errores

    pueden amplificarse dramticamente i.e. los errores se propagan, incluso invalidando el resultado.

    Definicin: para cuantificar el error que presenta un resultado se puede utilizar varias definiciones.

  • 21

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    Sean x el valor exacto y A

    x el valor aproximado, entonces se define,

    Error( )A A

    x x x , error

    Rel( ) AAx x

    xx

    , error relativo y 100 * A

    x x

    x

    error relativo porcentual,

    Nota: Esta definicin es til cuando los valores son muy pequeos o muy grandes comparados con la unidad.

    Nmero de Dgitos Significativos m de A

    x , es el entero positivo ms grande posible que satisface la desigualdad ( 1)

    5*10mAx x

    x

    +

    Nota: Permite estimar el nmero de dgitos de A

    x , a partir del primer dgito no nulo, que son exactos i.e. al mejorar la aproximacin, esos dgitos no cambian.

    Ejemplo 1.12: sea el valor exacto 001234.0=x y su valor aproximado 0.001229

    Ax = , se trata de calcular los diferentes errores de xA.

    Error( ) 0.000005A A

    x x x =

    Rel( ) 0.004052AAx x

    xx

    = , se puede interpretar indicando que tiene un 0.4% de error,

    3 3 ( 1)

    0.004052 4.052 *10 5*10 5*10 2mAx x m

    x

    +=

    = = = , significa que prcticamente 2 dgitos son definitivos.

    Ejemplo 1.13: Si x es el nmero a almacenar en la memoria de la computadora y xA el valor almacenado, el error relativo de este ltimo obedece las relaciones,

    truncado: 1

    0 2mAx x

    x

    +

    En efecto,

    1 1 2

    1 2

    1

    1

    1

    1 1

    0. .... ...*20 0.0....0 ...*2 0.0....0 111....*2 2 *2 0 2

    0. .... *2

    20 2

    0 0 22

    0.10...0 *2 2 *2 2

    e

    m m m e e m e e m

    A m m m Ae

    A m

    e m

    A e mmA A

    e

    e e e

    m

    x d d d dx x d d x x

    x d d

    x xx x x x

    x xx x

    x

    + + + +

    +

    = = =

    =

    = =

    redondeo: 2 2m mAx x

    x

  • 22

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    1 1 2

    1 2 1 21 1

    1 1

    0. .... ...*2

    (2 0.0....0 1 ...)*2 0.0....0 0 ...)*20. .... *2 si =0

    (0. .... 2 )*2 si =1

    e

    m m m

    m e eem m m A m m mm m

    A m e

    m m

    x d d d d

    d x x dd d dx

    d d d

    + +

    + + + ++

    +

    =

    =

    +

    1 1 1 1

    1 1

    2 3 1

    2

    (2 0.0....0 1 )*2 0.0....0 0 111...*2 (2 2 )*2 2 *2 2 2

    donde se tom en cuenta que: 0.0....01 11... 2 +2 +....=2

    m e e m m e m e e m e m

    m m A m m A A

    m m m

    m

    x x x x x x

    + +

    +

    =

    1 1

    1 1

    1 1

    1

    2 22 2

    2 0 22 2

    como: 0.10...0 *2 2

    e m e m

    A e m e mm mA A

    e e

    e e

    m

    x xx x x x

    x x xx x

    x

    =

    NOTA: En problemas reales, no es simple la estimacin del error de un valor aproximado porque se desconoce el valor exacto x, en esa situacin, se recurre a la estimacin ms exacta posible (calculado quiz con otros medios). En el caso de problemas resueltos con algoritmos iterativos, frecuentes en mtodos

    numricos, si el proceso converge, a cada iteracin el resultado que se obtiene es generalmente ms exacto que el anterior, entonces es posible estimar el

    error a la iteracin n-sima recurriendo a las ltimas dos iteraciones y utilizando las relaciones:

    1Error( )n n nx x x+ , 1

    1

    Rel( ) n nn

    n

    x xx

    x

    +

    +

    1.5.2 ERROR PROPAGADO Y ERROR DE REDONDEO

    En el marco del anlisis numrico, se hace una diferencia entre lo que se denomina el error de propagacin y el error de redondeo de una operacin; el primero

    est relacionado con el error debido a la operacin y el segundo con el error que surge de las limitaciones de representacin de la computadora.

    Definicin: sean ,x y los valores exactos, ,A A

    x y los valores aproximados o las representaciones de los nmeros por la computadora, la operacin exacta a

    realizarse entre los nmeros (tales como +, -, * y /) y la operacin aproximada o tal como la realiza la computadora en el momento de almacenar

    el resultado, z x y= sera el resultado exacto y A A Az x y= el resultado calculado por la computadora. Entonces, el error de Az puede escribirse

    bajo la forma:

    error propagado errorde redondeo

    ( ) ( ) ( )A A A A A A A A AError z x y x y x y x y x y x y = = + 1442443 1442443

    donde se definen el error propagado y el error de redondeo.

    Nota:

  • 23

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    i) El trmino A A

    x y es el valor calculado por la computadora antes de almacenarlo y A A

    x y el valor almacenado.

    ii) El error de redondeo no es dramtico porque puede ser disminuido aumentando el nmero de bits para almacenar los nmeros, en cambio los errores de propagacin pueden dar lugar a resultados incorrectos y son el objeto de estudio del anlisis numrico.

    Ejemplo 1.14: sean los nmeros 4 53.2789 *10 , 4.07546 *10a b = = y se trata de calcular *z a b= con una PC que trabaja con words de 16 bits (redondea) y determinar los errores de redondeo y propagado.

    se determina la representacin los valores que almacena el PC

    4

    16 23.2789 *10 0.00032789 (0.00157D...) (0.0000 0000 0001 0101 0111 1101 ...)a

    = = = =

    - coma flotante 1011 1011 4

    2 2 A 2 A(0.1 0101 0111 1101 ...* 2 ) 0.10101100 * 2 3.2806396484375 *10( ) ( )a a a

    = = =

    5

    16 24.07546 *10 0.0000407546 (0.0002ABB...) (0.0000 0000 0000 0010 1010 1011 1011 ...)b

    = = = =

    - coma flotante 1110 1110 5

    2 A 2 A0.10 1010 1011 1011 ... * 2 0.10101011* 2 4.076957702636719 *10( ) ( )b b b

    == =

    8

    A A 16 2* 1.337502908427268 *10 ( ) 0.000000397... ( ) 0.0000 0000 0000 0000 0000 0000 0011 1001 0111 ... z z za b

    = = = =% % %

    - coma flotante 11010 11010 -8

    2 A A A A A

    - -( ) 0.1110010111*2 0.11100110*2 * 101.338776201009750...*z z z a b= = = =%

    Los errores seran entonces:

    - z calculado exactamente sera 8

    * 1.3363025794 *10z a b

    = =

    - 11

    A A A-1.200329027268002) *10Error Propagado( * *z z z a b a b

    == = %

    - 11

    A A A A A A A1.273292582482430 * 10)Error de Redondeo( * *z z z a b a b

    = = =%

    - 11

    A A A A A2.473621609750433 *10)Error ( * *z z z a b a b

    = = =

    Evaluacin de una Funcin: se quiere evaluar la funcin f(x) utilizando una computadora.

    Sea f(x) el valor de la funcin que se quiere evaluar y )(A A

    f x el valor que calcula la computadora, donde xA es el valor de la variable efectivamente calculada

    por la computadora.

    ) [ )] [ ) )]( ) ( ( ) ( ( (A A A A A A

    f x f x f x f x f x f x= + donde )

    error de redondeo ) )

    error propagado ( ) (

    ( (

    A

    A A A

    f x f x

    f x f x

    =

    =

  • 24

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    El error de redondeo de la funcin, conocido tambin como ruido (su representacin grfica ya no sera una lnea continua sino un conjunto de puntos

    aleatorios distribuidos al interior de una banda), se debe a que en cada operacin que se realiza para calcular la funcin, la computadora comete un error en el

    momento de almacenar el resultado de esa operacin, resultado que probablemente deber recuperar para clculos posteriores. Por naturaleza, el error de

    redondeo de la funcin es aleatorio y generalmente pequeo en las computadoras modernas.

    El error propagado puede ser estimado utilizando teorema del valor medio:

    ) ) * ( )( ) ( (A A A

    xf x f x f x x

    Modelo de una Computadora - Computadora Decimal a 7 Dits

    Para simular el funcionamiento de la computadora, se considera un modelo de computadora decimal a 7 dits, (un dit sera el equivalente de un bit con la

    diferencia de que puede almacenar los 10 dgitos del sistema decimal), de los que 2 son destinados a los signos del nmero y el exponente en la representacin

    en coma flotante, 4 dits para la mantisa y 1 para el exponente. Este modelo ser utilizado para mostrar ejemplos relacionados con los errores y su propagacin.

    Ejemplo 1.15: Se trata de calcular ) y ( xf x x = = utilizando la mquina a 7 dits

    Como: 1

    3.141592654... 0.3142 *10A

    +

    = = +

    1

    ) 1.772453... 1.772568... 0.0001149...

    ) ) 1.772568 - 0.1773 *10

    error propagado = ( ) (

    error de redondeo = ( ( 0.000432...

    AA

    A A A

    f x f x

    f x f x

    +

    = = =

    =

    =

    Con la relacin que permite estimar el error propagado se tendra:

    11)( ) ( - )

    2 error propagado ( 0.3142 *10 0.0001149...

    AA

    Af

    + = = , una muy buena aproximacin del error propagado exacto.

    Ejemplo 1.16: Sean los valores exactos 4 53.2789 *10 , 4.07546 *10a b = = , el problema es calcular la divisin de esos nmeros con la computadora a 7 dits y determinar el error y los errores de redondeo y propagado.

    Los valores que almacena la computadora seran: 3 4

    0.3279 *10 , 0.4075*10A A

    a b

    = =

  • 25

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    1

    /

    / 0.8047 *10

    / 8.045472167559000

    8.046625766871166A A

    A A A A

    z a b

    z a b

    z a b+

    =

    =

    = =

    =

    =

    %

    -4

    ,

    0.02% y m=3 cifras significativas

    Error( ) -0.001527832441001

    Rel( ) -1.898996614718759*10

    Error Propagado = - = -0.001153599312167

    Error de Redondeo -3.742331288343337*1

    A

    A

    A

    z

    z

    z z

    z z

    =

    =

    = =

    %

    %-4

    0

    Ejemplo 1.17: algunos casos tpicos que dan lugar a errores numricos burdos son los siguientes,

    1) La multiplicacin no es asociativa en la computadora

    Sean los valores exactos 6 5 5

    1.2789 *10 , 2.07546 *10 0.99917 *10a b y c

    = = = , el problema es calcular el producto de los nmeros con la

    computadora a 7 dits.

    Esos valores son almacenados por la calculadora a 7 dits como: 5 4 5

    0.1279 *10 , 0.2075*10 y 0.9992 *10A A Aa b c +

    = = = .

    Como se sabe, en la multiplicacin de nmeros reales, el orden de los factores no tiene importancia, sin embargo numricamente s la tiene:

    si se calcula ( * ) *z a b c= se tiene,

    10112.6539...

    0 0

    * *10 * 0.2654 *10 0 la mquina da el mensaje de

    ( * ) * * *A A A AA A

    A A

    A

    A A A A A A A A

    d a b d a b d underflow

    z a b c d c z d c

    =

    = =

    = = = =

    = = =

    %

    %

    es decir, el resultado segn la mquina es cero.

    si se calcula * ( * )z a b c= se tiene

    1

    6 5

    * 2.07334 * 0.2073*10

    * ( * ) * 2.651367 *10 * 0.2651*10A A A A A A

    A A A A A A A A A A

    d b c d b c

    z a b c a d z a d

    +

    =

    = = = =

    = = = =

    %

    %

    un resultado no nulo. El valor exacto es 5

    0.26521*10z

    = y el error relativo de este ltimo resultado es pequeo, 0.04%. Este ejemplo muestra que la operacin de multiplicacin deja de ser asociativa en la computadora.

    2) Clculo de la norma de un vector

    Sea un vector en el plano5 3 61.2789 *10 .07546 *10i j i jv x y

    + ++= + =

    r, se trata de calcular su norma con la computadora a 7 dits.

    Dichas coordenada son almacenadas por la computadora a 7 dits como 6 4

    0.1279 *10 , 0.6075*10A Ax y+ +

    = = .

  • 26

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    i) una primera relacin para calcular la norma sera: 2 2v x y= +r

    ; sin embargo, con esta relacin la mquina simplemente no logra calcular porque

    se presenta un problema de overflow cuando trata de calcular 112

    * 0.1636 *10A A Ax x x+

    = = ,

    ii) otra relacin que se podra utilizar sera:

    2

    1y

    v xx

    = +

    r, en este caso se tendra,

    la computadora no tendra entonces ninguna dificultad para efectuar ese clculo. El valor calculado es una buena aproximacin del valor exacto,6

    0.1281447039647429 *10v+

    =r

    , y el error relativo es pequeo, 0.26%.

    Nota: Se constata la necesidad de tener cuidado en el momento de introducir las operaciones numricas que la computadora deber efectuar.

    3) Utilizacin del teorema de Taylor

    El teorema de Taylor, ver Anexo, permite escribir relaciones alternativas para ciertas expresiones que son sensibles a la propagacin de errores. Segn

    ese resultado, bajo ciertas condiciones, las funciones pueden ser aproximadas por relaciones de la forma:

    ( ) ( )

    0 0

    0 0 0

    0 0

    ( ) ( ) ( ) ( ) ( ) ( )

    ! !

    k kn nk k

    k k

    f x f xf x x x x x x f x x x

    k k

    = =

    = + + uuuuuuuuuuuur

    Ejemplo 1.18: Se trata de calcular 1

    ( )xe

    f xx

    = para

    41.4*10x

    = utilizando el PC a 7 dits.

    Si se calcula directamente la funcin se tendra:

    4 3

    1

    1.4*10 0.1400*10 1( ) 0

    1.0001400000980 0.1000*10

    A

    A

    xA

    AxAA

    x x ef x

    xy e y

    +

    = = = =

    = = =

    cuyo error relativo sera 100% ya que el valor exacto es 1.000070003266883.

    Si se calcula utilizando el teorema de Taylor:

    ( )

    ( )

    1 2

    1 1 6

    * * 0.4011*0.6333*10 10

    1 0.1004 *10 0.1002 *10 * 0.1278*10

    A A A

    AA A A A A

    A A

    A A A A A A A AAAu

    yd u d d d d

    x

    e f e v x f

    + + +

    = =

    = = =

    = + = = = = =

    r

  • 27

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    Como x es pequeo, la serie de Taylor de la funcin exponencial permite aproximarla por una relacin alternativa: 2

    2 (1 ) 11 21 ( ) 12 2

    xx

    xx

    x e xe x f x

    x x

    + +

    + + = = +

    Utilizando esta relacin se puede calcular con el PC a 7 dits:

    3 4 10.07*10 0.7000*10 ( ) 1 1.00007 ( ) 0.1000*10

    2 2

    A AA A A A

    x xy y f x f x

    += = = + = =

    el error relativo porcentual de este resultado es 0.007 %, que es bastante pequeo.

    Ejemplo 1.19: Se trata de calcular 2

    ( )( )

    sen x xf x

    x

    = para

    41.4*10x

    = utilizando el PC a 7 dits.

    Si se calcula directamente la funcin se tendra:

    4 3

    24 3

    1.4*10 0.1400*10( ) 0

    ( ) 1.399999995426667*10 0.1400*10

    A A AA

    AA A

    x x y xf x

    xy sen x y

    = = = =

    = = =

    de error relativo 100%, el valor exacto es -2.333333345398816*10-5

    .

    Si se calcula utilizando el teorema de Taylor: 3

    3

    2 2

    ( )( ) 6( ) ( )

    6 6

    xx x

    x sen x x xsen x x f x

    x x

    +

    = =

    Utilizando esta relacin se puede calcular con el PC a 7 dits:

    5 4( ) 2.3*10 ( ) 0.2333*106

    AA A A

    xf x f x

    = =

    el error relativo porcentual de este resultado es 1.4*10-2

    %, tambin bastante pequeo.

  • 28

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    1.6 PROBLEMAS DE ESTABILIDAD MATEMTICA

    De manera general, existen varios problemas de matemticas que son sumamente sensibles a pequeos errores de clculo como los errores de redondeo. Para

    cuantificar esa sensibilidad se utilizan conceptos como estabilidad y nmero condicin.

    Definicin: se considera un problema que puede ser representado por una ecuacin de la forma,

    ( , ) 0F y x =

    donde y es la variable dependiente a determinar y x la variable independiente. Entonces, se dice que el problema es estable si la solucin y depende de manera continua

    de la variable x cuando se realizan aproximaciones sucesivas ms precisas i.e.

    lim limn nn n

    x x y y

    = =

    caso contrario, se dice que el problema es inestable.

    Nota: i) Esta definicin implica que si el problema es estable, pequeos cambios en x deben dar lugar a pequeos cambios en y (el trmino pequeo se cuantifica a

    travs del concepto de norma); en cambio, si el problema no es estable entonces pequeos cambios en x darn lugar a grandes cambios en y.

    ii) Se dice tambin de un problema estable que es un problema bien condicionado, y de un problema inestable que es un problema mal condicionado. Los problemas inestables son sumamente difciles de resolver numricamente.

    Ejemplo 1.20: este ejemplo muestra que la resta de nmero cercanos es una operacin delicada numricamente debido a los errores de redondeo. Se trata de calcular,

    utilizando la computadora a 7 dits, las races de la ecuacin de segundo grado siguiente:

    226.075 0.99917 0x x + =

    y

    y+y

    x

    x+x

    F

    estable bien condicionado

    x

    x+x

    y

    y+y

    F

    inestable mal condicionado

  • 29

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    cuyas soluciones son de la forma

    24

    2

    b b acx

    a

    = , donde 99917.0075.26,1 === cyba .

    Las soluciones exactas de esta ecuacin son: 1 26.036624441669140x = y 2 0.038375558330861x = (calculadas con Matlab utilizando 15 decimales).

    Para calcular con la mquina decimal descrita anteriormente, se debe tener en cuenta que los coeficientes escritos anteriormente van a ser almacenados utilizando los 7

    dits: 1 2 0

    0.1000 *10 , 0.2608*10 y 0.9992 *10A A Aa b c+ + +

    = = = . Entonces los diferentes trminos que aparecen en las frmulas seran calculados como:

    3

    1 0 1

    3

    2

    * 0.6802 *10

    4 * * 0.4000 *10 * 0.9992 *10 0.3997 *10

    0.6762 *10

    0.2600 *10

    A A A A

    A A A A A A

    A A A

    A A A

    d b b

    e a c

    d e

    D

    +

    + +

    +

    +

    = =

    = = =

    = =

    = =

    2

    1

    0.5208*10

    0.8000 *10

    A A A A

    A A A A

    z b D

    z b D

    +

    = + =

    = =

    211

    122

    ]

    ]

    [ 0.2604 *102

    [ 0.4000 *102

    AA A

    AA A

    zx

    zx

    +

    = =

    = =

    Errores

    { 1 1 12 2 2

    Error( ) 0.00337556

    Error( ) 0.00162444A A

    A A

    x x x

    x x x

    = = = =

    y

    4

    2

    1 1 1 11

    1 1

    2 2 2 22

    2 2

    Rel( ) 0.000129647 0.01% 1.29647 10

    Rel( ) 0.04330066 4.3% 4.330066 10

    A AA

    A AA

    x x x xx

    x x

    x x x xx

    x x

    = = =

    = = =

    { 12

    ( ) 3

    ( ) 1A

    A

    m x

    m x

    ==

    Se observa que la primera raz tiene 3 dgitos significativos y la segunda solamente uno, es decir la segunda raz es mucho menos inexacta que la primera. Para

    entender, el origen de este hecho es necesario analizar la precisin con la que fueron almacenados los coeficientes de la ecuacin:

    4

    5

    Rel( ) 0.000191755 1.91755 10

    Rel( ) 0.000030025 3.0025 10

    AA

    AA

    b bb

    bc c

    cc

    = = =

    = = =

    { ( ) 3( ) 4AA

    m b

    m c

    ==

    en el caso de la primera raz, se ve que la raz tiene el mismo orden de error que los coeficientes escritos por la computadora, sin embargo, para la segunda raz ocurre

    como si las operaciones intermedias hubiesen propagado los errores empeorando el resultado.

    Nota: la situacin que se observa con la segunda raz se conoce tambin como una prdida de cifras significativas, que consiste bsicamente en que el resultado de la operacin tiene un nmero de cifras significativas netamente menor al nmero de cifras significativas de los valores iniciales; esa situacin es una de las

  • 30

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    manifestaciones de la prdida de precisin en los clculos que est relacionada ya sea con la propagacin de errores, una operacin particular o la forma de

    calcular una determinada operacin.

    En el caso anterior, la prdida de cifras significativas se debe a la operacin de sustraccin que se debe realizar cuando se calcula la segunda raz y que influye

    negativamente en la precisin del resultado; en efecto, se puede utilizar la siguiente relacin que evita efectuar dicha resta:

    2 2 2

    2 2 2

    4 4 4 2*

    2 2 4 4

    b b ac b b ac b b ac cx

    a a b b ac b b ac

    + = = =

    + +

    Entonces,

    3

    1 0 1

    3

    2

    * 0.6802 *10

    4 * * 0.4000 *10 * 0.9992 *10 0.3997 *10

    0.6762 *10

    0.2600 *10

    A A A A

    A A A A A A

    A A A

    A A A

    d b b

    e a c

    d e

    D

    +

    + +

    +

    +

    = =

    = = =

    = =

    = =

    2

    0.5208*10A A A A

    z b D+

    = + =

    11

    2

    2 * 0.1998*100.3836 *10A A

    A

    A A

    cx

    z z

    +

    = = =

    42 2 2 22 2 2 2 2

    2 2

    Error( ) 0.00001556, Rel( ) 0.000405466 (0.04%) 4.05466 10 ( ) 3A AA A A Ax x x x

    x x x x m xx x

    = = = = = =

    de esa manera, el resultado del clculo de la segunda raz tiene el mismo orden de precisin que el resultado para la primera raz. Este ejemplo muestra efectivamente

    que la resta de dos nmeros cercanos es una operacin delicada numricamente porque amplifica los errores.

    Resolviendo la ecuacin exactamente para 1 2 0

    0.1000 *10 , 0.2608*10 y 0.9992 *10A A Aa b c+ + +

    = = = , los valores de los coeficientes almacenados, se obtiene

    utilizando Matlab:

    1

    2

    26.041630666958660

    0.038369333041336

    x

    x

    =

    =

    %

    %

    de donde se tiene los errores propagados y de redondeo siguientes:

    2 2 2 2

    1 1 1 1 1 1

    2 2

    ) ) y

    ) )

    error prop ( -0.005006225289520 0.019% error redo ( 0.001630666958661 0.006%

    error prop ( 0.000006225289525 0.016% error redo ( 0.000009333041336A

    Ax x x x x x

    x x x x x x

    = =

    = =

    = = = =

    % % % %

    % % % % 0.024%

    Definicin: El nmero condicin K de una operacin matemtica como la expresada por la relacin ( , ) 0F y x = , se define por la relacin,

    /sup

    /

    y yK

    x xx

    =

  • 31

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    donde el smbolo de las barras representa alguna norma matemtica.

    Nota: 1. Sup (supremum) es el nmero real positivo ms pequeo que es ms grande que todos los valores obtenidos tomando cualquier valor para x.

    2. El nmero condicin K permite medir la sensibilidad de la solucin de un problema, variable dependiente y, a perturbaciones pequeas en la variable

    dependiente x. Los problemas estables o bien condicionados tienen nmeros condicin del orden de 10, los problemas que tienen valores de K ms grandes

    deben ser tratados con mucho cuidado. Sin embargo, de manera general no es fcil determinar K para un problema cualquiera.

    Ejemplo 1.21: se considera el problema de calcular la funcin potencia xy a= donde a es un nmero positivo diferente de 1, se trata de calcular K.

    con 1+ ln (ver series de Taylor)1

    ln ln

    x x x

    xx

    x

    x x xx a

    y a a

    x x x ay a x x a K x a ax x xy a y y a

    x x

    +

    +

    +

    = = = == + =

    en estas operaciones, se supone que x es infinitesimal. Este resultado significa que el clculo de potencias para valores de la variable x grandes en valor absoluto

    no es estable; en efecto, si por ejemplo K = 10+5

    y el error relativo de la variable debido a errores de redondeo de la mquina es 7

    / 10x x

    = , entonces el error

    relativo del resultado sera 2

    / ( / ) 10y y K x x

    = . El error relativo del resultado es mucho mayor que el error relativo de la variable, de un factor 5

    10+

    . Si a es

    muy pequeo, se tendra inestabilidad prcticamente para todo x debido a la asntota de la funcin logaritmo en cero.

    1.7 CONCEPTO DE ESTABILIDAD NUMRICA

    El concepto de estabilidad numrica se refiere especficamente a la estabilidad de un algoritmo para resolver un problema en particular i.e. un algoritmo puede ser ms

    estable que otro. Se diferencia del concepto de estabilidad matemtica en que una operacin matemtica que es inestable siempre lo ser independientemente del

    algoritmo matemtico utilizado para realizarlo; de la misma manera, si un operacin es estable matemticamente siempre se puede encontrar un algoritmo numrico

    que tambin sea estable. Cuando se elige un algoritmo numrico, es importante que no tenga un grado estabilidad menor a la estabilidad matemtica de la operacin.

  • 32

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    ANEXO: TEOREMA DE TAYLOR

    El teorema de Taylor establece que si una funcin ( )f x es continua al igual que las (n+1)-simas derivadas en un intervalo I alrededor de 0

    x , entonces en dicho

    intervalo, la funcin puede ser representada por una serie de potencias. La serie de Taylor centrada en x0 al orden n est dada por la relacin,

    1

    ( 1)0

    ( )0

    0

    0 ( 1)

    0 1

    0 0

    ( )( ) o

    ( ) ! ( ) ( ) ( ) donde ( )

    ( )!( ) con entre y .

    ( 1)!

    nx

    n

    knk

    n n n

    k n

    t xf t dt

    f x nf x x x R x R x

    fkx x x x

    n

    +

    +

    += +

    = + = +

    o, alternativamente, con x =0

    x +x

    ( )

    0

    0

    0

    ( ) ( ) ( ) ( )

    !

    knk

    n

    k

    f xf x x x R x

    k

    =

    + = +

    Esta relacin fue aplicada a la funcin ( )x

    f x a= para 0

    x =0 en el ejemplo anterior y restringiendo la suma al primer orden en potencias de x, vlido para 0x ,

    (1) (1)0 ( )0

    1 10

    0 0

    ( ) (0)( ) ( ) ( ) ( ) (0) ( ) 1+ ln

    1! 1!

    xx f x axf x f

    f x x f x x f x f x a a x

    = =

    + + +

    Ejemplo 1.22: Algunas funciones expresadas utilizando el teorema de Taylor,

    2 1

    2 4 2 2 2

    1

    3 5 2

    1

    1 ... ( ) con ( )2! ! ( 1)!

    cos( ) 1 ... ( 1) ( ) con ( ) ( 1) cos( )2! 4! (2 )! (2 2)!

    sen( ) ... ( 1)3! 5!

    n n

    x

    n n

    n n

    n n

    n n

    n

    n

    x x xe x R x R x e

    n n

    x x x xx R x R x

    n n

    x x xx x

    +

    +

    +

    +

    = + + + + + =+

    = + + + = +

    = + + 1 2 1

    ( ) con ( ) ( 1) cos( )(2 1)! (2 1)!

    n

    n

    n n

    xR x R x

    n n

    +

    + = + +

    2 2

    1

    1

    ( 1) ( 1)...( 1)(1 ) 1 ... ( ) 1+ .... ( )

    1 2 2 !

    con ( ) y 1 (1 )

    n n

    n n

    n

    n n

    nx x x x R x x x x R x

    n n

    xR x

    n

    +

    +

    ++ = + + + + + = + + + +

    =

    + +

    ( 1)...( 1)

    !

    k

    k k

    +=

  • 33

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    FORMATO DE LA REPRESENTACIN BINARY64 IEEE 754 STANDARD (MATLAB)

    Trabaja con palabras de 64 bits los cuales estn distribuidos de la manera siguiente:

    1 Bit para el signo 11 Bits para el exponente 52 Bits para la mantisa

    1 2 12 13 64

    signo exponente mantisa

    La representacin de un real en representacin en coma flotante es:

    5221

    bias - exponente ....12)1( bbbx =

    1) EXPONENTE

    Bias = 101023 2 1=

    Favoriza los exponentes mayores y el rango sera: -1023 (0) a 1024 (2047) Los exponentes extremos son utilizados para casos especiales:

    El exponente:

    1 2 3 4 5 6 7 8 9 10 11

    0= 0 0 0 0 0 0 0 0 0 0 0

    es utilizado para representar el cero (con 0mantisa = ) o para representar los nmeros subnormales (con 0mantisa )

    El exponente:

    1 2 3 4 5 6 7 8 9 10 11

    2047= 1 1 1 1 1 1 1 1 1 1 1

    es utilizado para representar el infinito (con 0mantisa = ) e.g. 0/x o para nmeros indefinidos NaN (con 0mantisa ) e.g. 0 ;0/0

    El exponente con bias vara entonces en el rango:

  • 34

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    1= 0 0 0 0 0 0 0 0 0 0 1 y 2046= 1 1 1 1 1 1 1 1 1 1 0

    por lo que el rango de los exponentes efectivos est en el rango:

    Emin = 1-1023 = -1022 y Emax = 2046 -1023 = +1023

    2) MANTISA

    La mantisa se escribe bajo la forma:

    5221....1 bbbx

    mantisa=

    5221

    bias - exponente ....12)1( bbbx =

    el primer dgito de la mantisa, la parte entera, no es almacenado.

    Nmero positivo ms grande normal:

    30810245310235310232046

    5221

    0

    max10...7976.12)21(2)21(22)1...11.1()1( +++ ====x = (7FE F FFFF FFFF FFFF)16

    Nmero positivo ms pequeo diferente de cero normal:

    308102210231

    5221

    0

    min10...2250.2212)0...00.1()1( ===x = (001 0 0000 0000 0000)16

    Nota: El nmero real positivo ms grande y ms pequeo no nulo que puede representar Matlab son, respectivamente: realmax = 1.797693134862316*10

    +308 = [(1-2

    -53)*2

    1024] y

    realmin = 2.225073858507201*10-308

    [2-1022

    ].

    3) NMEROS SUBNORMALES (IEEE denormal) Tienen la mantisa de la forma:

    5221....0 bbbx

    mantisa=

    5221

    1022 1 ....02)1( bbbx biassigno = =

    con al menos un bit diferente de cero y el exponente:

    0= 0 0 0 0 0 0 0 0 0 0 0

    Nmero positivo ms pequeo subnormal: Supone que el exponente es el ms pequeo

  • 35

    Texto: Mtodos Numricos

    Dr. Hugo Rojas

    as

    324107410225210231

    5221

    0

    min10...9407.42222)1...00.0()1( ====subx = (0010 0000 0000 0001)16

    En Matlab: + 4.940656458412465*10-324

    Nmero positivo ms grande subnormal: Supone que el exponente es el ms pequeo

    30810225210231

    5221

    0

    max10...2250.22)21(2)1...11.0()1( ===subx = (0010 FFFF FFFF FFFF)16

    EJEMPLO: X = 3FD5 5555 5555 555516

    3

    133333330.33333333

    )161(3

    11()5555 55555 55555 5(12)5555 55555 55555 5(1. :mantisa

    210231021exp1021161316151631616163(3FD):biascon exponente

    :signo

    52

    16

    52

    16

    012012

    16

    =

    +==

    ===++=++=

    +

    DF