SymPy:将任意列表/元组符号传递给solve函数

时间:2014-05-28 21:08:47

标签: python parameter-passing linear-algebra sympy

我正在尝试解决一个一致的线性系统,该系统具有(先验的)未知数n个方程和变量n(相同的数字,因此系统已知有一个独特的解决方案,我们只是不知道是什么n。)。

我用符号创建我的变量,用它们创建一个元组,但solve_linear_system似乎不能用它来工作(甚至在转换为列表之后)。 MWE:

from sympy import *
#The next line is just an example, I don't know size a priori
system=Matrix(((2,1,-1,-2),(2,2,0,-4),(1,1,-1,-1))) 
n=3
dd=symbols('a0:%d'%n)
solve_linear_system(system, dd, rational=true )

最后一行返回一个空列表。但是,如果我手动创建单独的变量,它将返回解决方案。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您需要使用*运算符将元组dd解压缩到solve_linear_system()的参数列表中(就像用逗号分隔的手工键入时一样)。尝试用以下代码替换示例的最后一行:

solve_linear_system(system, *dd, rational=True )

应该可以正常工作。请注意,在您的MW示例中,未定义n