所以,我有一个类似这个的等式。现在,如果我在此操作grad功能,它就会变成这样
我如何在同情时这样做? Sympy使用参考框架,但除了x,y,z之外我没有找到任何其他内容,而且我需要这样的多个自定义变量。是否可以同情地做到这一点?
如果你将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
模块。