我正在尝试在sympy中创建一个derivation函数(我正在使用sympy 1.4版),但是我不确定如何做。特别是,我正在尝试定义一个具有以下属性的通用函数(该函数只能使用sympy变量,暂时不包含函数):
d(f+g)=d(f)+d(g)
d(f*g)=f*d(g)+d(f)*g
我尝试阅读有关定义函数的符号documentation,但不确定如何定义具有以上两个任意符号属性的Function类。
对于某些背景/背景,我知道如何在Mathematica中进行推导;我只想输入
d[f_+g_]:=d[f]+d[g]
d[f_ g_]:=f d[g] + d[f] g
答案 0 :(得分:3)
您可以编写自己的规则。以下内容可能会帮助您入门:
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。