python中计算梯度值

在python中,有关函数梯度的计算方法均在python库sympy的vector包里,要想实现梯度计算首先要从vector包里导入两个类,分别是:CoordSys3D和Del.
CoordSys3D类的方法主要是构建一个三维标量坐标系,而不是矢量坐标系,我们需要将函数变量通过CoordSys3D的实例化对象映射到三维标量坐标系中。而Del类中包含gradient()即计算函数梯度的方法。具体应用实例如下:
在这里插入图片描述
这里关于类CoordSys3D的构造函数的参数有很多,有很多不常用的参数建议等到用的时候再去了解。构造函数源代码如下:

__init__(self, name, location=None, rotation_matrix=None, parent=None, vector_names=None, variable_names=None, latex_vects=None, pretty_vects=None, latex_scalars=None, pretty_scalars=None, transformation=None)

最常用的是name参数,即给实例化的CoordSys3D对象起一个新名字。
下面是Del类中gradient()方法的参数说明:

gradient(self, scalar_field, doit=False)
 |      Returns the gradient of the given scalar field, as a
 |      Vector instance.
 |      
 |      Parameters
 |      ==========
 |      
 |      scalar_field : SymPy expression
 |          The scalar field to calculate the gradient of.
 |      
 |      doit : bool
 |          If True, the result is returned after calling .doit() on
 |          each component. Else, the returned expression contains
 |          Derivative instances

函数作用是返回给定标量场的梯度,参数scalar_field必须是sympy表达式,参数doit是布尔值,默认情况下是False。如果为True,则在调用.doit()后返回结果每个组件。否则,返回的表达式包含导数实例。其中doit()方法的官方解释如下:

doit(self, **hints)
 |      Evaluate objects that are not evaluated by default like limits,
 |      integrals, sums and products. All objects of this kind will be
 |      evaluated recursively, unless some species were excluded via 'hints'
 |      or unless the 'deep' hint was set to 'False'.

即在默认情况下,像极限、积分、和积等数学运算对象都是不进行计算的。这些对象一般都是通过递归进行计算,除非某些东西通过“hint”参数被排除在外又或者除非“deep”关键字被设为“False”,才能计算出这些默认情况下不进行计算的对象。
例如下面的求2乘以x的不定积分:
在这里插入图片描述
显然,对于前半部分求解梯度的过程中,我们并没有调用doit()方法也没有将gradient()函数中参数doit设置为True,所以最后得的梯度结果包含导数实例,即在默认情况下不进行计算。如果我们使用两者中的任意一个方法都能求解出梯度值:
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值