Método Modificado de Crook para Raíces Cuadradas

Esta es otra modificación al algoritmo de raíz cuadrada de Welton J. Crook. Si recuerda, ese método usa un número que Crook llama el "número raíz" que en realidad es igual al doble de la raíz cuadrada, menos uno. Este "número raíz" se resta del número cuya raíz se quiere encontrar, o de su resto, luego se incrementa en dos y se vuelve a restar, y así sucesivamente, hasta que ya no se puede restar más. En este punto, se baja el siguiente grupo de dos dígitos en el resto del cuadrado, se agrega un cero al "número raíz", se agrega 11 al "número raíz" y se repite el proceso para encontrar el siguiente dígito. Este método tiene la ventaja de que no requiere división ni multiplicación, solo resta e incremento, pero es tedioso y lento. Previamente he desarrollado una modificación de este método para acelerarlo (ver "Modificación al algoritmo de raíz cuadrada de Crook" en la sección de archivos) usando una prueba simple para ver si el siguiente dígito es mayor o igual a cinco, y si así, saltar inmediatamente al cinco por medio de una sola resta, saltándose los pasos de incremento y resta del uno al cinco. Este método requiere mantener un tercer número en el soroban; es decir, la raíz cuadrada real, y puede no ser práctico para ábacos más pequeños. Con esto en mente, me propuse encontrar una manera de acelerar el algoritmo de Crook manteniendo solo dos números en el soroban. Este nuevo método requiere una multiplicación simple, pero evita la necesidad tanto de la división (excepto para un solo dígito dividido en un número de uno o dos dígitos) como de la revisión a la baja si la estimación del dígito es demasiado grande.

Descrito de manera simple, el método comienza como el algoritmo original de Crook, pero cada vez que se baja un nuevo grupo de dos cifras y se suma 11 al "número raíz", estimamos cuántas veces se puede restar el "número raíz" del resto, redondeando (mentalmente) el primer dígito del "número raíz" y dividiéndolo entre uno o dos dígitos del resto. Este cociente de un solo dígito "q" se multiplica por el "número raíz" y el producto se resta del resto. Se resta una cantidad adicional para compensar el hecho de que no "aumentamos" el "número raíz" sumando dos por cada vez que lo restamos. Después de restar esta cantidad adicional (igual a q*(q-1)), ajustamos el "número raíz" sumando 2*(q-1) y continuamos con el algoritmo de Crook. Si no alcanzamos el valor de "q", se corregirá como parte del algoritmo normal de Crook. Cuando tenemos tantas cifras significativas como necesitamos, encontramos la raíz sumando uno al "número raíz" y dividiéndolo por dos, tal como en el algoritmo original. Esto se ilustra más fácilmente con un ejemplo.

SQRT( 3.141592653590 ) = 1.77245 con seis dígitos

Square (or remainder)       "Root Number"
--------------------------- ----------------------
 3.14 15 92 65 35 90
                             

Restamos el cuadrado más grande posible del primer grupo; es decir, 3 - 1. El cuadrado más grande posible es uno, su raíz es 1, así que ponemos el "número raíz" igual a 2*1 -1 = 1

                             1
-1
----
 2
                             

Bajamos el siguiente grupo, añadimos un cero al "número raíz" y le sumamos 11

 2 14                        21

En el algoritmo original, restaríamos 21, luego 23, 25,... etc., pero aquí redondearemos el primer dígito de 21 a 3 y lo dividiremos por los dos primeros dígitos de 214 (21) obteniendo 7 para el valor de "q". Luego restamos 7*21:

-1 4
  -07
--------
   67

Ahora restamos q*(q-1) o 7*6 = 42 para compensar haber restado 21 siete veces, en lugar de haber restado 21, 23, 25, ...etc.

  -42
-------
   25

Y ajustamos el "número raíz" sumando 2*(q - 1) = 12

                             33
 

El resto 25 es menor que 33, entonces: Bajamos el siguiente grupo, agregamos un cero al "número raíz" y le sumamos 11

   25 15                     341

Redondeamos el primer dígito de 341 a 4 y lo dividimos entre los dos primeros dígitos de 2515 (25) para obtener 6 como valor de "q". Luego restamos 6*341:

 - 18
  - 2 4
    - 06
-----------
    4 69

Ahora restamos q*(q-1) o 6*5 = 30

    - 30
------------
    4 39

Y ajustamos el número raíz sumándole 2*(q - 1) = 10

                             351

Debido a que el resto 439 es mayor que 351, hemos subestimado el valor de q --lo más fácil será continuar con el algoritmo estándar de Crook.

Incrementamos el "número raíz" en 2 y lo restamos del resto:

                             353
 -  3 53
 ----------
      86

86 es menor que 353, entonces: bajamos el siguiente grupo, agregamos un cero al "número raíz" y le sumamos 11

      86 92                  3541

Redondeamos el primer dígito de 3541 a 4 y dividimos el primer dígito de 8692 (8) por el para obtener 2 como el valor de "q". Luego restamos 2*3541:

    - 6
    - 10
     - 0 8
       - 02
 ------------
      16 10

Ahora restamos q*(q-1) o 2*1 = 2

       - 02
 -----------
      16 08

Y ajustamos el número raíz sumando 2*(q - 1) = 2

                             3543

1608 es menor que 3543, entonces: Bajamos el siguiente grupo, agregamos un cero al "número raíz" y le sumamos 11

      16 08 65               35441

Redondeamos el primer dígito de 35441 a 4 y dividimos los dos primeros dígitos de 1608 (16) por este valor para obtener 4 como valor de "q". Después restamos 4*35441:

    - 12
     - 2 0
       - 16
        - 1 6
          - 04
 -------------
       1 91 01

Ahora restamos q*(q-1) o 4*3 = 12

          - 12
 -------------
       1 90 89

Y ajustamos el número raíz sumándole 2*(q - 1) = 6

                             35447

19089 es menor que 35447, por lo tanto: Bajamos el siguiente grupo, le añadimos un cero al "número raíz" y le sumamos 11

       1 90 89 35            354481

Redondeamos el primer dígito de 354481 a 4 y dividimos por esta cantidad dos primeros dígitos de 1908935 (19) para obtener 4 como el valor de "q". Luego restamos 4*354481:

     - 1 2
       - 20
        - 1 6
          - 16
           - 3 2
             - 04
 ----------------
         49 10 11

Y restamos q*(q-1) o 4*3 = 12

             - 12
 ----------------
         49 09 99

Y ajustamos el número raíz sumándole 2*(q - 1) = 6

                             354487

Como 490999 es mayor que 354487, hemos subestimado el valor de q -- continuamos con el algoritmos estandar de Crook: Incrementamos el "número raíz" en 2:

                             354489
       - 35 44 89
 ----------------
         13 65 10

136510 es menor que 354489, por lo que hemos terminado, porque incluso después de dividir por dos todavía tendremos seis dígitos como deseábamos. Todo lo que tenemos que hacer es sumar uno a 354489 y luego dividir por dos, como en el algoritmo original de Crook, y luego verificar si necesitamos redondear el último dígito hacia arriba.

354489 + 1 = 354490. 354490/2 = 177245.

Para probar si se necesita redondeo, podemos usar el mismo método que usé en mi algoritmo de Crook modificado anterior: añadimos 25 al final de la raíz cuadrada (para obtener el número acumulado que se restaría del resto si el siguiente dígito fuera cinco) y comparamos ese número con el resto anterior (con el siguiente grupo de dos dígitos bajado). Como el resto, 13 651 090 es menor que 17 724 525, el siguiente dígito será menor que cinco y no es necesario redondear hacia arriba. La respuesta final, con seis dígitos, es 1.77245.

Espero que hayan encontrado esto útil e interesante.

Steve Treadwell
     21 de marzo de 2009

Artículo traducido del original en lengua inglesa
por Jesús Cabrera - gmail: jccsvq
(2022)

© Marzo de 2009
Steve Treadwell
Email
...