用SymPy求解方程的两个方面

时间:2014-03-12 15:38:10

标签: python math sympy solver

我有以下等式来计算电子电路中的边界电感。使用SymPy,当Lb.evalf(subs={...})LbD时,我可以使用f来计算R值。

Lb = ((1-D)**2*D*R)/(2*f)

无需重新排列等式,如果供应D值,是否有办法解决fRLb?例如,除了D之外,我知道等式中的所有值。

Math equation

1 个答案:

答案 0 :(得分:2)

您可以使用sympy来解决变量。例如:

import sympy
from sympy.abc import d,f,r,l
equation = sympy.Eq( ((1-d)**2*d*r)/(2*f), l )

print sympy.solve(equation,"f")
print sympy.solve(equation,"r")
print sympy.solve(equation,"d")

这给出了分别用f和r分析求解的方程式。

[d*r*(d - 1)**2/(2*l)]
[2*f*l/(d*(d - 1)**2)]

请注意,求解d会产生mess of solutions。这是预期的,因为方程式是d中的立方。

[-(-1/2 - sqrt(3)*I/2)*(-f*l/r + sqrt((-2*f*l/r + 2/27)**2/4 - 1/729) + 1/27)**(1/3) + 2/3 - 1/(9*(-1/2 - sqrt(3)*I/2)*(-f*l/r + sqrt((-2*f*l/r + 2/27)**2/4 - 1/729) + 1/27)**(1/3)), -(-1/2 + sqrt(3)*I/2)*(-f*l/r + sqrt((-2*f*l/r + 2/27)**2/4 - 1/729) + 1/27)**(1/3) + 2/3 - 1/(9*(-1/2 + sqrt(3)*I/2)*(-f*l/r + sqrt((-2*f*l/r + 2/27)**2/4 - 1/729) + 1/27)**(1/3)), -(-f*l/r + sqrt((-2*f*l/r + 2/27)**2/4 - 1/729) + 1/27)**(1/3) + 2/3 - 1/(9*(-f*l/r + sqrt((-2*f*l/r + 2/27)**2/4 - 1/729) + 1/27)**(1/3))]