【问题标题】:define a "derivation" function in sympy在 sympy 中定义一个“推导”函数
【发布时间】:2020-02-15 22:35:29
【问题描述】:

我正在尝试在 sympy 中创建一个 derivation 函数(我使用的是 sympy 版本 1.4),但我不确定如何。特别是,我正在尝试定义一个具有以下属性的通用函数(可以只接受 sympy 变量,而不是现在的函数):

d(f+g)=d(f)+d(g)
d(f*g)=f*d(g)+d(f)*g

我已尝试阅读有关定义函数的 sympy documentation,但我不确定如何定义具有上述任意两个符号属性的函数类。

对于某些背景/上下文,我知道如何在 Mathematica 中进行推导;我只想输入

d[f_+g_]:=d[f]+d[g]
d[f_ g_]:=f d[g] + d[f] g

【问题讨论】:

    标签: python-3.x sympy


    【解决方案1】:

    您可以编写自己的规则。以下内容可能会帮助您入门:

    def d(e, func):
      """
      >>> from sympy import x, y
      >>> from sympy import Function
      >>> D = Function('D')
      >>> d(x + y, D)
      D(x) + D(y)
      """
      if e.is_Add:
        return Add(*[d(a, func) for a in e.args])
      elif e.is_Mul:
        return Add(*[Mul(*(e.args[:i]+(d(e.args[i],func),)+e.args[i+1:]))
            for i in range(len(e.args))])
      else:
        return func(e)
    

    或者你可以在课堂上试试这个:

    class d(Function):
      @classmethod
      def eval(cls, e):
        if e.is_Add:
            return Add(*[d(a) for a in e.args])
        elif e.is_Mul:
            return Add(*[Mul(*(e.args[:i]+(d(e.args[i]),)+e.args[i+1:]))
               for i in range(len(e.args))])
        else:
            return d(e, evaluate=False)
    

    另请参阅,linapp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多