R:求解变量

时间:2019-05-31 08:51:39

标签: r equation-solving

我想知道是否有任何函数可以用其他值来求解方程中的变量。

例如,我有:

Group  Number Angle    Max Value 
Fourth Prime  Gradient Minimum

此函数的输出应为:

(a-1/3)/(a+b-2/3)==0.3

或类似的话。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以通过Ryacas软件包使用 Yacas

library(Ryacas)
a <- Sym("a")
b <- Sym("b")
Solve((a-1/3)/(a+b-2/3)==0.3, a)
# Yacas vector:
# [1] a == -((-0.3 * b - 0.1333333333)/0.7)

要获取解决方案的表达式,请执行以下操作:

solution <- Solve((a-1/3)/(a+b-2/3)==0.3, a)
yacas(paste0("a Where ", solution))
# expression(-((-0.3 * b - 0.1333333333)/0.7))

您可以定义一个返回b函数中的解决方案的函数,如下所示:

f <- function(b) {}
body(f) <- yacas(paste0("a Where ", solution))$text
f
# function (x) 
# -((-0.3 * b - 0.1333333333)/0.7)

还请注意,您需要进行有理演算以获取准确的值:

q1 <- Sym(1)/Sym(3)
q2 <- Sym(2)/Sym(3)
solution <- Solve((a-q1)/(a+b-q2)==0.3, a)
solution
# [1] a == -(3 * (-0.3 * b - 1.2/9)/2.1)
Simplify(solution)
# [1] a + (-0.9 * b/2.1 - 3.6/18.9) == 0