[英]Iterative calculation with SymPy, solving the same equation for different values of parameters
我想將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)
有沒有更好的方法來進行這樣的計算?
您以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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.