如何重新排列R中复杂的代数方程?

时间:2017-11-24 13:14:23

标签: r math equation nonlinear-functions

enter image description here

非线性方程如下,A,B,C,D,E是已知的。我想重新安排等式的形成。让方程左边的X,并让其他参数全部在方程的右边。例如X = A * B / D + E ^ 2 / C. 是否有一些软件可以做到这一点?例如R。

1 个答案:

答案 0 :(得分:2)

尝试此操作 - 忽略最近启动的XML包中的警告。

library(Ryacas)
A <- Sym("A")
B <- Sym("B")
C <- Sym("C")
D <- Sym("D")
E <- Sym("E")
X <- Sym("X")
Solve(E == A * B * (X + C) / (A + B * (X + C)) - A * B * (X + D + C) / (A + B * (X + D + C)), X)

,并提供:

expression(list(X == (root((2 * (E * A * B) + (2 * (E * B^2 * 
    C) + E * B^2 * D))^2 - 4 * (E * B^2 * (E * A^2 + (2 * (E * 
    A * B * C) + E * A * B * D) + (E * B^2 * C^2 + E * B^2 * 
    C * D) + A^2 * B * D)), 2) - (2 * (E * A * B) + (2 * (E * 
    B^2 * C) + E * B^2 * D)))/(2 * (E * B^2)), X == -(2 * (E * 
    A * B) + (2 * (E * B^2 * C) + E * B^2 * D) + root((2 * (E * 
    A * B) + (2 * (E * B^2 * C) + E * B^2 * D))^2 - 4 * (E * 
    B^2 * (E * A^2 + (2 * (E * A * B * C) + E * A * B * D) + 
    (E * B^2 * C^2 + E * B^2 * C * D) + A^2 * B * D)), 2))/(2 * 
    (E * B^2))))

如果您具有A,B,C,D,E的特定值,则可以使用例如uniroot对数字进行数值求解。