2017-12-25 47 views
3

저는 Sympy 라이브러리를 처음 사용합니다. 나중에 사용할 특성 다항식의 모든 계수를 추출해야합니다. 예를 들어, 내 코드는 : 출력 제공Python에서 Sympy를 사용하는 Charpoly의 계수

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] 

는 I 필요한 [1, 0, 1, 0, 1, 0, 0], 이는 제로를 포함 lamda의 계수 역시 지수 4, 3, 1 및 0, 항. 일반적으로 for 루프를 사용하여 방정식을 반복하여 누락 된 용어를 확인함으로써 계수 배열의 적절한 지점에 0을 삽입 할 수 있습니다. 그러나 그렇게하려고 시도 할 때 PurePoly 유형이 색인 생성을 지원하지 않는다는 오류가 발생했습니다. 그래서 sympy에 0을 포함시키는 방법이나 직접 할 수있는 방법을 아는 사람이 있는지 궁금합니다. 결국에는이 코드를 많은 행렬에 대한 루프에 통합해야하므로 수동으로 수행 할 수 없습니다.

감사합니다. 내가 개체에 대한 방법의 지능형 명명 일종의 희망과 개체의 디렉토리를 통해 보면 이런 질문이있을 때

답변

2

는 :

>>> 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] 
:

>>> print([w for w in dir(p) if 'coeff' in w]) 
['all_coeffs', 'as_coeff_Add', 'as_coeff_Mul', ...] 

all_coeffs 그건 당신이 원하는 하나입니다

+0

p.all_coeffs가 완벽하게 작동했습니다. 고맙습니다. – Claire

+0

'help (p)'를보고'coeff' (type'/ coeff')를 검색 할 수도 있습니다. 이것은 이름에 "coeff"가 언급 된 메소드뿐만 아니라 docstring이 그것을 언급하는 메소드를 찾을 수 있도록 도와줍니다. – asmeurer