Mik*_*rev 18 python gradient numpy scipy
我真的无法理解numpy.gradient函数是做什么以及如何使用它来计算多变量函数梯度.
例如,我有这样一个功能:
def func(q, chi, delta):
return q * chi * delta
Run Code Online (Sandbox Code Playgroud)
我需要计算它的三维梯度(换句话说,我想计算所有变量(q,chi,delta)的偏导数).
如何使用NumPy计算此渐变?
Ste*_*fan 21
问题是,numpy不能直接给你衍生物,你有两个选择:
随着NUMPY
您基本上要做的是在三维中定义网格并评估此网格上的功能.然后,您将此函数值表提供numpy.gradient给每个维度(变量)的数值导数的数组.
这里的例子:
from numpy import *
x,y,z = mgrid[-100:101:25., -100:101:25., -100:101:25.]
V = 2*x**2 + 3*y**2 - 4*z # just a random function for the potential
Ex,Ey,Ez = gradient(V)
Run Code Online (Sandbox Code Playgroud)
没有NUMPY
这基本上numpy.gradient 就是为预定义网格的每个点做了什么.
Raf*_*ter 13
Numpy和Scipy用于数值计算.由于您想要计算分析函数的梯度,您必须使用支持符号数学的Sympy包.这里解释了区分(您实际上可以在左下角的Web控制台中使用它).
您可以在Ubuntu下安装Sympy
sudo apt-get install python-sympy
Run Code Online (Sandbox Code Playgroud)
或任何带有pip的 Linux发行版
sudo pip install sympy
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40481 次 |
| 最近记录: |