R:求解一个变量
R: solving for a variable
我想知道是否有任何函数可以根据其他值求解方程中的变量。
比如我有:
(a-1/3)/(a+b-2/3)==0.3
这个函数的输出应该是:
(0.3*b+0.1333333)/(0.7)
或者类似的东西。
谢谢
您可以通过 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
我想知道是否有任何函数可以根据其他值求解方程中的变量。
比如我有:
(a-1/3)/(a+b-2/3)==0.3
这个函数的输出应该是:
(0.3*b+0.1333333)/(0.7)
或者类似的东西。
谢谢
您可以通过 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