Sei sulla pagina 1di 8

Conjunto de n umeros de punto otante en base 2 (con precisi on y exponente variables).

Universidad Nacional de Colombia Programaci on y M etodos num ericos Juan Carlos Morales Parra 30 de octubre de 2013
A la colecci on de n umeros que pueden ser representados en el computador sin estar sujetos a errores de redondeo, se le denota como el conjunto de n umeros de punto otante vinculado a la m aquina. Cada elemento del grupo suscitado tiene la forma particular n = (0.d1 d2 d3 . . . dt ) e (para i {1, 2, 3, ..., t}) y d1 = 0 (A)

con 0

di

donde los t erminos (la base), t (la precisi on) y e (el exponente), dependen de modo biun voco del ordenador; espec camente de la cantidad de cifras que este puede emplear para denir los elementos del sistema n umerico real.

Indice
1. Problema. 2. Soluci on. 3. Resultados. 4. C odigo Fuente. 5. Conclusiones. 1 2 5 6 8

1.

Problema.

El conjunto de n umeros de punto otante ligado a un ordenador binario particular, yace restringido por la cantidad de cifras que este tiene disponible,

para caracterizar las mantisas y los exponentes que ostentan los n umeros reales bajo base binaria en notaci on cient ca. Se pretende estructurar un programa que permita conocer al usuario los elementos positivos de aquel conjunto, en funci on de par ametros que el mismo suministrar a, como la precisi on y el intervalo del exponente.

2.

Soluci on.

Para esclarecer el escenario caracterizado por manifestar una arbitrariedad relacionada con el tama no de la mantisa y el rango del exponente en la expresi on (A), se analiz o un caso particular permiti o identicar propiedades signicativas que conduciri an, mediante extrapolaci on, a la formulaci on de un proceso resolutivo concordante con la tarea delegada. Caben resaltar dos observaciones relevantes previamente: 1. Si escribi esemos, en notaci on cient ca, todos los n umeros de punto otante asociados a la base binaria, con precisi on t y exponente e (en un intervalo [L, U ]), notar amos que varios de ellos comparten la misma mantisa, diferenci andose u nicamente en el exponente que acompa na la base. 2. Si denimos, para el caso anterior, el conjunto de todas las mantisas, encontrar amos que su cardinal es 2t1 (pues ((se cuenta con dos elementos para suplir t-1 espacios vac os))). As , (1) y (2) sugieren impl citamente tres armaciones: El n umero de mantisas es nito para cualquier ordenador binario (par ametros arbitrarios). La precisi on conferida a la mantisa dene el n umero de mantisas existente en dicho sistema. Si se conoce el conjunto de todos los n umeros de punto otante ligados a un exponente e0 , se pueden determinar con facilidad TODOS los n umeros de punto otante restantes (pues simplemente ser an m ultiplos o subm ultiplos de los ya conocidos). Por consiguiente la soluci on del problema original, reside principalmente en la conguraci on de un procedimiento que permita denir todas las mantisas posibles, para una precisi on determinada.Estudiar un caso particular resulta crucial en esta etapa. Si la precisi on fuese 5, por ejemplo, esperar amos que el conjunto de todas las mantisas potencialmente estructurables fuese 2

Figura 1: Conjunto de mantisas asociadas a una precisi on igual que 5.

El arreglo rectangular que caracteriza dicho conjunto num erico y el patr on de unos y ceros que este ostenta, encauzan la busqueda a procesos cuyo aplicaci on permita denir matrices con propiedades espec cas. Por un lado, el tama no de dichas matrices s olo est a restringido por la precisi on designada, dado que: (I) el n umero de columnas es igual a la precisi on referenciada, y (II) el n umero de las est a jado por la expresi on 2t1 , pues es la cantidad de mantizas diferentes que pueden conformarse en sistema binario para aquella precisi on. Por el otro, el patr on (de componentes) en las columnas es bastante curioso: En la primera s olo hay unos. En la segunda, la primera mitad est a constituida por ceros y la restate por unos. En la tercera, los cuatro primeros son ceros y los cuatro siguientes son unos; repitiendo la secuencia para las ocho posiciones posteriores. En la cuarta los dos primeros son cero, los dos siguiente unos; repitiendo aquel patr on de dos en dos hasta el nal de la columna.... Para recrear este modelo auspiciado por la contemplaci on, se emplearon dos mecanismos: El primero es un c odigo fuente (en lenguaje de programaci on C) que permite modelar la matriz de tal modo que el patr on se reproduce parcialmente.
n1 2P recisio 1 2j nj 2P recisio 1

a[i][j ] = 0 a[i][j ] = 1 si

si

i i

(1) (2)

n1 2P recisio j 2

Para el caso espec co donde la precisi on es igual a 5, el ((c odigo)) anterior permite construir la secci on indicada a continuaci on.

Figura 2: Construcci on parcial de la matriz de Mantisas Nos obstante, la gura (1) sugiere como puede expandirse el patr on en toda la matriz, sin importar la precesi on que la dene. En aquella gura, como se mencion o previamente, diversas secuencias se presentan en las columnas, caracterizadas por manifestar un comportamiento regular (la gura (3) permite entender la asignaci on de este ep teto).

Figura 3: Expansi on del patr on en la matriz 4

La siguiente expresi on, basada en la susodicha frecuencia ordinal de t erminos repetidos en las diferentes columnas, permite ((permear)) toda la matriz con la conguraci on asignada por (1) y (2).
nj a[i][j ] = a[i 2P recisio ][j ] si j

nj 2P recisio

(3)

El comportamiento generalizado de (1),(2) y (3), conducen a la determinaci on de CUALQUIER matriz de mantisas; permitiendo con ello determinar el conjunto de n umeros de punto otante, al multiplicar la representaci on en base decimal de cada una de ellas por el n umero dos elevado a la potencia deseada (para ello pueden emplearse vectores, como se contempla en la secci on del c odigo).

3.

Resultados.

Para poner a prueba el c odigo construido, se determin o el conjunto de n umeros de punto otante (en sistema binario) asociado a los par ametros: presici on=6, L mite inferior del exponente=2 y L mite superior del exponente=4. Primero se exhibe la matriz de mantizas correspondiente al escenario estudiado:

Figura 4: Matriz de mantisas ligada al caso t=6,L=2 y U=4

Y luego el conjunto de envergadura

Figura 5: Conjunto de n umeros de punto otante ligado al caso t=6,L=2 y U=4

4.

C odigo Fuente.

El c odigo elaborado para niquitar el problema de inter es es: (cabe resaltar que a lo largo de esta sistematizaci on del lenguaje de programaci on C, se mencionan las vicisitudes que cada porci on permiti o solventar)

#include<stdio.h> #include<math.h> int main (void){ int limite (int precision, int m); int limitee (int precision, int o); int precision,expInf,expSup,n,h; 6

int i,j,k,l; printf("Bienvenido: Este programa le permitira determinar el conjunto de numeros de punto flotante-en base binaria- correspondiente a una precision y un intervalo del exponente arbitrarios"); printf("\nDigite la Precision:\t"); scanf("%d",&precision); printf("\nDigite el exponente inferior:\t"); scanf("%d",&expInf); printf("\nDigite el exponente superior:\t"); scanf("%d",&expSup);

/*Formulacion de la matriz de Mantisas*/ /*(1.)Estructuracion del patron "primitivo"*/ n=pow(2,(precision-1)); float vec[n],cop[n]; int N[n][precision]; for(i=0; i<=(n-1); i=i++){ N[i][0]=1;} for(j=1; j<=(precision-1); j=j++){ for (i=0; i<=(n-1); i=i++){ if (0<=i && i<=limite(precision,j)){ N[i][j]=0;} if((limite(precision,j)+1)<=i && i<=limitee(precision,j)){ N[i][j]=1;} }} /*(2.)Expansion del patron a toda la matriz*/ for(j=2; j<=(precision-1); j=j++){ for(i=pow(2,(precision-j)); i<=(n-1); i=i++){ k=pow(2,(precision-j)); N[i][j]=N[i-k][j];}} /*(3.)Salida de todas las mantisas posibles para la precision seleccionada*/ printf("\nLas Mantisas binarias asociadas a dicha precision son:\n"); for (k=0;k<=(n-1);k=k++){ for (l=0;l<=(precision-1);l=l++){ printf("%d\t",N[k][l]);} printf("\n");} /*Valores en base decimal de las Mantisas determinadas(Numeros binarios primitivos)*/ for (i=0;i<=(n-1);i=i++){ vec[i]=0; for (j=0;j<=(precision-1);j=j++){ vec[i]=vec[i]+((N[i][j])*(pow(2,(-1-j)))); 7

}} for (h=0; h<n; h=h++){ cop[h]=vec[h];} /*Generacion de todos los numeros de punto flotante vinculados a los parametros suministrados por el usuario*/ printf("\n Los numeros de punto flotante correspondientes a un ordenador restringido por dichos parametros son:\n"); for (i=expInf; i<=expSup; i=i++){ for (j=0;j<=(n-1);j=j++){ vec[j]=pow(2,i)*cop[j]; printf("\n%.6f",vec[j]);}} printf("\n"); return 0; } /*Funciones empleadas en la formulacion de la matriz de Mantisas*/ int limite (int precision, int m){ int k,r; k=pow(2,(precision-1)); r=pow(2,m); k=(k/r)-1; return k; } int limitee (int precision, int o){ int k; k=pow(2,(precision-o))-1; return k; }

5.

Conclusiones.
El eje central de la soluci on del problema, resid a en la determinaci on de aquella matriz de mantisas denida por la precisi on espec ca; pues a partir de ella, mediante operaciones aritm eticas, puede deducirse el conjunto de todos los n umeros de punto otante bajo cualquier exponente seleccionado.

Potrebbero piacerti anche