如何在Julia中显示数学函数?

如何在Julia中显示数学函数?,julia,gradient,derivative,hessian,Julia,Gradient,Derivative,Hessian,我是茱莉亚的新手,我正在努力学习在上面操作微积分。如果我用“ForwardDiff”计算一个函数的梯度,如下面的代码中所示,然后查看下一个函数,该怎么办? 我知道如果我输入一些值,它会给我该点的梯度值,但我只想看看函数(f1的梯度) 为了详细说明Felipe Lema的评论,以下是一些使用SymPy.jl执行各种任务的示例: @vars x y z f(x,y,z) = x^2 * y * z VF(x,y,z) = [x*y, y*z, z*x] diff(f(x,y,z), x) # ∂

我是茱莉亚的新手,我正在努力学习在上面操作微积分。如果我用“ForwardDiff”计算一个函数的梯度,如下面的代码中所示,然后查看下一个函数,该怎么办? 我知道如果我输入一些值,它会给我该点的梯度值,但我只想看看函数(f1的梯度)


为了详细说明Felipe Lema的评论,以下是一些使用
SymPy.jl
执行各种任务的示例:

@vars x y z
f(x,y,z) = x^2 * y * z
VF(x,y,z) = [x*y, y*z, z*x]

diff(f(x,y,z), x)  # ∂f/∂x

diff.(f(x,y,z), [x,y,z]) # ∇f, gradiant

diff.(VF(x,y,z), [x,y,z]) |> sum  # ∇⋅VF, divergence

J = VF(x,y,z).jacobian([x,y,z])
sum(diag(J))  # ∇⋅VF, divergence

Mx,Nx, Px, My,Ny,Py, Mz, Nz, Pz = J
[Py-Nz, Mz-Px, Nx-My] # ∇×VF
散度和梯度也是同向性的一部分,但没有暴露出来。它们的使用更一般,但对于这项任务来说很麻烦。例如,这将查找卷曲:

import PyCall
PyCall.pyimport_conda("sympy.physics.vector",       "sympy")
RF = sympy.physics.vector.ReferenceFrame("R")

v1 = get(RF,0)*get(RF,1)*RF.x + get(RF,1)*get(RF,2)*RF.y + get(RF,2)*get(RF,0)*RF.z
sympy.physics.vector.curl(v1, RF)

你似乎对广告的工作原理有错误的理解。没有任何象征意义;从未构造过要显示的“表达式”。梯度是一个在曲线上某一点上定义的向量。该函数可以定义曲线或计算梯度的公式,但梯度本身是一个向量——在上面的例子中,是一个(x,y)向量。你想在上面找到f1吗?它应该在上面没有显示的代码中定义。-phg谢谢。有没有办法像在matlab中那样计算梯度/海森矩阵并显示在julia上?试试使用。正向微分不做符号微分。你可以
import PyCall
PyCall.pyimport_conda("sympy.physics.vector",       "sympy")
RF = sympy.physics.vector.ReferenceFrame("R")

v1 = get(RF,0)*get(RF,1)*RF.x + get(RF,1)*get(RF,2)*RF.y + get(RF,2)*get(RF,0)*RF.z
sympy.physics.vector.curl(v1, RF)