Computer >> Máy Tính >  >> Lập trình >> Lập trình

Phương pháp Babylon để tìm căn bậc hai


Phương pháp Babylon để tìm căn bậc hai dựa trên một trong những phương pháp số, dựa trên phương pháp Newton-Raphson để giải các phương trình phi tuyến tính.

Ý tưởng rất đơn giản, bắt đầu từ một giá trị tùy ý của x, và y là 1, chúng ta có thể đơn giản nhận được ước lượng gần đúng tiếp theo của căn bằng cách tìm giá trị trung bình của x và y. Sau đó, giá trị y sẽ được cập nhật với số / x.

Đầu vào và Đầu ra

Input:
A number: 65
Output:
The square root of 65 is: 8.06226

Thuật toán

sqRoot(number)

Đầu vào: Con số thực.

Đầu ra: Căn bậc hai của một số đã cho.

Begin
   x := number
   y := 1
   precision := 0.000001
   while relative error of x and y > precision, do
      x := (x+y) / 2
      y := number / x
   done
   return x
End

Ví dụ

#include<iostream>
#include<cmath>
using namespace std;

float sqRoot(float number) {
   float x = number, y = 1;              //initial guess as number and 1
   float precision = 0.000001;           //the result is correct upto 0.000001

   while(abs(x - y)/abs(x) > precision) {
      x = (x + y)/2;
      y = number/x;
   }
   return x;
}

int main() {
   int n;
   cout << "Enter Number to find square root: "; cin >> n;
   cout << "The square root of " << n <<" is: " << sqRoot(n);
}

Đầu ra

Enter Number to find square root: 65
The square root of 65 is: 8.06226