Articulo de referencia

Dígito de guardia

En el análisis numérico , se pueden utilizar uno o más dígitos de protección para reducir la cantidad de error de redondeo . Ejemplo Supongamos que el resultado final de un cálc...

En el análisis numérico , se pueden utilizar uno o más dígitos de protección para reducir la cantidad de error de redondeo .

Ejemplo

Supongamos que el resultado final de un cálculo largo de varios pasos se puede redondear con seguridad a N decimales. Es decir, el error de redondeo introducido por este redondeo final hace una contribución insignificante a la incertidumbre general.

Sin embargo, es muy probable que no sea seguro redondear los pasos intermedios del cálculo a la misma cantidad de dígitos. Tenga en cuenta que los errores de redondeo pueden acumularse. Si se utilizan M decimales en el cálculo intermedio, decimos que hay M−N dígitos de guarda.

En informática

Los dígitos de protección también se utilizan en operaciones de punto flotante en la mayoría de los sistemas informáticos.

Como ejemplo, considere la resta . Aquí, la notación del producto indica una representación binaria de punto flotante con el exponente de la representación dado como una potencia de dos y con la mantisa dada con tres bits después del punto binario. Para calcular la resta es necesario cambiar las formas de estos números para que tengan el mismo exponente, y para que cuando se expanda la notación del producto los números resultantes tengan sus puntos binarios alineados entre sí. Al cambiar el segundo operando a la posición , como , se le da un cuarto dígito después del punto binario. Esto crea la necesidad de agregar un dígito adicional al primer operando, un dígito de guarda, poniendo la resta en la forma . 2 1 × 0,100 2 2 0 × 0,111 2 {\displaystyle 2^{1}\times 0.100_{2}-2^{0}\times 0.111_{2}} 2 1 × 0,0111 2 {\displaystyle 2^{1}\times 0.0111_{2}} 2 1 × 0,1000 2 2 1 × 0,0111 2 {\displaystyle 2^{1}\times 0.1000_{2}-2^{1}\times 0.0111_{2}}

Realizando esta operación se obtiene como resultado o . 2 1 × 0,0001 2 {\displaystyle 2^{1}\times 0.0001_{2}} 2 2 × 0,100 2 {\displaystyle 2^{-2}\times 0.100_{2}}

Sin utilizar un dígito de guarda, la resta se realizaría con solo tres bits de precisión, como , lo que daría como resultado o , el doble del valor correcto. Por lo tanto, en este ejemplo, el uso de un dígito de guarda condujo a un resultado más preciso. 2 1 × 0,100 2 2 1 × 0,011 2 {\displaystyle 2^{1}\times 0.100_{2}-2^{1}\times 0.011_{2}} 2 1 × 0,001 2 = {\displaystyle 2^{1}\times 0.001_{2}=} 2 1 × 0,100 2 {\displaystyle 2^{-1}\times 0.100_{2}}

Un ejemplo del error causado por el redondeo de punto flotante se ilustra en el siguiente código C.

int principal (){ doble a ; int i ; 
    
    

   a = 0,2 ; a + = 0,1 ; a - = 0,3 ;   
      
     

   para ( i = 0 ; a < 1.0 ; i ++ ) a += a ;        
         

   printf ( "i=%d, a=%f \n " , i , a );  

   devuelve 0 ; } 

Parece que el programa no debería terminar. Sin embargo, el resultado es:

i=54, a=1.000000

Otro ejemplo es:

Tome dos números:

2.56 × 10 0 {\displaystyle 2,56\times 10^{0}} y 2.34 × 10 2 {\displaystyle 2,34\times 10^{2}}

Elevamos el primer número a la misma potencia que el segundo: 10 {\estilo de visualización 10}

0,0256 × 10 2 {\displaystyle 0,0256\times 10^{2}}

La suma de los dos números es:

0,0256*10^2
2,3400*10^2 +  
____________
2,3656*10^2

Después de rellenar el segundo número (es decir, ) con dos s, el bit que sigue es el dígito de guarda y el bit que sigue es el dígito de redondeo. El resultado después del redondeo es opuesto a , sin los bits adicionales (bits de guarda y de redondeo), es decir, considerando solo . Por lo tanto, el error es . 2.34 × 10 2 {\displaystyle 2,34\times 10^{2}} 0 {\estilo de visualización 0} 4 {\estilo de visualización 4} 2.37 {\estilo de visualización 2.37} 2.36 {\estilo de visualización 2.36} 0,02 + 2.34 = 2.36 {\displaystyle 0,02+2,34=2,36} 0,01 {\estilo de visualización 0.01}

Véase también

Referencias

  • Forman S. Acton . Métodos numéricos que funcionan , The Mathematical Association of America (agosto de 1997).
  • Higham, Nicholas J. Precisión y estabilidad de algoritmos numéricos , Washington DC: Sociedad de Matemáticas Industriales y Aplicadas, 2002.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Dígito_de_guardia&oldid=1232525628"