Einführung
In diesem Lab lernst du, wie du mit Matplotlib einen Gradientenplot eines elektrischen Dipols erstellst. Du wirst lernen, wie du eine Triangulation erstellst, die Daten verfeinern und das elektrische Feld berechnen. Schließlich wirst du die Triangulation, die Potentialiso-Konturen und das Vektorfeld plotten.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal musst du einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.
Erstelle die x- und y-Koordinaten der Punkte
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()
Erklärung:
n_anglesist die Anzahl der Winkel in einem Kreis.n_radiiist die Anzahl der Kreise.min_radiusist der minimale Radius der Kreise.radiiist ein Array von Radien.anglesist ein Array von Winkeln.xist ein Array von x-Koordinaten.yist ein Array von y-Koordinaten.
Berechne das elektrische Potential eines Dipols
def dipole_potential(x, y):
"""The electric dipole potential V, at position *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)
Erklärung:
dipole_potentialist eine Funktion, die das elektrische Dipolpotential berechnet.Vist ein Array von elektrischen Dipolpotentialen.
Erstelle die Triangulation
triang = Triangulation(x, y)
triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),
y[triang.triangles].mean(axis=1))
< min_radius)
Erklärung:
Triangulationist eine Klasse, die eine Delaunay-Triangulation aus einem Punktmengen erstellt.triangist eine Instanz derTriangulation-Klasse.triang.set_maskmaskiert unerwünschte Dreiecke.
Verfeine Daten
refiner = UniformTriRefiner(triang)
tri_refi, z_test_refi = refiner.refine_field(V, subdiv=3)
Erklärung:
UniformTriRefinerist eine Klasse, die eine Triangulation verfeinert, um einen genauereren Plot zu erstellen.refinerist eine Instanz derUniformTriRefiner-Klasse.tri_refiundz_test_refisind die verfeinerte Triangulation und die Potentialwerte respective.
Berechne das elektrische Feld
tci = CubicTriInterpolator(triang, -V)
(Ex, Ey) = tci.gradient(triang.x, triang.y)
E_norm = np.sqrt(Ex**2 + Ey**2)
Erklärung:
CubicTriInterpolatorist eine Klasse, die Daten mithilfe eines kubischen Polynoms interpoliert.tciist eine Instanz derCubicTriInterpolator-Klasse.(Ex, Ey)ist das elektrische Feld.E_normist das normalisierte elektrische Feld.
Zeichne die Triangulation, die Potential-Isolinken und das Vektorfeld
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()
Erklärung:
figundaxsind die Figur- und Achsenobjekte respective.ax.set_aspectsetzt das Seitenverhältnis der Achsen.ax.use_sticky_edgesundax.marginssetzen die Ränder der Achsen.ax.triplotzeichnet die Triangulation.ax.tricontourzeichnet die Potential-Isolinken.ax.quiverzeichnet das Vektorfeld.ax.set_titlesetzt den Titel des Plots.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Matplotlib verwenden, um einen Gradientenplot eines elektrischen Dipols zu erstellen. Sie haben gelernt, wie Sie eine Triangulation erstellen, Daten verfeinern und das elektrische Feld berechnen. Schließlich haben Sie die Triangulation, die Potential-Isolinken und das Vektorfeld geplottet.