我发现这个方法来计算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;
}
答案 0 :(得分:2)
这是
中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) )²
表示每个步骤中的错误大约是前一个错误的平方,或者也表示,每个步骤中有效数字的数量或多或少都会加倍。
答案 1 :(得分:0)
它只是巴比伦估算平方根的方法:
https://www.deltacollege.edu/dept/basicmath/Babylonian.htm
巴比伦广场根
第1步:猜猜。
第2步:将您的原始数字除以猜测。
第3步:找出这些数字的平均值。
第4步:将此平均值用作下一个猜测。
在上面的代码中:
步骤1(估计平方根的数量)作为用户的输入,并存储在num
中。在这种情况下,estimation
为1
:
cin >> num;
第2步和第3步:
estimation = (estimation + (num / estimation)) / 2;
第4步:
for (int i = 0; i < 20; i++){
// ...
}
在这种情况下,该过程重复20次。
此外,不是始终将estimation
作为1
,而是将其设置为num/2
进行更接近的估算会更好。