Encuentra la raíz cuadrada usando el método babilónico en C++

Saad Aslam 12 octubre 2023
  1. Una descripción general del método babilónico en C++
  2. Implemente el método babilónico para encontrar la raíz cuadrada en C++
Encuentra la raíz cuadrada usando el método babilónico en C++

Usando el enfoque babilónico, que se explicará en este artículo, aprenderemos a determinar la raíz cuadrada de un número entero en el lenguaje de programación C++.

Una descripción general del método babilónico en C++

La técnica babilónica para determinar la raíz cuadrada de un número se deriva de uno de los métodos numéricos, que a su vez se deriva del enfoque de Newton-Raphson para la solución de ecuaciones no lineales.

El procedimiento puede resumirse como una variación del siguiente algoritmo.

  1. Primero, elegimos al azar un número positivo y lo acercamos lo más posible a la raíz.
  2. Empezamos asignando el valor uno a una variable diciendo y = 1.
  3. Siga las instrucciones en las próximas dos etapas hasta que llegue al punto en que tenga la respuesta.
    • Encuentra el promedio de x e y, luego calcula una aproximación para la raíz.
    • Establecer y = n/x.

Supongamos que continuamos repitiendo los procedimientos de la sección anterior en un bucle. En ese caso, eventualmente llegaremos a la raíz cuadrada del número mismo mientras utilizamos la técnica babilónica para resolver el problema.

Implemente el método babilónico para encontrar la raíz cuadrada en C++

Veamos un ejemplo que usa una clase separada para aplicar el enfoque babilónico para encontrar la raíz cuadrada de un número.

Para comenzar, importaremos las bibliotecas necesarias para la aplicación.

#include <math.h>
#include <stdio.h>

#include <iostream>

Desarrolle un método de tipo flotante llamado sqRootBySaad que acepte un parámetro sqNumber con un valor de tipo de datos flotante.

float sqRootBySaad(float sqNumber) {}

En el cuerpo de este método, primero debe establecer los valores de tres variables: valor, suposición y valor constante. El valor asignado a la variable valor será el número que se le suministre a esta como argumento.

El valor de la variable adivina se establece en uno, y el valor constante se establece en cero.

float value = sqNumber;
float guess = 1;
float constantValue = 0;

Después de esto, aplicamos un bucle while para comprobar si el valor value - guess es mayor que el constantValue. Luego calcularemos el promedio de los valores de valor y suposición, y el número cuadrado se dividirá por valor.

Después de esto, usamos un bucle while para verificar si el valor de value - guess es mayor que el valor de constantValue.. Si es así, calcularemos el promedio de los valores valor y suposición.

Además, dividiremos el sqNumber por el cómputo que acabamos de terminar y lo guardaremos en la variable value.

while (value - guess > constantValue) {
  value = (value + guess) / 2;
  guess = sqNumber / value;
}

El sqRootBySaad devolverá la variable valor.

return value;

Ahora que hemos desarrollado el procedimiento para encontrar la raíz cuadrada, necesitamos definir una variable llamada anyNumber con el tipo int en la función llamada main().. Muestre un mensaje al usuario pidiéndole que envíe el número para que pueda calcular su raíz cuadrada y luego tome la entrada del usuario para el número.

Ahora, llame al método sqRootBySaad y proporcione el número previamente almacenado en la variable anyNumber..

int main() {
  int anyNumber;
  cout << "Enter any number to find square root: ";
  cin >> anyNumber;
  cout << "Square root using Babylonian method is: " << sqRootBySaad(anyNumber);
  return 0;
}

Código fuente completo:

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;

float sqRootBySaad(float sqNumber) {
  float value = sqNumber;
  float guess = 1;
  float constantValue = 0;

  while (value - guess > constantValue) {
    value = (value + guess) / 2;
    guess = sqNumber / value;
  }
  return value;
}

int main() {
  int anyNumber;
  cout << "Enter any number to find square root: ";
  cin >> anyNumber;
  cout << "Square root using Babylonian method is: " << sqRootBySaad(anyNumber);
  return 0;
}

Producción :

Enter any number to find square root: 25
Square root using Babylonian method is: 5

Veamos un ejemplo adicional que aplica el enfoque babilónico para encontrar la raíz cuadrada de un número.

Aquí, inicializamos tres variables value, guess, y sqNumber del tipo de datos doble.

Muestre un mensaje al usuario pidiéndole que envíe el número para que podamos calcular la raíz cuadrada del número y luego ingresemos el valor que proporciona el usuario.

double value, guess, sqNumber;

cout << "Please enter a number to find square root using the Babylonian "
        "method: ";
cin >> value;

Después de dividir el número por dos, almacenamos el resultado en la variable denominada conjetura. Implemente un ciclo for con un conteo de iteraciones de diez, y continúe haciéndolo hasta que alcancemos el resultado deseado.

Dentro del ciclo for, divida el valor que el usuario ha ingresado por el valor supuesto, y luego guarde el resultado en la variable sqNumber. Para actualizar el valor de la variable conjetura, debe calcular los valores medios contenidos en las variables conjetura y número cuadrado.

guess = value / 2.0;

for (int n = 0; n <= 10; n++) {
  sqNumber = value / guess;
  guess = (guess + sqNumber) / 2;
}

Por último, imprimimos el valor adivino, el número obtenido al sacar la raíz cuadrada del valor que el usuario ha ingresado.

cout << "The square root of " << value << " is: " << guess << endl;

Código fuente completo:

#include <iostream>

using namespace std;

int main() {
  double value, guess, sqNumber;
  cout << "Please enter a number to find square root using the Babylonian "
          "method: ";
  cin >> value;

  guess = value / 2.0;

  for (int n = 0; n <= 10; n++) {
    sqNumber = value / guess;
    guess = (guess + sqNumber) / 2;
  }
  cout << "The square root of " << value << " is: " << guess << endl;
}

Producción :

Please enter a number to find square root using the Babylonian method: 25
The square root of 25 is: 5
Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

Artículo relacionado - C++ Math