2014-03-12 117 views
3

我有下面的公式来计算电子电路中的边界电感。使用SymPy,当我有D,fR时,我可以使用Lb.evalf(subs={...})来计算Lb值。用SymPy求解方程的两边

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

,而不必重新安排的方程,有没有解决D,如果供应LbfR的方法吗?例如,除了D之外,我知道方程中的所有值。

Math equation

回答

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))]