Math 为什么nlogn很难反转?
假设我有一个函数在空间需求上是nlogn,我想计算出给定可用空间下该函数的最大输入大小。i、 我想找到n,其中nlogn=c 我接着计算n,在R中是这样的:Math 为什么nlogn很难反转?,math,r,complexity-theory,invert,Math,R,Complexity Theory,Invert,假设我有一个函数在空间需求上是nlogn,我想计算出给定可用空间下该函数的最大输入大小。i、 我想找到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)>accu
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函数…n log n没有什么特别之处-几乎所有的初等函数都没有初等逆,因此必须用其他方法求解:二分法、牛顿法、拉格朗日逆定理、级数反演、Lambert W函数…正如Gareth所暗示的Lambert W函数()让你几乎到达那里,事实上n=c/W(c)
一个小小的google发现,这可能会有所帮助。正如Gareth所暗示的那样,Lambert W函数()几乎可以让你达到目的,事实上n=c/W(c) 谷歌发现了一个很小的问题,这可能会有帮助。跟进(完全明确): 我发现它到处都在实施:游戏包,还有一个叫做LambertW的完整包…后续(完全明确):
我发现它到处都有:游戏软件包,还有一个名为LambertW的完整软件包…你没有访问权限吗?你可以完整下载它。你没有访问权限吗?你可以完整下载它。你可以从那里获取()或安装emdbook软件包。。。我认为GSL包中也有一个版本,您可以从那里获得它,或者安装emdbook包。。。我认为GSL包中也有一个版本
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")