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.

Archivo del blog

domingo, 1 de julio de 2018

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.