2017-12-25 8 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] 

しかし、私はゼロを含む、[1、0、1、0、1、0、0]必要lamdaの係数も指数4,3,1、および0の項。私は通常forループを使用して方程式を反復し、どの項が欠けているかを調べて、係数の配列の適切な場所にゼロを挿入できるようにします。しかし、私がそうしようとしたとき、PurePolyタイプがインデックス作成をサポートしていないと言うエラーを受けました。だから、sympyにゼロを含める方法や自分でやる方法を誰かが知っているのだろうか?私は最終的には、このコードを多くの行列のループに組み込む必要があるので、私は手動で行うことはできません。

ありがとうございました。

答えて

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] 
+0

p.all_coeffsは完全に機能しました。ありがとうございました。 – Claire

+0

'help(p)'を見て、 'coeff'(型'/coeff')を検索することもできます。これにより、名前に "coeff"という名前のメソッドだけでなく、ドキュメンテーション文字列が記述されているメソッドを見つけるのに役立ちます。 – asmeurer

関連する問題