python中计算梯度值

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=No ne, 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,所以最后得的梯度结果包含导数实例,即在默认情况下不进⾏计算。如果我们使⽤两者中的任意⼀个⽅法都能求解出梯度值:

本文发布于:2024-09-22 17:22:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/433325.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:梯度   计算   参数   实例
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议