Errors UnaSessio

17
 Número, algoritmo y errores Índice 1. Introducción 2. Errores absolutos y relativos 3.  Almacenamiento de números en un ordenador  Números enteros  Números reales 4. Concepto de algoritmo 5. Clasificación de los errores  6. Propagación de los errores 7. Condicionamiento numérico

description

erroe

Transcript of Errors UnaSessio

  • Nmero, algoritmo y errores

    ndice 1.! Introduccin 2.! Errores absolutos y relativos 3.! Almacenamiento de nmeros en un ordenador

    ! Nmeros enteros ! Nmeros reales

    4.! Concepto de algoritmo 5.! Clasificacin de los errores 6.! Propagacin de los errores 7.! Condicionamiento numrico

  • Veamos que pasa si ejecutamos la siguientes instrucciones con Matlab

    >> a = 7/pi >> a*pi-7

    Qu resultado deberamos obtener? Qu resultado obtenemos?

    Y si calculamos sin(pi)? Obtenemos el resultado esperado?

    Los resultados anteriores son debidos a la existencia de errores numricos de almacenamiento.

    Debido al hecho inevitable que los ordenadores digitales slo pueden almacenar una cantidad finita de informacin, se producen errores numricos por el mero hecho de almacenar un nmero en general.

    Aunque algunos nmeros pueden ser almacenados exactamente, en general al almacenar un nmero en un ordenador cometeremos errores de almacenamiento o redondeo.

  • En el ejemplo que hemos visto: >> a = 7/pi >> a*pi-7 Matlab almacena el nmero pi con un nmero finito de decimales cometiendo un error de almacenamiento. Naturalmente, al efectuar operaciones con este nmero, el resultado se ve afectado por estos errores tambin y por eso no obtenemos cero como se esperaba.

    Adems, los resultados se vuelven a almacenar en el ordenador por lo que de nuevo se cometen errores de almacenamiento. Por lo tanto, cuando se opera con un ordenador, se comenten errores de almacenamiento que a su vez se van propagando (propagacin de errores).

    En general, los resultados proporcionados por los ordenadores son muy precisos, pero siempre debemos tener presente la existencia de los errores de almacenamiento y su propagacin y asegurarnos que estos errores son despreciables en relacin a la precisin con la que necesita obtener los resultados.

    En la pgina

    http://www.ima.umn.edu/~arnold/disasters/disasters.html

    pueden encontrarse algunos ejemplos de problemas causados por la propagacin del error en la resolucin de problemas en ingeniera.

  • Fallo del Misil Patriot (Guerra del Golfo, 1991)

    Durante la guerra del golfo, un misil americano fall al intentar interceptar un misil iraqu.

    Motivo: se calcul con poca precisin el tiempo interno del misil.

    El ataque del misil iraqu mat a 28 soldados e hiri unas 100 personas.

    El reloj interno meda en dcimas de segundo, y para calcular el tiempo en segundos se multiplicaba por 1/10.

    El nmero 1/10 es un nmero peridico en binario, y al almacenar ste nmero se cometi un error de redondeo de 0.00000009510.

    La bateria del misil Patriot llevaba unas 100 horas funcionando que medido en dcimas de segundo son 3600000. Al pasar este tiempo a segundos, se cometi un error de

    3600000 ! 0.000000095 = 0.342 segundos

    En este tiempo, el misil iraqu recorri ms de medio quilmetro respecto de la posicin prevista de intercepcin.

  • En este tema entenderemos el origen de dichos errores.

    Aunque no ser objetivo de este curso, es importante adems, tratar de cuantificarlos con el objetivo de controlarlos, esto es, obtener cotas del error.

    Errores Definiciones

    ! Error absoluto y relativo x valor exacto y x valor aproximado ! Error absoluto

    ! Error relativo

    Ejemplo: considerad la aproximacin 3.14 del nmero pi. Comprovad que el error absoluto es 0.00159 y el error relativo es 0.000507.

  • ! Cifras significativas

    ! Las cifras significativas de un nmero son la primera cifra no nula i las siguientes

    ! La aproximacin x a x tiene q cifras significativas correctas si el error relativo verifica

    Ejemplo: 3.14 tiene 3 cifras significativas. Cuntas cifras significativas correctas tiene la aproximacin 3.14 del nmero pi?

    El error relativo es 0.000507 " 0.005!10-2

    Nmeros Representacin de un nmero en base n

    (dp dp-1 d1d0.d-1 d-(q-1) d-q)n = =dpnp + dp-1np-1 + + d1n + d0n0 +

    d-1n-1 + + d-(q-1) n-(q-1) + d-qn-q

    (124.5)10 = 1!102 + 2!101 + 4!100 + 5!10-1 (101.11)2 = 1!22 + 0!21 + 1!20 + 1!2-1+ 1!2-2

    En un ordenador los nmeros se guardan en binario

  • Almacenamiento de nmeros enteros

    Los nmeros enteros se almacenan utilizando s posiciones de memoria (bits) de las cuales se reserva una para el signo.

    ds-1 ds-2 d2 d1 d0

    signo 0 +

    1

    |Nmax| = 2s-2 + + 22 + 2 + 1 = 2s-1 -1

    Almacenamiento de nmeros reales ! base 2 ! coma flotante ! M posiciones para la mantisa ! E posiciones para el exponente

    Ejemplo: (0.10101)2 ! 2-(10)2 =(2-1+2-3+2-5)!2-2 = 0.1640625

    d-1 d-2 d-3 d-(M-1) d-M dE-1 dE-2 d2 d1 d0

    mantisa exponente

    signo del nmero signo del exponente

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

  • |Nmax| = 2-1 + 2-2 + + 2-(M-1) 2 =

    = 1-2(1-M) 2

    1 1 1 1 1 0

    0 1 1 1 1

    1 0 0 0 1 0

    1 1 1 1 1

    2E-2 + + 21 + 20

    |Nmin| = 2-1 2 =

    = 2

    - 2E-2 + + 21 + 20

    2E-1 -1

    - 2E-1

    En Matlab se usa el formato double que usa 64 bits totales: 11 para el exponente (E=11)

    53 para la mantisa (M=53)

    Por lo tanto, los nmeros mximos y mnimos que se pueden almacenar con Matlab son:

    Almacenamiento en Matlab

    |Nmax| = (1-2(1-53)) ! 2( ) < 21023 # 0.899 ! 10308

    |Nmin| = 2-( ) = 2-1024 # 0.556 ! 10-308

    211-1 -1

    211-1

  • Overflow ! error que se produce cuando se intenta almacenar un nmero ms grande que el mximo permitido por el tipo de nmero usado

    Underflow ! error que se produce cuando se intenta almacenar un nmero menor que el mnimo permitido

    Ejecutad el programa potencias2.m para comprobar el overflow y underflow de Matlab.

    Obtenemos los resultados esperados?

    Underflow y overflow

    El programa potencias2.m pide por pantalla un entero n y escribe en el fichero potencias2.res las potencias 2i i=0...n si n es positivo 2i i =0:-1:n si n es negativo

    Qu valores mximos y mnimos de n deberamos poder calcular y qu obtenemos?

    Mejoras de Matlab: ! Overflow: no se guarda el 1 de la coma flotante 0.101 ! Underflow: permite poner ceros en la mantisa 2-52!2-1022

    |Nmax| < 21023 |Nmin| = 2-1024

    0 0 0 0 0 1 1 0

    -1022

  • En Matlab los nmeros de almacenan en base 2 con 53 bits para la mantisa (sin contar el signo) y 11 bits para el exponente.

    Cul es el error relativo que se comete al almacenar un nmero mediante truncamiento?

    Nmero: (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55)2 ! 2exp

    Error relativo de almacenamiento

    d-1 d-2 d-3 d-51 d-52 d-53 1 0

    exp.

    Nmero: (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55 ... )2 ! 2exp

    Error relativo:

    |rx| =

    =

    = ! 2-53

    d-1 d-2 d-3 d-51 d-52 d-53 1 0

    exp.

    (. 0 0 0 ... 0 0 d-54 d-55 ... )2 ! 2exp (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55 ...)2 ! 2exp

    (. d-54 d-55 ... )2 ! 2exp ! 2-53 (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55 ... )2 ! 2exp

    (. d-54 d-55 ... )2 (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55 ... )2

  • |rx| = ! 2-53

    < ! 2-53

    = ! 2-53

    = ! 2-53

    = ! 2-53 = ! 2-52 =

    = 2.22 ! 10-16

    (. d-54 d-55 ... )2 (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55... )2

    (. 1 1 1 1 1 1 1 1 ... )2 (.100000...001111111)2

    2-1 + 2-2 + 2-3 + 2-4 + ... 2-1 + 2-54 + 2-55 + 2-56 + 2-57 + ...

    2 1+ 2-53 ! 2

    1 1+ 2-54 ! 2

    1 + 2-1 + 2-2 + 2-3 + ... 1 + 2-53 ! (1 + 2-1 + 2-2 + ...)

    De la misma forma, se obtiene que el error relativo mximo que se comete cuando se almacena un nmero utilizando la tcnica de aproximacin es:

    |rx| " 1.11 ! 10-16

    Mirar el fichero suma_1_eps.m para comprobar que en Matlab: 1 + 2-53 = 1 + 1.11 ! 10-16 = 1

    ZERO DE MQUINA: 1.11 ! 10-16

    Error relativo de almacenamiento

  • Hemos visto que al almacenar un nmero en Matlab se comete un error de almacenamiento del orden de 10-16.

    Naturalmente, al efectuar operaciones con este nmero, el resultado se ve afectado por estos errores tambin. Adems, los resultados se vuelven a almacenar en el ordenador por lo que de nuevo se cometen errores de almacenamiento. Por lo tanto, cuando se opera con un ordenador, se comenten errores de almacenamiento que a su vez se van propagando (propagacin de errores).

    Propagacin de errores

    Por lo tanto, cuando implementemos un programa en Matlab, nos tendremos que asegurar que estos errores que se van propagando, son despreciables en relacin a la precisin con la que necesita obtener los resultados.

    Algoritmo bien / mal condicionado: Un algoritmo puede abstraerse como un operador que

    toma unos datos a y devuelve un resultado b.

    Si afectamos los datos de un error, !a, el resultado ser b+!b.

    Un algoritmo est bien condicionado si |!b|0 es una constante no muy grande.

  • Es importante tener en cuenta que dos algoritmos matemticamente equivalentes no tienen porque serlo en aritmtica finita.

    Comprobad que dan los siguientes comandos:

    >> 1e16 * ( (1 1) + 1e-16 ) ans = 1

    >> 1e16 * ( (1+ 1e-16) 1 ) ans = 0

    Por lo tanto es importante vigilar que los algoritmos usados no amplifiquen los errores.

    Algoritmo

    ! Error inherente Propio de los datos con con los que se inician los clculos.

    ! Error de redondeo Al trabajar con aritmtica finita, slo es posible almacenar un nmero finito de dgitos

    ! Error de truncamiento Un algoritmo ha de tener un nmero finito de operaciones

    Clasificacin de los errores

  • Se quieren calcular las sucesivas potencias del inverso del nmero ureo utilizando diferentes algoritmos.

    1

    El primero consiste en multiplicar la potencia anterior por "

    Algoritmo

    Y aplicando la propiedad distributiva al producto anterior se puede escribir un tercer algoritmo para calcular las potencias de "#

    3

    Teniendo en cuenta que " es raz de la ecuacin

    sus potencias se pueden calcular como

    2

  • Ejecutad los programas aureo1.m, aureo2.m y aureo3.m y mirad las diferencias entre los resultados obtenidos.

    Propagacin de errores

    Material adicional

  • x, y valores exactos de dos nmeros x, y valores aproximados

    ! Propagacin del error en la suma

    ! Propagacin del error en la resta

    ! Propagacin del error en el producto

  • Propagacin del error en la divisin

    Propagacin del error en una funcin

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /CreateJDFFile false /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice