我是使用Sympy库的新手。我需要提取稍后要使用的特征多项式的所有系数。 例如,我的代码是:
import sympy as sp
M = sp.Matrix([[0, 0, 0, 1, 0, 1], [0, 0, 0, 0, 1, 0], [0, 1, 0, 1, 0, -1], [1, 0, -1, 0, 1, 0], [0, 0, 0, 1, 0, 0], [-1, 0, 1, 0, 0, 0]])
lamda = symbols('lamda')
p = M.charpoly(lamda)
print(p)
print(p.coeffs())
给出输出:
PurePoly(lamda**6 + lamda**4 - lamda**2, lamda, domain='ZZ')
[1, 1, -1]
然而,我需要[1,0,1,0,1,0,0],其中包括lamda的零系数,也包括指数4,3,1和0项。我通常会使用for循环迭代方程式以查看哪些项缺失,因此可以将零插入系数数组中的适当位置。但是,当我尝试这样做时,我收到一个错误,说PurePoly类型不支持索引。所以,我想知道是否有人知道如何使用零包括零或自己做的方式?我需要最终将这个代码合并到一个循环中以获得大量矩阵,所以我不能手动完成它。
感谢。
答案 0 :(得分:2)
当我遇到这样的问题时,我希望对对象的方法进行某种智能命名,并查看对象的目录:
>>> print([w for w in dir(p) if 'coeff' in w])
['all_coeffs', 'as_coeff_Add', 'as_coeff_Mul', ...]
all_coeffs
是你想要的那个:
>>> help(p.all_coeffs)
Help on method all_coeffs in module sympy.polys.polytools:
all_coeffs(f) method of sympy.polys.polytools.PurePoly instance
Returns all coefficients from a univariate polynomial ``f``.
>>> p.all_coeffs()
[1,0,1,0,−1,0,0]