How to extract all coefficients in sympy

前端 未结 4 616

You can get a coefficient of a specific term by using coeff();

x, a = symbols(\"x, a\")
expr = 3 + x + x**2 + a*x*2
expr.coeff(x)
# 2*a + 1

4条回答
  •  温柔的废话
    2020-12-01 05:44

    One thing you can do is use a dictionary comprehension like so:

    dict = {x**p: expr.collect(x).coeff(x**p) for p in range(1,n)}
    

    where n is the highest power+1. In this case n=3. So you would have the list [1,2]

    This would give

    dict = {x: (2*a+1), x**2: 1}
    

    Then you can add in the single term with

    dict[1] = 3
    

    So

     dict = {1:3,x:(2*a+1),x**2:1}
    

    You may also try:

    a = list(reversed(expr.collect(x).as_ordered_terms()))
    dict = {x**p: a[p],coeff(x**p) for p in range(1,n)}
    dict[1] = a[0] # Would only apply if there is single term such as the 3 in the example
    

    where n is the highest power + 1.

提交回复
热议问题