我想用sympy进行电子设计计算。我有一个等式,我解决了某些电阻值。我只能使用标准电阻值,所以我在等式中再次设置选择值,并得到最终结果。
'''Example calculations for LMZ22010 switching regulator'''
from IPython import get_ipython
get_ipython().magic('reset -sf')
from sympy.solvers import solve
from sympy import Symbol, Eq, symbols, var
syms = ['Rent, Renb, Vuvlo']
var(','.join(syms))
Eq_uvlo = Eq(Rent/Renb, (Vuvlo/1.274) -1).subs({Rent:47e3, Vuvlo:8})
Renb = solve(Eq_uvlo, Renb)[0]
print(Renb)
>>> 8902.46
现在我想为Renb尝试9100。 但我无法计算最终的Vuvlo值,因为它已经被替换了。
Vuvlo = solve(Eq_uvlo.subs({Renb:9.1}), Vuvlo)
有没有更好的方法来进行这样的计算?
答案 0 :(得分:2)
您有Renb
作为符号,但随后为其分配了一个值。这意味着你丢失了那个符号,你就再也没有它了。使用不同的Python变量来保存与该符号相关的任何数值,如下面的Renb_sol
。
此外,数值的替换可以在以后进行,在获得解决方案之后。这允许您使用相同的方程求解其中的不同变量。
Eq_uvlo = Eq(Rent/Renb, (Vuvlo/1.274) -1)
Renb_sol = solve(Eq_uvlo, Renb)[0].subs({Rent: 47e3, Vuvlo: 8})
print(Renb_sol)
Vuvlo_sol = solve(Eq_uvlo, Vuvlo)[0].subs({Rent: 47e3, Renb: 9100})
print(Vuvlo_sol)
打印
8902.46803449301
7.85400000000000