用SymPy求解方程的两边

2 投票
1 回答
510 浏览
提问于 2025-04-17 21:58

我有一个公式可以用来计算电子电路中的边界电感。使用SymPy这个工具,我可以通过 Lb.evalf(subs={...}) 来计算 Lb 的值,只要我知道 DfR 的值。

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

如果我已经知道了 Lb 的值,想要计算 DfR,有没有办法在不重新排列公式的情况下做到这一点?比如说,我知道公式中的所有值,除了 D

数学公式

1 个回答

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会得到一堆复杂的解,这个是正常的,因为这个方程是关于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))]

撰写回答