Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C 프로그램에서 제곱근 계산을 위한 Bakhshali 근사치

<시간/>

박샬리 근사치 완전제곱수가 아닌 수의 제곱근을 계산하는 방법입니다. 이제 개념을 쉽게 이해할 수 있도록 브러시 관련 용어를 살펴보겠습니다.

숫자 x의 제곱근은 y 2 조건을 충족하는 숫자입니다. =x.

완전제곱수는 제곱근이 w인 수입니다. 예를 들어 16은 근이 4와 4이므로 완전제곱수입니다.

숫자의 제곱근을 찾기 위해 수학적으로 정의된 여러 방법이 있습니다. 이 튜토리얼에서는 숫자의 제곱근을 구하는 Bakhshali 근사법에 대해 알아볼 것입니다.

수의 근사근을 구하는 방법입니다. 이것은 바빌론 방식의 처음 두 단계와 동일합니다.

일하는 중 -

Bakhshali 근사는 다음과 같은 방식으로 작동합니다.

숫자 s의 제곱근을 찾아야 합니다. . 다음은 이 근사치를 찾기 위해 수행해야 하는 단계와 계산입니다.

  • 숫자 s의 가장 가까운 완전제곱수를 찾습니다. n 2 .

  • 숫자와 가장 가까운 완전제곱수의 차이를 찾으십시오(예:d =s - n 2 ). .

  • 계산합니다. P =d/(2n)

  • A =n + P로 계산합니다.

  • s의 제곱근의 대략적인 값은 (A - P 2 / 2A) .

예시

#include <iostream>
using namespace std;

int main(){
   float s = 12.3412;
   int perfectSqaure = 0;
   int n = 0;
   for (int i = static_cast<int>(s); i > 0; i--) {
      for (int j = 1; j<i; j++){
         if (j*j == i){
            perfectSqaure = i;
            n = j;
            break;
         }
      }
      if (perfectSqaure > 0)
      break;
   }
   float d = s - perfectSqaure;
   float P = d/(2.0*n);
   float A = n+P;
   float rootOfs = A-((P*P)/(2.0*A));
   cout<<"The square root of "<<s<<" = "<<rootOfs;
   return 0;
}

출력

The square root of 12.3412 = 3.51327

이제 이 근사 제곱근은 3.51300441인 실제 근에 매우 가깝습니다. 따라서 이 방법은 주어진 수의 대략적인 제곱근을 찾는 데 아주 좋습니다. 몇 곳까지는 이 방법이 정확하므로 부동 소수점 값의 근을 찾는 데 사용할 수 있습니다.