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

2 投票
1 回答
1122 浏览
提问于 2025-04-18 07:52

我正在尝试解决一个线性方程组,这个方程组的方程数量和变量数量是相同的,但我事先并不知道这个数量n(也就是说,n的值是未知的)。

我用符号来创建我的变量,这样就生成了一个包含这些变量的元组,但在使用solve_linear_system时,这个元组似乎不管用(即使我把它转换成列表也不行)。下面是一个简单的例子:

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 个回答

3

你需要用 * 这个符号来把元组 dd 拆开,变成一串参数传给 solve_linear_system() 函数,就像你手动输入参数时用逗号分隔一样。试着把你示例的最后一行换成:

solve_linear_system(system, *dd, rational=True )

这样应该就能正常工作了。还有,注意在你的 MW 示例中,n 这个变量没有定义。

撰写回答