Está en la página 1de 19

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE CIENCIAS NATURALES Y MATEMÁTICA


ESCUELA PROFESIONAL DE FÍSICA

CAPITULO 1. CONCEPTOS BÁSICOS ERRORES


TRUNCAMIENTO EN LOS PROGRAMAS
JUNIO 2020

MATEMÁTICA DISCRETA

Profesor Dr. Juan Méndez


Docente Principal
jamendezv@unac.edu.pe

ELABORADO POR Dr. JUAN MENDEZ


Capitulo 1. Conceptos básicos
 1. Introducción.- En este capítulo revisaremos tres de los sistemas numéricos posicionales más
relevantes en el estudio de los métodos numéricos: binario, octal y decimal. Para esto
analizaremos las conversiones entre ellos, la representación y manejo del sistema binario en la
computadora, así como los diversos errores que ello puede ocasionar y algunas formas de
evitarlos. Dada la naturaleza electrónica de las calculadoras y computadoras, los sistemas binario
y octal resultan los más indicados a usarse en estos dispositivos; por lo que, a fin de tener una
idea de los procesos numéricos internos en ellas, conviene hacer un estudio de tales sistemas y su
conversión al decimal, ya que éste es finalmente nuestro medio de enlace con las máquinas.

Por un lado, dada la finititud de la palabra de memoria de las máquinas, es imposible representar
a todos los números reales en ella. Así, números como , , , números muy pequeños" (o muy
grandes) se manejan usando números que son aproximaciones de ellos o simplemente no se
manejan. Por otro lado, una de las características más sobresalientes de los métodos numéricos
es el uso de los números reales en cálculos extensos. Cabe entonces preguntarse qué efecto
tienen tales aproximaciones en los cálculos que hacemos con dichos números, en los resultados
que obtenemos e incluso qué números reales pueden representarse exactamente en la
computadora. El conocimiento de todo esto nos ayudará a evitar cierto tipo de errores, analizar
su propagación e incluso interpretar mejor los resultados dados por una máquina.

ELABORADO POR Dr. JUAN MENDEZ


Capitulo 1. Conceptos básicos
 2. Sistemas numéricos.- Los sistemas numéricos que utiliza una PC son:
o Sistema binario
o Sistema octal
o Sistema decimal

A. Sistema binario.- Es un sistema de base dos porque emplea un grupo básico de dos
símbolos: 0 y 1. Los símbolos “1” y “0” utilizados para escribir los numerales se
denominan dígitos binarios o bits.

Dígitos binarios:

Valores de posición:

ELABORADO POR Dr. JUAN MENDEZ


 
 
16 + 0 + 0 +

ELABORADO POR Dr. JUAN MENDEZ


A.1. Número entero en sistema binario
  SIGNO

NÚMERO BINARIO

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

 
Por cada palabra de 16 bits puede contener un número cualquiera del intervalo: [-32768 a +32767]

Ejemplo 1. Represente el número de -26 en una palabra de 16 bits.


Solución (-26)10 = (-11010)2 y su almacenamiento en una palabra de 16 bits sería:

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0
Ejemplo 1. Represente el número de 525 en una palabra de 16 bits.
Solución (525)10 = (1000001101)2 y su almacenamiento en una palabra de 16 bits sería:

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1
ELABORADO POR Dr. JUAN MENDEZ
 A.2. Número real simple precisión en notación científica en sistema binario
Cuando se desea almacenar un número real en una PC de 16 bits, se emplea en su
representación binaria la notación científica,

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+/- +/- Característica Mantisa

Por cada palabra de 16 bits puede contener un número real cualquiera del intervalo:
[-0.922330E+19 a +0.461119E+18].

Ejemplo 2. Represente el número decimal -125.32 en una palabra de 16 bits.


Solución (-125.32)10 = (-1111101.010100011110101)2
Normalizado sería:
(-0.12532 x 10+3) = (-1111101010100011110101)x2+111
bits truncados en el almacenamiento

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0
ELABORADO POR Dr. JUAN MENDEZ +/- +/- Característica Mantisa
A.3. Número real doble precisión en sistema binario
Esto sirve para aumentar la exactitud de los cálculos adicionando más bits a la
mantisa. Esto se hace al utilizar dos palabras, la primera en la forma expuesta
anteriormente, y los bits de la segunda para aumentar la mantisa de la primera. Entonces,
con una palabra de 16 bits puede usarse en doble precisión una mantisa de 8+16=24
bits. Los 24 bits de la mantisa permiten expresar alrededor de 7 dígitos de exactitud en
un número decimal, en lugar de 3 de la precisión sencilla.

La desventaja del uso de la doble precisión es que se emplean más palabras, con lo
cual se acrecienta el uso de memoria para un programa.

3. Errores de truncamiento o redondeo


Al almacenar en un número finito de números binarios se comete automáticamente un
pequeño error, conocido como error de redondeo, que al repetirse muchas veces puede
llegar a ser considerable. Por lo que en ciencias se recomienda mejor trabajar con una
longitud grande, es decir en doble precisión. Actualmente las pa­labras en la PC van desde
ocho bits hasta 64 bits.

ELABORADO POR Dr. JUAN MENDEZ


  Por ejemplo, si se desea guardar la fracción decimal 0.0001 que en binario es la fracción
infinita:
0.000000000000011010001101101110001011101011000 ...

Normalizada en una PC de 16 bits, sería:


0.11010001X 2-1101

Si se desea sumar el número 0.0001 con él mismo diez mil veces, usando una
computadora, naturalmente que no se esperará obtener 1 como resultado, ya que los
números que se adicionen no serían realmente 0.0001 sino valores aproximados a él. A esto
se llama errores de truncamiento o redondeo.

4. Errores
A.1. Error.- Si es una aproximación a p, el error se define como:
A.2. Error Absoluto (EA).- Se define como:
A.3. Error Relativo (ER).- Se define como:
A.4. Error Relativo Porcentual (EP).- Se define como:
A.5. Error Relativo Aproximado (ERA).- Si es un mejor valor aproximación a valor
aproximado , el ERA se define como:

ELABORADO POR Dr. JUAN MENDEZ


Calculo de errores conociendo el valor verdadero o valor analítico
(valor aproximado) (valor verdadero) Error Observaciones
Error Absoluto 0.08 X 102 0.10 X 102 0.20 X 102
Error Relativo 0.08 X 102 0.10 X 102 0.20 x 100
Error 0.08 X 102 0.10 X 102 20%
Porcentual
Calculo de errores de valores pequeños
(valor aproximado) (valor verdadero) Error Observaciones
Error Absoluto 0.12 X 10-4 0.24 X 10-4 0.12 X 10-4 El EA puede ser engañoso,
mientras que el ER y EP son
Error Relativo 0.12 X 10-4 0.24 X 10-4 0.50 x 100
más significativo.
Error 0.12 X 10-4 0.24 X 10-4 50%
Porcentual
Calculo de errores de valores grandes
(valor aproximado) (valor verdadero) Error Observaciones
Error Absoluto 0.46826564 X 106 0.4683000 X 106 0.3436 X 102 El EA puede ser engañoso,
mientras que el ER y EP son
Error Relativo 0.46826564 X 106 0.4683000 X 106 0.73378 x 10-4
más significativo.
Error 0.46826564 X 106 0.4683000 X 106 0.00734 %
Porcentual
ELABORADO POR Dr. JUAN MENDEZ
 5. Tolerancia (Tol)
Se puede expresar,

donde, t es el número de dígitos significativos. Si un es un mejor valor aproximación de un valor


aproximado , se dice que aproxima a VA hasta t dígitos significativos

Es decir que un programa computacional continuará calculando hasta que el ERA sea menor que
la Tol establecida por el usuario mediante t dígitos significativos.
En los métodos computacionales de la física suele establecerse una tolerancia porcentual como
criterio de parada. En cada iteración se calculará el ERA que se comparará con la TOL
establecida de forma que el proceso iterativo finaliza cuando ERA<TOL, siendo TOL la
tolerancia fijada de antemano. Cuanto menor sea la tolerancia mayor será la precisión del
método aunque esto evidentemente supone un mayor número de iteraciones.

6. Limite de iteración (LI)


Es el número de iteraciones que establece el programador para que el programa de calculo se
detenga en caso que no encuentre el valor requerido.

ELABORADO POR Dr. JUAN MENDEZ


7. Causas de errores graves en la implementación de los métodos computacional
Existen diversas causas:
A. Suma de números muy distintos en magnitud
Vamos a suponer que se trata de sumar 0.002 a 600 en la computadora decimal imaginaria.
0.002 = 0.2000 X 10-2
600 = 0.6000 X 10+3
Estos números normalizados no pueden sumarse directamente y, por tanto, la compu­
tadora debe desnormalizarlos antes de efectuar la suma.
0.002 = 0.000002 X 10+3
600 = 0.600000 X 10+3
600.002 = 0.600002 X 10+3
Como sólo puede manejar cuatro dígitos, los últimos dos son eliminados y la respues­ta es:
0.6000 X 10+3 o 600. Por el resultado, la suma nunca se realizó.
Este tipo de errores, cuyo origen es el redondeo, es muy común y se recomienda, de ser
posible, no sumar o restar dos números muy diferentes.
B. Resta de números casi iguales
Supóngase que la computadora decimal va a restar 0.2144 de 0.2145
0.2145 X 100 -
0.2144 X 100
ELABORADO POR Dr. JUAN MENDEZ
0.0001 X 100
  Como la mantisa de la respuesta está desnormalizada, la computadora automática­mente la
normaliza y el resultado se almacena como 0.1000 X 10 -3. Hasta aquí no hay error, pero en
la respuesta sólo hay un dígito significativo; por tanto, se sugiere no confiar en su
exactitud, ya que un pequeño error en alguno de los núme­ros originales produciría un error
relativo muy grande en la respuesta de un problema que involucrara este error, como se ve
a continuación.
Supóngase que la siguiente expresión aritmética es parte de un programa

Considérese ahora que los valores de A=0.2145 X 100; B= 0.2144 X 100 y C=0.1000 X 105. Al
efectuar la operación se tiene, X=1, que es correcto. Si se escribiera por error A= A=0.2146
X 100, X=2 provoca un error del 100%. Este error puede pasar desapercibido.

C. Overflow y Underflow
Con frecuencia una operación aritmética con dos números válidos da como resultado un
número tan grande o tan pequeño que la computadora no puede manejarlo; como
consecuencia se produce un overflow o un underflow, respectivamente. Por ejemplo:

0.5000 X 1028 x
0.2000 X 1019
0.1000 X 1047

ELABORADO POR Dr. JUAN MENDEZ


  Cada uno de los números que se multiplican puede guardarse en la palabra de la
computadora imaginaria; sin embargo, su producto es muy grande y no puede almacenarse
porque la característica requiere tres dígitos. Entonces se dice que ha llevado a cabo un
overflow. Otro caso de overflow puede ocurrir en la división; por ejemplo:
42

En ambos casos la computadora reporta un mensaje de error overflow.


Similarmente, cuando se realiza operaciones con números muy pequeños 0.4000 X 10 -42,
reporta un mensaje de error underflow.

D. Error de discretización o truncamiento o redondeo


Dado que un número específico no se puede almacenar exactamente como número bina­rio
de punto flotante, el error generado se conoce como error de discretización (error de
cuantificación), ya que los números expresados exactamente por la máquina (números
máquina) no forman un conjunto continuo sino discreto.
Por ejemplo. Cuando se suma 10000 veces 0.0001 con él mismo, debe resultar 1; sin
embargo, el nú­mero 0.0001 en binario resulta en una sucesión infinita de ceros y unos, que
se trunca al ser almacenada en una palabra de memoria, con lo que se perderá información
y el re­sultado de la suma ya no será 1. Se obtuvieron los siguientes resultados que
corroboran lo anterior, utilizando una PC, simple precisión, doble precisión y cuádruple
precisión y Fortran.

ELABORADO POR Dr. JUAN MENDEZ


Operación aritmética Simple Doble precisión Cuádruple Precisión
precisión
1.00005352 0.99999997473787516 0.999999974737875163555145263671875000
1.00005352
1.00005352 0.99999997473787516
.99999999999990619 0.999999974737875163555145263671875000
0.999999999999999999999999999999982281

2.00005341 1.9999999999999063 1.99999999999999999999999999999998228

1001.00006
1.00005352 1000.9999999999999
.99999999999990619 1001.00000000000000000000000000000000
0.999999999999999999999999999999982281

10001.0000 10001.000000000000 10001.0000000000000000000000000000000

2.00005341 1.9999999999999063 1.99999999999999999999999999999998228

1001.00006 1000.9999999999999 1001.00000000000000000000000000000000

10001.0000 10001.000000000000 10001.0000000000000000000000000000000

ELABORADO POR Dr. JUAN MENDEZ


E. Errores de salida
Aun cuando no se haya cometido error alguno durante la fase de cálculos de un programa,
puede presentarse un error al imprimir resultados. Por ejemplo, supóngase que la
respuesta de un cálculo particular es exactamente puede presentarse un error al imprimir
resultados.
Por ejemplo, queremos imprimir 0.015625.
Se imprime correctamente si usamos el formato: F10.6 o E14.6 (de FOR­TRAN)
Por el contrario, se decide usar F8.3, se imprimirá 0.016 (si el compilador redondea), o
bien 0.015 (si el compilador trunca), con lo cual se presenta un error.

ELABORADO POR Dr. JUAN MENDEZ


LABORATORIO N° 12
1.
  Hacer un programa para calcular los errores de discretización,
truncamiento o redondeo en simple precisión, doble precisión y  5. Hacer un programa modular para calcular para las
cuádruple precisión. Para las siguientes expresiones siguientes expresiones matemáticas:
matemáticas:

2. Hacer un programa para calcular los errores de discretización


del ejemplo 1, truncamiento o redondeo en simple precisión, NOTA:
doble precisión y cuádruple precisión. En este caso modifique  En todos los casos desarrollar:
la sumatorio:
o S1=S1+0.0001 por S1=S1+0.0001E0 A. Diagrama de flujo
o S2=S2+0.0001 por S2=S2+0.0001D0 B. Algoritmo
o S3=S3+0.0001 por S3=S3+0.0001Q0 C. Codificación
3. Hacer un programa modular para calcular el ejemplo 1. D. Verificación
o Utilizar las sentencias USE y MODULE en el programa
o Hacer uso de los módulos para las constantes, precisión,
declaración.
o En este caso modifique la sumatorio:
 S1=S1+0.0001 por S1=S1+0.0001_SP
 S2=S2+0.0001 por S2=S2+0.0001_DP
 S3=S3+0.0001 por S3=S3+0.0001_QP
4. Aplicar los programas anteriores para las siguientes expresiones
matemáticas y analizar los errores de truncamiento en cada
caso.

ELABORADO POR Dr. JUAN MENDEZ


PROGRAM PRINCIPAL
IMPLICIT NONE
REAL(KIND=4) ::S1 ! SIMPLE PRECISION
REAL(KIND=8) ::S2 ! DOBLE PRECISION
REAL(KIND=16) ::S3 ! CUADRUPLE PRECISION
INTEGER ::I
CHARACTER(2) ::RPTA
DO
PRINT*,('*',I=1,50)
PRINT*, 'EVALIACION DEL ERROR DE DISCRETIZACION O REDONDEO'
PRINT*,('*',I=1,50)
S1=0;S2=0;S3=0
DO I=1,10000
S1=S1+0.0001
ENDDO
DO I=1,10000
S2=S2+0.0001
ENDDO
DO I=1,10000
S3=S3+0.0001
ENDDO
PRINT*, 'SUMA EN SIMPLE PRECISIÓN'
PRINT*, S1
PRINT*, 'SUMA EN DOBLE PRECISIÓN'
PRINT*, S2
PRINT*, 'SUMA EN CUADRUPLE PRECISÓN'
PRINT*, S3
PRINT*,'DESEA CONTINUAR SI/NO'
READ*,RPTA
IF (RPTA=='NO') EXIT
ENDDO
END PROGRAM PRINCIPAL
ELABORADO POR Dr. JUAN MENDEZ
PROGRAM PRINCIPAL
IMPLICIT NONE
REAL(KIND=4) ::S1 ! SIMPLE PRECISION
REAL(KIND=8) ::S2 ! DOBLE PRECISION
REAL(KIND=16) ::S3 ! CUADRUPLE PRECISION
INTEGER ::I
CHARACTER(2) ::RPTA
DO
PRINT*,('*',I=1,50)
PRINT*, 'EVALIACION DEL ERROR DE DISCRETIZACION O REDONDEO'
PRINT*,('*',I=1,50)
S1=0.0E0;S2=0.0D0;S3=0.0Q0
DO I=1,10000
S1=S1+0.0001E0
ENDDO
DO I=1,10000
S2=S2+0.0001D0
ENDDO
DO I=1,10000
S3=S3+0.0001Q0
ENDDO
PRINT*, 'SUMA EN SIMPLE PRECISIÓN'
PRINT*, S1
PRINT*, 'SUMA EN DOBLE PRECISIÓN'
PRINT*, S2
PRINT*, 'SUMA EN CUADRUPLE PRECISÓN'
PRINT*, S3
PRINT*,'DESEA CONTINUAR SI/NO'
READ*,RPTA
IF (RPTA=='NO') EXIT
ENDDO
END PROGRAM PRINCIPAL
ELABORADO POR Dr. JUAN MENDEZ
PROGRAM PRINCIPAL DO I=1,10000
IMPLICIT NONE S3=S3+0.0001Q0
REAL(KIND=4) ::S1,T1 ENDDO
REAL(KIND=8) ::S2,T2 ! T3=1+S3
REAL(KIND=16) ::S3,T3 ! T3=1000+S3
INTEGER ::I T3=10000+S3
CHARACTER(2) ::RPTA
DO PRINT*, 'SUMA EN SIMPLE PRECISIÓN'
PRINT*,('*',I=1,50) PRINT*, S1
PRINT*, 'EVALIACION DEL ERROR DE DISCRETIZACION O REDONDEO' PRINT*, T1
PRINT*,('*',I=1,50) PRINT*, 'SUMA EN DOBLE PRECISIÓN'
S1=0;S2=0;S3=0 PRINT*, S2
T1=0;T2=0;T3=0 PRINT*, T2
PRINT*, 'SUMA EN CUADRUPLE PRECISÓN'
DO I=1,10000 PRINT*, S3
S1=S1+0.0001E0 PRINT*, T3
ENDDO
! T1=1+S1 PRINT*, 'DESEA CONTINUAR SI/NO'
! T1=1000+S1 READ*,RPTA
T1=10000+S1 IF (RPTA=='NO') EXIT
ENDDO
DO I=1,10000 END PROGRAM PRINCIPAL
S2=S2+0.0001D0
ENDDO
! T2=1+S2
! T2=1000+S2
T2=10000+S2

ELABORADO POR Dr. JUAN MENDEZ

También podría gustarte