Можно ли сгенерировать линейный дифференциальный оператор с помощью программ с открытым исходным кодом, таких как sympy или wxmaxima, и применить его к функции. Например, пусть дифференциальный оператор L будет:
L = d^2/dx^2 + d^2/dy^2 +d/dx
и
f = x^2*y^3
Например, я хочу применить L/3 + L^2/3^2 +L^3/3^3 к f. В Mathematica это можно сделать, как в следующей ссылке: https://mathematica.stackexchange.com/questions/72433/polynomial-expansion-of-operator
L/3 + L^2/3^2 +L^3/3^3
f
Как и предполагалось, но вы можете рассмотреть рекурсивное определение:
>>> def L(n, f): ... if n==1: ... return diff(f, x) + diff(f, x, 2) # for example ... return L(n-1, L(1,f)) >>> L(2, x**2+y/x) 2 + 2*y/x**3 + 6*y*(-1 + 4/x)/x**4 - 6*y/x**4
SymPy не имеет объектов типа "дифференциальный оператор". Но функция Python, выполняющая дифференцирование, делает именно то, что вы описываете.
>>> L = lambda f: f.diff(x, 2) + f.diff(y, 2) + f.diff(x) >>> L(x**2*y**3) 6*x**2*y + 2*x*y**3 + 2*y**3