为了账号安全,请及时绑定邮箱和手机立即绑定

梯度和箭袋图

梯度和箭袋图

一只萌萌小番薯 2021-10-26 16:25:35
from scipy import *import matplotlib.pyplot as pltdef plot_elines(x_grid, y_grid, potential, field):    fig, ax = plt.subplots(figsize=(13, 13))    im_cs = ax.contour(x_grid, y_grid, potential, 18, cmap='inferno')    plt.clabel(im_cs, inline=1, fontsize=7)    ax.quiver(x_grid[::3, ::3], y_grid[::3, ::3],              field[0, ::3, ::3], field[1, ::3, ::3],)    ax.set_xlabel("$x$")    ax.set_ylabel("$y$")    plt.show()# define q configuration (x,y positions)charges = [    [1, 1],]xx, yy = meshgrid(linspace(-4, 4), linspace(-4, 4))# potential functione_pot = 0.for idx, q in enumerate(charges):    dx, dy = xx-q[0], yy-q[1]    rr = hypot(dx, dy)    e_pot += 1/(4*pi) * 1./rre_field = gradient(-e_pot)e_field /= hypot(e_field[0], e_field[1]) * 5# why is this needed?e_field[0] = e_field[0].Te_field[1] = e_field[1].Tplot_elines(xx, yy, e_pot, e_field)我有一个关于使用gradientnumpy/scipy 函数的问题。我在这里绘制电场等势线和单个正电荷的场向量。定义是E = -grad(V)根据定义,场向量(箭袋)和等势线(轮廓)应该在空间中的所有点都相互正交,并且由于电荷是正的,箭头需要指向远离电荷本身。我是用scipy的gradient函数来计算E的,但是我发现如果不通过gradient函数转置xy网格输出,输出是错误的。比较两个输出(有.T(正确)和没有.T(错误)):对比为什么需要转置?还是我在绘制错误的图?谢谢。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信