在C程序中计算平方根的Bakhshali逼近

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。因此,该方法非常适合查找给定数字的近似平方根。该方法在很多地方都是正确的,因此我们可以使用它来找到浮点值的根。