求解R-3变量中的根

时间:2014-10-08 22:07:47

标签: r

我试图在R中用三个变量求解一个方程式。方程是: 59991348 * x^2 - 13958305552 * x + 992000000 + (6000000000 - Q * P) /(x * (.03 + 6000000000 - Q))。有没有办法象征性地解决它(x =等),或在R中找到根?我已经下载了deSolve,但我不确定哪些命令会有所帮助。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我根本没有检查过,但似乎yacas可以通过Ryacas包来执行此操作:

ff <- "Solve(59991348 * x^2 - 13958305552 * x + 992000000 + (6000000000 - Q * P) /(x * (.03 + 6000000000 - Q)),x)"

然后解决:

library("Ryacas")
ans0 <- yacas(ff)
ans1 <- gsub("([{}]|,$)","",strsplit(ans0$YacasForm,"x==")[[1]])
ans1 <- ans1[2:4]
grepl("Complex",ans1) ## FALSE TRUE TRUE
Sqrt <- function(x) sqrt(complex(real=x))
Complex <- function(r,i) complex(real=r,imag=i)
zapI <- function(x) if(Im(zapsmall(x))==0) as.numeric(x) else x
numAns <- function(y,P=1,Q=1) {
    zapI(eval(parse(text=y),list(P=P,Q=Q)))
}
numAns(ans1[1])  ## 232.6009
numAns(ans1[2])  ## -1.014755e-09
numAns(ans1[3])  ## 0.07109052

这有点笨拙,也许有人可以做得更好......