如何将向量场限制在特定半径的圆上?

2024-09-29 01:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我画的是有限导线的矢量磁势。生成的向量场应该是圆形的,并且指向上(z方向)。我得到的场是向上的,但它不是圆形的。它看起来像个正方形。有人能指出我犯的错误吗

that's the result I'm getting

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np


fig = plt.figure()
ax = fig.gca(projection='3d')

l = 10
x, y, z = np.meshgrid(np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 3))



u = 0
v = 0
w = np.log(2*l/((x**2 + y**2)**0.5))

ax.quiver(x, y, z, u, v, w, length=0.1, color = 'black')

plt.show()

Tags: import矢量asnpfigplt圆形ax
1条回答
网友
1楼 · 发布于 2024-09-29 01:25:02

你可以使用一个面具,正如前面指出的here

对于特定示例,可以通过计算xy平面中哪些点位于圆内来创建此遮罩:

x, y, z = np.meshgrid(np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 3))

radius = 1
mask = x**2 + y**2 <= radius

现在敷上面膜

x, y, z = x[mask], y[mask], z[mask]


u = 0
v = 0
w = np.log(2*l/((x**2 + y**2)**0.5))

ax.quiver(x, y, z, u, v, w, length=0.1, color = 'black')

plt.show()

enter image description here

相关问题 更多 >