Seite 1 von 1

Feldlinien eines Magnetfelds plotten

Verfasst: Donnerstag 27. April 2017, 19:52
von SIto
Hallo zusammen.

Ich soll die Feldlinien des Magnetfelds einer Helmholzspule in der xy-Ebene plotten, wobei die z-Achse gerade durch das Zentrum der beiden Spulen geht. Da ich noch nie Feldlinien (oder ähnliches) geplottet habe fehlt mir hier etwas der Ansatz.

Mein Code bis jetzt sieht folgendermassen aus:

Code: Alles auswählen

import matplotlib.pyplot as plt
import numpy as np

mu = 1.2566e-10
R   = 0.2
I    = 0.3

#B-Feld Spule 1
def B(r):
    return mu * I * R**2/((R**2+(r-R/2)**2)**(3/2))

#B-Feld Spule 2    
def B_1(z):
    return mu * I * R**2/((R**2+(r+R/2)**2)**(3/2))

X = np.linspace(-1, 1)
Y = np.linspace(-1, 1)

r=np.meshgrid(X, Y)

Bx = B(r)
By = B_1(r)

plt.figure(figsize=(8, 8))
plt.streamplot(X, Y, Bx, By)
plt.margins(0, 0)
Mein erster Versuch scheint aber nicht wirklich zu funktionieren. Wäre also für ein paar Tipps, gerne auch Links zum nachlesen wie man so etwas am besten macht, sehr dankbar.

Gruss SIto

Re: Feldlinien eines Magnetfelds plotten

Verfasst: Freitag 28. April 2017, 07:23
von MagBen
Funktion B_1(z):
z wird in der Funktion nicht benutzt, stattdessen wird das nicht definierte r benutzt.

Ersetze Zeile 19 durch

Code: Alles auswählen

x2,y2=np.meshgrid(X, Y)
r = np.sqrt(x2**2 + y2**2)

Re: Feldlinien eines Magnetfelds plotten

Verfasst: Samstag 29. April 2017, 19:50
von SIto
Vielen Dank für den Tipp, der Code läuft jetzt immerhin schon mal, aber ich bin mir nicht wirklich sicher ob er auch wirklich das abbildet was isch gerne hätte.^^

Der Plot sieht momentan so aus:
Bild
aber ich bin mir ziemlich sicher, dass es eigentlich eher so aussehen müsste:
Bild

Leider sehe ich nicht wirklich was ich genau falsch mache, wäre also froh wenn sich nochmal jemand meinen Code ansehen könnte...

Code: Alles auswählen

import matplotlib.pyplot as plt
import numpy as np

mu = 1.2566e-10
R   = 0.2
I    = 0.3

def B(r):
    return mu * I * R**2/((R**2+(r-R/2)**2)**(3/2))
    
def B_1(r):
    return mu * I * R**2/((R**2+(r+R/2)**2)**(3/2))

X = np.linspace(-5, 5)
Y = np.linspace(-5, 5)

x2,y2=np.meshgrid(X, Y)
r = np.sqrt(x2**2 + y2**2)

Bx = B(r)
By = B_1(r)

plt.figure(figsize=(8, 8))
plt.streamplot(X, Y, Bx, By)
plt.margins(0, 0)
plt.show()

Re: Feldlinien eines Magnetfelds plotten

Verfasst: Sonntag 30. April 2017, 08:24
von MagBen
Das Magnetfeld ist ein Vektorfeld. In den Funktionen B(r) und B_l(r) berechnest Du jedoch zwei skalare Felder, nämlich jeweils die B_x Komponente
Bild
(https://de.wikipedia.org/wiki/Helmholtz-Spule)
von einer Spule bei x_0=R/2 und einer bei x_0=-R/2.

Das B_x Feld der einen Spule benutzt Du als x-Komponente für das Vektorfeld und das B_x Feld der anderen Spule benutzt Du als y-Komponente.

Stattdessen müsstest Du die beiden B_x Felder addieren. Außerdem fehlt die Funktion für die B_y Komponente.