为什么nlogn难以反转?

假设我有一个空间要求中的nlogn函数,我想为给定的可用空间计算出该函数的最大输入大小。即我想找到n,其中nlogn = c。 我按照一种计算n的方法,在R中看起来像这样:
step = function(R, z) { log(log(R)-z)} 
guess = function(R) log(log(R))

inverse_nlogn = function(R, accuracy=1e-10) {
 zi_1 = 0
 z = guess(R)
 while(abs(z - zi_1)>accuracy) { 
  zi_1 = z
  z = step(R, z)
 }
 exp(exp(z))
}
但我无法理解为什么必须迭代地解决它。对于我们感兴趣的范围(n> 1),函数是非奇异的。     
已邀请:
关于n log n没什么特别的 - 几乎所有的基本函数都没有基本的逆,所以必须通过其他方法来解决:二分法,牛顿法,拉格朗日反演定理,级数反转,Lambert W函数......     
正如Gareth暗示兰伯特W函数(例如这里)让你几乎在那里,确实n = c / W(c) 一个小谷歌找到了这个,这可能会有所帮助。     
跟进(完全明确):
library(emdbook)

n <- 2.5

c <- 2.5*log(2.5)
exp(lambertW(c))  ## 2.5

library(gsl)
exp(lambert_W0(c)) ## 2.5
两种实现的速度,准确性等可能存在细微差别。我没有广泛测试/基准测试。 (现在我试过了
library(sos)
findFn("lambert W")
我发现它已经实现了所有的地方:游戏包,以及一个名为LambertW的整个包......     

要回复问题请先登录注册