【问题标题】:sympy: How to get zero for absent constant termsympy:如何在没有常数项的情况下获得零
【发布时间】:2015-04-03 15:16:08
【问题描述】:

在 SymPy 0.7.5(Python 2.7.8-64 位)上。当常数项为零或不存在时,我无法从表达式中获取常数项(不存在的常数与零常数相同,对吗?)。

我可以从带有expr.coeff(x, 0) 的表达式中得到常数项。例如:

isympy ## Load sympy etc...

(x + 3).coeff(x, 0)        #-> 3 ok
(x).coeff(x, 0)            #-> 0 ok
(4*x**2 + 3*x).coeff(x, 0) #-> 0 ok

现在,在这些情况下我怎样才能得到 0?

(4*x).coeff(x, 0)     #-> 4 
(4*x**2).coeff(x, 0)  #-> 4 why not 0?!

我确信这已经被问过并记录在案,但至少在没有一些尴尬的解决方法的情况下我找不到答案。 谢谢 达里奥

编辑交互式会话的完整输出:

python
Python 2.7.8 (default, Sep 14 2014, 18:20:38) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import sympy
>>> 
>>> x= sympy.symbols('x')
>>> (4*x).coeff(x, 0)
4
>>> sympy.__version__
'0.7.5'

【问题讨论】:

  • 它给了我 0 ... ` >>> (4*x**2).coeff(x, 0) 打印 0 `
  • @maandoo - 有趣。它对我不起作用。见编辑。您介意发布您的 python 和 sympy 版本吗?

标签: python sympy coefficients


【解决方案1】:

解决方案:升级到 sympy 0.7.6。除非我在做一些愚蠢的事情,否则这似乎是 0.7.5 的错误。

python
Python 2.7.8 (default, Sep 14 2014, 18:20:38) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sympy
>>> x= sympy.symbols('x')
>>> (4*x).coeff(x, 0)
0
>>> sympy.__version__
'0.7.6'

【讨论】:

    【解决方案2】:

    请注意,从记忆中,相当兼容,类似 (4*x + 3*y + 7).coeff(x, 0) 给 3*y + 7 . 尚未发现获得常数项的优雅方法。

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 2017-10-29
      • 2020-06-07
      相关资源
      最近更新 更多