Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

domingo, 1 de julio de 2018

Cálculo raiz cuadrada usando método Bakhsali

Este método para el cálculo aproximado de una raiz cuadrada apareció en un manuscrito encontrado enterrado en un campo por un campesino de un poblado llamado Bakhshali en 1881. El manuscrito data del siglo III o IV.

Formulación:

x = número a calcular.
n = número que multiplicado por sí mismo, más se aproxima a x.







 




Código (MetodoBakhsali.java):

// Cálculo raiz cuadrada usando método Bakhsali
package metodobakhsali;

public class MetodoBakhsali {

   public static void main(String[] args) {

      // Definición variables
      double n = 0, r, x = 15;
      double min = Double.MAX_VALUE;
      double aux;

      // Busca número más cercano
      for (int i = 1; i < Integer.MAX_VALUE; i++) {
         r = i * i;
         aux = Math.abs(r - x);
         if (aux < min) {
            n = i;
            min = aux;
         } else {
            break;
         }
      }

      // Formula método Bakhsali + aproximación
      double numerador = Math.pow(n, 4) + 6 * Math.pow(n, 2) * x + Math.pow(x, 2);
      double denominador = 4 * Math.pow(n, 3) + (4 * n * x);
      double m_bakhsali = numerador / denominador;
      double aproximacion = Math.abs(m_bakhsali * 100 / Math.sqrt(x) - 200);

      // Mostrar resultados en pantalla
      System.out.println("Raiz cuadrada de " + x);
      System.out.println("Resultado real:\t\t " + Math.sqrt(x));
      System.out.println("Método Bakhsali:\t " + m_bakhsali);
      System.out.println("Aproximación: (%): " + aproximacion);

   }

}


Resultado:

run:
Raiz cuadrada de 15.0
Resultado real:         3.872983346207417
Método Bakhsali:     3.872983870967742
Aproximación: (%): 99.99998645074668
BUILD SUCCESSFUL (total time: 0 seconds)


Cálculo raiz cuadrada usando método Babilónico

A través de este método se puede aproximar el cálculo de una raiz cuadrada de cualquier número de forma rápida y fácil. Era un método utilizado en la antigua Babilonia.

x = número a calcular raiz cuadrada.
n = número que multiplicado por sí mismo más se aproxima a x.
nn = aproximación y/o igualación a x.














* Ejemplo de uso para cáculo de raiz cuadrada de 15


x = 15

Búsqueda de los valores de n y nn ( n · n = nn ):


...
2 · 2 = 4
3 · 3 = 9
4 · 4 = 16   <- este número(nn) es el más cercano a x, por tanto n = 4 y nn = 16
5 · 5 = 25
6 · 6 = 36
...







Código (MetodoBabilonico.java):

// Cálculo raiz cuadrada usando método Babilónico
package metodobabilonico;

public class MetodoBabilonico {

   public static void main(String[] args) {

      // Definición variables
      double n = 0, nn = 0, r, x = 15;
      double min = Double.MAX_VALUE;
      double aux;

      // Busca número más cercano
      for (int i = 1; i < Integer.MAX_VALUE; i++) {
         r = i * i;
         aux = Math.abs(r - x);
         if (aux < min) {
            n = i;
            nn = r;
            min = aux;
         } else {
            break;
         }
      }

      // Formula método Babilónico + aproximación
      double m_babilonico = (x + nn) / (2 * n);
      double aproximacion = Math.abs(m_babilonico * 100 / Math.sqrt(x) - 200);

      // Mostrar resultados en pantalla
      System.out.println("Raiz cuadrada de " + x);
      System.out.println("Resultado real:\t\t " + Math.sqrt(x));
      System.out.println("Método Babilónico:\t " + m_babilonico);
      System.out.println("Aproximación: (%): " + aproximacion);

   }

}


Resultado:

run:
Raiz cuadrada de 15.0
Resultado real:         3.872983346207417
Método Babilónico:     3.875
Aproximación: (%): 99.94793022297507
BUILD SUCCESSFUL (total time: 1 second)


Con la tecnología de Blogger.