Está en la página 1de 4

1

%program01.m
%propagación de errores
%x=1/(2*pi*f*C)
%pi=3.14 tiene 2 cde
%f=60 Hz precision de 0.01 Hz
%C=1e-6 F precición de 1%
clc
clear all
syms p f C
x=1/(2*p*f*C)
pretty(x)
nx=subs(x,{p,f,C},{3.14,60,1e-6}) %reemplazar
dx_p=diff(x,p) % derivadas algebraicas
dx_f=diff(x,f)
dx_C=diff(x,C)
ndx_p=subs(dx_p,{p,f,C},{3.14,60,1e-6}) % derivadas numericas
ndx_f=subs(dx_f,{p,f,C},{3.14,60,1e-6})
ndx_C=subs(dx_C,{p,f,C},{3.14,60,1e-6})
ep=0.5e-2, ef=0.01, eC=0.01*1e-6
ex=abs(ndx_p)*ep+abs(ndx_f)*ef+abs(ndx_C)*eC
X=[nx-ex nx+ex] % rango esperado del X exacto

2
%program02.m
%Error de redondeo
%Un numero debe ser aproximado a un
%numero de maquina lo cual no siempre
%es exacto
clc
clear all
t=125.875
sym(t, 'd') %muestra el numero como es almacenado en el computador
%125.875 se almacena sin error
s=0.1
sym(s, 'd') %0.10000000000000000555111512312578=0.1+e
suma=0
for i=1:1000000
suma=suma+s;
end
fprintf('suma=%20.15f \n',suma) %suma=100000.000001332880000
% si el numero tiene conversion exacta a base binaria
% se almacena sin error

3
%program03.m
%Aritmética del computador
%Segun la norma IEEE-754
%MATLAB usa doble precision
clc
clear all
a=realmax %mayor numero positivo normalizado 1.7977e+308
b=realmin %menor numero positivo normalizado 2.2251e-308
c=b/2 %numero sub-normal o no normalizado
d=realmin*2^-52 %menor positivo subnormal 4.9407e-324
e=d/2 %desbordamiento UnderFlow 0
f=a*2 %desbordamiento OverFlow Inf
g=eps %distancia del 1 al siguiente numero de maquina
fprintf('1=%25.20f\n',1)
fprintf('1+eps=%25.20f\n',1+eps)
fprintf('1+eps/2=%25.20f\n',1+eps/2)

4
%program04.m
%Representacion en 64 bits de un numero real
clc
clear all
format hex
a=1 %3ff0000000000000
%convertir cada caracter a binario de 4 bits
% 0 0000 1 0001 2 0010 3 0011
% 4 0100 5 0101 6 0110 7 0111
% 8 1000 9 1001 10 1010 11 1011
% 12 1100 13 1101 14 1110 15 1111
b=realmin % 0010000000000000
% 0000 0000 0001 0000 0000 ... 0000
% x=(-1)^s*(1.0000000...000)*2^(00000000001-1023)
c=realmax % 7fefffffffffffff
d=+0 % 0000000000000000
e=-0 % 8000000000000000
f=2^-1074 % 0000000000000001 Menor Subnormal
g=1/0 % Inf 7ff0000000000000 0111 1111 1111 0000 0000
h=0/0 % NaN fff8000000000000 1111 1111 1111 1000 0000

5
%program05.m
%Solucion de un sistema lineal de ecuaciones
clc
clear all
format long
A=input('A=')
b=input('b=')
n=size(A,1) % orden de la matriz numero de filas
rA=rank(A)
rAb=rank([A b])
if rA==rAb
disp('Sistema compatible')
if rA==n
disp('Sistema con solucion unica')
x1=A\b
x2=inv(A)*b
else
disp('Sistema con Infinitas soluciones')
end
else
disp('Sistema incompatible o absurdo')
end
6
%program06.m
%Sistemas mal condicionados
clc
clear all
format long
n=input('n=')
H=hilb(n) % H(i,j)=1/(i+j-1)
b=H*ones(n,1)
x=H\b
xex=ones(n,1)
err=norm(x-xex,Inf)
% N Err
% 2 7.771561172376096e-016
% 3 4.884981308350689e-015
% 4 2.958744360626042e-013
% 5 1.992628284597231e-012
% 6 4.293715383241192e-010
% 7 2.358794037871093e-008
k=norm(H,Inf)*norm(inv(H),Inf) % numero de condicionamiento
% cuando k es grande, la matriz es mal condicionada y
% afecta la solucion del sistema
pp=ceil(log10(k)) % perdida de precision en digitos
pe=16-pp % precision esperada en digitos

7
%program07.m
%normas vectoriales
clc
clear all
v=[1 -2 5]
n1=norm(v,1) % 8
n2=norm(v,2) % 5.47
n3=norm(v,Inf) % 5
%Normas Matriciales
A=[1 4;0 3]
n4=norm(A,1) % 7 maxima suma por columna
n5=norm(A,2) % 5.06 sqrt(radioespectral(A*A'))
n6=norm(A,Inf) % 5 máxima suma por fila

8
%program08.m
%Eliminacion de Gauss
clc
clear all
format short
A=[2 4 5;7 2 1;4 7 21]
b=[2 5 1]'
Ab=[A b]
m21=Ab(2,1)/Ab(1,1)
Ab(2,:)=Ab(2,:)-m21*Ab(1,:)
m31=Ab(3,1)/Ab(1,1)
Ab(3,:)=Ab(3,:)-m31*Ab(1,:)
m32=Ab(3,2)/Ab(2,2)
Ab(3,:)=Ab(3,:)-m32*Ab(2,:)
x3=Ab(3,4)/Ab(3,3)
x2=(Ab(2,4)-x3*Ab(2,3))/Ab(2,2)
x1=(Ab(1,4)-x3*Ab(1,3)-x2*Ab(1,2))/Ab(1,1)
x=A\b

También podría gustarte