Ábaco Oriental/Métodos Tradicionales/Raíces

Introducción

editar
 
Cargill Gilston Knott

La obtención de raíces cuadradas y cúbicas son las operaciones más complejas estudiadas dentro de la Aritmética Elemental. El ábaco oriental se presta muy bien a la obtención de raíces cuadradas mediante un procedimiento directo y eficiente; pero lamentablemente no se puede decir lo mismo respecto de la obtención de raíces cúbicas que, si bien son posibles, requieren un camino tortuoso, lleno de idas y venidas, y muy propenso a errores.

Cargill Gilston Knott (1856 - 1922), uno de los padres de la sismología moderna, fue un físico y matemático escocés que se sirvió durante nueve años como profesor de matemáticas, acústica y electromagnetismo en la Universidad Imperial de Tokio; tras lo cual fue condecorado con la Orden del Sol Naciente por el Emperador Meiji en 1891. Durante su estancia en Japón entró en contacto con el ábaco japonés que estudió en profundidad y sin duda utilizó profesionalmente en su propio trabajo como profesor e investigador. El resultado de su estudio fue un famoso artículo de 55 páginas.[1] escrito en 1885 que durante mucho tiempo ha sido el relato mejor informado en inglés, así como referencia obligada, sobre la historia y los fundamentos del soroban; la visión de un científico y matemático occidental.

Capítulos

editar

Los dos capítulos siguientes de este libro:

desarrollan y amplían la visión de Knott sobre los métodos tradicionales de obtención de raíces; constando de una introducción teórica seguida de una descripción del procedimiento de cálculo y una serie de ejemplos.

Posteriormente, si desespera con el método tradicional de obtener raíces cúbicas... lo cual es fácil que ocurra, en la sección Técnicas Avanzadas encontrará el capítulo: Método de Newton para Raíces Cuadradas, Cúbicas y Quintas con una forma mucho más eficiente y sencilla de obtener raíces cúbicas.

Comprobando sus ejercicios

editar

Obtener raíces cuadradas y cúbicas con el ábaco puede ser un proceso algo largo y durante la fase de aprendizaje es interesante disponer de una herramienta que nos permita controlar si lo estamos haciendo correctamente.

Raíces cuadradas

editar

Para raíces cuadradas, puede probar el excelente Tutor de raíz cuadrada con Kijoho de Masaaki Murakami, una aplicación en JavaScript que puede ejecutar directamente en su navegador o bien descargarlo a su computadora desde su repositorio en GitHub. Sólo ha de ingresar el radicando en el pequeño cuadro de entrada de la izquierda y presionar repetidamente el botón "NEXT" en la pantalla, o la tecla "RETURN", para asistir al desarrollo del proceso paso a paso.

Raíces cúbicas

editar

Desafortunadamente, no tenemos nada parecido al software anterior para raíces cúbicas, pero puede utilizar el siguiente código BC que también puede serle útil con las raíces cuadradas.


Archivo knott.bc

editar

Copie y pegue lo siguiente en un archivo de texto llamado: knott.bc:


/*
   Functions to help to learn/verify square and cube roots a la Knott
   with the abacus, soroban, suanpan.

   See: https://jccabacus.blogspot.com/2021/06/roots-la-knott.html
   as a reference.

   Jesús Cabrera, June 2021
   CC0 1.0 Universal (CC0 1.0) Public Domain Dedication

   Use at your oun risk!
*/

define int(x) 
{

# Integer part of x

    auto os,r
    os=scale; scale=0
    r=x/1
    scale= os
    return (r)
}

define cbrt(x)
{

# Cube root of x

    return (e(l(x)/3))
}

define knott2(r0, y0, alpha)
{

/*
    Square root following Cargill G. Knott steps

    See example of use in file sr200703.bc
        use: $ sr200703.bc |bc -l knott.bc
*/
    auto so, div
    
    so = scale; /* Store old scale value */
    scale = 1

    a = 10*y0
    div = 100*r0 + alpha/2
    print "New dividend: ",div/1,"\n"
    b = int(div/(a))
    tf = div -b*a -b^2/2
    if (tf<0){
        b=b-1;print "Revising down, b = ",b, "\n"
        tf = div -b*a -b^2/2
    }
    print "New root: ", a+b,", New half-remainder: ", tf/1
    print "\n==================\n\n"
    scale = so; /* restore old scale value */

    return
}


define knott3(r0, y0, alpha)
{

/*
    Cube root following Cargill G. Knott steps

    See example of use in file cr488931400152.bc
        use: $ cat cr488931400152.bc |bc -l knott.bc

*/
    auto so, div, ta, tb, tc, td, te
    
    so = scale; /* Store old scale value */
    scale = 0

    a = 10*y0
    div = 1000*r0 + alpha
    print "New dividend: ",div,"\n\n"

    ta = div/y0; rem1 = div % y0
    print "a) /a:   ", ta, "   rem1: ", rem1, "\n"
    tb = (10*ta)/3; rem2 = (10*ta) % 3
    print "b) /3:   ", tb, "   rem2: ", rem2, "\n"
    b = tb/(100*a)
    print "     b = ",b,"\n"
    tc = tb - b*(a+b)*100
    print "d)   :   ",tc,"\n"
    b = tb/(100*(a+b))
    print "     b = ",b,"\n"
    tc = tb - b*(a+b)*100
    print "d)   :   ",tc,"\n"
    if(b==10){ 
    /* Trick to avoid some problems */
        b = 9
        print "b: ",b,"\n"
        tc = tb - b*(a+b)*100
        print "d) tc:   ",tc,"\n"
    }
    td = tc*3 +rem2
    print "e) *3:   ",td,"\n"
    te = (td/10)*y0 +rem1
    print "f) *a:   ",te,"\n"
    tf = te - b^3
    print "g) -b^3: ",tf,"\n"
    print "\nNew root: ",(a+b)," New remainder: ",tf,"\n\n"
    print "==================\n\n"
    scale = so; /* restore old scale value */

    return
}

Fichero: sr200703.bc

editar

Contiene ejemplo de raíz cuadrada ( ). Copie el siguiente texto y péguelo en un fichero de texto con el nombre sr200703.bc; úselo de acuerdo a las instrucciones contenidas en el propio fichero.


/* 
    Example: square root of 200703 
    
        Use:
        $ cat sr200703.bc |bc -l knott.bc
    or
        $ bc -l knott.bc < sr200703.bc
*/

print "\nSquare root of ", 200703, " = ", sqrt(200703), "\n\n"

/* 
    Decompose in pairs of digits (will be alpha): 20, 07, 03 


    Initialize (first step)
*/
alpha = 20
    b = int(sqrt(alpha))
    r0 = alpha - b^2
    a = 0
    tf = r0/2
    print "First root: ", b, ", First half-remainder: ", tf, "\n"
    print "==================\n\n"

/*  
    Main:
        Repeat for each pair of digits (alpha)...
*/

alpha =07
    mute=knott2(tf, a+b, alpha)
alpha =03
    mute=knott2(tf, a+b, alpha)
/*
    For additional digits continue with alpha = 00
*/
alpha =00
    mute=knott2(tf, a+b, alpha)
alpha =00
    mute=knott2(tf, a+b, alpha)
alpha =00
    mute=knott2(tf, a+b, alpha)
alpha =00
    mute=knott2(tf, a+b, alpha)

Salida

Square root of 200703 = 447.99888392718122931160

First root: 4, First half-remainder: 2.00000000000000000000
==================

New dividend: 203.5
Revising down, b = 4
New root: 44, New half-remainder: 35.5
==================

New dividend: 3551.5
Revising down, b = 7
New root: 447, New half-remainder: 447.0
==================

New dividend: 44700.0
Revising down, b = 9
New root: 4479, New half-remainder: 4429.5
==================

New dividend: 442950.0
New root: 44799, New half-remainder: 39799.5
==================

New dividend: 3979950.0
New root: 447998, New half-remainder: 395998.0
==================

New dividend: 39599800.0
New root: 4479988, New half-remainder: 3759928.0
==================

Fichero cr488931400152.bc

editar

Contiene ejemplo de raíz cúbica ( ). Copie el siguiente texto y péguelo en un fichero de texto con el nombre cr488931400152.bc; úselo de acuerdo a las instrucciones contenidas en el propio fichero.


/*
    Example: cube root of 488931400152
    
    Use:
        $ cat cr488931400152.bc |bc -l knott.bc
    or
        $ bc -l knott.bc < cr488931400152.bc
*/

print "\nCube root of ", 488931400152, " = ", cbrt(488931400152), "\n\n"

/*
    Decompose in triplets (will be alpha): #   488, 931, 400, 152 

    Initialize (first step)
*/

alpha = 488
    b = int(cbrt(alpha))
    r0 = alpha - b^3
    a = 0
    tf = r0
    print "First root: ", b, ", First remainder: ", r0, "\n"
    print "==================\n\n"

/*
    Main: 
        Repeat for each triplet (alpha)...
*/

alpha = 931
    mute = knott3(tf, a+b, alpha)
alpha = 400
    mute = knott3(tf, a+b, alpha)
alpha = 152
    mute = knott3(tf, a+b, alpha)

/*
    For additional digits continue with alpha = 000
*/

Salida

Cube root of 488931400152 = 7877.99999999999999999871

First root: 7, First remainder: 145
==================

New dividend: 145931

a) /a:   20847   rem1: 2
b) /3:   69490   rem2: 0
     b = 9
d)   :   -1610
     b = 8
d)   :   7090
e) *3:   21270
f) *a:   14891
g) -b^3: 14379

New root: 78 New remainder: 14379

==================

New dividend: 14379400

a) /a:   184351   rem1: 22
b) /3:   614503   rem2: 1
     b = 7
d)   :   63603
     b = 7
d)   :   63603
e) *3:   190810
f) *a:   1488340
g) -b^3: 1487997

New root: 787 New remainder: 1487997

==================

New dividend: 1487997152

a) /a:   1890720   rem1: 512
b) /3:   6302400   rem2: 0
     b = 8
d)   :   0
     b = 8
d)   :   0
e) *3:   0
f) *a:   512
g) -b^3: 0

New root: 7878 New remainder: 0

==================

Referencias

editar
  1. Knott, Cargill G. (1886). «The Abacus, in its Historic and Scientific Aspects». Transactions of the Asiatic Society of Japan 14:  pp. 18-73. https://archive.org/details/in.gov.ignca.26020/page/17/mode/2up.