如果我在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 ..
答案 0 :(得分:1)
这可以说是SymPy中的一个错误,determines the commutativity of a function from its arguments。另见this comment。它与衍生物无关:只需打印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)