2016-09-19 81 views
0

我有1个知道x的值。我也有1个公式。 Y = 0.92x现在我想翻转LHSRHS预计产量将X = Y/0.92其乘法和除法。它应该处理所有基本的数学运算。是否有R中的任何软件包这一或者任何一个R中R中的反向公式

回答

0

我不认为有任何的方式来完成你想要什么定义功能。将数学公式作为R函数表示时重写并不是一件容易的事情。你可以做的是使用uniroot来解决功能。例如:

# function for reversing a function. y is your y value 
# only possible x values in interval will be considered. 
inverseFun = function(y, fun, interval = c(-1e2, 1e2), ...) { 
    f = function(.y, .fun, ...) y - fun(...) 
    uniroot(f, interval, .y = y, .fun = fun, ...) 
} 
# standard math functions 
add = function(a, b) a + b 
substract = function(a, b) a - b 
multiply = function(a, b) a * b 
divide = function(a, b) a/b 

# test it works 
inverseFun(y = 3, add, b = 1) 
# 2 
inverseFun(y = -10, substract, b = 1) 
# -9 
inverseFun(y = 30, multiply, b = 2) 
# 15 
inverseFun(y = 30, divide, b = 1.75) 
# 52.5 

以上是一个例子,inverseFun(y = 3, `+`, b = 1)也适用,尽管它可能是不太清楚发生了什么。最后一句话是,uniroot试图尽量减少对于复杂功能可能非常耗时的功能。