【问题标题】:Sympy get quadratic and linear term from a expressionSympy 从表达式中获取二次和线性项
【发布时间】:2021-12-03 18:23:18
【问题描述】:

我在x 的函数中有一个任意表达式E,我想从这个表达式中得到二次项、线性项和常数项。我该怎么做?

import sympy
from sympy import sin, cos

def separate(expression, var):
    # ...
    return Q, L, C

x, a, b, c = sympy.symbols("x a b c")
separate(a*x**2 + b*x + c)   # Q = a, L = b, C = c

separate(cos(x), x)    # Q = 0, L = 0, C = cos(x)
separate(x*cos(x), x)  # Q = 0, L = cos(x), C = 0
separate(sin(x), x)    # Q = 0, L = 0, C = sin(x)
separate(x*sin(x), x)  # Q = 0, L = sin(x), C = 0

我尝试过使用导数,但是当我有 cossinexp 等函数时,我的函数会中断。

【问题讨论】:

  • 问题来了...separate 中的代码未知。预期输出低于函数

标签: python sympy


【解决方案1】:

也许使用.coeff()

def separate(expression, var):
    Q = expression.coeff(var**2)
    L = expression.coeff(var)
    C = (expression - (Q * var + L) * var).simplify()
    print(expression,' \t -->', [Q, L, C])
    return Q, L, C

结果:

a*x**2 + b*x + c     --> [a, b, c]
cos(x)       --> [0, 0, cos(x)]
x*cos(x)     --> [0, cos(x), 0]
sin(x)       --> [0, 0, sin(x)]

【讨论】:

  • 谢谢!当我们有 Poly 时,我知道 coeffs,但我不知道表达式中有 coeff
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
相关资源
最近更新 更多