上周,我正在接受一个关于计算机科学和教授的特定MOOC。使用了一种低效的方法来计算数字的平方根(他后来也展示了其他方法)。
这是用C ++实现的函数:
double sqrt(double num)
{
double eps = 0.001;
double step = 0.001;
double result = 0.0;
while (num - (result * result) > eps)
{
result += step;
}
return result;
}
我知道while
循环将被执行(num
/ step
的平方根)次。
我决定用matplotlib
绘制一个从1到199(含)的数字范围内的函数增长图,结果如下:
然后,我将它与(log(x)/ step
)绘图进行比较,再次结果如下:
所以,我有以下问题:
sqrt
增长与log(x)之间的差距是什么?我知道有更有效的方法可以达到数字平方根的相同结果,但我需要有人对这个结果有所了解。