我正在编写一个函数来解决任意数量的联立方程。等式的数量由函数的其中一个参数设置,每个等式都由多个符号构成 - 与等式一样多的符号。这意味着我不能简单地对方程进行硬编码,甚至不需要将方程组合在一起所需的符号;该功能需要能够处理任意数量的等式。所以,我的问题是,我如何产生一个符号列表?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