1

如果我在 SymPy 中使用函数并调用 diff 方法,那么交换属性就会被忽略。

h = Function('h',real=True,commutative=False)(t)
R = Function('R',real=True,commutative=False)(t)
print(diff(R*h,t))
# returns:
R(t)*Derivative(h(t), t) + h(t)*Derivative(R(t), t)

我在这里做错了吗?我只希望输出总是在前面有 R ..

4

1 回答 1

1

这可以说是 SymPy 中的一个错误,它根据函数的 arguments 确定函数的交换性。另请参阅此评论。它与导数无关:只需打印h*R就会暴露错误(表达式显示为R(t)*h(t))。

在改变这种行为之前,似乎达到预期结果的唯一方法是声明t为不可交换的:

t = Symbol('t', commutative=False)
h = Function('h', real=True)(t)
R = Function('R', real=True)(t)
print(diff(R*h, t))

印刷

R(t)*Derivative(h(t), t) + Derivative(R(t), t)*h(t)
于 2018-05-13T22:18:57.200 回答