Производная произведения некоммутативных функций - PullRequest
0 голосов
/ 13 мая 2018

Если я использую функции в 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 Ответ

0 голосов
/ 14 мая 2018

Возможно, это ошибка в 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)
...