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

绘制 3D 矢量场

绘制 3D 矢量场

烙印99 2022-08-25 14:45:10
我正在尝试绘制3D矢量场。我使用以下示例作为指导:from mpl_toolkits.mplot3d import axes3dimport matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.gca(projection='3d')x, y, z = np.meshgrid(np.arange(-0.8, 1, 0.2),                      np.arange(-0.8, 1, 0.2),                      np.arange(-0.8, 1, 0.8))u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *     np.sin(np.pi * z))ax.quiver(x, y, z, u, v, w, length=0.1)plt.show()此示例来自 matplotlib 示例库。但是,我想尝试使用其他函数来替换u,v和w,如下所示:from mpl_toolkits.mplot3d import axes3dimport matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.gca(projection='3d')x,y,z = np.meshgrid(np.arange(-0.1,0.005,0.1),np.arange(-0.1,0.005,0.1),np.arange(-0.1,0.005,0.1))VolMag = 3.218E-6 #Volume of magnet in experiment in m^3BR = np.sqrt(x**2 + y**2 + z**2)MagMoment = np.array([0,0,(BInput*VolMag)/u0])Bx = (u0/(4*np.pi))*(3*x*MagMoment*z)/BR**5By = (u0/(4*np.pi))*(3*y*MagMoment*z)/BR**5Bz = (u0/(4*np.pi))*((3*z*MagMoment*(z**2)/BR**5 - MagMoment/BR**3)ax.quiver(x,y,z,Bx,By,Bz,length=0.1)plt.show()这给了我第16行的“无效语法”错误。这是为什么呢?我只更改了函数和定义的一些名称。
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

看起来你在这一行上缺少一个右括号。

Bz = (u0/(4*np.pi))*((3*z*MagMoment*(z**2)/BR**5 - MagMoment/BR**3)

应该是

Bz = (u0/(4*np.pi))*((3*z*MagMoment*(z**2)/BR**5 - MagMoment/BR**3))


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

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