因此,我有一个类似的方程式。现在,如果我对此操作grad函数,它将变成这样
如何在sympy上执行此操作? Sympy使用参考框架,但是除了x,y,z之外我什么都没有找到,而且我需要像这样的多个自定义变量。可以在sympy中做到吗?
答案 0 :(得分:0)
如果将theta变量指定为函数,则可能会出现以下情况:
In [5]: A = theta12(x)*theta23(x)*theta13(x)
In [6]: A
Out[6]: θ₁₂(x)⋅θ₁₃(x)⋅θ₂₃(x)
In [7]: A.diff(x)
Out[7]:
d d d
θ₁₂(x)⋅θ₁₃(x)⋅──(θ₂₃(x)) + θ₁₂(x)⋅θ₂₃(x)⋅──(θ₁₃(x)) + θ₁₃(x)⋅θ₂₃(x)⋅──(θ₁₂(x))
dx dx dx
请注意,我正在使用普通导数。对于更多变量,只需使用更多变量(不幸的是它将分发):
In [8]: A = theta12(x,y)*theta23(x,y)*theta13(x,y)
In [9]: A.diff([[x,y]])
Out[9]:
⎡ ∂ ∂ ∂ ∂
⎢θ₁₂(x, y)⋅θ₁₃(x, y)⋅──(θ₂₃(x, y)) + θ₁₂(x, y)⋅θ₂₃(x, y)⋅──(θ₁₃(x, y)) + θ₁₃(x, y)⋅θ₂₃(x, y)⋅──(θ₁₂(x, y)) θ₁₂(x, y)⋅θ₁₃(x, y)⋅──(θ₂₃(x,
⎣ ∂x ∂x ∂x ∂y
∂ ∂ ⎤
y)) + θ₁₂(x, y)⋅θ₂₃(x, y)⋅──(θ₁₃(x, y)) + θ₁₃(x, y)⋅θ₂₃(x, y)⋅──(θ₁₂(x, y))⎥
∂y ∂y ⎦
有一个梯度运算符,但这仅用于sympy.vector
模块中。