将虚拟符号转换为Sympy中的符号

时间:2018-08-08 19:13:06

标签: sympy

如何在Sympy中将虚拟变量(sympy.core.symbol.Dummy)转换为常规符号?

例如,假设我们要在满足某些方程f(x_1,x_2)= 0的矩阵内核中找到所有向量(x_1,x_2)。

我将其分为两个步骤。首先:

from sympy import Matrix

M = Matrix( [[1,0],
             [0,0] ])
zeros = Matrix([[0],
                [0]])
sol = M.gauss_jordan_solve(zeros)[0]

第二:求解f(sol)= 0。

但是我不知道如何告诉Sympy将sol的条目视为符号。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

sol.free_symbols返回sol中所有符号的集合(“ free”是在这种情况下无关紧要的细节)。如果您想用自己选择的其他符号替换它们,请创建新的符号(视需要而定),并使用subs进行替换,如下所示。

from sympy import symbols
dummies = list(sol.free_symbols)
my_syms = symbols("x0:{}".format(len(dummies)))   # Example: symbols("x0:3") creates x0, x1, x2
sol = sol.subs(dict(zip(dummies, my_syms)))