编写一个R函数,使方程

时间:2018-06-17 19:17:51

标签: r function

我对r很新,所以我转向互联网寻求帮助。

我的问题是:

对于等式 ln(n / n0)= k ln(1 + x / k), 如果所有其他变量都已知,我想编写一个估算k(基于试验和误差)的函数。

换句话说:能解决方程式的函数 0.85 = k * ln(1 + 0.56 / k)。

在我的工作中,我必须一遍又一遍地估计k,这样过程的自动化将为我节省很多时间。

由于

1 个答案:

答案 0 :(得分:2)

评论太长了...... 等式x*ln(1+a/x) = b(适用于ab的值)具有用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

我不确切知道此解决方案的ab值是多少。它似乎只在a<b

时起作用

对于 a>b的某些个案,有一个关于Lambert W _ { - 1} 函数的解决方案,lambert_Wm1在{ {1}}:

gsl

W W _ { - 1} 的定义域可以在documentation of the lamW package中找到(第3页的“详细信息”部分)。