Si una persona entiende perfectamente lo que significa que un

Anuncio
Revista INTEGRACIÓN
Universidad Industrial de Santander
Escuela de Matemáticas
Vol. la, No 2, p. 55-62, julio--diciembre de 1995
CARLOS
E.
BRUCE
FERNÁNDEZ
H.
OSSA f
EDWARDSt
Si una persona entiende perfectamente lo que significa que un número sea la
raíz cuadrada de otro número positivo, ¿qué método utilizaría para calcular a
mano, digarnas, la raíz cuadrada de 53 con cuatro dígitos exactos? Indudablemente ninguno de los métodos numéricos tradicionales, como el de Newton,
sería la escogencia más natural, entre otras cosas porque a lo mejor ni siquiera
ha oído hablar de esos métodos.
Lo más lógico es que esa per,sona recurra al "ensayo y error".
eliga sucesivamente dígitos dJ, d2, da, d4 tales que:
Es decir, que
(1) dI sea el mayor dígito que satisface d~ ~ 53.
(2) d2 sea el mayor dígito que satisface (d1,d2)2
~ 53.
(3) da sea el mayor dígito que satisface (dI, d2da)2
(4) d4 sea el mayor dígito que satisface (dI, d2dad4)2
:::; 53.
:::; 53.
"El primer autor contó con la colaboración financiera de COLCIENCIAS,
mediante pasantía en la Universidad de Florida (autorización no. 047-95).
tDepartamento
de Matemáticas, Universidad de Antioquia, Medellín, COLOMBIA.
~Departament of Mathematics, University of Florida, Gainesville, Florida 32611, USA.
Como la aproximación parece quedarse corta, entonces ensaya con d2 =
2:
7,22
= (7,1 + O,1)2 = 50,41 + 1,42 + 0,01 = 51,84
< 53,
52,9984 < 53,
53, 1441 > 53,
y elige d4 = O.
Ya se tiene la solución del problema: la raíz de 53, con cuatro dígitos
exactos, es 7,280. Y si lo desea, puede continuar hasta hallar cualquier
número de cifras exactas.
1. Es recursivo:
tados.
utiliza los resultados previos para obtener nuevos resul-
3. Tiene baja complejidad algorítmica: evita al máximo operaciones
diferentes a sumas, productos por potencias de 10 (desplazamientos
de
la coma deeim~ y comparaciones.
Estas son características de un algoritmo para calcular raíces de funcioneS'
elementales, conocido con el nombre de CORDIC, el cual se ha implementado
en calculadoras y coprocesadores matemáticos, por ser más eficiente que otros
métodos tradicionales, como los de Newton, aproximación polinómica, etc.
En este artículo haremos un breve recuento histórico de CORDIC, desarrollaremos el método para el caso de raíces cuadradas y mostraremos un ejemplo.
En artículos posteriores extenderemos el uso del método a otras funciones
elementales.
CORDIC es un método basado en rotación de coordenadas para el cálculo
de productos, divisiones, funciones trigonométricas y sus inversas, funciones
hiperbólicas, funciones exponenciales y togarítmicas y raíces cuadradas [6]. El
método goza de muy baja complejidad algorítmica, pues las únicas operaciones
usadas son multiplicaciones por potencias de 10 (desplazamientos
de la coma
decimal), sumas, restas, comparaciones y el uso de constantes pregrabadas.
Debido a esto es especialmente adecuado para ser implementado dentro de las
calculadoras y coprocesadores matemáticos. Esto sugiere que CORDIC es en
sí mismo un computador, en el sentido técnico de la palabra.
En el año de 1959 Volder [5] describió este computador, al cual llamó COordinate Rotational DIgital Computer, de donde derivó el nombre de CORDIC.
Según Schelin [3], la técnica algorítmica del método tiene raíces en el trabajo
de Henry Briggs en Arithmetica LtJgaritmica, en el año de 1624. Walther [6]
presentó en 1971 un algoritmo CORDIC unificado para todas las funciones
elementales. Los artículos que hemos mencionado anteriormente son de difícil
lectura, puesto que están orientados hacia la ciencia de la computación, y con
terminología un poco confusa.
Aunque nunca es necesaria una apología de las matemáticas, queremos hacer
notar que CORDIC es un buen ejemplo de aplicación práctica de las mismas.
En comunicación personal [4] el equipo técnico de la compañía Texas Instruments indica que la mayoría de las calculadoras TI usan el método CORDIC, al
igual que el coprocesador matemático 8087 de Intel. Hewlett-Packard, Texas
Instruments y muchas otras compañías usan CORDIC para la evaluación de to-
das las funciones [3J. Es de anotar que ninguno de los mátodos clásicos
que se enseñan en los cursos de cálculo y análisis numérico -·-como
aproximaciones
polinómicas
basadas en series de Taylor-· - es utilizado en las calculadoras
de hoy en día. De ahí la importancia
de
conocer .cOR,DIC, pues el uso de las calcqladoras se ha generalizado
en la enseñanza de las ciencias e ingeniería.
3. El método CORDIC para la raíz cuadrada
Sea X un número positivo cualquiera cuya raíz cuadrada deseamos calcular.
Claramente siempre podemos escribir X en la forma
x = x ·10k,
donde 1 ~ x < 100 y k es un número par. Entonces para hallar
hallar ,¡x, pues
.JX =
lOk/2.
..¡x
basta
..;x .
Observe además que 1 ~
Ejemplo
1. X
.¡x = J49,
Ejemplo
=
3377 .
,¡x
< 10.
4933,77 puede escribirse X
10.
=
49,3377 . 102,
y
entonces
2. X = 0,0001726 puede escribirse X
10-2.
.¡x = JI;726.
Podemos por lo tanto, sin perder generalidad, restringir nuestra discusión al
caso de raíces cuadradas en el intervalo [1,100) .
Sea pues x E [1,100). Deseamos hallar r = ,¡x con n dígitos exactos, n ~ 1.
Es decir, queremos encontrar dígitos dI, d2, ... ,dn, tales que
Como en la mayoría de los métodos numéricos, la idea es "minimizar el
error". Usando matemáticas elementales es fácil demostrar que minimizar En
es equivalente a minimizar
y esta es la vía que utilizaremos.
Sea Aj la aproximación de r
Entonces,
Al
A2
A3
Aj
= .¡x con j
dígitos exactos, para j
=
=
=
dI,
=
=
d¡, d2d3 ... dj
=
1,2, ... , n.
dl,d2,
dI, d2d3,
Aj-l
+
dj .10-3
'+1
j ~ 2,
,
donde los dj son dígitos y dI es el dígito de las unidades, pues 1 ~
.¡x <
10.
Como el método es recursivo, primero debemos obtener dI, minimizando
f2, ... ,f~. Utilizaremos las conocidas fórmulas
n
n
nA=¿A
i=l
y
n2=¿(2i-1).
i=l
Así pues tendremos:
Para j = 1:
E¡
=
x - d~
dl
= x-¿(2i-1),
i=l
y se elije el dígito dI de modo que E¡ obtenga el menor valor no negativo
posible.
Para
j ~ 2:
fj
=
X -
=
x - (Aj-l'+
=
(x-
=
Ej-l -
5Ej
A~
A~-l)
dj .1O-j+l)2
- (2Aj-Idj
( 2Aj_Idj'
=
5Ej-1 - (lOAj-Idj
~
5Ej-l - (Aj_ldj
·lO-j+1
10-3+1
+ d]
.1O-2i+2)
+ dj2 . 10- 2'+2)
3
. lO-j+1
. 1O-j+2
+ 5d~
+ 5d;
;
. 1O-2i+2)
. 1O-2j+2)
;
lOj-2 . 5Ej = loi-2 . 5fj-1 -
di
L [Aj-1
+ 5 (2i
- 1) . lO-j] ,
(2)
i=l
en donde se elije el dígito dj de modo que 1()i-2. 5fj sea mínimo (no negativo).
Si ocurre que este número es cero, el proceso ha terminado.
Aunque a primera vista la fórmula (2) parece un poco complicada, las operaciones que aparecen en ella son muy sencillas. Solo requiere sumas, multiplicaciones por diez (que son simples desplazamientos de la coma decimal) y
comparaciones. La teoría de la complejidad nos dice que estas operaciones se
efectúan con mayor eficiencia en los chips de las calculadoras. Los sumandos en
(2) correspondientes al término 5 (2i - 1) son 5, 15, ... ,85, que están pregrabados en la calculadora. Observe entonces que CORDIC elimina multiplicaciones
que no sean desplazamientos de la coma. (Las calculadoras modernas operan
en base diez, no en base dos.)
El siguiente ejemplo ilustra dos cosas: primero, el uso de las reglas de decisión
(1) y (2) del método CORDIC para raíces cuadradas; segundo, que el método
mismo no está hecho para trabajarlo a mano, sino para implementarlo dentro
de las calculadoras.
Ejemplo 3. Vamos a aproximar y'4933, 77 con 6 dígitos exactos.
.102,
Ejemplo 1, hacemos 4933,77= 49,3377
Ímemos la raíz cuadrada de x = 49,3377.
Según el
Y por 10 tanto, basta que aprox-
Para j = 1:
d1
1'1
=x -
L (2i
- 1).
i=l
Debemos escoger dI de modo que 1'1 sea el menor número positivo posible.
Entonces, tomamos tantos términos en la sumatoria como sean necesarios
para que esto se cumpla:
d1
q
=
X -
L (2i
- 1)
i=l
=
49,3377 - [1 + 3 + 5 + 7 + 9 + 11 + 13]
=
0,3377. [1 + 3 + 5 + 7 + 9 + 11 + 13J
Fueron necesarios 7 términos de la sumatoria, por 10 tanto dI = 7. Nuestra
=7Y
aproximación es, por ahora, Al
tenemos 1'1
= 0,3377.
Para j ~ 2 debemos utilizar la regla de decisión (2).
Para j = 2:
d,
L [7 + 5 (2i -
51'2 = 5fl -
1) .10-2]
i=l
d,
=
L [7 + 5 (2i -
1,6885 -
1) . 10-2] .
i=l
Puesto que con d2 = 1 ya se obtiene un valor negativo para 51'2, entonces
deducimos que d2 = O.Nuestra aproximación por ahora es A2 = 7, O, y tenemos
51'2 5E'¡ = 1,6885.
=
Para j = 3:
I:
d:t
501'3 =
501'2 -
[7, 0+ 5 (2i - 1) . 10-3]
i=l
=
16,885 - [(7, O + 0,005)
=
2,865.
+ (7, O + O,015)]
Con dos términos de la sumatoria se obtuvo el menor valor positivo de 501'.3,
Así que d3 = 2, A3 = 7,02 y 50"3 = 2,865.
Para j = 4:
I:
d4
5001'4 =
500€3 -
[7,02
+ 5 (2i
- 1) . 10-4]
i=l
= 28,65 - [(7,02
+ 0,0005) + (7,02 + 0,0015) + (7,02 + O,0025)
+ (7,02 + 0,0035)]
=
0,562.
Con cuatro términos de la sumatoria Re obtuvo el menor valor positivo de
5001'4. Así que d4 = 4, A4 = 7,024, Y 5001'4 = 0,562.
Para j = 5:
dr.
50001'5 = 50001'4 ~
L [7,024
+ 5 (2i
- 1) . 10-5]
i=l
ds
=
ó,62 -
L [7,024 +
i=1
Ó
(2i - 1) . 10-5]
.
Puesto que con ds = 1 ya se obtiene un valor negativo para 5000fS, entonces
deducimos que ds = O. Nuestra aproximación por ahora es As = 7,0240 Y
5000fS = 5,62.
Para j = 6:
c4;
50000f6
50000f5 -
I: [7,0240
+ 5 (2i
- 1) . 10-6]
i=l
= 56,2=
[(7,0240
+ 0,000005) + ... + (7,0240 + O,000075)J
0,00768.
Con ocho términos de la sumatoria se obtuvo el menor valor positivo. Así que
= 8 y A6 = 7,02408 es la aproximación deseada para J49, 3377. Fina1,mente,
d6
/4933,77
=
/49,3377·
:::::!
7,02408·
=
70,2408.
10
10
El método CORDIC es apropiado para el cálculo de funciones elementales
debido a su simplicidad, precisión y eficiencia algorítmica. Sus aplicaciones
incluyan las calculadoras HP, TI y coprocesador 8087 de Inte1.
[1] ROYCE A. PAULEY AND BRIAN C. ALVERS, AppToximating Elementar'y Functions Ufling the CORDIC Method, Senior Thesis with Bruce Edwards, 1994.
[2] RICARD J. PULSKAMP AND J AMES A. DELANEY, Computer and Calculator Computation of Elementary Funtions, UMAP Module 708, 1991.
[3] CHARLES W. SHELIN, Calculator function approximation, American Mathematics
Monthly, 1983, pp. 317--325.
[4] Tmnscendental
Function Al,qoT'ithms, Post from Texas Instruments
to Graph TI
mailing list, March 8, 1993.
.
[5] JACK E. VOLDER, The CORDIC Computing Technique, IRE Transactions
on
Electronic Computers, September 1959, pp.330-334.
[6] J. S. WALTHER, A Unified Algorithm for Elementary Functions, Joint Computer
Conference Proceedings, Spring 1971, pp. 379-385.
Descargar