%Cuestiones sobre números maquina, epsilon %Cancelación, desbordamiento, error, etc. format long e disp('MATLAB TRABAJA EN DOBLE PRECISION') disp('NUMEROS MAQUINA NORMALES') disp('El máximo número normal positivo, en doble precisión') (2-2^-52)*(2^1023) disp('realmax') realmax disp('realmax+1') realmax+1 disp('2*realmax') 2*realmax disp('El mínimo número normal positivo, en doble precisión') 2^-1022 disp('realmin') realmin disp('la mitad de realmin') realmin/2 disp('la cuarta parte de realmin') realmin/4 disp('EPSILON DE LA MAQUINA') disp('eps') eps disp('2^-52') 2^-52 disp('SUMAMOS Y RESTAMOS A 1 ALGUNAS FRACCIONES DE EPSILON') disp('1+eps') 1+eps disp('1-eps') 1-eps disp('1+eps/2') 1+eps/2 disp('1-eps/2') 1-eps/2 disp('1+3*eps/4') 1+3*eps/4 disp('ojo con los paréntesis') disp('(1+eps/2)+eps/2') (1+eps/2)+eps/2 disp('1+(eps/2+eps/2)') 1+(eps/2+eps/2) disp('CANCELACIóN') disp('Ejemplo: coseno de 1') disp('como límite') for j=5:20 c=(sin(1+10^-j)-sin(1))/10^-j end disp('exacto') cos(1) disp('Ejemplo') disp('el número 10^4-sqrt(99999999) calculado de dos modos distintos') disp('10^4-sqrt(99999999)') u1=10^4-sqrt(99999999) %5.000000055588316e-005 disp('1/(10^4+sqrt(99999999))') u2=1/(10^4+sqrt(99999999)) %5.000000012500001e-005 disp('es el mismo número y, sin embargo, según MATLAB, la diferencia es, en valor absoluto') abs(u1-u2) disp('y el error relativo es') abs(u1-u2) /abs(u2) disp ('NO SE DEBE DIVIDIR POR NúMEROS MUY PEQUEÑOS') disp('Ejemplo: y=1/(10^-j), j=300:312') for j=300:312 y=1/(10^-j) end