我试图在R中用三个变量求解一个方程式。方程是:
59991348 * x^2 - 13958305552 * x + 992000000 + (6000000000 - Q * P) /(x * (.03 + 6000000000 - Q))
。有没有办法象征性地解决它(x =等),或在R中找到根?我已经下载了deSolve,但我不确定哪些命令会有所帮助。谢谢你的帮助。
答案 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
这有点笨拙,也许有人可以做得更好......