代码之家  ›  专栏  ›  技术社区  ›  Pillsy

对SymPy函数对象使用diff返回1

  •  0
  • Pillsy  · 技术社区  · 4 年前

    我设置了一个未定义的函数和一个变量:

    import sympy as sp
    
    f = sp.Function('f')
    t = sp.Symbol('t')
    

    如果我区分 f(t) 关于 t ,很好用:

    f(t).diff(t)
    # Derivative(f(t), t)
    

    然而,如果我区分 f 关于 T ,我明白了:

    f.diff(t)
    # 1
    

    我不太确定我在这里期望的是什么(可能是一个错误),但我肯定没有期望1。发生什么事?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Oscar Benjamin    4 年前

    Symphy函数对象实际上是一个Python类:

    In [15]: f = Function('f')
    
    In [16]: type(f(t))
    Out[16]: f
    
    In [17]: isinstance(f(t), f)
    Out[17]: True
    

    这类似于 cos(t) 作为一个例子 cos 班因此 f.diff 相当于 Expr.diff i、 e.未绑定类方法:

    In [18]: f.diff
    Out[18]: <function sympy.core.expr.Expr.diff(self, *symbols, **assumptions)>
    
    In [19]: Expr.diff
    Out[19]: <function sympy.core.expr.Expr.diff(self, *symbols, **assumptions)>
    
    In [20]: Expr.diff(t)
    Out[20]: 1
    

    这相当于:

    In [21]: t.diff()
    Out[21]: 1
    

    请注意,如果表达式只有一个符号,diff方法允许不指定微分变量:

    In [22]: sin(t).diff(t)
    Out[22]: cos(t)
    
    In [23]: sin(t).diff()
    Out[23]: cos(t)
    
    推荐文章