求 R 中的反函数

Ben*_*Ben 1 r

R 中是否有一个函数可以生成给定函数的反函数?更具体地说:我有一个三阶多项式,我需要它的倒数。这是严格单调的。

我读过几次,uniroot 和/或多根可以提供帮助。但如何呢?Uniroot 产生函数的根,polyroot 产生函数的零点。我怎样才能用它来求逆呢?也许是一个愚蠢的问题,但我不明白..

小智 5

抱歉回复晚了,但您可以尝试使用此功能:

inverse = function(fn, interval = NULL, lower = min(interval), upper = max(interval), ...){
    Vectorize(function(y){
        uniroot(f=function(x){fn(x)-y}, lower=lower, upper=upper, ...)$root
    })
}
Run Code Online (Sandbox Code Playgroud)

我见过几次这种变体,但从未见过内置的 Vectorize。我将上面的函数放在一起,希望对用户更加友好,例如:

x = 1:10
y = sqrt(x)
sqrt.inv = inverse(sqrt, lower=1, upper=10)
sqrt.inv(y)
# [1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

希望有帮助!