Professional Documents
Culture Documents
al nmero
52
1
2
n
n
, tambin puede ser cero y en tal caso el
nmero es una potencia de 2.
La siguiente tabla ilustra los nmeros en MATLAB de acuerdo a la norma IEEE 754, en
particular los valores para s, e y f.
Nombre Decimal aprox. Hexadecimal s e f
-inf
--------------------
fff 0000000000000 1 2047
0
-realmax=
(-)(2^1023)(1+
2^-1+2^-2+)
-1.797693134862316e+308
ffe fffffffffffff 1 2046
52
1
2
n
n
(-)(2^1023)(1)
-8.988465674311580e+307
ffe 0000000000000 1 2046
0
-1=(-)(2^0)(1)
-1
bff 0000000000000 1 1023
0
-realmin=(-)(2^-
1022)(1)
-2.225073858507201e-308
801 0000000000000 1 1
0
0
0
000 0000000000000 0 0
0
eps(0)=(+)
(2^-1022)(2^-52)
4.940656458412465e-324
000 0000000000001 0 0 52
2
realmin=2^-1022
2.225073858507201e-308
001 0000000000000 0 1
0
realmin+
eps(realmin)
2.225073858507202e-308
001 0000000000001 0 1 52
2
1=(+)(2^0)(1)
1
3ff 0000000000000 0 1023
0
3=(+)(2^1)(1+.5)
3
400 8000000000000 0 1024 1
2
pi
3.141592653589793
400 921fb54442d18 0 1024
0.57079
(+)(2^1023)(1)
8.988465674311580e+307
7fe 0000000000000 0 2046
0
realmax=
(+)(2^1023)(1+
2^-1+2^-2+)
1.797693134862316e+308
7fe fffffffffffff 0 2046
52
1
2
n
n
Inf=realmax+
eps(realmax)
---------------------
7ff 0000000000000 0 2047
0
NaN
---------------------
fff 8000000000000 1 2047
.5
Los nmeros reales son necesarios para las operaciones aritmticas, acceder a ellos
permite disponer de un continuo de nmeros, los que se pueden visualizar como cualquier
punto de la recta numrica. No as el conjunto de nmeros que se puede representar en
MATLAB, que es diferente en dos aspectos fundamentales:
1.- Existen vacos entre los nmeros, que tan grande es este vaco depende del nmero en
cuestin.
MATLAB para principiantes 14
2.- No es posible representar de manera exacta a todos los nmeros reales.
Por ejemplo los nmeros reales entre 72057594037927932 y 72057594037927944 se
representan por el mismo nmero en MATLAB (4370000000000000
H
) =
(+)2^(4x16^2+3x16+7-1023)(1+0), que solo es correcto para el nmero
72057594037927936.
En el siguiente ejemplo, al que se puede regresar despus de cubrir el capitulo 3, permite
obtener la representacin binaria de cualquier nmero real en notacin extendida, y se
basa en la divisin sucesiva de potencias de 2. Enseguida crea un vector para almacenar
las potencias y exhibe el nmero. La lnea con la instruccin KKKL(a(a>=0)+1)=1;
indica que el vector KKKL en su posicin x tomar el valor 1, donde x es el valor que
tiene el vector a sumndole 1 solo cuando a es mayor igual a 0. En las posiciones donde
a<0 se deja el valor que KKKL ya tenia, en este caso cero.
% Representacin binaria de un nmero
%
% Formato: [bina]=detobi(nmero, resolucin)
%
% Ejemplo: A=detobi(73.02,20)
%
% Se busca el binario de 73.02 con una representacin de 20
% bits
function [bina]=detobi(numero,representacion)
m=1;
while numero>2^-representacion;
a(m)=floor(log(numero)/log(2));
numero=numero-2^a(m);
m=m+1;
end
if max(a)>0
ndi1=max(a)+1;
else
ndi1=0;
end
if min(a)<0
ndi2=min(a);
else
ndi2=0;
end
KKKL=zeros(1,ndi1);KKKR=zeros(1,abs(ndi2));
KKKL(a(a>=0)+1)=1;KKKR(abs(a(a<0)))=1;
resss=[num2str(KKKL),'.',num2str(KKKR)]
format longG
bina=sum(10.^a);
MATLAB para principiantes 15
Un ejemplo vvido de la importancia del orden de las operaciones y de la representacin
numrica en MATLAB se puede ver en siguiente ejemplo. Hallar los valores de n tales
que
0 1
1
1 ) ( = |
.
|
\
|
+
=
n
n
n n f 1.1
El problema es que si desarrollamos el parntesis, resulta que f(n) es cero para cualquier
valor de n. MATLAB, sin embargo, realiza las operaciones en el orden de su prioridad,
primero potencia, despus multiplicacin y divisin y finalmente suma y resta, los
parntesis tienen preferencia sobre el orden de prioridad. En este caso se sumar n+1
antes de dividir sobre n, despus se resta el uno, todo se multiplica por n, este resultado es
restado al uno. Como resultado, entonces, de este orden de operaciones y de la
representacin numrica, f(n) no vale cero para toda n.
En MATLAB el cdigo para ilustrar la funcin anterior es el siguiente, donde eps se
emplea para aumentar y normalizar la diferencia con el cero.
n=1:500;
f=(1-n.*((n+1)./n-1))./eps(n);
plot(n,f,'*')
Figura 1.3 Diferencia artificialmente introducida por MATLAB por el orden de las
operaciones, solo las n que son potencias de 2 dan cero para la funcin f(n).
1.7 Guardar el trabajo
Si se desea guardar las variables se procede por File-Save workspace as y se guarda con
el nombre deseado. Para guardar la historia de comandos se procede a seleccionarlos en
el panel de Command History y con el botn derecho del Mouse se selecciona Create M-
File, aparece otra ventana con la historia de los comandos y ah se puede guardar su
contenido en un archivo. Las figuras, ms adelante se ver como generarlas, se pueden
guardar en formatos muy diversos, *.fig es el formato nativo de MATLAB, es
modificable y el mas conveniente ya que guarda los valores que la generaron, *.eps, es
postscript y se pueden anexar a documentos Word y la calidad no cambia al cambiar el
tamao, *.jpg es el mas comn pero la calidad es muy limitada y disminuye
rpidamente al cambiar de tamao. Este comentario se basa en que las imagines bitmap