有没有办法R
解决给定单变量函数的逆?我的动机是稍后告诉我R
使用值向量作为反函数的输入,以便它可以吐出反函数值。
例如,我有函数y(x) = x^2
,反函数是y = sqrt(x)
。有没有办法R
解决反函数?
我查了一下uniroot()
,但我没有解决函数的零。
任何的意见都将会有帮助。
谢谢!
你找到什么样的逆?如果您正在寻找符号逆(例如,与 sqrt(x) 相同的函数 y),您将不得不使用符号系统。查看ryacas的 R 库以连接可能计算逆的计算机代数系统,Yacas。
现在,如果您只需要计算逐点逆,您可以按照您所写的 uniroot 定义您的函数:
> inverse = function (f, lower = -100, upper = 100) {
function (y) uniroot((function (x) f(x) - y), lower = lower, upper = upper)[1]
}
> square_inverse = inverse(function (x) x^2, 0.1, 100)
> square_inverse(4)
[1] 1.999976
对于给定的y
and f(x)
,这将计算x
出f(x) = y
,也称为逆。
我无法发表评论,因为我的声誉太低了。我是 R 的新手,我花了一段时间才理解 Mike 的代码,因为我不习惯在他的回答中定义函数的方式。下面是 Mike 的代码,代码较长,但(对我而言)更易读:
inverse <- function(f, lower, upper){
function(y){
uniroot(function(x){f(x) - y}, lower = lower, upper = upper, tol=1e-3)[1]
}
}
square_inverse <- inverse(function(x){x^2}, 0.1, 100)
square_inverse(4)
我希望它也可以帮助其他新手。