Производная произведения некоммутативных функций
Если я использую функции в 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 впереди..
1 ответ
Решение
Возможно, это ошибка в SymPy, которая определяет коммутативность функции по ее аргументам. Смотрите также этот комментарий. Это не связано с производными: просто печать 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)