Elektriske felter

<div class="alert alert-block alert-danger">

Info til lærer:

Dette opplegget er tenkt som et utforskningsprogram for elever og at lærer kan vise hvordan ulike ladninger danner ulike elektriske felter. Opplegget kan brukes som:

  • en demonstrasjon
  • en utforsking for elevene
  • et programmeringsopplegg gitt at elevene kan noe programmering

Tilslutt er et par eksamensoppgaver som kan løses/utforskes med dette programet.

Mål for opplæringen er at eleven skal kunne:

<div class="alert alert-block alert-info">
  • bruke numeriske metoder og programmering til å utforske og modellere fysiske fenomener

  • utforske, beskrive og modellere bevegelse i to dimensjoner

  • gjøre rede for hvordan krefter kan forårsake krumlinjet bevegelse, og bruke dette i beregninger

  • beskrive elektriske og magnetiske felt og gjøre rede for krefter på objekter med masse og ladning i slike felt

Vi skal se på hvordan det elektriske feltet endrer seg når vi har flere partikler. Vi starter med å gå gjennom formlene vi trenger for å visualisere feltet. Et elektrisk felt oppstår fra en ladning, eller mellom ladninger, og følger formelen:

E=Fq E = \frac{F}{q}

I tillegg trenger vi kraften som virker mellom to elektriske ladninger, Coulombs lov:

F=kq1q2r2 F = k\frac{q_1\cdot q_2}{r^2}

Vi skal nå sette disse sammen og bruke dem til å visualisere elektriske felter fra én partikkel, to partikler, og til slutt flere partikler.

Lage formlene vi trenger

Vi har et plan med en negativ ladning nn og en positiv ladning pp. Ladningen til disse to partiklene vil påvirke det elektriske feltet EE. Vi lager et punkt SS et tilfeldig sted unna nn og pp, og tegner opp det elektriske feltet som nn og pp lager i SS, se figur under. Partikkelen nn vil bidra med en elektrisk feltstyrke gitt ved EnE_n, og tilsvarende vil partikkelen pp bidra med EpE_p. Summen av disse to vektorene gir feltstyrkes som oppleves i punktet SS.

Figur1.png

Vi ønsker nå å lage det vi kaller et vektorfelt, som viser hvor stor den elektriske feltstyrken er i hele området rundt partikkel nn og pp. Vi må da starte med å regne ut størrelsen til EtotE_{tot} i en tilfeldig koordinat S=(x,y)S = (x, y).

La oss starte med å la koordinatene til pp være (1,0)(-1, 0), og koordinatene til nn være (1,0)(1, 0). Hvor stort er det elektriske feltet ved SS? Vi legger sammen det elektriske feltet de to partiklene danner.

Etot=En+Ep E_{tot} = E_n + E_p

Utregningen av det elektriske feltet pp og nn lager er identisk, men vi må passe på fortegnet. Mer om det litt lengre ned.

Ep=Fqp E_p = \frac{F}{q_p}

Siden elektrisk feltstyrke er det feltet en positiv ladning opplever, så lar vi SS ha en positiv ladning lik qS=qpq_S=q_p. Det elektriske feltet punktet SS opplever fra den positive partikkelen pp blir dermed:

Ep=kqpqpqpr2=kqpr2 E_p = k\cdot \frac{q_p \cdot q_p}{q_p r^2} = k\cdot \frac{q_p}{r^2}

For å finne rr må vi vite avstanden mellom partikkelen pp og punktet SS. Bruker Pytagoras' setning.

r=(xSxp)2+(ySyp)2 r = \sqrt{(x_S - x_p)^2 + (y_S - y_p)^2}

Figur3.png

Det siste vi trenger å vite er retningen på feltstyrken i punktet SS. Når vi gjør dette for hånd kan vi se på ladningen til partikkelen (pp eller nn) og så bestemme retningen på EE som SS opplever. Utfordringen er at når vi programmerer må vi gjøre dette automatisk. Dette er litt vrient, for hvis vi bruker formelen for rr som vi har vist over vil vi alltid få et positivt svar. Hvis vi bruker ladningen som utgangspunkt vil vi alltid få samme retning på feltet uavhengig hvor vi er i planet. Første figur viser hvis vi retningen på feltet i xx-retning hvis vi er tilhøyre for den positive partikkelen.

Figur5.png

Andre figur viser hvis vi retningen på feltet i xx-retning hvis vi er til høyre for den positive partikkelen.

Figur6.png

Ser at begge feltene har samme retning. Vi kan ordne dette ved å regne ut enhetsvektoren (er\vec{e_r}). Denne har lengde 1 og retningen til feltet. Siden den har lengde 1 vil den ikke bidra til feltstyrken, og kun bidra til å gi retningen.

er=rr \vec{e_r} = \frac{\vec{r}}{r}

Siden vi har rr både over og under brøkstreken vil svaret alltid bli enten 11 eller 1-1 og dermed gi retningen. Det totalt uttrykket som en positiv partikkel vil opplever fra en annen partikkel med blir da:

E=kqrr3 E = k\frac{q\cdot \vec{r}}{r^3}

Viser gjennom to eksempler

Eksempel 1

Hvis vi starter med å bruke koordinatsystemet i eksemplet over får vi følgende uttrykk hvis vi kun ser på xx-retningen:

Epx=kqp(xSxp)r3 E_{px} = k \frac{q_p \cdot (x_S - x_p)}{r^3}

Vi ser her at (xSxp)(x_S - x_p) er positivt og ladningen qp=1q_p=1, og kan dermed forkorte til

Epx=k1r2 E_{px} = k\frac{1}{r^2}

Dette stemmer siden den elektriske feltstyrken skal peke vekk fra partikkel pp som her er i positiv xx-retning.

Eksempel 2

Vi lar nå SS ligge til venstre for pp, se figur.

Figur4.png

Epx=kqp(xSxp)r3 E_{px} = k\frac{q_p\cdot (x_S - x_p)}{r^3}

Vi ser her at (xSxp)(x_S - x_p) er negativt og ladningen qp=1q_p=1, og kan dermed forkorte til

Epx=k1r2 E_{px} = k\frac{-1}{r^2}

Dette stemmer for nå må det elektriske feltet gå vekk fra partikkel pp, som er negativ xx-retning. Samme utregning vil gjelde for yy-retningen. Vi har dermed gjennom å legge til uttrykket rr\frac{\vec{r}}{r}, sørget for at vi ikke får et problem uansett hvor punktet SS ligger.

Programkode - monopol

[25]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import numpy as np                              # Bibliotek for blant annet listefunksjonalitet og rutenett
import matplotlib.pyplot as plt                 # Bibliotek for plotting
from matplotlib.patches import Circle           # Bibliotek for å lage en liten sirkel o.O

'''Funksjon for det elektriske feltet i et punkt (x, y)'''
def E(q, x_pos, y_pos, x, y):
    r = ((x-x_pos)**2 + (y-y_pos)**2)**0.5      # Lengden på vektoren, bruker pytagoras
    E_x = q * (x - x_pos) / r**3                # Det elektriske feltet i x-retning
    E_y = q * (y - y_pos) / r**3                # Det elektriske feltet i y-retning
    return E_x, E_y                             # Returnerer det elektriske feltet i x- og y-retning

''' Lager et rutenett med et gitt antall punkter'''
nx, ny = 100, 100                               # Antall punkter i x- og y-retning
x = np.linspace(-10, 10, nx)                    # Intervall i x-retning
y = np.linspace(-10, 10, ny)                    # Intervall i y-retning
X, Y = np.meshgrid(x, y)                        # Lager rutenettet


'''Setter antallet partikler og lager tomme lister for ladning, og posisjonene i x- og y-retning'''

q = -1        # Ladningen (1 for positiv, -1 for negativ)
x_pos = 0    # x-koordinaten
y_pos = 0    # y-koordinaten 

'''Lager en liste for det elektriske feltet i alle punktene'''
Ex = np.zeros((ny, nx))
Ey = np.zeros((ny, nx))

'''Den elektriske feltstyrken som alle punkter i planet opplever'''
Ex, Ey = E(q, x_pos, y_pos, X, Y)                      # Kaller på funksjonen på linje 6

'''Setter opp figurstørrelsen'''
fig = plt.figure(figsize = (10, 10))                       # Størrelsen på plottet
ax = fig.add_subplot(111)                                  # Mulighet for å legge plott over hverandre

'''Plotter det elektriske feltet med farger og piler'''
farge = np.log((Ex**2 + Ey**2))                                              # Setter fargen avhengig av feltet
ax.streamplot(x, y, Ex, Ey, color=farge, linewidth=1, cmap=plt.cm.inferno,   # Setter parametere for plottet ...
              density=3, arrowstyle='->', arrowsize=1.5)                     # ... og tegner plottet

'''Fargelegger ladningene røde/blå'''
charge_colors = {True: '#aa0000', False: '#0000aa'}                    # Fargekoden er i hexkode
ax.add_artist(Circle((x_pos, y_pos), 0.1, color=charge_colors[q>0]))   # Fargelegger ladningene

'''Tegner rutenett'''
plt.grid()                       # Lager rutenett
plt.show()                       # Viser grafen

Programkode - dipol

[30]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import numpy as np                              # Bibliotek for blant annet listefunksjonalitet og rutenett
import matplotlib.pyplot as plt                 # Bibliotek for plotting
from matplotlib.patches import Circle           # Bibliotek for å lage en liten sirkel o.O

'''Funksjon for det elektriske feltet i et punkt (x, y)'''
def E(q, x_pos, y_pos, x, y):
    r = ((x-x_pos)**2 + (y-y_pos)**2)**0.5      # Lengden på vektoren, bruker pytagoras
    E_x = q * (x - x_pos) / r**3                # Det elektriske feltet i x-retning
    E_y = q * (y - y_pos) / r**3                # Det elektriske feltet i y-retning
    return E_x, E_y                             # Returnerer det elektriske feltet i x- og y-retning

''' Lager et rutenett med et gitt antall punkter'''
nx, ny = 100, 100                               # Antall punkter i x- og y-retning
x = np.linspace(-10, 10, nx)                    # Intervall i x-retning
y = np.linspace(-10, 10, ny)                    # Intervall i y-retning
X, Y = np.meshgrid(x, y)                        # Lager rutenettet


'''Setter antallet partikler og lager tomme lister for ladning, og posisjonene i x- og y-retning'''

q = [1, -1]        # Ladningene (1 for positiv, -1 for negativ)
x_pos = [-4, 4]    # x-koordinatene
y_pos = [0, 0]    # y-koordinatene 

'''Lager en liste for det elektriske feltet i alle punktene'''
Ex = np.zeros((ny, nx))
Ey = np.zeros((ny, nx))

'''Den elektriske feltstyrken som alle punkter i planet opplever'''
Ex1, Ey1 = E(q[0], x_pos[0], y_pos[0], X, Y)  # Kaller på funksjonen på linje 6
Ex2, Ey2 = E(q[1], x_pos[1], y_pos[1], X, Y)  # Kaller på funksjonen på linje 6
Ex = Ex1 + Ex2
Ey = Ey1 + Ey2

'''Setter opp figurstørrelsen'''
fig = plt.figure(figsize = (10, 10))                       # Størrelsen på plottet
ax = fig.add_subplot(111)                                  # Mulighet for å legge plott over hverandre

'''Plotter det elektriske feltet med farger og piler'''
farge = np.log((Ex**2 + Ey**2))                                              # Setter fargen avhengig av feltet
ax.streamplot(x, y, Ex, Ey, color=farge, linewidth=1, cmap=plt.cm.inferno,   # Setter parametere for plottet ...
              density=3, arrowstyle='->', arrowsize=1.5)                     # ... og tegner plottet

'''Fargelegger ladningene røde/blå'''
charge_colors = {True: '#aa0000', False: '#0000aa'}                    # Fargekoden er i hexkode
ax.add_artist(Circle((x_pos[0], y_pos[0]), 0.1, color=charge_colors[q[0]>0]))   # Fargelegger ladningene
ax.add_artist(Circle((x_pos[1], y_pos[1]), 0.1, color=charge_colors[q[1]>0]))   # Fargelegger ladningene

'''Tegner rutenett'''
plt.grid()                       # Lager rutenett
plt.show()                       # Viser grafen