我试图用两个方程来解决一个优化问题。但是第一个方程的导数将在第二个方程中使用。如下所示,我需要在c和d.之间设置一阶导数等于零,把y带到右边,在第二个方程中使用y。
x <- Sym("x")
y <- Sym("y")
a <- function(x, y) (60-x-y)*y
b <- Deriv(a, "y")
c <- Solve(b(x, y)==0, y); c #Need something here to extract just the left-hand side (60 - x)/2; it produces "Yacas vector:[1] y == (60 - x)/2"
y <- function(x) (60 - x)/2
f <- function(x) (60-x-y(x))*x
optimize(f, c(1,100), maximum=TRUE) 我需要的东西,将只提取右侧“(60-x)/2”,并使用它作为一个函数。
发布于 2019-05-03 09:48:13
问题是要问的东西,将只提取右侧"(60 - x)/2“,并使用它作为一个函数。
library(Ryacas)
x <- Sym("x")
y <- Sym("y")
a <- function(x, y) (60-x-y)*y
s <- Solve(deriv(a(x, y), y) == 0, y)
da <- function(x) {}
body(da) <- parse(text = sub("list(y == ", "(", as.character(s), fixed = TRUE))
da
## function (x)
## ((60 - x)/2)发布于 2019-05-03 11:14:56
你可以:
x <- Sym("x")
y <- Sym("y")
a <- (60-x-y)*y
b <- deriv(a, y)
c <- Solve(b==0, y)
yacas(paste0("y Where ", c))
# expression((60 - x)/2)要定义该功能:
f <- function(x){}
body(f) <- yacas(paste0("y Where ", c))$texthttps://stackoverflow.com/questions/55962418
复制相似问题