Sympy符号微分

时间:2018-08-27 06:40:33

标签: python sympy

因此,我有一个类似enter image description here的方程式。现在,如果我对此操作grad函数,它将变成这样

enter image description here

如何在sympy上执行此操作? Sympy使用参考框架,但是除了x,y,z之外我什么都没有找到,而且我需要像这样的多个自定义变量。可以在sympy中做到吗?

1 个答案:

答案 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模块中。