首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中计算向量场的旋度,并用matplotlib绘制

在Python中计算向量场的旋度,并用matplotlib绘制
EN

Stack Overflow用户
提问于 2015-05-21 23:52:43
回答 2查看 15.5K关注 0票数 15

我需要计算一个向量场的旋度,并用matplotlib绘制它。我正在寻找的一个简单示例可以放在下面这样:

如何在matplotlib库的quiver3d_demo.py中计算并绘制向量场的旋度?

EN

回答 2

Stack Overflow用户

发布于 2016-09-18 22:49:09

要计算向量函数的旋度,您还可以使用numdifftools进行自动数值微分,而无需通过符号微分绕道而行。Numdifftools不提供curl()函数,但它确实计算一个或多个变量的向量值函数的雅可比矩阵,这提供了向量场的所有分量相对于所有变量的导数;这就是计算旋度所需的全部。

代码语言:javascript
复制
import import scipy as sp
import numdifftools as nd

def h(x):
    return sp.array([3*x[0]**2,4*x[1]*x[2]**3, 2*x[0]])

def curl(f,x):
    jac = nd.Jacobian(f)(x)
    return sp.array([jac[2,1]-jac[1,2],jac[0,2]-jac[2,0],jac[1,0]-jac[0,1]])

x = sp.array([1,2,3)]
curl(h,x)

这将返回x处的curl的值:array([-216., -2., 0.])绘图如上所述。

票数 3
EN

Stack Overflow用户

发布于 2020-09-23 02:53:00

这是一个基于Octave / Matlab implementation的Python代码,

代码语言:javascript
复制
import numpy as np

def curl(x,y,z,u,v,w):
    dx = x[0,:,0]
    dy = y[:,0,0]
    dz = z[0,0,:]

    dummy, dFx_dy, dFx_dz = np.gradient (u, dx, dy, dz, axis=[1,0,2])
    dFy_dx, dummy, dFy_dz = np.gradient (v, dx, dy, dz, axis=[1,0,2])
    dFz_dx, dFz_dy, dummy = np.gradient (w, dx, dy, dz, axis=[1,0,2])

    rot_x = dFz_dy - dFy_dz
    rot_y = dFx_dz - dFz_dx
    rot_z = dFy_dx - dFx_dy

    l = np.sqrt(np.power(u,2.0) + np.power(v,2.0) + np.power(w,2.0));

    m1 = np.multiply(rot_x,u)
    m2 = np.multiply(rot_y,v)
    m3 = np.multiply(rot_z,w)

    tmp1 = (m1 + m2 + m3)
    tmp2 = np.multiply(l,2.0)

    av = np.divide(tmp1, tmp2)

    return rot_x, rot_y, rot_z, av
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30378676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档