Page 98 - Chapra y Canale. Metodos Numericos para Ingenieros 5edición_Neat
P. 98

74                      APROXIMACIONES Y ERRORES DE REDONDEO

              PROGRAM fig0311                                  PRINT *, ‘resultados con precisión
              IMPLICIT none                                    doble:’
              REAL::a,b,c,d,x1,x2,x1r                          PRINT ‘(1x,a10,f20.14)’, ‘x1 = ’, x11
              DOUBLE PRECISION::aa,bb,cc,dd,x11,x22            PRINT ‘(1x,a10,f10.4)’, ‘x2 = ’, x22
              a = 1.                                           PRINT *
              b = 3000.001                                     PRINT *, ‘fórmula modificada para la
              c = 3.                                           primer raíz:’
              d = SQRT(b * b - 4. * a * c)                     x1r = -2. * c / (b + d)
              x1 = (-b + d) / (2. * a)                         PRINT ‘(1x,a10,f20.14)’, ‘x1 = ’, x1r
              x2 = (-b - d) / (2. * a)                         END
              PRINT *, ‘resultados con precisión
              simple:’                                         SALIDA
              PRINT ‘(1x, a10, f20.14)’, ‘x1 = ’, x1           resultados con precisión simple:
              PRINT ‘(1x, a10, f10.4)’, ‘x2 = ’, x2                 x1 =      -.00097656250000
              PRINT *                                               x2 = -3000.0000
              aa = 1.                                          resultados con precisión doble:
              bb = 3000.001                                         x1 =      -.00100000000771
              cc = 3.                                               x2 = -3000.0000
              dd = SQRT(bb * bb – 4. * aa * cc)                fórmula modificada para la primera raíz:
              x11 = (-bb + dd) / (2. * aa)                          x1 = -.00100000000000
              x22 = (-bb – dd) / (2. * aa)

              FIGURA 3.11
              Programa en Fortran 90 para determinar las raíces de una ecuación cuadrática. Con precisiones simple y doble.



                                         Considere que, como en el ejemplo anterior, hay veces en las que la cancelación por
                                      resta se evita empleando una transformación. No obstante, el único remedio general es
                                      usar la precisión extendida.

                                      Dispersión.  La dispersión ocurre generalmente cuando los términos individuales en
                                      la sumatoria son más grandes que la sumatoria misma. Como en el siguiente ejemplo,
                                      casos como éstos ocurren en las series con signos alternados.

                                                    x
                        EJEMPLO 3.8  Evaluación de e  usando series infi nitas
                                                                                         x
                                      Planteamiento del problema.  La función exponencial y = e  está dada por la serie
                                      infinita
                                                  x  2  x 3
                                          y =+ +1  x  +  +
                                                   2!  3!

                                      Evalúe esta función para x = 10 y x = –10; esté atento al problema del error de redondeo.

                                      Solución.  En la figura 3.12a se muestra un programa en Fortran 90 que utiliza una
                                                            x
                                      serie infinita para evaluar e . La variable i es el número de términos en la serie, term es
                                      el valor de término actual que se le agrega a la serie, y sum es el valor acumulado de la
                                      serie. La variable test es el valor acumulado precedente de la serie antes de la suma de
                                      term. La serie se termina cuando la computadora no puede detectar la diferencia entre
                                      test y sum.





                                                                                                         6/12/06   13:44:17
          Chapra-03.indd   74
          Chapra-03.indd   74                                                                            6/12/06   13:44:17
   93   94   95   96   97   98   99   100   101   102   103