在R中找到反函数

时间:2017-08-10 14:07:24

标签: r

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

我读过几次uniroot和/或polyroot可以提供帮助。但是怎么样? Uniroot产生函数的根,并多边形函数的零。我怎么能用它来反转? 也许是一个愚蠢的问题,但我不明白......

2 个答案:

答案 0 :(得分:3)

很抱歉收到的回复太晚,但是您可以尝试使用此功能:

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
    })
}

我已经见过几次这样的变体,但是从来没有内置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

希望有帮助!

答案 1 :(得分:1)

包investr能够应用逆回归。