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

How to rearrange the complex algebraic equation in R?

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

试试这个 -- 忽略最近启动的 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.

进行数值求解