C 平方根 /巴比伦法

C++ Square root / Babylonian method?

本文关键字:巴比伦 平方根      更新时间:2023-10-16

我找到了这种计算YouTube视频中平方根的方法,但是我无法理解其背后的数学概念,代码可以完美地工作,任何人都可以向我解释这在此中会发生什么代码?

#include <iostream>
using namespace std;
int main(){
float estimation = 1, num;
cout << " input :";
cin >> num;
for (int i = 0; i < 20; i++){
    estimation = (estimation + (num / estimation)) / 2;
}
cout << estimation << 'n';
return 0;
}

链接:https://www.youtube.com/watch?v=qbaj1kqjyeu

这是f(x)=x²-a的牛顿方法

N(x) = x - f(x)/f'(x) = x - (x²-a)/(2x) = (x+a/x)/2

计算数量也很有帮助

( N(x) - sqrt(a) ) / (N(x) + sqrt(a) )
= ( x - sqrt(a) )² / ( x + sqrt(a) )²

表明每个步骤中的错误大约是上一个错误的平方,或者也表示,有效数字的数量在每个步骤中或多或少都会倍增。

它只是估计正方根的巴比伦方法:

https://www.deltacollege.edu/dept/basicmath/babylonian.htm

巴比伦广场根

步骤1:猜测。

步骤2:将您的原始号码除以您的猜测。

步骤3:找到这些数字的平均值。

步骤4:使用此平均值作为下一个猜测。

在上面的代码中:

步骤1(估算平方根的数字(作为用户的输入,并存储在num中。在这种情况下,estimation1

cin >> num;

步骤2和步骤3一起:

estimation = (estimation + (num / estimation)) / 2;

步骤4:

for (int i = 0; i < 20; i++){
    // ...
}

在这种情况下,该过程重复20次。

另外,如果它始终以estimation1,那么如果将其设置为num/2,则会更好。