R中是否有一个生成给定函数反函数的函数? 更具体一点:我有一个三阶多项式,我需要它的逆。这是严格单调的。
我读过几次uniroot和/或polyroot可以提供帮助。但是怎么样? Uniroot产生函数的根,并多边形函数的零。我怎么能用它来反转? 也许是一个愚蠢的问题,但我不明白......
答案 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能够应用逆回归。