2016-09-19 84 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試圖儘量減少對於複雜功能可能非常耗時的功能。