R 解代数方程

R 解代数方程,r,yacas,R,Yacas,我试图解这个方程:((2300+1900*1)+(x+2300+1900*1)*0.002)/(600-400)=1 有没有办法用R来实现这一点 尝试使用不正确的解决方案: 这个方程式的答案是−2004200听起来你想为x求解(),而不仅仅是简化?以下代码求解该方程,从解中去掉x==,并计算表达式: eq2这是一个基本的R解决方案。 以函数的形式重写方程,使用曲线获得函数具有不同符号的两个端点,并使单根起作用 f <- function(x) ((2300+1900*1)+(x+2300+

我试图解这个方程:
((2300+1900*1)+(x+2300+1900*1)*0.002)/(600-400)=1

有没有办法用R来实现这一点

尝试使用不正确的解决方案:
这个方程式的答案是−2004200

听起来你想为x求解(),而不仅仅是简化?以下代码求解该方程,从解中去掉
x==
,并计算表达式:


eq2这是一个基本的R解决方案。
以函数的形式重写方程,使用
曲线
获得函数具有不同符号的两个端点,并使
单根
起作用

f <- function(x) ((2300+1900*1)+(x+2300+1900*1)*0.002)/(600-400) - 1
curve(f, -1e7, 1)
uniroot(f, c(-1e7, 1))
#$root
#[1] -2004200
#
#$f.root
#[1] 0
#
#$iter
#[1] 1
#
#$init.it
#[1] NA
#
#$estim.prec
#[1] 7995800

如果您想要快速解决问题:
rootSolve
库是您的首选

库(rootSolve)

func_如果要保持相同的结构,则在Base R中,可以执行以下操作:

solveX <- function(eq){
  U <- function(x)abs(eval(parse(text = sub("=+","-", eq)), list(x=x)))
  optim(0, U, method = "L-BFGS-B")$par
}
eq <- "((2300+1900*1)+(x+2300+1900*1)*0.002)/(600-400) ==1 "
solveX(eq)
[1] -2004200
solveX1)Ryacas使用
Ryacas
软件包
solve
,如下所示。(感谢@mikldk对最后一行的改进。)

2)Ryacas0或使用上面的
eq
Ryacas0
包装:

library(Ryacas0)

res <- Solve(eq, "x")
eval(Expr(res)[[1:3]]) # convert to R
## [1] -2004200

如果我们用假想的
1i
替换
x
,然后将rhs移动到lhs,则
B
A
是该表达式的实部和虚部。没有使用任何软件包

r <- eval(parse(text = sub("==", "-", eq)), list(x = 1i))
-Re(r) / Im(r)
## [1] -2004200

r术语
2300+1900*1
有意义还是可以简化?@ruibarra这些术语有意义的是租金、工资和工人数量,这个方程显示了给定的最大投资额,然后是租金、工资、工人数量和资本成本。您要解的原始方程是什么?为什么你不能用200而不是600-400?甚至4200而不是2300+1900*1600是产品的价格400是单一成本,我正在开发一个通用函数来显示给定价格、单位成本、固定成本、资本成本和每个周期1次销售的最大投资,什么是0.002?
solveX <- function(eq){
  U <- function(x)abs(eval(parse(text = sub("=+","-", eq)), list(x=x)))
  optim(0, U, method = "L-BFGS-B")$par
}
eq <- "((2300+1900*1)+(x+2300+1900*1)*0.002)/(600-400) ==1 "
solveX(eq)
[1] -2004200
library(Ryacas)
eq <- "((2300+1900*1)+(x+2300+1900*1)*0.002)/(600-400) ==1 "  # from question

res <- solve(ysym(eq), "x")
as_r(y_rmvars(res))  # extract and convert to R
## [1] -2004200
h <- 2300
eq2 <- "((h+1900*1)+(x+2300+1900*1)*0.002)/(600-400) ==1 "  # from question
res2 <- solve(ysym(eq2), "x")
eval(as_r(y_rmvars(res2)))
## [1] -2004200
library(Ryacas0)

res <- Solve(eq, "x")
eval(Expr(res)[[1:3]]) # convert to R
## [1] -2004200
A * x + B = 0
x = - B / A
r <- eval(parse(text = sub("==", "-", eq)), list(x = 1i))
-Re(r) / Im(r)
## [1] -2004200
e <- parse(text = sub("==", "-", eq))
- eval(e, list(x = 0)) / eval(D(e, "x"))
## [1] -200420