推理:
2(1/n) = 2 (1/k * k/n) = (2(1/k))(k/n)
约等于
1 + (2(1/k)-1) * k/n (<= (1+x)n 次方 ~= 1+ n*x ) (1)
( k 越接近 n 误差 越小 & k <= n 为佳 )
这样
原式 = f(n) = n*(2(1/n)-1) ~= n * (2(1/k)-1) * k/n
= k * (2(1/k)-1) = f(k)
先求得一组数字的值, 如 [2, 5, 10, 100, 1000, ...]
当 n < 5 时, f(n) ~= f(2)
当 n < 10 时 f(n) ~= f(5)
.....
如要更精确, 前面(1) 式可用下式代替
1 + (2(1/k)-1) * k/n + (2(1/k)-1)2 * k/n * ((k/n)-1) / 2
这样
f(n) = f(k) + f(k) * (f(k)/2n - f(k)/2k)
= f(k) + f(k) * f(k) * (1/2n - 1/2k)
令 k = n-1
f(n) = f(n-1) - f(n-1) * f(n-1) / (n * (n-1))
同样
先求得一组数字的值, 如 [2, 5, 10, 100, 1000, ...]
当 n < 5 时, f(2) = f(2)
f(n) = f(n-1) - f(n-1) * f(n-1) / (n * (n-1))
或者
f(n) = f(2) + f(2) * f(2) * (1/2n - 1/4)
当 n < 10 时 f(5) = f(5)
f(n) = f(n-1) - f(n-1) * f(n-1) / (n * (n-1))
或者 f(n) = f(5) + f(5) * f(5) * (1/2n - 1/10)
.....
可用程序递归运算。
n 越小误差越大, 可多取几组基值。