我正在尝试使用两个方程式来解决优化问题。但是,第二个方程式将使用第一个方程式的导数。如下所示,我在c和d之间需要一些东西。 c将一阶导数设置为零,并将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)并将其用作函数的东西。
答案 0 :(得分:0)
问题是要求某种可以提取右侧“(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)
答案 1 :(得分:0)
您可以这样做:
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))$text