簡體   English   中英

使用SymPy進行迭代計算,針對不同的參數值求解相同的方程式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM