Sie sind auf Seite 1von 7

1) % prueba01.

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

% Sistemas Lineales de Ecuaciones

% 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

a=0; b=0; c=0; % valores iniciales

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];

a=an; b=bn; c=cn; % actualizacion

if err<TOL

break

end

end

disp(acum)

NumIterac=i

Solucion=[an bn cn]'

% TOL 1e-3 1e-6 1e-9 1e-12 1e-15 1e-18

% NumIte 12 24 36 47 59 64

////////////////////////////////////////////////////////////////////////////////

% program2.m
% Sistemas Lineales de Ecuaciones

% Metodos Iterativos

% Metodo de Gauss-Seidel escalar

%4a-b-c=2

% -a + 3 b - c = 1

% -2 a - 3 b + 10 c = 5

clc

clear all

format long

a=0; b=0; c=0; % valores iniciales

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];

a=an; b=bn; c=cn; % actualizacion

if err<TOL

break

end

end

disp(acum)

NumIterac=i

Solucion=[an bn cn]'

% TOL 1e-3 1e-6 1e-9 1e-12 1e-15 1e-18

% NumIte(J) 12 24 36 47 59 64

% NumIte(GS) 8 31
% Gauss-Seidel converge mas rapido que Jacobi

/////////////////////////////////////////////////////////////////////

% program3.m

% Sistemas Lineales de Ecuaciones

% Metodos Iterativos

% Metodo de Jacobi Matricial

%4a-b-c=2

% -a + 3 b - c = 1

% -2 a - 3 b + 10 c = 5

clc

clear all

A=input('A=') % [4 -1 -1;-1 3 -1;-2 -3 10]

if det(A)~=0

b=input('b=') % [2 1 5]'

% D=diag(A) extrae diagonal y lo guarda en un vector

D=diag(diag(A)) % matriz diagonal

% tril(A) toma la parte triangula inferior incluye diagonal

% 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

disp('No converge en 1000 iteraciones!!!')

else

disp(acum)

NumIte=i

end

else

disp('No existe solucion unica!!!')

end

% TOL 1e-3 1e-6 1e-9 1e-12 1e-15 1e-18

% NumIte(J)Esc 12 24 36 47 59 64

% NumIte(J)Mat 12 59

/////////////////////////////////////////////////////////////////////////

Das könnte Ihnen auch gefallen