上週,我正在參加一個關於計算機科學的具體MOOC,以及教授。用一種低效率的方式來計算一個數的平方根(他後來展示了其他方法)。爲什麼此函數具有對數時間複雜度(計算數字的第n個根)?
下面是在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(含),和這裏的結果:
然後,我相比它(日誌(X)/ step
)的情節,並再次這裏的結果:
所以,我有以下問題:
- 爲什麼它是對數?爲什麼這適用於任何數字的第n個根(使用上述方法)不僅平方根?
- 與
sqrt
增長和log(x)之間的差距是什麼?
我知道有更高效的方法來實現相同的數字平方根結果,但是我需要有人對此進行說明。
相信與否,你的'函數'sqrt'growth'正好是'f(x)= sqrt(x)/ step'圖。 – deniss