Beruflich Dokumente
Kultur Dokumente
m
2) % Aritmetica del Compútador
3) clc
4) clear all
5) z=realmax % Maximo positivo normalizado 1.7977e+308
6) r1=z+1 % realmax
7) r2=2*z % Inf : Desbordamiento OVERFLOW
8) a=realmin % Mínimo positivo normalizado 2.2251e-308
9) r3=eps % precision de maquina = 2.2204e-016
10) r4=2^-52 % otra forma de calcular epsilon
11) fprintf('epsilon = %28.25f \n',eps)
12) fprintf('1+epsilon = %28.25f \n',1+eps)
13) fprintf('1+epsilon/2 = %28.25f \n',1+eps/2) % 1
14) sn1=realmin/2 % Numero sub-normal
15) sn2=realmin/2^52 % menor positivo subnormal % 4.9407e-324
16) sn3=realmin*eps % otra
17) uvlow=sn3/2 % cero, desbordamiento UNDERFLOW
///////////////////////////////////////////////////////////////////////////////
% prueba02.m
% Aritmetica del computador, IEEE-754
% Aproximacion de numeros a un numero de maquina
clc
clear all
t=0.1
sym(t, 'f' ) % 3602879701896397/36028797018963968
sym(t, 'e') % eps/40 + 1/10 = err + 1/10
sym(t, 'd') % 0.10000000000000000555111512312578
% Cada se almacene un numero que sea exacto en base binaria
% el numero se aproximara a un numero de maquina
s=224.875
sym(s, 'f')
sym(s, 'e')
sym(s, 'd')
% Efecto del redondeo
sum=0;
for i=1:1000000
sum=sum+0.1;
end
fprintf('Suma = %25.17f \n',sum)
% Suma = 100000.00000133288
% eXACTO= 100000
% nOTACION DE 64 bits (Doble de precision
% Estructura : Signo(1) Exponente (11) Mantisa (52)
format hex
realmax % 7fefffffffffffff = 16 hexadecimales
% NOtacion de hexadecimales expresados en 4 bits
% Hexad Binario
% 0 0000
% 1 0001
% 2 0010
%
%
% 7 0111
% e 1110
% f 1111
% 7fefffffffffffff = 0111 1111 1110 1111 1111 .....
% Conversion de un normalizado a real
% x=(-1)^S*1.m1m2m3.....m52*2^[(e1e2e3e4...e11)-1023]
% realmax=(-1)^0*1.1111......11*2^[(11111111110)-1023]=1.7977e+308
% Ejercicio
t=224.875
% Escribir en notacion de 64 bits y verificar la formula de conversion
% 406c1c0000000000 = 0100 0000 0110 1100 0001 1100 000...0000
% x=(-1)^(0)*1.110000011100*2^(10000000110-1023)
% Como se escribe el cero
t=0 % 0000000000000000
t=-0 % 8000000000000000 1000 0000 0000 0000
% Caso de los sub-normal
s=realmin/2 % 0008000000000000
% 0000 0000 0000 1000 0000 0000 ....
% x=(-1)^0*(0.10000...)*2^-1022=2^-1023=1.112536929253601e-308
sym(s,'d')
% Ejercicio verificar el almacenamiento
% del Inf
% NaN
/////////////////////////////////////////////////////////////////
% prueba03.m
clc
clear all
% Normas Vectorial
v=[1 2 -3 -2]
n1=norm(v,Inf) % 3 maximo valor absoluto
n2=norm(v,1) % 8 suma en valor absolita
n3=norm(v,2) % 4.242640687119286 modulo
% Normas Matriciales
A=[1 2 4;
-3 -2 8;
2 4 9]
n4=norm(A,Inf) % 15 maxima suma por filas (abs)
n5=norm(A,1) % 21 maxima suma por columnas (abs)
n6=norm(A,2) % sqrt(RadioEspectral(A*A'))
% Calculo paso a paso de la norma 2
B=A*A'
p=poly(B) % Polinomio caracteristico = 1*L^3+b*L^2+c*L+d
espectro=roots(p) % Raices del polinomio = espectro
RadioEspectral=max(abs(espectro))
n6=sqrt(RadioEspectral) % 12.903877
///////////////////////////////////////////////////////////////////////
% prueba04.m
% Tipos de solucion de un sistema Lineal de ecuaciones
clc
clear all
A=input('A=')
b=input('b=')
Ab=[A b]
[nf,nc]=size(A)
rA=rank(A)
rAb=rank(rAb)
if rA==rAb
disp('Sistema Compatible')
if rA==nc
disp('Sistema de Rango Completo')
disp('Solucion unica')
x=inv(A)*b
else
disp('Sistema de Rango Deficiente')
disp('Solucion Indeterminada o Infinitas')
end
else
disp('Sistema Incompatible o Absurdo')
disp('No existe solucion')
end
/////////////////////////////////////////////////////////////////////
ECUACIONES Y SISTEMA_LINEALES
% program1.m
% Metodos Iterativos
% Metodo de Jacobi escalar
%4a-b-c=2
% -a + 3 b - c = 1
% -2 a - 3 b + 10 c = 5
clc
clear all
format long
TOL=input('Tolerancia=');
acum=[a b c NaN];
for i=1:1000
an=(2+b+c)/4;
bn=(1+a+c)/3;
cn=(5+2*a+3*b)/10;
err=norm([an-a;bn-b;cn-c],Inf);
acum=[acum;an bn cn err];
if err<TOL
break
end
end
disp(acum)
NumIterac=i
Solucion=[an bn cn]'
% NumIte 12 24 36 47 59 64
////////////////////////////////////////////////////////////////////////////////
% program2.m
% Sistemas Lineales de Ecuaciones
% Metodos Iterativos
%4a-b-c=2
% -a + 3 b - c = 1
% -2 a - 3 b + 10 c = 5
clc
clear all
format long
TOL=input('Tolerancia=');
acum=[a b c NaN];
for i=1:1000
an=(2+b+c)/4;
bn=(1+an+c)/3;
cn=(5+2*an+3*bn)/10;
err=norm([an-a;bn-b;cn-c],Inf);
acum=[acum;an bn cn err];
if err<TOL
break
end
end
disp(acum)
NumIterac=i
Solucion=[an bn cn]'
% NumIte(J) 12 24 36 47 59 64
% NumIte(GS) 8 31
% Gauss-Seidel converge mas rapido que Jacobi
/////////////////////////////////////////////////////////////////////
% program3.m
% Metodos Iterativos
%4a-b-c=2
% -a + 3 b - c = 1
% -2 a - 3 b + 10 c = 5
clc
clear all
if det(A)~=0
b=input('b=') % [2 1 5]'
% triu(A)
L=D-tril(A)
U=D-triu(A)
Tj=inv(D)*(L+U)
Cj=inv(D)*b
x=zeros(size(b));
acum=[x' NaN] ;
TOL=input('Ingrese TOL=')
for i=1:1000
xn=Tj*x+Cj;
err=norm(xn-x,Inf);
acum=[acum;x' err];
x=xn;
if err<TOL
break
end
end
if i==1000
else
disp(acum)
NumIte=i
end
else
end
% NumIte(J)Esc 12 24 36 47 59 64
% NumIte(J)Mat 12 59
/////////////////////////////////////////////////////////////////////////