You are on page 1of 6

UNIVERSIDAD NACIONAL DE SAN

CRISTÓBAL DE HUAMANGA
FACULTAD DE INGENIERIA DE MINAS
GEOLOGÍA Y CIVIL

“CALCULO DEL NUMERO PI”


ASIGNATURA : Programación digital (IC 246)

PROFESOR : Ing.Cristian Castro Perez

EQUIPO DE TRABAJO : Alvizuri Vera, Wendy Denise


Araujo Morales, Yover
Huamani Lescano, Aquiles
Tovar Bergara, Berlly

FECHA DE ENTREGA : 14 – 05 – 09

AYACUCHO – PERÚ
PSEUDOCÓDIGO

ALGORITMO ARQUÍMEDES

ENTRADAS:
N: ENTEROS;

SALIDAS:
p: REAL DOBLE; perímetro del polígono de 2^N lados
Error: REAL DOBLE; perímetro del polígono de 2^N lados

VARIABLES
N, y, b, a, nlado, p, z: REAL DOBLE
y = 3.14159265359

PROCESO CALCULAR – METODO 1

INICIO
ESCRIBIR N
LEER N
LEER y

nlado = 2 ^ N ‘Calculo numero de lados


ESCRIBIR nlado

p = 2 * Sqr(2) 'Calculo del Perímetro

PARA z = 2 HASTA N
p = (2 ^ z) * Sqr(2 * (1 - Sqr(1 - (p / (2 ^ z)) ^ 2)))
ESCRIBIR p
SIGUIENTE z

Error = (Abs(y - Val(txtperimetro.Text)) / y) * 100 'Calculo del error


ESCRIBIR Error

'Números mayores a 30
SI N > 30 ENTONCES
txterror.Text = ""
txtperimetro.Text = ""
txtlados.Text = ""
txtvalorn.Text = ""
txtvalorn.SetFocus
ESCRIBIR "EL valor ingresado no corresponde, ingrese un valor entre 2 y 30"
FIN SI

FIN
PROCESO CALCULAR – MÉTODO 2

INICIO
ESCRIBIR N
LEER N
LEER y

nlado = 2 ^ N 'Calculo del numero de lados


ESCRIBIR nlado

SI N = 2 ENTONCES
txtperimetro = 2 * Sqr(2)
SINO
b = 2 - Sqr(2) 'Calculo del Perímetro
PARA a = 3 HASTA N
b = b / (2 + Sqr(4 - b))
p = (2 ^ a) * Sqr(b)
ESCRIBIR p
SIGUIENTE a
FIN SI

Error = (Abs(y - Val(txtperimetro2.Text)) / y) * 100 'Calculo del error


ESCRIBIR Error

SI N > 30 ENTONCES ‘Números mayores a 30


txterror2.Text = ""
txtperimetro2.Text = ""
txtlados.Text = ""
txtvalorn.Text = ""
txtvalorn.SetFocus
ESCRIBIR "EL valor ingresado no corresponde, ingrese un valor entre 2 y 30"
FIN SI

FIN

INCIO
txtvalorn = ""
txtlados = ""
txtperimetro = ""
txterror = ""
txtperimetro2 = ""
txterror2 = ""
txtvalorn.SetFocus
FIN

PROCESO INGRESO DE N
INICIO
N = Val(txtvalorn.Text)
SEA EL CASO KeyAscii
CASO Is < 32
CASO 48 HASTA 57
EN OTRO CASO
KeyAscii = 0
FIN SELECCION

FIN

FINALIZAR PROGRAMA
INICIO
End
FIN
CANCELACIÓN CATASTRÓFICA

Sabemos que al sumar (restar) números de diferente (igual) signo, y de


modulo muy parecido, se produce una perdida de dígitos significativos en el
resultado, incluso cuando este es exacto. Este fenómeno se denomina
cancelación. En principio, la cancelación no es algo malo. Sin embargo, si el
resultado de esta se utiliza en operaciones sucesivas, la perdida de dígitos
significativos puede generar la propagación de errores que pueden reducir
fuertemente la exactitud del resultado final, y se produce una cancelación
catastrófica.

Ejemplo Ilustremos la diferencia entre cancelación y cancelación


catastrófica.

Sean x = 0.732112, y = 0.732110.

Con aritmética de 5 dígitos de precisión (tamaño de la mantisa), estos y su


diferencia se representan como sigue
fl(x) = 0.73211 fl(y) = 0.73211;

fl(x - y) = 0 <> x - y = 0.000002 = 0.2 x 10-5

Como vemos en este caso limite, se han perdido todos los dígitos
significativos en el resultado, sin embargo, este es el valor exacto de la
resta de los números flotantes. Esta cancelación no es realmente peligrosa.
Sin embargo, si utilizamos este resultado en una operación posterior, como

fl(fl(x - y) * y) = 0 <> (x - y) * y = 0.14642 x 10-5

el resultado es completamente inexacto. Todos los dígitos son erróneos, se


ha producido una cancelación catastrófica.

Un mito común es que las computadoras trabajan con tal grado de precisión que los
usuarios no necesitan contemplar la posibilidad de resultados inexactos.
Esto se ve reforzado cuando vemos en la pantalla los resultados con gran cantidad
de cifras.
Entonces hay que tener cuidado al trabajar con números representados en punto
flotante y, en particular, cuales son las posibles fuentes de error. Cómo lograr
buenos resultados a pesar de estos problemas dependerá del problema a resolver

You might also like