我对r很新,所以我转向互联网寻求帮助。
我的问题是:
对于等式 ln(n / n0)= k ln(1 + x / k), 如果所有其他变量都已知,我想编写一个估算k(基于试验和误差)的函数。
换句话说:能解决方程式的函数 0.85 = k * ln(1 + 0.56 / k)。
在我的工作中,我必须一遍又一遍地估计k,这样过程的自动化将为我节省很多时间。
由于
答案 0 :(得分:2)
评论太长了......
等式x*ln(1+a/x) = b
(适用于a
和b
的值)具有用Lambert W 函数表示的解法,可在gsl
包中找到名称lambert_W0
下。此解决方案为-a*b/(a*W(-b/(a*exp(b/a)))+b)
,其中W
是Lambert W 函数。
> library(gsl)
> a=0.56; b=0.85
> x <- -a*b/(a*lambert_W0(-b/(a*exp(b/a)))+b) # solution of the equation
> x*log(1+a/x)
[1] 0.85
我不确切知道此解决方案的a
和b
值是多少。它似乎只在a<b
。
对于 a>b
的某些个案,有一个关于Lambert W _ { - 1} 函数的解决方案,lambert_Wm1
在{ {1}}:
gsl
W 和 W _ { - 1} 的定义域可以在documentation of the lamW
package中找到(第3页的“详细信息”部分)。