我正在編寫一個函數來解決任意數量的聯立方程。等式的數量由函數的其中一個參數設置,每個等式都由多個符號構成 - 與等式一樣多的符號。這意味着我不能簡單地對方程進行硬編碼,甚至不需要將方程組合在一起所需的符號;該功能需要能夠處理任意數量的等式。所以,我的問題是,我如何產生一個符號列表?SymPy - 任意數量的符號
我有一個可能的解決方案,但我的直覺告訴我,它不會非常有效。請讓我知道是否有更好的方法來做到這一點。
我是新來的SymPy,我仍然感覺我的方式。就我所見,符號需要用一個字符串來定義。因此,我可以通過在字母上添加遞增數字(例如't0','t1'等)來產生一系列字符串,將它們添加到列表中,然後使用這些字符串作爲參數來創建符號。這些符號本身將存儲在一個列表中,並將用於生成方程。
def solveEquations(numEquations):
symbolNameList = []
symbolList = []
equationList = []
for i in range(numEquations):
name = 't' + str(i)
symbolNameList.append(name)
symbolList.append(Symbol(name))
for i in range(numEquations):
equation = 0
for sym in symbolList:
equation += sym ** i # Or whatever structure the equation needs
equationList.append(equation)
#Then go on to solve the equations...
這是做這件事的最好方法,還是有更高效的方法?
謝謝!這看起來很簡單。 – thornate 2012-02-29 07:22:47
它也適用於字母:'符號('a:g')'。 – asmeurer 2012-12-28 10:06:13
只是在這裏注意,在sympy這是一個元組,而不是一個列表...主要是一個不能定義的東西列表中的元素:a0 = t + 1會給出錯誤。 – user836925 2014-01-31 16:50:24