You are on page 1of 27

Universidad Peruana Unin

Ingeniera Civil
Programacin y nociones bsicas sobre errores
NOCIONES SOBRE ERRORES
0.1. Fichero function
Dentro de la organizacin de un programa es muy comn la realizacin de tareas que
pueden servir para diferentes programas o simplemente la separacin en etapas del programa
global que se pueden abordar independientemente. Una de las formas de realizar esta divisin
en MATLAB es la travs de las function.
Las function se construyen en cheros m.
function [Argumentos de salida]= nombre_funcin (Arg. Entrada)
A continuacin daremos los comandos ms usados en programas
0.1.1. Bucles
son iteraciones que se utilizan para controlar el ujo de un programa
for-end . La sintaxis de este comando es
for i=vi:inc:vf
instrucciones
end
While-end . La sintaxis de este comando es
while relacin
instrucciones
end
1
0.1.2. Sentencias condicionales
if-end . La sintaxis de este comando es
if relacin
instrucciones
end
if-else-end
if relacin
instruccin 1
else
instruccin 2
end;
Ejemplo 0.1 Construya un programa donde al introducir un nmero n,determine si pertenece
o no al intervalo [a, b]
Solucin:
function Intervalo_1(a,b,x)
if x>=a & x<=b
disp(esta dentro del intervalo)
else
disp(esta fuera del intervalo)
end
Ejemplo 0.2 Construir una funcin raices.m que calcule las raices de un polinomio de se-
gundo grado ax
2
+ bx + c = 0 y calcule las raices de x
2
3x + 2 = 0
Solucin:
function [x1,x2]= raices(a,b,c)
D = b^2-4*a*c
x1=(-b + sqrt(D))/(2*a);
x2=(-b - sqrt(D))/(2*a);
Ejemplo 0.3 Construya un programa donde puedas calcular el rea y el volumen de un
cilindro y calcule para r=5, h=12
Solucin:
function [area,volumen]= cilindro(r,h)
area=2*pi*r*h+2*pi*r^2;
volumen=pi*r^2*h;
2
La sentencia for-end
Los bucles que utiliza for en MATLAB tiene el siguiente aspecto
for contador = Valor inicial : incremento : valor nal
sentencia del cuerpo del bucle
end
Ejercicio 0.1 A n de aclarar las ideas ingrese los siguientes comandos y comente sus resul-
tados
for i=1:8
i
end
Ejercicio 0.2 Ingrese los siguientes comandos y comente sus resultados
for i=1:3:19
i
end
Ejemplo 0.4 hacer un programa donde puedas calcular la suma de los n primeros nmeros
naturales
Solucin:
function s=Sumita(n)
suma=0;
for x=1:n,
suma = suma + x;
end;
s=suma;
Ejemplo 0.5 Hga un programa que reciba un vector y entregue el promedio del valor de sus
elementos
Solucin:
function p=promedio(x)
n=length(x);
suma=0;
for i=1:n
suma=suma+x(i);
end
p=suma/n;
3
Ejemplo 0.6 Construya un programa que evalue la funcin f(x) =
(
2 sen
2
(2x), x 0
1 e
x
, x > 0
Solucin:
function y= f1(x)
n=length(x);
for i=1:n
if x(i)<=0
y(i)=2*(sen(2*x(i)))^2;
else
y(i)=1-exp(-x(i));
end
end
Ejemplo 0.7 Construya un programa que evalue la funcin: f(x) =

x 1, x 2.
1 x
2
, 2 < x < 0,

1
x + 1
, x 0
Solucin:
function y= f2(x)
n=length(x);
for i=1:n
if x(i)<=-2
y(i)=x(i)-1;
elseif (x(i)>-2 & x(i)<0)
y(i)=1-x(i).^2;
else
y(i)=1/(x(i)+1);
end
end
Ejemplo 0.8 Escriba una funcin para elegir el mayor entre dos nmeros
Solucin:
function M=mayor(a,b)
if a>b
M=a;
else
M=b;
end
4
Ejemplo 0.9 Escriba una funcin que dada dos vectores A, B y encuentre los elementos de
la interseccin de ambos vectores
Solucin:
function C= interseccion(A,B)
m=length(A);
n=length(B);
k=1;
for i=1:m
for j=1:n
if A(i)==B(j)
C(k)=A(i);
k=k+1;
end
end
end
Ejemplo 0.10 Haga un programa que me calcule el valor absoluto
Solucin
function va= ValorAbsoluto(n)
if n >= 0
va = n;
else
va = -n;
end
Ejemplo 0.11 Construir una funcin raices1 que, que muestre el polinomio de segundo grado
ax
2
+ bx + c = 0 si tiene raices complejas o reales
Solucin
5
function [x1,x2]= raices1(a,b,c)
D = b^2-4*a*c;
for D>=0
disp (Raices Reales)
x1=(-b + sqrt(D))/(2*a);
x2=(-b - sqrt(D))/(2*a);
else
disp (Raices Complejas)
x1=(-b + sqrt(D))/(2*a);
x2=(-b - sqrt(D))/(2*a);
end
Ejemplo 0.12 Crear un programa tal que dada la matriz A cuadrada de dimensin n devuelva
una nueva matriz B cuyos elementos son elementos de A salvo los de la diagonal principal
que son ceros.
Solucin:
function B= Inters(A)
[m n]=size(A);
if (m == n)
error (la matriz no es cuadrada)
end
for i=1:m
for i=1:n
if i=j
B(i,j)=A(i,j);
else
B(i,j)=0;
end
end
end
Ejemplo 0.13 Haga un programa que calcule la traza de una matriz cuadrada.A de dimensin
n
6
Solucin:
function suma= Traza(A)
[m n]=size(A);
if (m == n)
error (la matriz no es cuadrada)
end
suma=0;
for i=1:m
for j=1:n
if i==j
suma=suma+A(i,j);
end
end
end
Ejercicio 0.3 construir un programa que me calcule la norma euclidiana en R
n
Solucin:
function N= norma(v)
n=length(v);
suma=0;
k=1;
while k <=n
suma=suma+v(k)^2;
k=k+1;
end
N=sqrt(suma);
Ejemplo 0.14 Haga un programa donde dado dos matrices cuadradas se calcule la suma
7
Solucin:
function C= SumMatrices(A,B)
[m1,n1]=size(A);
[m2,n2]=size(B);
if (m1=m2) | (n1=n2)
error (error en las dimensiones de las matrices)
end
for i=1:m1
for j=1:n1
C(i,j)=A(i,j)+B(i,j);
end
end
Ejemplo 0.15 Haga un programa que multiplique una matriz con un vector controlando las
dimensiones
Solucin: Sea la matrices A R
mn
y x R
n
, el producto es y
i
=
n
X
j=1
a
i,j
x
j
function y= PMatrizVector(A,x)
[m n]=size(A);
p=size(x,1);
if (p=n)
error (error en las dimensiones)
end
y=zeros(m,1);
for i=1:m
for j=1:n
y(i)=y(i)+ A(i,j)*x(j);
end
end
Ejemplo 0.16 Haga un programa que multiplique una matriz cuadrada triangular superior
son un vector columna controlando las dimensiones
8
Solucin:
function k= PTriangSupVect(A,v)
n=size(A,1);
p=size(v,1);
k=zeros(n,1);
if (p=n)
error (error en las dimensiones)
end
for i=1:n
k(i)=A(i,i:n)*v(i:n);
end
Ejemplo 0.17 Haga un programa que multiplique dos matrices cuadradas triangulares y su-
periores, controlando las dimensiones
Solucin:
function r= ProdTriangSUp(A,B)
n=size(A,1);
p=size(B,1);
if (p=n)
error (error en las dimensiones)
end
r=zeros(n);
for i=1:n
for j=1:n
r(i,j)=A(i,i:j)*B(i:j,j);
end
end
Ejemplo 0.18 Crear un programa que efectue el producto punto o interior de dos vectores
9
Solucin:
function v= Producto_Punto(x,y)
n=length(x);
m=length(y);
if (n=m)
error (error en las dimensiones de los vectores)
end
v=0;
for i=1:n
v=v+x(i)*y(i);
end
Ejemplo 0.19 Haga un programa donde dado dos matrices cuadradas se calcule el producto
Solucin: Dada las matrices A R
mp
y B R
pn
, el producto es otra matriz P = AB
R
mn
function P= producto(A,B)
[m,p]=size(A);
[q,n]=size(B);
if (p=q)
error (producto matricial incompatible)
end
for i=1:m
for j=1:n
S=0;
for k=1:p
S=S+A(i,k)*B(k,j);
end
P(i.j)=S
end
end
10
otra forma
function P= producto(A,B)
[m,p]=size(A);
[q,n]=size(B);
if (p=q)
error (producto matricial incompatible)
end
C=zeros(m,n):
for i=1:m
for j=1:n
C(i,j)=A(i,:)*B(:,j);
end
end
Ejemplo 0.20 describir la implementacin en un archivo M funcin, que permita evaluar la
funcin
f(x, y) = x +
2y x
2
p
x
2
+ y
2
+ 10
3
y evale en los puntos
Ejercicio 0.4 1.
2. (x, y) = (3, 4)
3. (x, y) = (,

2)
Solucin:
function z=fun(x,y)
z=x+(2*y-x^2)/sqrt(x^2+y^2+1e-3);
>> z=fun(3,4)
z=
2.8000
>> z=fun(pi,sqrt(2))
z=
1.0979
Ejemplo 0.21 Realizar un programa que permita pasar de grados farentheit a Celsius
11
Solucin
function C= Celsius(
o
F)
C=5/9*(
o
F-32);
Ejemplo 0.22 Presentamos una funcin simple que calcula el rea de un trapezoide de una
seccin transversal en un canal abierto
function [A]= Area_trapezoidal(b,y,z)
% b =ancho mas bajo
% y = profundidad del flujo
% z = pendiente
% A = Area
A = (b+z*y)*y
para los siguientes datos ;
b = 2
y = 0,75
z = 1,5
A=
2.34375
Ejemplo 0.23 calcula el rea de un trapezoide de una seccin transversal en un canal abierto,
permetro mojado y radio hidrulico
12
function [A,P,R]= A_trapezoidal(b,y,z)
% b =ancho mas bajo
% y = profundidad del flujo
% z = pendiente
% A = Area
% P = Permetro mojado
% R = Radio hidrulico
% A = Area
A = (b+z*y)*y;
P = b + 2*y*sqrt(1+z^2);
R = (b+z*y)*y/(b + 2*y*sqrt(1+z^2));
0.2. Algunas pautas para gracar funciones simples
Gracar una funcin f : R 7R sobre un intervalo [a, b] usando el comando fplot
Graquemos la funcin f : R 7R sobre un intervalo [8, 10] , donde f(x) =
senx
x
procedemos a invocar en la ventana de comandos
>> fplot(sin(x)/x,[-8,10])
Obtenemos el siguiente grco
La orden de dibujo ms simple es plot
Ejemplo 0.24 Supongamos que conocemos la hora en que se conoce la temperatura en una
13
estacin meteorolgica
h 9 12 15 18 21 24
T 15.7 17.2. 19.5 16.7 15.5 12.6
En la ventana de comandos ejecutamos.
>> h=[4 8 12 16 20 24];
>> T=[15.6 16.2 18.5 17.1 16.5 15.3];
>> plot(h,T)
14
Captulo 1
Nociones Bsicas Sobre Errores
En este primer captulo an no estudiaremos los mtodos numricos, sino que veremos
algunos conceptos bsicos y sealaremos algunos factores que intervendrn en la resolucin de
problemas mediante el computador.
Existen diversas fases cuando intentamos resolver un problema mediante mtodos numri-
cos. Puede suceder que los resultados nales obtenidos no sean justamente los esperados,
aunque todas las fases hayan sido ejecutadas correctamente, los motivos pueden ser varios y
los estudiaremos a continuacin.
1.1. Factores que intervienen en la resolucin numrica
La mayora de los mtodos numricos que veremos aqu tienen un carcter iterativo, es-
to signica que iniciarn con una estimativa inicial de la solucin, digamos x
(0)
, para luego
construir una sucesin de valores

x
(0)
, x
(1)
, x
(2)
, ...

de modo que lm
k
x
(k)
= x

, donde
x

es la solucin. Por lo general, x


(k+1)
ser calculada a partir de x
(k)
mediante un proce-
dimiento debidamente fundamentado. Frecuentemente, este procedimiento requerir un gran
nmero de clculos, por lo que ser necesario el auxilio de un computador. Lamentablemente,
los computadores presentan algunos inconvenientes que, si no se controlan, pueden ocasionar
respuestas catastrcas.
Ejemplo 1.1 Considere el trecho de un programa en Matlab, tal como se muestra en la gura
adjunta. Observe que en teora, debera cobrarse S/,1000000.
15
Programa principal
a=1;
b=0.0000000000000001;
c=1;
if a+b>c
disp(cobrar S/.1000000);
else
disp(pagar S/. 2000000);
end
Un error numrico grave cometido por el computador. Sin embargo, debido al error cometido
por el computador, se terminara pagando S/.2 000 000.
Laboratorio 1.1 Haga un programa en algn lenguaje de programacin que usted conozca,
de modo que en la prctica corrobore el Ejemplo anterior.
Al resolver un problema por mtodos numricos, los resultados obtenidos pueden depender
de:
1. La precisin de los datos de entrada
2. La forma cmo stos son representados en el computador
3. Las operaciones numricas efectuadas
Cada uno de estos temas sern explicados a continuacin.
1.1.1. Precisin de los datos de entrada
Cuando ingresamos los datos de un problema, ya sea para calcular en un papel o trabajar
en el computador, ellos contienen una imprecisin inherente, quiere decir que no hay cmo
evitarlos. El siguiente ejemplo aclara esta armacin.
Ejemplo 1.2 Sabemos que para calcular el rea de un crculo, tenemos que ingresar numrica-
mente el radio r y el valor de . El valor de r quiz pueda ser conocido exactamente (r = 2),
pero apenas podemos conocer una aproximacin de con un nmero nito de dgitos. As,
aproximando el valor de por 3,14, el rea del crculo ser:
3, 14 (2)
2
= 12, 56 m
2
16
Si consideramos 3, 1416, entonces el rea del crculo estar dada por:
3, 1416 (2)
2
= 12, 5664 m
2
Pero si consideramos 3, 141592654, entonces el rea ser
3, 141592654 (2)
2
= 12, 566370616 m
2
Claramente las imprecisiones de los datos de entrada ocasionan imprecisiones en los resultados.
En el ejemplo anterior vimos que el mejor resultado se obtuvo en el ltimo caso. Pero,
cuando usamos un computador, cuntos dgitos decimales reconoce ste? El siguiente ejemplo
intentar aclarar esta situacin.
Ejemplo 1.3 Usando Matlab 6.0 en un PC de 32-bit con un sistema operativo Windows XP,
hicimos la siguiente operacin:
0,00000000000001 + 1
y el resultado obtenido fue 1,00000000000001, lo cual es satisfactorio. Luego, hicimos:
0,000000000000001 + 1
y obtuvimos como respuesta 1. Qu sucedi?
El ejemplo anterior nos hace ver que en el primer caso, cuando se usan los 14 dgitos a la
derecha del punto, el sistema de cmputo no comete error. Mientras que, si se usan 15 dgitos,
el sistema nos otorga una respuesta errada.
La razn se debe a que todo computador trabaja con un nmero nito y bien reducido
de dgitos, en nuestro caso 14 a la derecha del punto, si el nmero de dgitos sobrepasa lo
esperado, el sistema lo trunca o redondea, dependiendo del sistema utilizado.
Laboratorio 1.2 Utilice un paquete o lenguaje de programacin en un computador, para
corroborar los resultados obtenidos en el Ejemplo 2.3.
1.1.2. Representacin de los datos en el computador
Un nmero con representacin decimal nita puede tener una representacin innita en
el sistema binario. Como un computador trabaja con el sistema binario y con una cantidad
ja de dgitos, necesariamente trabajar con una aproximacin, por lo tanto no se obtendrn
resultados exactos.
17
El sistema con el que trabajamos comunmente es el decimal, un nmero x en este sistema
lo representaremos algunas veces, cuando se preste a confusin, por (x)
10
. Por otro lado, el
sistema con el que trabaja un computador hoy en da es el binario, un nmero y en este sistema
ser representado por (y)
2
. As por ejemplo.
(5)
10
y (101)
2
representa el nmero 5 en el sistema decimal y binario, respectivamente. El siguiente ejemplo
muestra cmo esta representacin aparentemente inofensiva, puede generar terribles errores
cuando se trabaja en el computador.
Ejemplo 1.4 Considere la siguiente sumatoria:
S =
30000
X
i=1
a
i
Para a
i
= 0, 5, el resultado exacto debera ser
S = 0, 5
30000
X
i=1
1 = 0, 5 30000 = 15000
Despus de implementar un pequeo programa en computador, el resultado fue tambin 15000.
Claramente, no hay por qu preocuparse en este caso, los resultados son los mismos. Pero, para
a
i
= (0, 11)
10
, el resultado exacto debera ser
S = (0, 11)
10
30000 = 3300
Sin embargo, el resultado obtenido por el computador fue
S = 3300, 00000000063
cmo explicar la diferencia de resultados en este caso?
Esto se debe a que el nmero (0, 11)
10
, cuya representacin en el sistema decimal es nito,
tiene una representacin binaria innita:
(0, 0001110000101000111101)
2
Si el computador trabajara con 14 dgitos despus del punto, el nmero debera ser cortado o
redondeado, lo cual representa ya un error. Todos los clculos subsiguientes sern, afectadas
por este hecho.
Laboratorio 1.3 Utilizando algn lenguaje de programacin, haga un programa para ejecutar
18
lo tratado en el ejemplo 2.4.
Por lo general, el error ocurrido depende de la representacin de los nmeros en la mquina
utilizada. La representacin de un nmero depende de la base elegida o disponible en la
mquina en uso, y, del nmero mximo de dgitos usados en su representacin. Cualquier
clculo que envuelva nmeros que no pueden ser representados a travs de un nmero nito de
dgitos, no otorgar como resultado un valor exacto. Cuanto mayor sea el nmero de dgitos
utilizados, mayor ser la precisin obtenida.
Como vimos en el ejemplo 2.4, un nmero puede tener representacin nita con respecto a
una base, pero una representacin innita en otra base. La base decimal es la que emplearemos
generalmente, pero antiguamente fueron empleadas otras bases, como la base 12 y la base 60.
Un computador opera normalmente en el sistema binario.
Observe los que pasa cuando un usuario interacta con el computador: Los datos de entrada
son enviados al computador por el usuario en el sistema decimal, esa informacin es convertida
al sistema binario por el computador, y, todas las operaciones son realizadas en ese sistema. Los
resultados nales sern convertidas para el sistema decimal y, nalmente, sern transmitidos
hacia el usuario. Todo este proceso es una fuente de errores que afectan el resultado nal de
los clculos.
1.1.3. Las operaciones numricas efectuadas
Pero errores no slo ocurren en la impresin de los datos de entrada y su representacin
binaria. Errores ocurren tambin en las operaciones numricas efectuadas por un sistema de
cmputo (binario).
Conversin de Nmeros en los Sistemas Decimal y Binario
Cualquier nmero entero en la base , de la forma (a
j
a
j1
, ..., a
2
a
1
a
0
)

, donde 0 a
k

1 y k = 0, ..., j, puede ser escrito en la forma polinomial
a
j

j
+ a
j1

j1
+ ... + a
2

2
+ a
1

1
+ a
0

0
Mediante esa representacin, podemos convertir fcilmente un nmero entero representado en
el sistema binario para el decimal, e inversamente. Por ejemplo: (10111)
2
puede ser represen-
tado por
1 2
4
+ 0 2
3
+ 1 2
2
+ 1 2
1
+ 1 2
0
19
Reordenando y resaltando la base 10 tenemos
(10111)
2
= 1 2
4
+ 0 2
3
+ 1 2
2
+ 1 2
1
+ 1 2
0
= 2(2
3
+ 2) + 3 = 2 10
1
+ 3 10
0
= (23)
10
Laboratorio 1.4 En algn lenguaje de programacin, haga un programa tal que, dado un
nmero entero binario, retorne su equivalente decimal. E inversamente, dado un entero deci-
mal, otorgue su equivalente binario.
Como Convertir un Nmero Fraccionario de Representacin Decimal a Bina-
rio?
Consideremos ahora la conversin de un nmero fraccionario de base 10 para la base 2.
Por ejemplo, r = 0, 125, s = 0, 777..., t = 0, 414213562..., etc.
Notemos que r tiene una representacin nita, pero s y t tienen representaciones innitas.
En trminos generales, dado un nmero entre 0 y 1 en el sistema decimal, Cmo obtener su
representacin binaria?
Consideremos el nmero decimal fraccionario r = 0, 125, existen dgitos binarios
d
1
, d
2
, ..., d
j
, ...
tal que (0, d
1
d
2
...d
j
...)
2
ser su representacin binaria en la base 2. As,
(0, 125)
10
= d
1
2
1
+ d
2
2
2
+ ... + d
j
2
j
+ ... (1.1)
Multiplicando cada trmino de la expresin (1.1) por 2, tendremos
2 0, 125 = d
1
+ d
2
2
1
+ d
3
2
2
+ ... + d
j
2
j+1
+ ...
Por lo tanto, d
1
representa la parte entera de 2 0, 125, que es igual a 0, mientras que
d
2
2
1
+ d
3
2
2
+ ... + d
j
2
j+1
+ ...
representa la parte fraccionaria de 2 0, 125, que es 0, 250.
Aplicando ahora el mismo procedimiento para 0, 250, tendremos
0, 250 = d
2
2
1
+ d
3
2
2
+ ... + d
j
2
j+1
+ ...
2 0, 125 = 0, 5 = d
2
+ d
3
2
1
+ d
4
2
2
+ ... + d
j
2
j+2
+ ...
20
de donde d
2
= 0. Repitiendo el procedimiento para 0, 5 tenemos
0, 5 = d
3
2
1
+ d
4
2
2
+ ... + d
j
2
j+2
+ ...
2 0, 5 = 1 = d
3
+ d
4
2
1
+ ... + d
j
2
j+3
+ ...
de donde d
3
= 1. Como la parte fraccionaria de 2 0, 5 es cero, el proceso de conversin
termina. En resumen tenemos: d
1
= 0, d
2
= 0 y d
3
= 1. Por lo tanto, el nmero (0, 125)
10
tiene
representacin nita en la base 2:
(0, 125)
10
= (0, 001)
2
Laboratorio 1.5 Usando los procedimientos anteriores para convertir nmeros fraccionarios
decimales, a binarios, haga un programa usando algn lenguaje de programacin y verique
que:
1. El nmero (0, 5)
10
tiene una representacin binaria nita (0, 1)
2
2. El nmero (0, 11)
10
tiene una representacin binaria innita
(0, 0001110000101000111101)
2
3. Verique cuntos dgitos el computador est considerando.
En hecho de que un nmero no tenga representacin nita en el sistema binario, puede
ocasionar la ocurrencia de errores aparentemente inexplicables en los clculos efectuados en
sistemas computacionales binarios. Un computador que opera en el sistema binaio, necesaria-
mente tendr que almacenar una aproximacin para (0, 11)
10
, debido a que slo posee una
cantidad ja de posiciones para guardas los dgitos de la mantisa de un nmero. Al ser esta
aproximacin usada para realizar los clculos, no puede esperarse un resultado exacto.
Laboratorio 1.6 (Precisin de una mquina) La precisin de la mquina se dene como
el menor nmero > 0 en aritmtica de punto otante, tal que (1 + ) > 1. Este nmero
depende totalmente del sistema de representacin de la mquina: base numrica, total de dgitos
en la mantisa, de la forma cmo son realizadas las operaciones y del compilador utilizado. Es
importante conocer la precisin de la mquina porque en varios algoritmos se requiere ingresar
como dato de entrada un valor positivo, prximo de cero, para que sea usado como criterio de
comparacin para la detencin del algoritmo. El siguiente algoritmo determina dicha precisin:
Paso 1: A 1, S 2
21
Paso 2: Mientras S > 1, hacer
A
A
2
S 1 + A
Paso 3: Hacer prec = 2A e imprimir prec .
1. Haga un programa en algn lenguaje de programacin que ejecute el algoritmo
anterior.
2. Discuta su signicado prctico.
Aritmtica de Punto Flotante
Cualquier computador o calculadora representa un nmero en un sistema denominado
aritmtica de punto otante. En este sistema, el nmero r ser representado en la forma:
(.d
1
d
2
...d
t
)
e
donde
: La base en que la mquina opera
t : El nmero de dgitos en la mantisa, 0 d
j
1, j = 1, ..., t, d
1
6= 0
e : El exponente en el intervalo [u; u] , el valor de u depende de la mquina con que se est
trabajando.
En una computadora, slo una pequea cantidad de nmeros son representados exacta-
mente, por lo general, la representacin ser realizada por medio de truncamiento o redondeo.
Ejemplo 1.5 Considere una mquina que opera en el sistema = 10, t = 3, e [5; +5] .
Los nmeros no nulos representados en este sistema sern de la forma
(.d
1
d
2
d
3
) 10
e
, 0 d
j
9, d
1
6= 0, e [5; +5]
El menor nmero, no nulo y en valor absoluto, expresado en esta mquina ser:
m = 0, 100 10
5
Mientras que el mayor nmero es:
M = 0, 999 10
+5
22
Ahora, en esta misma mquina. Consideremos el subconjunto de nmeros reales caracterizados
por:
G = {x R : m |x| M}
Puede ocurrir varios casos:
x G Por ejemplo, si x = 235, 89 = 0, 23589 10
+3
. Este nmero posee 5 dgitos en
la mantisa. Debido a que t = 3, este nmero no ser considerado de forma exacta en esta
mquina. Si la mquina usa truncamiento, entonces el nmero ser representado como 0, 235
10
+3
. Pero si la mquina usa redondeo, entonces el nmero ser representado por 0, 23610
+3
.
|x| < m Por ejemplo, si x = 0, 345 10
7
. Este nmero no puede ser representado en
esta mquina porque el exponente e es menor que 5. La mquina en estas condiciones retorna
una advertencia de underow.
|x| > M Por ejemplo, x = 0, 875 10
9
. En este caso, el exponente es mayor que 5 y la
mquina no lo puede representar, advierte la ocurrencia de overow.
Algunos lenguajes de computador permiten que las variables sean declaradas en doble
precisin. En este caso, tal variable ser representada en el sistema de aritmtica de punto
otante de la mquina, pero con aproximadamente el doble de dgitos disponibles en la mantisa.
Debemos resaltar que en estas condiciones, el tiempo de ejecucin y requerimientos de memoria
aumentan considerablemente.
La adicin en aritmtica de punto otante requiere el alineamiento de los puntos decimales
de los dos nmeros. Para eso, la mantisa de menor exponente debe ser desplazada para la
derecha.
Ejemplo 1.6 Sumar
x = 0, 937 10
4
y y = 0, 1272 10
2
Alineando los puntos decimales, tenemos
x = 0, 937 10
4
y y = 0, 001272 10
4
Entonces,
x + y = (0, 937 + 0, 001272) 10
4
= 0, 938272 10
4
El resultado almacenado despus del truncamiento ser 0, 9382 10
4
. Mientras que despus
del redondeo ser 0, 9383 10
4
.
23
El cero puede representarse con una mantisa nula y cualquier exponente. Por lo general, se
utiliza el menor exponente posible de la mquina. Caso contrario, si se usa cualquier exponente
para denotar el cero, se puede perder dgitos signicativos, tal como muestra el siguiente
ejemplo:
Ejemplo 1.7 Supongamos que tenemos una mquina que opera con base 10 y 4 dgitos en la
mantisa. Si denotramos al cero por 0, 0000 10
4
, al sumarlo al nmero y = 0, 3134 10
2
:
0, 0000 10
4
+ 0, 3134 10
2
= 0, 0000 10
4
+ 0, 003134 10
4
= (0, 0000 + 0, 003134) 10
4
= 0, 003134 10
4
El resultado despus del truncamiento sera 0, 0031 10
4
= 0, 3100 10
2
. Esto signica que
fueron perdidos 2 dgitos del valor exacto.
Ejemplo 1.8 Represente los siguientes nmeros en un sistema de aritmtica de punto otante
(con redondeo y con truncamiento) de 3 dgitos, cuando = 10, m = 10
4
y M = 10
+4
:
3, 14 10, 052 238, 15 2, 71828 0, 000007 718235, 82
Para el primer caso, con truncamiento nos resulta 0, 314 10, mientras que con redondeo
0, 314 10. Para el segundo caso, con truncamiento obtenemos 0, 100 10
2
y con redondeo
0, 100 10
2
. Y as sucesivamente:
0, 238 10
3
0, 238 10
3
0, 271 10 0, 271 10
underow underow
overow overow
Todo esto nos da una idea de los posibles errores que pueden suceder, ya sea por des-
conocimiento nuestro o por la limitacin del computador, en el proceso de la resolucin numri-
ca de problemas. Debemos advertir que an es posible realizar un anlisis ms completo del
manejo de errores, pero eso lo veremos en otra ocasin.
1.2. Errores Absolutos y Errores Relativos
Denimos el error absoluto como la diferencia entre el valor exacto de un nmero x y su
valor aproximado x :
EA
x
= x x (1.2)
24
Frecuentemente, slo nos interesa la magnitud de este error. As por ejemplo, si x = 12, 60 y
x = 12, 81, el error absoluto es EA
x
= 12, 60 12, 81 = 0, 21. Mientras que la magnitud de
este error es |0, 21| = 0, 21.
Esta idea puede ser extendida para comparar la proximidad de vectores. Por ejemplo,
consideremos los vectores en R
3
dados por
x =

6, 1
5, 8
11, 3

y x =

6, 2
5, 9
10, 9

Entonces, usando la norma euclidiana, la magnitud del error estara dada ahora por
kx xk =
p
(6, 1 6, 2)
2
+ (5, 8 5, 9)
2
+ (11, 3 (10, 9))
2
= 0, 4243
No obstante, el error absoluto denido en (1.2) quiz no tenga inters prctico en este caso.
En general, apenas el valor de x es conocido, lo que hace imposible obtener el error absoluto
exacto. Lo que se puede hacer en este caso es obtener una cota superior o una estimativa para
el mdulo del error absoluto, tal como muestra el siguiente ejemplo.
Ejemplo 1.9 Conocindo que h3, 14; 3, 15i , podemos tomar para x un valor dentro de
este intervalo y tendremos que:
|EA

| = | x| < 0, 01
En este caso diremos que el error absoluto de x con respecto a , en mdulo, es menor que
0, 01. Ms an, diremos que el nmero x est representado con precisin menor que 0, 01.
Ejemplo 1.10 En la prctica, a veces no es recomendable controlar alguno procesos basados
en el error absoluto. Por ejemplo, si usted gana un premio de S/. 10 000 000, y cuando va a
recogerlo le dicen que slo tiene S/. 9 999 990, entonces a usted puede que no le importe la
diferencia, pues apenas hay un error absoluto de S/. 10. Pero qu pasa si usted gan S/. 20
de premio, y cuando usted va a recogerlo le dicen que apenas tiene S/. 10, observe que el error
absoluto sigue siendo S/. 10, probablemente no le agrade nada esta ltima situacin, pues se
trata de la mitad del premio.
Para evitar situaciones como la anterior, en la prctica es mejor utilizar otro criterio para
medir el error, ste es conocido como error relativo.
El error relativo es denido como el error absoluto dividido por el valor exacto, es decir:
ER
x
=
EA
x
x
=
x x
x
25
Frecuentemente, tambin se suele trabajar con el mdulo de este valor. Observe que el error
relativo respecto al primer premio de S/. 10 000 000 es
ER
10 000 000
=
10
10 000 000
0, 000001
Mientras que el error relativo respecto al segundo premio es
ER
20
=
10
20
0, 5
Con esto, digamos que en este caso se midi el error con ms justicia.
Ejercicio 1.1 Convierta los siguientes nmeros decimales para su forma binaria: 26, 1278 y
0, 1217
Ejercicio 1.2 Convierta los siguientes nmeros binarios para su forma decimal: (101101)
2
,
(0, 111111101)
2
y (0, 1101)
2
.
Laboratorio 1.7 El siguiente algoritmo calcula de una forma aproximada la raz n-sima de
un nmero no negativo a.
Ingresa: a, n y > 0, donde es la precisin deseada ( = 10
9
)
x = a
Mientras |x
n
a| > (controlando la magnitud del error absoluto)
x = x (x
n
a)/(nx
n1
), x 6= 0
Retorna x (una aproximacin para
n

a)
En algn lenguaje de programacin, haga un programa para ejecutar este algoritmo. Modique
el programa para que retorne tambin el nmero de pasos (iteraciones). Cmo utilizara el
error relativo para controlar el algoritmo?
Laboratorio 1.8 (Clculo de e
x
) En algn lenguaje de programacin, haga un programa para
calcular e
x
mediante la serie de Taylor con n trminos. El valor de x y el nmero de trminos
de la serie, n, deben ser dados en la entrada de su programa. Para valores negativos de x, el
programa debe calcular e
x
de dos formas: En una de ellas el valor de x es usado directamente
en la serie de Taylor y, en la otra forma, el valor usado en la serie ser y = x, y en seguida,
se calcula el valor de e
x
por medio de
1
e
x
.
1. Experimente su programa con varios valores de x (x prximo de cero y distante de cero)
y, para cada valor de x, experimente el clculo de la serie con varios valores de n. Analice
los resultados.
26
2. (Dicultades con el clculo del factorial) El clculo de k! necesario en la serie de Taylor
puede ser hecho de modo a evitar la ocurrencia de overow. Para esto es necesario
analizar cuidadosamente el k-simo trmino,
x
k
k!
. Intente combinar el clculo del numera-
dor con el del denominador y realizar divisiones intermedias. Estudie una manera de
realizar esta operacin de modo que k! no se sobrecargue.
3. Con la modicacin del segundo item, la serie de Taylor puede ser calculada con los
trminos que se desee. Cul sera el criterio para detener su programa e interrumpir el
clculo de la serie?
27

You might also like