Introducción
En este laboratorio, aprenderá a usar Matplotlib para crear un gráfico de gradiente de un dipolo eléctrico. Aprenderá a crear una triangulación, refinar datos y calcular el campo eléctrico. Finalmente, graficará la triangulación, los contornos de iso-potencial y el campo vectorial.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar algunos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Crear las coordenadas x e y de los puntos
n_angles = 30
n_radii = 10
min_radius = 0.2
radii = np.linspace(min_radius, 0.95, n_radii)
angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
angles[:, 1::2] += np.pi / n_angles
x = (radii*np.cos(angles)).flatten()
y = (radii*np.sin(angles)).flatten()
Explicación:
n_angleses el número de ángulos en un círculo.n_radiies el número de círculos.min_radiuses el radio mínimo de los círculos.radiies una matriz de radios.angleses una matriz de ángulos.xes una matriz de coordenadas x.yes una matriz de coordenadas y.
Calcular el potencial eléctrico de un dipolo
def dipole_potential(x, y):
"""El potencial eléctrico del dipolo V, en la posición *x*, *y*."""
r_sq = x**2 + y**2
theta = np.arctan2(y, x)
z = np.cos(theta)/r_sq
return (np.max(z) - z) / (np.max(z) - np.min(z))
V = dipole_potential(x, y)
Explicación:
dipole_potentiales una función que calcula el potencial eléctrico del dipolo.Ves una matriz de potenciales eléctricos del dipolo.
Crear la Triangulación
triang = Triangulation(x, y)
triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),
y[triang.triangles].mean(axis=1))
< min_radius)
Explicación:
Triangulationes una clase que crea una triangulación de Delaunay a partir de un conjunto de puntos.trianges una instancia de la claseTriangulation.triang.set_maskdesmarca los triángulos no deseados.
Refinar datos
refiner = UniformTriRefiner(triang)
tri_refi, z_test_refi = refiner.refine_field(V, subdiv=3)
Explicación:
UniformTriRefineres una clase que refina una triangulación para crear una representación gráfica más precisa.refineres una instancia de la claseUniformTriRefiner.tri_refiyz_test_refison, respectivamente, la triangulación refinada y los valores del potencial.
Calcular el campo eléctrico
tci = CubicTriInterpolator(triang, -V)
(Ex, Ey) = tci.gradient(triang.x, triang.y)
E_norm = np.sqrt(Ex**2 + Ey**2)
Explicación:
CubicTriInterpolatores una clase que interpola datos utilizando un polinomio cúbico.tcies una instancia de la claseCubicTriInterpolator.(Ex, Ey)es el campo eléctrico.E_normes el campo eléctrico normalizado.
Graficar la triangulación, los contornos de iso-potencial y el campo vectorial
fig, ax = plt.subplots()
ax.set_aspect('equal')
ax.use_sticky_edges = False
ax.margins(0.07)
ax.triplot(triang, color='0.8')
levels = np.arange(0., 1., 0.01)
ax.tricontour(tri_refi, z_test_refi, levels=levels, cmap='hot',
linewidths=[2.0, 1.0, 1.0, 1.0])
ax.quiver(triang.x, triang.y, Ex/E_norm, Ey/E_norm,
units='xy', scale=10., zorder=3, color='blue',
width=0.007, headwidth=3., headlength=4.)
ax.set_title('Gradient Plot: Electrical Dipole')
plt.show()
Explicación:
figyaxson, respectivamente, los objetos de figura y ejes.ax.set_aspectestablece la relación de aspecto de los ejes.ax.use_sticky_edgesyax.marginsestablecen los márgenes de los ejes.ax.triplotgrafica la triangulación.ax.tricontourgrafica los contornos de iso-potencial.ax.quivergrafica el campo vectorial.ax.set_titleestablece el título de la gráfica.
Resumen
En este laboratorio, aprendiste cómo usar Matplotlib para crear un gráfico de gradiente de un dipolo eléctrico. Aprendiste cómo crear una triangulación, refinar datos y calcular el campo eléctrico. Finalmente, graficaste la triangulación, los contornos de iso-potencial y el campo vectorial.