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)


3 comentarios:

Con la tecnología de Blogger.