Sympy象征性差异

问题描述 投票:2回答:1

所以,我有一个类似这个enter image description here的等式。现在,如果我在此操作grad功能,它就会变成这样

enter image description here

我如何在同情时这样做? Sympy使用参考框架,但除了x,y,z之外我没有找到任何其他内容,而且我需要这样的多个自定义变量。是否可以同情地做到这一点?

python sympy
1个回答
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模块。

© www.soinside.com 2019 - 2024. All rights reserved.