首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用"Yacas向量“的右手边作为函数求解

用"Yacas向量“的右手边作为函数求解
EN

Stack Overflow用户
提问于 2019-05-03 02:08:00
回答 2查看 65关注 0票数 0

我试图用两个方程来解决一个优化问题。但是第一个方程的导数将在第二个方程中使用。如下所示,我需要在c和d.之间设置一阶导数等于零,把y带到右边,在第二个方程中使用y。

代码语言:javascript
复制
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”,并使用它作为一个函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-03 09:48:13

问题是要问的东西,将只提取右侧"(60 - x)/2“,并使用它作为一个函数。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-05-03 11:14:56

你可以:

代码语言:javascript
复制
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)

要定义该功能:

代码语言:javascript
复制
f <- function(x){}
body(f) <- yacas(paste0("y Where ", c))$text
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55962418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档