Sympy 或 Wxmaxima 中的微分运算符
Differential operator in Sympy or in Wxmaxima
是否可以用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 中,这可以按照以下方式完成 link:
https://mathematica.stackexchange.com/questions/72433/polynomial-expansion-of-operator
SymPy 没有 "differential operator" 种对象。但是执行微分的 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
如建议的那样,但您可以考虑递归定义:
>>> 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或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 中,这可以按照以下方式完成 link:
https://mathematica.stackexchange.com/questions/72433/polynomial-expansion-of-operator
SymPy 没有 "differential operator" 种对象。但是执行微分的 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
如建议的那样,但您可以考虑递归定义:
>>> 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