C++ でバビロニア法を使用して平方根を求める
この記事で説明するバビロニアのアプローチを使用して、C++ プログラミング言語で整数の平方根を決定する方法を学習します。
C++ でのバビロニア メソッドの概要
数値の平方根を決定するためのバビロニアの手法は、非線形方程式を解くためのニュートン ラフソン法から派生した数値法の 1つから派生しています。
この手順は、次のアルゴリズムのバリエーションとして要約できます。
- まず、正の数を無作為に選択し、可能な限り根に近い値を取得します。
y = 1
と言って変数に値 1 を代入することから始めます。- 次の 2つの段階の指示に従って、答えが得られるポイントに到達します。
x
とy
の平均を求め、根の近似値を計算します。y = n/x.
を設定します。
前のセクションの手順をループで繰り返し続けるとします。 その場合、問題を解決するためにバビロニアの手法を利用しながら、最終的には数自体の平方根に到達します。
C++ で平方根を求めるバビロニア法を実装する
別のクラスを使用してバビロニアのアプローチを適用して数値の平方根を求める例を見てみましょう。
まず、アプリケーションに必要なライブラリをインポートします。
#include <math.h>
#include <stdio.h>
#include <iostream>
float
データ型値を持つ sqNumber
パラメータを受け入れる sqRootBySaad
と呼ばれる float 型メソッドを開発します。
float sqRootBySaad(float sqNumber) {}
このメソッドの本体では、最初に 3つの変数の値を設定する必要があります: value
、guess,
、constantValue.
。 value
変数に割り当てられる値は、引数としてこれに提供される数値になります。
guess
変数の値は one,
に設定され、constantValue
は zero.
に設定されます。
float value = sqNumber;
float guess = 1;
float constantValue = 0;
この後、while
ループを適用して、value - guess
値が constantValue
より大きいかどうかを確認します。 次に、value
と guess
の両方の値の平均を計算し、sqNumber
を value
で割ります。
この後、while
ループを使用して、value - guess
の値が constantValue.
の値より大きいかどうかを確認します。 そうであれば、value
と guess
値の両方の平均を計算します。
さらに、sqNumber
を先ほど終了した計算で割り、value
変数に保存します。
while (value - guess > constantValue) {
value = (value + guess) / 2;
guess = sqNumber / value;
}
sqRootBySaad
は value
変数を返します。
return value;
平方根を見つけるための手順を作成したので、main().
という関数で int 型の anyNumber
という名前の変数を定義する必要があります。 平方根を計算できるように数値を送信するように求めるメッセージをユーザーに表示し、数値に対するユーザーの入力を取得します。
ここで、メソッド sqRootBySaad
を呼び出し、変数 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;
}
完全なソース コード:
#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;
}
出力:
Enter any number to find square root: 25
Square root using Babylonian method is: 5
数の平方根を見つけるためにバビロニアのアプローチを適用する追加の例を見てみましょう。
ここでは、データ型 double.
の 3つの変数 value
、guess,
、sqNumber
を初期化します。
数値の平方根を計算できるように数値を送信するように求めるメッセージをユーザーに表示し、ユーザーが提供する値を入力します。
double value, guess, sqNumber;
cout << "Please enter a number to find square root using the Babylonian "
"method: ";
cin >> value;
数値を 2 で割った後、結果を guess.
という変数に格納します。 反復回数 10 の for
ループを実装し、目的の結果に到達するまでこれを続けます。
for
ループ内で、ユーザーが入力した value
を guess
値で割り、結果を変数 sqNumber
に保存します。 guess
変数の値を更新するには、guess
および sqNumber
変数に含まれる平均値を計算する必要があります。
guess = value / 2.0;
for (int n = 0; n <= 10; n++) {
sqNumber = value / guess;
guess = (guess + sqNumber) / 2;
}
最後に、ユーザーが入力した値の平方根をとって得られる数値である guess
値を出力します。
cout << "The square root of " << value << " is: " << guess << endl;
完全なソース コード:
#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;
}
出力:
Please enter a number to find square root using the Babylonian method: 25
The square root of 25 is: 5
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