Finden Sie die Quadratwurzel mit der babylonischen Methode in C++

Saad Aslam 12 Oktober 2023
  1. Ein Überblick über die babylonische Methode in C++
  2. Implementieren Sie die babylonische Methode, um die Quadratwurzel in C++ zu finden
Finden Sie die Quadratwurzel mit der babylonischen Methode in C++

Anhand des babylonischen Ansatzes, der in diesem Artikel erklärt wird, lernen wir, wie man die Quadratwurzel einer ganzen Zahl in der Programmiersprache C++ bestimmt.

Ein Überblick über die babylonische Methode in C++

Die babylonische Methode zur Bestimmung der Quadratwurzel einer Zahl leitet sich von einem der numerischen Verfahren ab, das wiederum vom Newton-Raphson-Ansatz zur Lösung nichtlinearer Gleichungen abgeleitet ist.

Das Verfahren kann als Variation des folgenden Algorithmus zusammengefasst werden.

  1. Zuerst wählen wir zufällig eine positive Zahl und bringen sie so nah wie möglich an die Wurzel.
  2. Wir beginnen damit, einer Variablen den Wert eins zuzuweisen, indem wir y = 1 sagen.
  3. Folgen Sie den Anweisungen in den nächsten beiden Schritten, bis Sie den Punkt erreichen, an dem Sie die Antwort haben.
    • Ermitteln Sie den Durchschnitt von x und y und berechnen Sie dann eine Näherung für die Wurzel.
    • Setze y = n/x.

Angenommen, wir wiederholen die Prozeduren des vorherigen Abschnitts in einer Schleife. In diesem Fall werden wir schließlich zur Quadratwurzel der Zahl selbst gelangen, während wir die babylonische Technik anwenden, um das Problem zu lösen.

Implementieren Sie die babylonische Methode, um die Quadratwurzel in C++ zu finden

Schauen wir uns ein Beispiel an, das eine separate Klasse verwendet, um den babylonischen Ansatz anzuwenden, um die Quadratwurzel einer Zahl zu finden.

Zunächst importieren wir die notwendigen Bibliotheken für die Anwendung.

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

#include <iostream>

Entwickeln Sie eine Float-Methode namens sqRootBySaad, die einen sqNumber-Parameter mit einem float-Datentypwert akzeptiert.

float sqRootBySaad(float sqNumber) {}

Im Hauptteil dieser Methode sollten Sie zuerst die Werte von drei Variablen festlegen: value, guess, und constantValue.. Der Wert, der der Variablen Wert zugewiesen wird, ist die Zahl, die ihr als Argument übergeben wird.

Der Wert der Variablen guess wird auf eins und der Wert constantValue auf null gesetzt.

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

Danach wenden wir eine while-Schleife an, um zu prüfen, ob der Wert value – rate größer als der constantValue ist. Dann berechnen wir den Durchschnitt der beiden Werte value und guess, und die sqNumber wird durch value dividiert.

Danach prüfen wir mit einer while-Schleife, ob der Wert von value - rate grösser als der Wert von constantValue. ist. Wenn dies der Fall ist, berechnen wir den Durchschnitt der Werte Wert und Schätzung.

Zusätzlich dividieren wir die sqNumber durch die gerade fertig gestellte Berechnung und speichern sie in der Variable value.

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

sqRootBySaad gibt die Variable value zurück.

return value;

Nachdem wir nun die Prozedur zum Finden der Quadratwurzel entwickelt haben, müssen wir in der Funktion namens main(). eine Variable namens anyNumber mit dem Typ int definieren. Zeigen Sie dem Benutzer eine Nachricht, in der er aufgefordert wird, die Zahl zu übermitteln, damit Sie ihre Quadratwurzel berechnen können, und nehmen Sie dann die Eingabe des Benutzers für die Zahl.

Rufen Sie nun die Methode sqRootBySaad auf und geben Sie die zuvor gespeicherte Zahl in der Variablen anyNumber. an.

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;
}

Vollständiger Quellcode:

#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;
}

Ausgang:

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

Schauen wir uns ein weiteres Beispiel an, das den babylonischen Ansatz anwendet, um die Quadratwurzel einer Zahl zu finden.

Hier initialisieren wir drei Variablen value, guess, und sqNumber vom Datentyp double..

Zeigen Sie dem Benutzer eine Nachricht, in der er aufgefordert wird, die Zahl zu übermitteln, damit wir die Quadratwurzel der Zahl berechnen können, und geben Sie dann den vom Benutzer bereitgestellten Wert ein.

double value, guess, sqNumber;

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

Nachdem wir die Zahl durch zwei dividiert haben, speichern wir das Ergebnis in der Variablen namens guess.. Implementieren Sie eine for-Schleife mit einer Iterationszahl von zehn und fahren Sie damit fort, bis wir das gewünschte Ergebnis erreichen.

Teilen Sie innerhalb der for-Schleife den vom Benutzer eingegebenen value durch den guess-Wert und speichern Sie das Ergebnis in der Variablen sqNumber. Um den Wert der Variablen guess zu aktualisieren, müssen Sie die in den Variablen guess und sqNumber enthaltenen Durchschnittswerte berechnen.

guess = value / 2.0;

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

Zuletzt drucken wir den Schätzwert, die Zahl, die man erhält, indem man die Quadratwurzel des vom Benutzer eingegebenen Werts zieht.

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

Vollständiger Quellcode:

#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;
}

Ausgang:

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

Verwandter Artikel - C++ Math