Teilchenbewegungen in el./magn. Feldern (Visualisierung)

Werbung
Visualisierung der Bewegung geladener
Teilchen in elektromagnetischen Feldern
Bachelor-Arbeit
Patrick Daum
Fachbereich Physik
August 2004
.
MATLABr is a registered trademark of
The MathWorks Inc.
For production information, please contact:
The MathWorks Inc.
3 Apple Hill Drive
Natick, MA 01760-2098, USA
Phone: (508) 647-7000
EMail: [email protected]
www.mathworks.com
c NASA Space Science
.
Inhaltsverzeichnis
1 Einleitung
1
2 Bewegung von Teilchen in elektromagnetischen Feldern
3
2.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2 Gyration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.3 Driftbewegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3.1
2.3.2
Driften in homogenen Kraftfeldern . . . . . . . . . . . . . . .
6
2.3.1.1
Grundlage des Führungszentrums . . . . . . . . . . .
6
2.3.1.2
Ambipolare Drift . . . . . . . . . . . . . . . . . . . .
7
2.3.1.3
Gravitationsdrift . . . . . . . . . . . . . . . . . . . .
9
2.3.1.4
Diamagnetische (quasi)-Drift . . . . . . . . . . . . . 10
Driften in inhomogenen Kraftfeldern . . . . . . . . . . . . . . 11
2.3.2.1
Gradientendrift . . . . . . . . . . . . . . . . . . . . . 11
2.3.2.2
Krümmungsdrift . . . . . . . . . . . . . . . . . . . . 12
2.3.2.3
Polarisationsdrift . . . . . . . . . . . . . . . . . . . . 13
2.3.2.4
Adiabatische Invarianten . . . . . . . . . . . . . . . . 14
2.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Numerische Beschreibung der Bewegung
17
3.1 Allgemeine Bewegungsgleichung . . . . . . . . . . . . . . . . . . . . . 17
3.2 Lösungsverfahren für DGL-Systeme . . . . . . . . . . . . . . . . . . . 18
3.3 Angewandte Lösungsverfahren . . . . . . . . . . . . . . . . . . . . . . 18
3.3.1
Euler Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.2
Runge-Kutta Verfahren . . . . . . . . . . . . . . . . . . . . . . 20
3.3.2.1
Adaptive Schrittweite . . . . . . . . . . . . . . . . . 23
3.3.3
Burlisch-Stoer Verfahren . . . . . . . . . . . . . . . . . . . . . 24
3.3.4
Prädiktor-Korrektur Methode . . . . . . . . . . . . . . . . . . 25
3.3.4.1
Einschrittverfahren . . . . . . . . . . . . . . . . . . . 26
3.3.4.2
Mehrschrittverfahren . . . . . . . . . . . . . . . . . . 27
3.3.4.3
Adams-Bashforth-Moulton Verfahren . . . . . . . . . 28
3.4 MATLAB ODE Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
i
3.4.1
Implementierungen und Aufrufe der ODE-Solver“ . . . . . . 29
”
3.4.1.1 Aufruf eines ODE Solvers . . . . . . . . . . . . . . . 30
3.4.1.2
ode23 Methode . . . . . . . . . . . . . . . . . . . . . 31
3.4.1.3
ode45 Methode . . . . . . . . . . . . . . . . . . . . . 32
3.4.1.4
ode15s Methode . . . . . . . . . . . . . . . . . . . . 32
3.4.1.5
ode113 Methode . . . . . . . . . . . . . . . . . . . . 32
3.5 Geschwindigkeitskriterium . . . . . . . . . . . . . . . . . . . . . . . . 32
3.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 Visualisierung in MATLAB
4.1 Implementierung (GUI)
38
. . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2 Mathematische Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3 Programmfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.1
Bedienung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2
Screenshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2.1
Gyration . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2.2
Driften . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2.3
Bewegung im Dipolfeld . . . . . . . . . . . . . . . . . 46
4.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 Zusammenfassung
49
6 Abstract
50
Literatur
51
A Formeln, Tabellen, Erläuterungen
53
A.1 Maxwellsche Gleichungen . . . . . . . . . . . . . . . . . . . . . . . . . 53
A.2 Zeitkonstanten der Bewegungen in Weltraumplasmen . . . . . . . . . 53
A.3 Erläuterung: MATLAB/MEX . . . . . . . . . . . . . . . . . . . . . . 53
B Ausgewählte Gleichungen
54
B.1 Saha Gleichung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
B.2 Gyration verktoriell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
B.3 Gradientendrift (ausführlich) . . . . . . . . . . . . . . . . . . . . . . . 55
B.4 Simpson (Trapez-)Integration . . . . . . . . . . . . . . . . . . . . . . 56
ii
C Programme
57
C.1 C-Programm: Runge-Kutta 4. Ordnung . . . . . . . . . . . . . . . . . 57
C.2 MATLAB: Runge-Kutta 4. Ordnung . . . . . . . . . . . . . . . . . . 58
C.3 Runge-Kutta-Merson Algorithmus . . . . . . . . . . . . . . . . . . . . 58
C.4 Prädiktor-Korrektur Methode . . . . . . . . . . . . . . . . . . . . . . 59
C.4.1 MATLAB: Prädiktor-Korrektur . . . . . . . . . . . . . . . . . 59
C.4.2 MATLAB: Simpson . . . . . . . . . . . . . . . . . . . . . . . . 60
C.5 Velocity-Verlet Algorithmus . . . . . . . . . . . . . . . . . . . . . . . 60
D MATLAB
61
D.1 particles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
D.2 eqMotion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
D.3 solvercontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Abbildungsverzeichnis
2.1 Gyrationsbewegung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2 Teilchenbahn und Führungszentrum . . . . . . . . . . . . . . . . . . .
6
~ × B-Feld
~
2.3 Teilchenbahn in einem E
. . . . . . . . . . . . . . . . . . .
8
~ × B-Drift
~
2.4 Schema einer ambipoleren E
. . . . . . . . . . . . . . . . .
8
2.5 Gravitationsdrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.6 Diamagnetische Drift . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7 Gradientendrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 Krümmungsdrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.9 Magnetischer Spiegel . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.10 Bewegung der Plasmateilchen im Magnetfeld . . . . . . . . . . . . . . 16
3.1 Euler-Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Schema Runge-Kutta (RK4) . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Fehlerentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4 Burlisch-Stoer (Richardson Extrapolation) . . . . . . . . . . . . . . . 25
3.5 Implizites Euler Verfahren . . . . . . . . . . . . . . . . . . . . . . . . 26
3.6 Prädiktor Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7 Adams-Bashforth-Moulton Integration . . . . . . . . . . . . . . . . . 28
iii
3.8 Genauigkeit der ODE Verfahren . . . . . . . . . . . . . . . . . . . . . 35
4.1 Layout des Programms . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2 Tokamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Anfangsbildschrim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Solver Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5 Simulierte Gyration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.6 Simulierte Driften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.7 Simulierte Flugbahn in einem Dipolfeld . . . . . . . . . . . . . . . . . 47
B.1 Gyration vektoriell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Tabellenverzeichnis
3.1 Laufzeiten von ODE-Solvern“ . . . . . . . . . . . . . . . . . . . . . 34
”
A.1 Zeitkonstanten (Beweg. Weltraumplasmen) . . . . . . . . . . . . . . . 53
iv
Einleitung
1
Einleitung
Die Visualisierung von physikalischen Vorgängen stellt in der modernen Physik ein
unverzichtbares Hilfsmittel dar, sei es zur Darstellung komplexer Sachverhalte oder
um neue Erkenntnisse über Vorgänge bei unterschiedlichen Parametern zu erhalten.
Die wichtigste Grundlage dieser Visualisierungen ist die Numerik. Diese ist das
Bindeglied zwischen einer analytischen Gleichung, die ein naturwissenschaftliches
Problem beschreibt, und den Berechnungen auf Computern. Numerische Verfahren
liefern hierbei eine approximative Lösung einer mathematisch exakten Gleichung,
die aus einer physikalischen Fragestellung erwachsen ist. Diese Verfahren beschreiben somit die Wirklichkeit durch Zahlen. Was für Computer und die Mathematik
zweckmäßig ist, wird für Menschen aber schnell unüberschaubar. Daher ist es nötig
diese Datenmengen bzw. diese Ergebnisse entsprechend aufzubereiten. In Zeiten immer leistungsstärkerer Computer sind Softwarepakete zum numerischen Rechnen, in
Wissenschaft und Lehre, nicht mehr wegzudenken. Hierbei bietet MATLABr (für
MATrix LABoratory) von der Firma MathWorks ein mächtiges numerisches Softwarepaket zur Lösung diverser mathematischer Probleme und zur graphischen Darstellung der Ergebnisse. MATLABr dient im Gegensatz zu Computeralgebrasystemen nicht der symbolischen, sondern primär der numerischen Lösung von Problemen. Alle vorgestellten numerischen Pakete und ihre Optionen und Möglichkeiten
beziehen sich auf das 13. und 14. Release (Versionen 6.5 und 7.0) von MATLABr .
Natürlich unterscheiden sich die numerischen Methoden in Genauigkeit, Konvergenz, Stabilität, Effizienz und Schnelligkeit und müssen daraufhin genaustens geprüft werden. Ein komplexes, physikalisches Problem besteht in der Regel aus einer
sequentiellen oder verketteten Anwendung dieser Methoden. Die Methoden selbst
sind meist Standardverfahren und der Literatur zu entnehmen. Es können allerdings
durch die Berücksichtigung neuer physikalischer Effekte Komplikationen auftreten,
die im einfachsten Fall nur eine Modifikation der Methode(n), im schwierigsten Fall
einen völlig neuen Zugang erfordern.
Des weiteren wird es für Wissenschaftler immer wichtiger, ihre Forschungsergebnisse zu präsentieren, somit einer breiten Öffentlichkeit Rechenschaft über ihr Tun
abzulegen. Hierbei ist es auf der einen Seite nötig, die Ergebnisse zu präsentieren
und andererseits Erkenntnisse aus den Simulationen für eventuell durchzuführende
Experimente zu gewinnen.
Hauptanwendungsgebiet dieser Arbeit sind Visualisierungen von Einzelteilchenbewegungen in annähernd zeitlich konstanten Magnetfeldern. Dazu werden Erkenntnisse und bekannte Gleichungen aus der Plasma Physik verwendet und mit Hilfe von
MATLABr die virtuelle Flugbahn eines Teilchens bei unterschiedlichen Parametern
simuliert. Ein Magnetfeld beeinflußt die Bewegung geladener Teilchen durch die Lorentzkraft. Eine quantitative Beschreibung der Bewegungen geht von einer Kräftebilanz für ein einzelnes Teilchen aus. Mit Hilfe dieser Beziehung lassen sich die Einzelbewegungen durch Differentialgleichungen beschreiben. Dieses soll im ersten Teil
dieser Arbeit geschehen. Es werden Bewegungsgleichungen für die unterschiedlichen
Einzelteilchenbewegungen aufgestellt und erläutert. Die beschreibenden Differentialgleichungen sind nur in einigen Fällen analytisch lösbar, für die weiteren werden
im zweiten Teil dieser Arbeit unterschiedliche numerische Lösungsverfahren vorge1
Einleitung
stellt und in Bezug auf ihre Genauigkeit hin verglichen. Die Resultate dieser beiden
Abschnitte werden in einem dritten Teil genutzt, um mit Hilfe von MATLABr eine
Visualisierung der Flugbahnen zu simlieren.
Den Abschluß dieser Arbeitet bildet ein Programm, welches die Bewegung der Teilchen in vorgegebenen elektromagnetischen Feldern moduliert und einen schematischen Einblick in die Wirkung dieser Felder auf die Teilchen ermöglicht. Es wird eine
Brücke zwischen den theoretisch errechneten Datenvolumen und einer anschaulichen
Visualisierung geschlagen.
”
2
Graue Theorie wird zur bunten Praxis“ (Stephen William Hawking)
Bewegung von Teilchen in elektromagnetischen Feldern
2
Bewegung von Teilchen in elektromagnetischen
Feldern
Um die Bewegungen von Teilchen in elektromagnetischen Feldern zu beschreiben,
ist es zunächst nötig, sich ein wenig mit dem Begriff des Plasmas zu beschäftigen.
Das Wort Plasma (griech.: das Formbare) bezeichnet in der Physik ein vollständig
oder teilweise ionisiertes Gas aus Elektronen und Ionen. Der Begriff des Plasmas
wurde 1929 von Tonks und Langmuir eingeführt [35]. Bei hohen Temperaturen werden die Atome in Ionen und Elektronen aufgespalten. Der größte Teil der Materie
im Weltall – Sterne und protostellare Wolken – ist im Plasmazustand. Hierbei gibt
die Saha Gleichung (B.1) [32] den Betrag der Ionisation eines Gases bei einer Temperatur T im thermischen Gleichgewicht an. Von entscheidender Bedeutung für die
folgenden Betrachtungen ist, dass das Plasma zwei unterschiedliche Charaktere“
”
besitzt. Je nach Dichte des Plasmas ist es als Flüssigkeit anzusehen und auch so
mathematisch zu beschreiben und auf der anderen Seite muss man Einzelteilchenbewegungen betrachten. Es wird hier weniger über den Begriff Plasma geredet sondern
vielmehr über Bewegungen in elektromagnetischen Feldern ohne Rückkopplung.
Zunächst werden die theoretischen Grundlagen der Bewegungen und die charakteristischen Gleichungen vorgestellt. Diese führen zu der numerischen Berechnung
von Teilchenbahnen und zu deren Visualisierung mit Hilfe von MATLABr . Hierzu
betrachtet man bei vorgegebenen elektromagnetischen Feldern die Flugbahn eines
einzelnen Teilchens. Hierbei wird die Rückwirkung der Teilchen – durch Raumladung und Ströme – auf die Felder außer Acht gelassen. Die betrachteten Felder
unterliegen dabei den Maxwellschen Gleichungen1 .
2.1
Grundlagen
Ausgangspunkt ist die Betrachtung einer Kräftebilanz, somit aller einzelnen Kräfte
die auf ein Teilchen wirken. Es lässt sich für ein Teilchen der Ruhemasse m und der
vorzeichenbehafteten Ladung q folgende NEWTONsche Bewegungsgleichung formulieren (alle Beschreibungen gehen von einer nicht relativistischen Betrachtung aus),
es gilt
~ + F~ .
m~v˙ = q ~v × B
(2.1)
Hierbei ist F~ eine geschwindigkeitsunabhängige Kraft, ~v˙
~ die madie zeitliche Ableitung der Geschwindigkeit und B
gnetische Flußdichte, somit der magnetische Fluss (Φ =
R
~ dA)
~ pro Flächeneinheit.
B
~ ist eine vektorielle Größe,
Die magnetische Flussdichte B
ihr Betrag gibt die Stärke des Magnetfeldes an. Die Richtung der magnetischen Flussdichte ergibt sich aus der Ausrichtung (gleichnamige
Pole stoßen sich ab) und der Bewegung (bedingt durch die abstoßenden Kräfte) eines Probe-Dipols. Dieses ist in Analogie zur Definition des elektrischen Feldes zu
1
siehe Maxwellsche Gleichungen Anhang A.1
3
2.2 Gyration
Bewegung von Teilchen in elektromagnetischen Feldern
sehen, welches durch die Kraft auf eine Probe-Ladung ausgedrückt wird. Eine bewegte Ladung q erfährt eine Kraft. Die Lorentzkraft, sie ist die Kraft, die auf eine mit
der Gewschwindigkeit ~v , durch ein Magnetfeld mit einer magnetischen Flussdichte
~ bewegte Ladung wirkt. Der Betrag der Kraft ist gegeben durch die GeschwinB,
digkeit der Ladung, die Größe der Ladung, die magnetische Flussdichte und dem
Winkel zwischen Geschwindigkeit und magnetischer Flussdichte. Diese Beziehung
ist in Gleichung (2.1) dargestellt. Sie ist nur in einfachen Fällen (homogene bzw.
zeitunabhängige Felder) analytisch lösbar. Für schwache räumliche Gradienten bzw.
langsam zeitveränderliche Felder sollen im weiteren die soweit vorhandenen analytischen Löungen bzw. numerischen Näherungslösungen kurz skizziert werden.
2.2
Gyration
Für eine erste Betrachtung ist es sinnvoll nur ein konstantes homogenes Magnetfeld
anzunehmen. Dann vereinfacht sich Gleichung (2.1) zu
˙
~
~ = const .
m~v = q ~v × B
mit B
(2.2)
Nun lässt sich die Bewegung durch die feldlinienparallele ~vk und die feldliniensenkrechte ~v⊥ Komponente beschreiben, man erhält so
m~v˙k = 0
m~v˙⊥
(2.3)
~ .
= q ~v⊥ × B
(2.4)
Die Teilchenbewegung parallel zum Magnetfeld ist konstant v~k = const. . Für die
mit der senkrechten Komponente verbundene kinetische Energie erhält man
dEkin
d 1 2
˙
~
= ~v⊥ · m · ~v⊥ = q~v⊥ · ~v⊥ × B = 0 .
(2.5)
=
m~v
dt
dt 2 ⊥
Die kinetische Energie des Teilchens bleibt somit erhalten.
Um die Flugbahn des Teilchens bei der Gyration zu verstehen, ist es nötig sich
die Kräftebilanz anzusehen. Aus der Sicht eines außenstehenden Beobachters wirkt
die Lorentzkraft als Zentripetalkraft und beschleunigt (Richtungsänderung ist Beschleunigung) das Elektron. Aus einem auf dem Elektron sitzenden Beobachters
(Platzproblem) herrschen in diesem beschleunigten Bezugssystem Kräftegleichgewicht zwischen Lorentzkraft und Zentrifugalkraft, damit ergibt sich eine konstante
Bahnkrümmung und demnach eine Kreisbewegung (vgl. Abb. 1(a)) und wenn vk = 0
eine geschlossene Kreisbahn. Der Radius rL dieser Kreisbahn lässt sich durch Gleichsetzen beider Kräfte bestimmen
2
~ = |q|v⊥ sin ~v⊥ , B
~ ~er = mv⊥ = F~Zentripetal .
F~Lorentz = |q| ~v⊥ × B
rL
Damit gilt für den Gyro- oder Larmor -Radius
rL =
4
mv⊥
.
|q|B
(2.6)
2.2 Gyration
Bewegung von Teilchen in elektromagnetischen Feldern
Da die Richtung der Lorentzkraft vom Ladungsvorzeichen abhängt, ist die Umlaufrichtung für positiv und negativ geladene Teilchen entgegengesetzt. Hierbei ist der
Mittelpunkt dieser Gyration das im folgenden beschriebene Führungszentrum (engl.
guiding centre). Für die Kreisfrequenz der Gyration ergibt sich aus dem Larmorradius
v⊥
|q|B
ωB =
=
.
(2.7)
rL
m
Die Bewegung des Teilchens ist somit, für vk 6= 0, eine Spiralbahn um eine Führungsfeld-line (vgl. Abb. 1(b)).
(a) Geschlossene Kreisbahn der Gyration (b) Orientierung der Gyration von Elektronen und Iovon Elektronen und Ionen; vk = 0
nen in einem homogenen konstanten Magnetfeld; vk 6= 0.
Prinzip der Führungs-feld-line (Quelle (übersetzt): [4])
Abbildung 2.1: Gyrationsbewegung
Die Newtonsche Bewegungsgleichung der Gyration ist analytsich lösbar. Hierzu betrachtet man ein kartesisches Koordinatensystem, dessen z-Komponente in Richtung
~ = (0, 0, Bz ) ist. Es ergibt sich für Gleichung (2.2)
des Magnetfeldes zeigt, somit B
in Koordinatenschreibweise folgendes Gleichungssystem
q
vy Bz
m
q
= − vx Bz
m
= 0.
v̇x = +
v̇y
v̇z
(2.8)
Durch Kombination der ersten beiden Gleichungen erhält man die Gleichung eines
harmonischen Oszillators
qBz
v̈x = −
m
2
vx =
−ωB2 vx
(2.9)
v̈y = −
qBz
m
2
vy = −ωB2 vy , (2.10)
hierbei ist die Frequenz des Oszillators, die im vorhinein bestimmte Gyro-kreisfrequenz. Die allgemeine Lösung dieser Differentialgleichungen haben die Form
vx = v⊥ cos (Ωt + φ0 )
vy = −v⊥ sin (Ωt + φ0 )
mit Ω als Gyrofrequenz Ω = +ωB für Ionen und Ω = −ωB für Elektronen, φ0 ist die
initialisierende Phase.
Die durch die Lorentzkraft hervorgerufene Gyration eines geladenen Teilchens in
einem Magnetfeld ist elementar, jede weitere Beschreibung von Bewegungen in elektromagnetischen Feldern hat als Grundlage die Gyration des Teilchens um eine
Führungs-feld-line (siehe auch W.H. Kegel [15]).
5
2.3 Driftbewegungen
2.3
2.3.1
Bewegung von Teilchen in elektromagnetischen Feldern
Driftbewegungen
Driften in homogenen Kraftfeldern
Zusätzlich zur oben beschriebenen Lorentzkraft kann in der Bewegungsgleichung eine
weitere Kraft F~ hinzutreten. In den in dieser Arbeit angestellten Betrachtungen
von elektromagnetischen Feldern, tritt zum Magnetfeld die Kraft, die durch das
~ Es ergeben sich im
elektrische Feld auf ein Teilchen ausgeübt wird, somit F~ = q E.
allgemeinen keine geschlossenen Kreisbahnen mehr. Die Teilchen driften in diesen
Feldern, dabei resultieren die Bewegungen aus einer Änderung des Larmorradiusses
während einer Gyration, aus Änderungen der Teilchengeschwindigkeiten oder aus
Änderungen im Magnetfeld. Um die Bewegungen in solchen Feldern zu beschreiben,
macht man den sogenannten guiding centre“ Ansatz. Dieser wird im folgenden
”
dargestellt.
2.3.1.1 Grundlage des Führungszentrums
Das guiding centre“ wurde von H. Alfvén [1] eingeführt. Dieser Ansatz geht da”
von aus, dass die durch die Kraft F~ verursachte Bewegung der Gyration überlagert
wird. Es ergibt sich eine Bewegung des Führungszentrums ~rgc (d.h. der Mittelpunkt
des Gyrationskreises) diese wird mit der Gyrationsbewegung überlagert. Dieses wird
ausgedrückt durch den Vektor ~rL , der vom Ort ~r des Teilchens zum Gyrationszentrum zeigt und dessen Betrag den Wert des Larmorradiusses hat. Somit kann man
nach Abb. 2.2 schreiben
vgl.Glg.(2.6)
m
~.
~rgc = ~r + ~rL
mit ~rL
=
~v × B
(2.11)
|q|B 2
Dann stellt ~rgc die über die Gyrationsbewegung gemittelte Bahnkurve des Teilchens
dar. Abb. 2.2 verdeutlicht die beschriebene Geometrie2 .
Abbildung 2.2: Aufspaltung der Bewegung eines Teilchens im Magnetfeld mit äußerer
Kraft in die Gyrationsbewegung ~rL und die Bewegung des Führungszentrums ~rgc (Quelle:
Max Planck Institut für Plasmaphysik)
Die Geschwindigkeit des Führungszentrums ~vgc lässt sich nun mit Hilfe der Bewegungsgleichungen ausdrücken, hierbei ergibt sich unter Annahme eines zeitlich
konstanten Magnetfeldes
Glg.(2.1)
m ˙
1 ~
˙
~
~
~vgc = ~rgc = ~v +
~v × B = ~v +
F + q~v × B × B
(2.12)
|q|B 2
|q|B 2
2
6
genauere vektorielle Beschreibung siehe Anhang B.2
2.3 Driftbewegungen
Bewegung von Teilchen in elektromagnetischen Feldern
der letzte Ausdruck lässt sich mit Hilfe der Vektoridentität
~ ×B
~ = ~v · B
~ B
~ − B 2~v = B 2~vk − B 2~v = −B 2~v
~v × B
(2.13)
weiter vereinfachen. Es ergibt sich
~vgc = ~v +
~
~
F~ × B
F~ × B
−
~
v
=
~
v
+
.
⊥
k
|q|B 2
|q|B 2
(2.14)
Somit kann man die Geschwindigkeit des Führungszentrums in zwei Anteile
zerlegen.
˙
~
~
~
Einmal in die Parallelbewegung, diese ist durch m~v k = Fk wegen ~v × B ⊥ B
~ Da diese trotz konstanter
gegeben und in eine Bewegung senkrecht zu F~ und B.
Kraft nicht beschleunigt, sondern mit konstanter Geschwindigkeit (solange F~ 6= F~ (t)
~ 6= B(t))
~
und B
erfolgt, wird sie ähnlich der mittleren Elektronenbewegung beim
Transport als Driftgeschwindigkeit ~vF D bezeichnet. Sie ist gegeben durch
~vF D =
~
F~ × B
.
|q|B 2
(2.15)
Im folgenden sollen verschiedene Driften erläutert werden die aufgrund von unterschiedlichen Kräften F~ zustandekommen.
2.3.1.2 Ambipolare Drift
In einem konstanten Magnetfeld wirkt auf ein geladenes Teilchen die Lorentzkraft, es
ensteht eine Gyrationsbewegung. In einem elektrischen Feld, werden die geladenen
Teilchen durch die Coloumbkraft beschleunigt, hierbei werden positiv geladene Teilchen in Feldrichtung beschleunigt und negativ geladene entgegen der Feldrichtung.
Betrachtet man nun ein senkrecht zum magnetischen Feld stehendes elektrisches
Feld, so wird die Ladungstrennung im elektrischen Feld durch die Gyration im Magnetfeld aufgehoben. Es ensteht eine Drift des Gyrationszentrums in der zu beiden
~ × B-Richtung.
~
senkrechten E
Um diese Bewegung zu beschreiben, verwendet man
den beschriebenen guiding centre“-Ansatz. Beide Felder sollen dabei homogen und
~ =”(0, 0, Ez ) und B
~ = (0, By , 0) (vgl. Abb. 2.3). Dann ergibt sich
stationär sein E
Gleichung (2.1) in Analogie zu den obigen Betrachtungen zu
v̇x = −
q
vz By
m
(2.16)
v̇y = 0
q
v̇z =
(Ez + vx By ) .
m
(2.17)
(2.18)
Die Bewegung längs der Magnetfeldlinie ist nun konstant beschleunigt, aber unabhängig von der x-z-Bewegung, somit lässt sich diese gesondert betrachten. Es
ergibt sich für die Bewegung in der x-z-Ebene
v̈x = −ωB2 (vx + Ez /By )
v̈z = −ωB2 vz .
(2.19)
Somit lässt sich die Bewegung in z-Richtung durch die schon bekannte harmonische
Oszillation beschreiben und lösen. Für die x-Richtung ist eine solche Beschreibung
erst durch ein bewegtes Bezugssystem möglich ṽx = vx + Ez /By , wobei sich dieses
7
2.3 Driftbewegungen
Bewegung von Teilchen in elektromagnetischen Feldern
mit der Geschwindigkeit −Ez /By in negative x-Richtung bewegt. So erhält man
auch hier eine harmonische Oszillation. Analog zu den oben angeführten allgemeinen
Lösungen, ergibt sich
vx = v⊥ cos (ωB t) − Ez /By
vz = v⊥ sin (ωB t) .
(2.20)
(2.21)
Die Bahnkurve dieser Bewegung ist in Abb. 2.3 dargestellt. Mathematisch betrachtet
stellen sich im dreidimensionalen Fall Zykloide ein.
~ × B-Drift
~
Abbildung 2.3: E
von Elektronen und Ionen, vEBD = E/B (Quelle: [4])
Diese Beschreibung ist identisch mit der aus Gleichung (2.15) gefolgerten vektoriellen
~ ist und somit
Schreibweise, wobei die Kraft F~ = q E
~vEBD =
~ ×B
~
E
.
B2
(2.22)
Die Driftgeschwindigkeit ist somit ladungsunabhängig und für Elektronen und Ionen
gleich groß (vgl. Abb. 2.3). Dieses führt zu
einer ganzheitlichen Bewegung des Plasmas senkrecht zum elektrischen und magnetischen Feld. Man kann sich das Zu~ × B-Drift
~
standekommen der E
auch anhand von energetischen Überlegungen klar
machen. Auf der Seite hoher potentieller
Energie ist die kinetische Energie der Teilchen klein und der momentane Gyrationsradius klein. Auf der Seite niedriger potentieller Energie hat das Teilchen kineAbbildung 2.4: Schema einer ambipoleren tische Energie aus dem elektrischen Feld
aufgenommen und der Gyrationsradius ist
~ × B-Drift
~
E
entsprechend größer als der mittlere Gyrationsradius. Folglich ergibt sich für die Teilchen ein Versatz in x-Richtung. Der
Umlaufsinn von Elektronen und Ionen ist entgegengesetzt und infolge der entgegengesetzten Ladung sind Energiegewinn und -verlust gerade vertauscht. Somit folgt,
dass die Drift für Elektronen und Ionen in dieselbe Richtung weist. Die sich ergebende Drift ist damit weder von der Ladung, noch von der Masse der Teilchen abhängig.
~
Das Plasma führt daher im E-Feld
eine Drift aus, bei der sich alle Teilchen mit der
~ und E
~ bewegen. Infolge diegleichen Geschwindigkeit vEBD = E/B senkrecht zu B
ser Bewegung verschwindet (mitbewegtes System) das elektrische Feld gemäß der
8
2.3 Driftbewegungen
Bewegung von Teilchen in elektromagnetischen Feldern
~′ = E
~ −~v × B
~ = 0 und
Transformationseigenschaft der Maxwellschen-Gleichungen E
das Teilchen führt nur eine Gyrationsbewegung aus (vgl. Abb. 2.4). Die Drift führt
allerdings aufgrund ihres ambipolaren Charakters (keine Trennung der Ladungen)
zu keinem Strom.
2.3.1.3 Gravitationsdrift
Bei der Gravitationsdrift kann analog zu der ambipolaren Drift vorgegangen werden.
Die Teilchen erfahren in der Äquatorebene eine ähnliche Situation gekreuzter Felder.
Hier kreuzt das horizontale Erdmagnetfeld die vertikale Gravitationskraft F~G = m~g ,
somit lässt sich Gleichung (2.1) schreiben als
~ + m~g
m~v˙ = q ~v × B
(2.23)
mit g — Gravitationskonstante, hierbei ist die höhenabhängige Gravitationskong0
stante zu wählen g(h) = (1+h/R
, mit g0 der mittleren Erdbeschleunigung in Mee)2
E
reshöhe ≈ 9.81 m/s2 , h der Höhe über Normal-Null und RE dem mittleren Erdradius. Dann lässt sich die Driftgeschwindigkeit analog zu Abschnitt 2.3.1.2 angeben,
hierbei gilt
~
m~g × B
~vGravD =
.
(2.24)
qB 2
Die Driftgeschwindigkeit ist in diesem Fall von der Ladung und der Masse der Teil~ × B-Drift
~
chen abhängig. Wie auch bei der E
ändert sich der Larmorradius kontinuierlich, allerdings ist in diesem Fall die Gravitationskraft vom Vorzeichen der
Ladung unabhängig. Somit sind die Punkte der kleinen und großen Gyrationsradien
die gleichen, aber aufgrund der unterschiedlichen Ladungen, sind die Richtungen
entgegengesetzt (vgl. Abb. 2.5, zur Veranschaulichung nur am Äquator).
Abbildung 2.5: Gravitationsdrift
Es kommt zu einer Ladungstrennung, daher kann in äquatorialer Richtung ein Nettostrom, welcher die Summe aus Elektronen- und Ionendrift darstellt, festgestellt
werden
g
(2.25)
jGravD = n (mi + me ) ,
B
mit n — Dichte der Teilchen.
9
2.3 Driftbewegungen
Bewegung von Teilchen in elektromagnetischen Feldern
2.3.1.4 Diamagnetische (quasi)-Drift
Vollständigkeitshalber sei an dieser Stelle noch eine weitere Drift, die in einem homogenen Magnetfeld auftreten kann genannt. Diese ist die diamagnetische Drift. Die
Namensgebung drückt aus, dass das durch den diamagnetischen Strom jD hervorgerufene Magnetfeld ein entgegengesetztes Vorzeichen zum äußeren Magnetfeld hat
und das gesamte Magnetfeld daher absenkt. Die diamagnetische Drift wird durch
einen Druckgradienten hervorgerufen. Die diamagnetische Drift gehört streng genommen zur Magnetohydrodynamik. Hierbei wird der Plasmastrom nicht als Einzelteilchenbewegungen aufgefasst sondern der Strom als Flüssigkeit angesehen. Unter bestimmten Voraussetzungen, lässt sich aber zeigen, dass die Lorentzkraft gleich
dem Druckgradienten und der elektrischen Kraft ist.
Diese Drift kann somit unter die Einzelteilchenbewegungen subsumiert [7] werden. Hierzu geht man davon aus, dass die (gerichtete) Flüssigkeitsgeschwindigkeit ~v von der Größenordnung einer Teilchendriftgeschwindigkeit ist. Des weiteren werden nur Zeitskalen ω/ωB ≪ 1 betrachtet. Somit muss man nur die
Kraft betrachten, welche auf ein Teilchen wirkt. Damit ergibt sich, dass die Lorentzkraft allein durch die
elektrostatische Kraft und den Druckgradienten kompensiert wird. Die elektrostatische Kraft stellt sich als
~ × B-Drift
~
die oben beschriebene E
dar. Im folgenden soll nur der Teil der Drift besprochen werden, der
durch den Druckgradienten hervorgerufen wird. DieAbbildung 2.6: Diamagnetiser Teil lässt sich ausdrücken als die Kraft, welche sche Drift
auf ein Volumenelement ∆V wirkt. Diese ist gegeben
durch die Druckdifferenz. Daraus folgt F/∆V = −∇p. Im Volumenelement befinden
sich ∆N = n∆V Teilchen, so dass pro Teilchen die Kraft −∇p/n ausgeübt wird.
Verwendet man Gleichung (2.15) so ergibt sich
~vDD = −
~ ×B
~
∇p
.
nqB 2
(2.26)
Diese Drift ist in Abb. 2.6 dargestellt, zur Vereinfachung wird nur der Fall für Elektronen dargestellt. Man erkennt, dass der Druckgradient durch die Dichte ne der
Teilchen verursacht wird (Te = const.). Dann nimmt längs des Druckgradienten
die Zahl der gyrierenden Teilchen zu. An einem beliebigen Punkt im Plasma bewegen sich also mehr Teilchen in positive y-Richtung; die Elektronen scheinen in
y-Richtung zu driften. Hierbei ist allerdings zu beachten, dass es sich nicht um eine Massenbewegung handelt, die Teilchen selbst bleiben an ihrem Ort, es entsteht
jedoch ein Strom
~
~
~jD = ∇p × B .
B2
(2.27)
Dieser ist so gerichtet, dass das von ihm erzeugte Magnetfeld das ursprüngliche
Magnetfeld im Gebiet hohen Druckes schwächt.
10
2.3 Driftbewegungen
2.3.2
Bewegung von Teilchen in elektromagnetischen Feldern
Driften in inhomogenen Kraftfeldern
In den vorherigen Beschreibungen wurde angenommen, dass es sich bei den Kraftfeldern um konstante homogene Felder handelt. Im folgenden sollen Bewegungen
in elektromagnetischen Feldern beschrieben werden, die zeitlich und räumlich nicht
konstant sind. Hierzu werden die einzelnen Aspekte der Inhomogenitäten genauer
~ = B(~r, t), sowie das elekuntersucht. Im allgemeinen Fall wenn das Magnetfeld B
~ = E(~r, t) raum- und zeitabhängig sind, kann man die Bewegungsgleitrische Feld E
chung nicht mehr geschlossen lösen. Dennoch lässt sich an dieser Stelle ein Ansatz
mit dem guiding centre“ machen. Hierzu nimmt man an, dass die räumliche Aus”
dehnung der Inhomogenität bzw. die zeitliche Variation klein gegen die typischen
Skalen der Gyrationsbewegung sind. Man betrachtet dann nicht mehr die schnelle
Gyration sondern stützt sich gemäß dem guding centre“-Ansatz auf das langsamere
”
Fortschreiten des Führungszentrums und somit eine Kreisbahn des Teilchens. Somit
lässt sich die Bewegung auf die Gleichungen der Gyration zurückführen.
2.3.2.1 Gradientendrift
Zunächst wird ein Magnetfeld betrachtet, dass einen Intensitätsgradienten aufweist,
der senkrecht zur Feldlinienrichtung weist. Die Bewegung geladener Teilchen in einem solchen Feld ist in Abb. 2.7 dargestelt.
Abbildung 2.7: Teilchenbewegung im inhomogenen Magnetfeld. Betrachtet wird ein Magnetfeld, bei dem der Gradient des Feldes senkrecht auf den Feldlinien steht (Quelle
(geändert): [30])
~ × B-Drift
~
In Analogie zu den Beschreibungen der E
erwartet man, dass der instantane Gyrationsradius im Bereich einesschwächeren Magnetfeldes größer ist und daher
~ und zu ∇B
~ erfolgt. Um diese Drift zu beschreiben ist es
eine Drift senkrecht zu B
nötig nach Gleichung (2.15) die Kraft zu beschreiben welche auf ein Teilchen wirkt.
Im inhomogenen Magnetfeld erfahren die Teilchen eine Kraft durch den Gradienten
der Feldstärke. Diese lässt sich durch das magnetische Moment µ (siehe 2.3.2.4) und
11
2.3 Driftbewegungen
Bewegung von Teilchen in elektromagnetischen Feldern
dem Gradienten beschreiben3 . Für die Kraft gilt
q
~
~
F = ±µ∇B
mit B = Bx2 + By2 + Bz2 .
(2.28)
Hierbei ergibt sich das magnetische Moment des Teilchens aus dem Produkt des mit
der Gyrationsbewegung vebundenen Kreisstroms und der vom Strom umrandeten
Fläche, es gilt
2
mv⊥
ωB 2
πrL =
.
(2.29)
µ = IA = q
2π
2B
Setzt man diese Beziehung in Gleichung (2.15) ein, so ergibt sich für die Driftgeschwindigkeit in einem Gradientenfeld
~vGD = ±
2
~ ×B
~
mv⊥
µ∇B
~ ×B
~.
=
±
∇B
qB 2
2qB 3
(2.30)
Die Teilchen driften somit senkrecht zur Magnetfeldrichtung und senkrecht zum
Magnetfeldgradienten. Anschaulich läuft das Teilchen bei der ausgeführten Gyration
in Bereiche unterschiedlicher Magnetfeldstärke und dadurch ändert sich innerhalb
der Gyration der Radius. Als Beispiel kann man sich eine diskrete Sprungstelle in der
Magnetfeldstärke vorstellen. Oberhalb der Sprungstelle sei ein starkes Magnetfeld
und unterhalb ein schwaches, so lässt sich die Bewegung dadurch beschreiben, dass
sich der Larmorradius antiproportional zur Stärke des Magnetfeldes verhält. In dem
Beispiel der Sprungstelle wird das Teilchen somit im Bereich unterhalb größere und
oberhalb kleinere Kreisbahnen beschreiben. Somit bewegt sich das Teilchen an der
gedachten Sprungstelle entlang, nach dem Prinzip zwei vor einen zurück“. Gleiches
”
gilt für einen kontinuierlichen Gradienten der Magnetfeldstärke. Hier kann man sich
den Gradienten als infinitisimal kleinen Abstand der Sprungstelle denken.
2.3.2.2
Krümmungsdrift
In zweiten Fall sollen gekrümmte Magnetfeldlinien betrachtet werden. Diese Krümmung wird im allgemeinen
durch den Gradienten der magnetischen Feldstärke hervorgerufen. Folgen die Teilchen den Magnetfeldlinien, so
erfahren sie im gekrümmten Magnetfeld aufgrund ihrer
Parallelgeschwindigkeit eine Zentrifugalkraft. Die Driftgeschwindigkeit der Teilchen in diesem gekrümmten Feld
setzt sich somit zu einem Anteil aus der noch zu bestimmenden Krümmungsdrift und zum anderen aus der
Gradientendrift zusammen. Um die Krümmungsdrift zu
bestimmen, geht man zunächst von einem Magnetfeld
Abbildung 2.8: Krümm- ohne Gradienten aus. Zunächst muss die mittlere Zentriungsdrift
(Quelle fugalkraft beschrieben werden, die ein Teilchen aufgrund
(geändert): [27])
seiner Parallelgeschwindigkeit erfährt. Hierbei gilt
mvk2
¯~
~eRC .
FC =
RC
3
12
Beschreibung der Näherung siehe Anhang B.3
(2.31)
2.3 Driftbewegungen
Bewegung von Teilchen in elektromagnetischen Feldern
Mit dieser mittleren Kraft, lässt sich nach Gleichung (2.15) die Geschwindigkeit der
Krümmungsdrift bestimmen, es ergibt sich
~vCD =
~C × B
~
mvk2 R
.
qRC2
B2
(2.32)
Um nun ein reales Feld zu beschreiben ist es nötig auch die Gradientendrift zu
beschreiben.
Unter
Vakuumbedingungen lässt sich sagen, dass das Feld wirbelfrei
~ = 0 . Aus Abb. 2.8 ergibt sich
ist ∇ × B
dBr
ds
=−
RC
Bφ
⇒
1
1 ∂Br
=−
RC
Bφ ∂s
(2.33)
Damit lässt sich der Feldgradient aus dem Krümmungsradius der Magnetfeldlinien
~ C lässt sich nun ein relativer Gradient
abschätzen. Unter Verwendung des Vektors R
angeben. Es gilt
~C
R
∇|B|
=− 2 .
(2.34)
|B|
RC
Mit Hilfe dieser Abschätzung lässt sich nun die Gradientendrift angeben
~vGD = ∓
v⊥ rL ~
~ C |B| .
B×R
2
B
RC2
(2.35)
Um eine realitätsnahe Aussage über die Krümmungsdrift machen zu können, kombiniert man beide Komponenten. Somit lässt sich abschließend schreiben
~vCD + ~vGD
m
=
q
vk2
1 2
+ v⊥
2
~
~
RC × B
,
RC2 B 2
(2.36)
Durch die Abhängigkeit von dem Quadrat der Geschwindigkeiten, verstärken sich
die beiden Driften. In der Ionosphäre überwiegt die Krümmungsdrift gegenüber der
Gravitationsdrift.
2.3.2.3 Polarisationsdrift
Bisher wurden Felder mit einer Inhomogentität der magnetischen Feldintensität betrachtet, nun soll die Bewegung in einem zeitlich veränderlichen elektrischen Feld
genauer beschrieben werden. Hierzu nimmt man ein elektrisches Feld an, welches
mit ω0 oszilliert, somit E(t) = E0 cos (ω0 t) ist. Zur Beschreibung, bietet sich ein
elektrisches Feld, welches senkrecht zu den Magnetfeldlinien liegt, an. Des weite˙
~
~
ren
lässt sich Gleichung
(2.1) mit F (t) = q E(t) annehmen und man erhält m~v =
~ + F~ (t) = q ~v × B
~ + q E(t).
~
q ~v × B
Betrachtet man zunächst ein elektrisches
~
Feld E(t)
= (Ex (t), 0, 0) das senkrecht zum Magnetfeld orientiert ist, lassen sich
die Gleichungen für die x- und y-Komponente wieder entkoppeln und man erhält
für das Fortschreiten in x-Richtung
!
Ė
1
x
2
.
(2.37)
~v¨x = −ωB vx ∓
ωB Bz
13
2.3 Driftbewegungen
Bewegung von Teilchen in elektromagnetischen Feldern
Führt man nun die schon oben beschriebene Koordinatentransformation ein, so
erhält man v̈x = vx ∓ Ėx /ωB Bz . Somit ist die Gyrationsbewegung mit einer Polarisationsdrift überlagert. Für die Geschwindigkeit dieser Polarisationsdrift gilt allgemein
~vP D
~˙
1 E
=±
,
ωB B
(2.38)
sie ist in Richtung des elektrischen Feldes gerichtet, gleichzeitig findet noch eine
ambipolare Drift im elektrischen Feld statt.
2.3.2.4 Adiabatische Invarianten
Aus der Mechanik ist bekannt, dass bei einer periodischen Bewegung, zusätzlich zu
den Erhaltungsgrößen Energie, Impuls und Drehimpuls, weitere Invarianten der Bewegung vorhanden sind. Somit die Größen nicht mehr konstant bleiben sondern nur
noch im Sinne der verschiedenen Ordnungen der Störungstheorie konstant sind. So
bleiben die einzelnen Größen nur noch im Sinne einer Betrachtungsweise konstant.
Zunächst betrachtet man das Wirkungsintegral um im folgenden mit Hilfe der adiabatischen Invarianten die Periodizität von Bewegungen der Teilchen zu beschreiben.
Für das Wirkungsintegral gilt
I
I = p dq
(2.39)
wobei q eine verallgemeinerte Koordinate und p der zugeordnete Impuls ist. Das
Integral ist über die Periode der Bewegung auszuführen. Diese Invarianten haben
die Dimension einer Wirkung. Die Definition durch Gleichung (2.39) hat den Vorteil,
dass sie auch bei kleinen Störungen der Periodizität unbeeinflusst bleibt. Eine kleine
Störung ist in diesem System derart zu sehen, dass ein Teilchen nach einem Umlauf
nicht mehr an den selben Ort zurückkehrt. Die Invariante wird dann als adiabatische
Invariante des Systems bezeichnet.
Abbildung 2.9: Bewegung eines Teilchens im magnetischen Spiegel (Quelle
(geändert): [13])
I
p dq =
Z2π
Dieses System lässt sich nun auf die Bewegung eines Teilchens im Magnetfeld übertragen. Wenn man unter der periodischen
Bewegung des Teilchens die Kreisbahn versteht, welche ein gyrierendes Teilchen ausführt, so bedeutet eine Störung, dass ∇B ≪
B/rL . Dann kann man als verallgemeinerte
Koordinate die Winkelkoordinate der Gyrationsbewegung wählen und der zugehörige Impuls ist der senkrechte Drehimpuls
des Teilchens. Es ergibt sich somit auf der
Kreisbahn
mωB rL2 dΦ = 4π
2
m mv⊥
m
= 4π µ .
q 2B
q
(2.40)
0
Für ein festes m/q ist somit das magnetische Moment µ eine adiabatische Invariante der Bewegung. Man bezeichnet µ auch als die erste adiabatische Invariante.
14
2.4 Zusammenfassung
Bewegung von Teilchen in elektromagnetischen Feldern
Diese erste Invariante wird dazu verwendet, die Bewegung eines Teilchens in einem
sogenannten magnetischen Spiegel zu beschreiben. Darunter versteht man die Reflexion eines Teilchens im Gebiet höherer Magnetfeldstärke. Kommt ein Teilchen in
den Bereich höherer Magnetfeldstärke, so nimmt wegen der Invarianz des magneti2
2
schen Momentes µ = mv⊥
/2B = const. die senkrechte Energie 1/2 mv⊥
im gleichen
Maße wie B zu. Da gleichzeitig Energieerhaltung gilt, muss die parallele Komponente der Geschwindigkeit abnehmen. Bei einer völligen Abnahme der parallelen
Geschwindigkeit, kann das Teilchen nicht weiter in die Richtung höherer Feldstärke
vordringen, die Flugbahn dreht an der sogenannten Reflexionsebene um. Dieses ist
in Abb. 2.9 dargestellt. Wenn man zwei magnetische Spiegel kombiniert, erhält man
eine magnetische Flasche. Die Teilchen werden zwischen den beiden Enden der magnetischen Flasche hin und her reflektiert, diese Situation herrscht im Dipolfeld der
Erde vor. Mit dieser Bewegung ist die zweite Invariante verknüpft, die longitudinale
Invariante. Wenn ein geladenes Teilchen zwischen den zwei Spiegelpunkten gefangen
ist, vollführt es eine Oszillation (vgl. Abb. 2.10).
In Abb. 2.10 ist die Besonderheit des Erdmagnetfeldes aufgezeigt. Dieses erzeugt
durch seine Geometrie magnetische Flaschen, so dass Teilchen aus der äquatorialen Ebene zu den Polen wandern. Diese Bewegung wird allerdings noch durch die
Driften überlagert. Eine dritte adiabatische Invariante ist die Flussinvariante, auch
diese ist verknüpft mit der guiding centre“-Drift. Diese Invariante besagt, dass der
”
magnetische Fluss, welcher durch eine Kreisbahn läuft, konstant ist.
2.4
Zusammenfassung
Die in diesem Abschnitt gemachten Beschreibungen der Bewegungen dienen dazu,
ein genaueres Verständnis der Bewegungen von geladenen Teilchen in elektromagnetischen Feldern zu erlangen und die physikalischen Grundlagen zu erläutern. Über die
beschriebenen Grundlagen ist eine numerische Behandlung der Bewegungsgleichungen möglich. Für die Beschreibung wurde die Bewegung eines einzelnen Teilchens
ohne Wechselwirkungen betrachtet. Jedes Teilchen führt als eine Art Basisbewe”
gung“ die Gyration um die lokale Feldlinie aus. Diese kann man durch den Larmorradius und die Gyrationsfrequenz charakterisieren. Des weiteren wurde für die
Beschreibungen der Ansatz gemacht, dass sich die Bewegung eines Teilchens durch
ein guiding centre“ annähern lässt. Hierbei wird die Bewegung aufgeteilt in die
”
eigentliche Gyration und die Bewegung des Mittelpunktes. Die Teilchen werden wie
oben beschrieben durch die Kräfte des magnetischen- sowie des elektrischen Feldes
beeinflusst und auf ihre Flugbahnen gedrängt. Diese Kräfte spiegeln sich in Gleichung (2.1) wieder. Alle Bewegungen von geladenen Teilchen in Weltraumplasmen
werden durch diese geprägt und führen zu den im erdnahem Weltraum messbaren
(Ringströme) und sichtbaren (Polarlichter) Phänomenen. Die Bewegungen lassen
sich grob zu den in Abb. 2.10 dargestellten zusammenfassen.
Hierbei handelt es sich um die Gyration um die lokale Feldlinie, um eine Oszillationsbewegung entlang dieser Feldline und der überlagerten azimutalen Drift um die
Erde4 . In diesem Abschnitt wurden die mathematischen Grundlagen der einzelnen
Bewegungen beschrieben und diese so weit wie möglich analytisch gelöst. Um für
4
siehe Zeitkonstanten der Bewegungen in Weltraumplasmen Anhang A.2
15
2.4 Zusammenfassung
Bewegung von Teilchen in elektromagnetischen Feldern
Abbildung 2.10: Bewegung der Plasmateilchen im Magnetfeld (Quelle: [33])
die Visualisierung die Felder in beliebiger Kombination und Struktur berechenbar
zu machen, wird das Hilfsmittel die Numerik eingestezt. So ist es möglich, die Bewegungen von geladenen Teilchen in elektromagnetischen Feldern, die durch die Newton’sche Bewegungsgleichung beschrieben werden mit dem Computer zu berechnen
und diese Rechenergebnisse graphisch in Form der Visualisierung darzustellen. Die
numerische Beschreibung der Bewegungen wird im folgenden Abschnitt erläutert.
16
Numerische Beschreibung der Bewegung
3
Numerische Beschreibung der Bewegung
Um im folgenden eine numerische Beschreibung der Bewegungsgleichungen aus Abschnitt 2 machen zu können, ist es zunächst nötig, die einzelnen Verfahren zu beschreiben, die es ermöglichen Differentialgleichungssysteme numerisch zu lösen (vgl.
[26, 29]). Dieses soll im folgenden Abschnitt geschehen. Die einzelnen Verfahren
werden vorgestellt und gegeneinander abgewogen. Zusammenfassend wird beschrieben, welche Verfahren bei der Visualisierung (in Abschnitt 4) Anwendung gefunden
haben.
3.1
Allgemeine Bewegungsgleichung
~ in einem kartesischen Koordinatensystem
Zunächst wird Gleichung (2.1) mit F~ = q E
für die einzelnen Komponenten betrachtet, dann lässt sich schreiben






v̇x
Ex
vy Bz − vz By
q 
q 
~v˙ =  v̇y  =
Ey  +
vz Bx − vx Bz  .
(3.1)
m
m
v̇z
Ez
vx By − vy Bx
So ergibt sich ein Gleichungssystem aus gewöhnlichen Differentialgleichungen (engl.
ordinary differential equations (ODE’s)) welches zur Beschreibung der Bewegung
gelöst werden muss. In Abschnitt 2 wurden die Bewegungen so weit wie möglich
analytisch beschrieben und versucht eine analytische Lösung zu finden. Im folgenden werden die Verfahren vorgestellt, die zur numerischen Lösung solcher ODE’s
verwendet werden können. Hierbei bietet sich die aufgezeigte Schreibweise in Gleichung (3.1) auch für die weitere Verarbeitung mit MATLABr an5 .
Die im folgenden vorgestellten Lösungsverfahren beziehen sich auf eine ODE der
Form y ′ = f (x, y), wie oben gesehen handelt es sich bei der Bewegungsgleichung
aber um n teilweise gekoppelte Differentialgleichungen. Da sich aber jedes System
von Differentialgleichungen auch höherer Ordnung auf eine gewöhnliche Differentialgleichung erster Ordnung zurückführen lässt sind diese Betrachtungen legitim. Für
ein System von gekoppelten Differentialgleichungen
y1′ = f1 (x, y1 , . . . , yn )
..
.
yn′ = f1 (x, y1 , . . . , yn )
sind n Funktionen y1 (x), . . . , yn (x), so zu bestimmen, das die Anfangsbedingungen
y1 (x0 ) = y0,1 , . . . , yn (x0 ) = y0,n erfüllt sind. Setzt man y = (y1 , y2 , . . . , yn )T und
f = (f1 (x, y), . . . , fn (x, y)) dann kann man dieses System umschreiben und erhält
y′ = f (x, y)
mit y (x0 ) = y0 .
(3.2)
Man kann somit in weitreichender Analogie ein System der Dimension n = 1 betrachten und alle gemachten Überlegungen auf ein System mit n > 1 übertragen.
5
r
arbeitet intern mit Matrizen; Skalare werden dabei mit Matrizen der Dimension
MATLAB
1 × 1, Vektoren als Matrizen mit der Dimension 1 × n bzw. m × 1 dargestellt
17
3.2 Lösungsverfahren für DGL-Systeme Numerische Beschreibung der Bewegung
Auch hier ist die interne Arbeitsweise von MATLABr hilfreich, da es die betrachteten Differentialgleichungen nach Gleichung (3.2) intern in Vektorform behandeln
kann.
3.2
Lösungsverfahren für DGL-Systeme
Um eine ODE numerisch zu lösen, wird das Verhalten eines physikalischen Systems, welches durch Differentialgleichungen in der lokalen zeitlichen und räumlichen
Umgebung gegeben ist, angenähert. Durch Näherung – insbesondere einer Linearisierung – der Gesetzmäßigkeiten in der lokalen Umgebung, kann man auf einfache
Weise näherungsweise den Zustand des Systems an einem um eine kleine Strecke ∆x
oder einem kleinen Zeitintervall ∆t entfernten Ort bzw. Zeitpunkt bestimmen. Von
dort aus ist es wiederum durch Näherung möglich den nächsten Ort oder Zeitpunkt
zu erreichen. Somit lässt sich durch wiederholte Anwendung des Verfahrens die gesamte Strecke bzw. der gesamte Zeitraum annähernd berechnen. Alle numerischen
Verfahren beruhen auf diesem Prinzip. Sie unterscheiden sich zumeist nur in der
Schrittweite, der Anzahl der angenäherten Teilstücke oder der Länge dieser.
Ein physikalisches System, welches durch ODE’s beschrieben werden kann, kann nur
vollständig beschrieben werden, wenn auch die Bedingungen des Systems mit aufgenommen werden. Je nach Art der Bedingung unterscheidet man nach Anfangswertund Randwertbedingungen. Bei den Anfangswertproblemem, sind zu einem Startwert x0 die yi ’s bekannt und man sucht die Lösung der yi ’s für ein bestimmtes x0 . Im
Fall der geladenen Teilchen in elektromagnetischen Feldern, sind die Anfangswerte
durch den Ort ~x0 und die Geschwindigkeit ~v0 gegeben. Bei den Randwertbedingungen sind mehrere Grenzen an verschiedenen xi ’s angegeben. Die verwendeten
numerischen Lösungsansätze richten sich nach den Bedingungen.
3.3
Angewandte Lösungsverfahren
Jedes Verfahren zur numerischen Lösung von ODE’s stützt sich auf das oben beschriebene Grundprinzip. Als Grundlage aller weiteren beschriebenen Verfahren soll
das Euler Verfahren dargestellt werden, da dieses einige grundlegende Aspekte der
weiteren Behandlungen beinhaltet. Dann werden drei weitere Lösungsverfahren vorgestellt. Hierzu zählen das Runge-Kutta Verfahren, das Burlisch-Stoer Verfahren
und als eine Prädiktor-Korrektur Methode das Adams-Bashforth-Moulton Verfahren. Diese Verfahren/Methoden zur Lösung von ODE’s sind gezielt ausgesucht worden, weil in den heutigen numerischen Softwarepaketen, so auch in MATLABr ,
diese ihre Anwendung finden. Mit der heutigen leistungsstarken Computertechnik
ist es möglich immer kleinere Schritte bei der Diskretisierung zu machen und somit
immer mehr an ein kontinuierliches Spektrum heranzukommen. Allerdings werden
alle numerischen Verfahren zur Beschreibung von ODE’s immer eine Diskretisierung
bleiben.
Im folgenden sollen die Lösungsverfahren für ODE’s der Form
y ′ = f (x, y)
18
(3.3)
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
vorgestellt werden, diese sind wie in Abschnitt 3.1 beschrieben ohne weiteres auf
Systeme von Differentialgleichungen zu erweitern.
3.3.1
Euler Verfahren
Das Euler Verfahren wird auch Einschrittverfahren genannt, weil es versucht mittels einzelner kleiner Schrittweiten h, eine genaue numerische Abbildung des über
Differentialgleichungen beschriebenen Systems zu geben. Bei dem Euler Verfahren
wird Gleichung (3.3) durch eine Diskretisierung ersetzt, man erhält
yn+1 = yn + hf ′ (xn , yn ) .
(3.4)
Mit dieser Gleichung versucht man die Lösung für xn+1 = h+xn über xn anzunähern.
Dieses Verfahren versucht somit über das Intervall h eine Linearisierung des Systems
vorzunehmen. Dabei stellt Gleichung (3.4) die normale Geradengleichung dar. Hierbei ist yn der y-Abschnitt, f ′ (xn , yn ) die Steigung der Geraden im Punkt xn und
h das Intervall. Das hier vorgestellte sogenannte explizite Verfahren geht von einer
Linearisierung vom Punkt yn zu yn+1 aus und wird daher auch Euler vorwärts“
”
genannt. Die Bezeichnung explizit kommt daher, dass auf der rechten Seite der Gleichung nur bekannte Größen auftreten und daher explizit yn+1 berechnet werden
kann. Mit teilweise erhöhtem Rechenaufwand ist es auch möglich ein implizites Euler Verfahren durchzuführen. Man erhält es, wenn man bei der Approximation den
Funktionswert nicht am linken, sondern am rechten Rand des Intervalls bestimmt,
dann gilt
yn+1 = yn + hf ′ (xn+1 , yn+1 ) .
(3.5)
Dieses Verfahren wird auch Euler rückwärts“ genannt. Welche Berechnungen nötig
”
sind um dieses implizite Verfahren zu verwenden, wird in Abschnitt 3.3.4 näher
erläutert. An dieser Stelle sollen zunächst die expliziten Verfahren erläutert werden.
Man erkennt, dass das explizite Euler Verfahren unsymmetrisch ist, da es nur die
Bedingungen am Punkt xn ausnutzt und von dort eine Linearisierung angestrebt
wird. Dieses führt bei häufiger Wiederholung und bei genügend kleinem Intervall
zu einer polygonalen Approximation von y (schematische Darstellung siehe Abb.
1(a)). Die so erzeugte Näherung stimmt bis einschließlich des linearen Gliedes mit
der TAYLOR-Entwicklung von y = y(x) in der Umgebung von x = xn überein.
Allerdings verwendet man heute dieses Verfahren nur noch in den Grundzügen, da
sich der Fehler bei wiederholter Anwendung verstärkt und zu großen Abweichungen
führen kann.
Im folgenden sollen die beim Euler Verfahren entstehenden Fehler und die Genauigkeit näher betrachtet werden, da diese auch für die im weiteren besprochenen
Verfahren maßgebend sind. Hierzu betrachtet man eine Menge ((xk , yk ))M
k=0 von
Approximationen in einem Intervall [a, b] und nimmt an, dass y = y(x) die Lösung
der ODE ist. Dann ergibt sich nach J.H. Mathews [22] ein sogenannter globaler und
lokaler Diskretisierungsfehler. Der globale Fehler ek ist definiert als die Differenz
zwischen der analytischen Lösung und der approximativen Lösung
ek = max[a,b] (|y (xk ) − yk |)
mit k = 1, 2, . . . , M.
(3.6)
19
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
(a) unsymmetrische Euler-Approximation: die Linearisierung wird am Anfangspunkt xn gemacht
(b)
symmetrische
EulerApproximation: die Linearisierung
wird zwischen zwei Wertepaaren xn , yn
und xn+1 , yn+1 angelegt
Abbildung 3.1: Verschiedene Euler-Approximationen
Der lokale Fehler ek+1 ergibt sich durch den in einem einzelnen Schritt begangenen
Fehler. Hierbei git
ek+1 = max[a,b] (|y (xk+1 ) − yk − hf ′ (xk , yk )|)
mit k = 0, 1, . . . , M − 1.
(3.7)
Somit ist es möglich den Fehler abzuschätzen, den man innerhalb eines Intervalls
[a, b] nach M Schritten gemacht hat, der Fehler liegt bei einer Größenordnung von
O (h1 ) für den globalen Fehler, die Größenordnung des lokalen Fehlers liegt bei
O (h2 ). Man erkennt, dass das Euler Verfahren somit für eine genaue“ numerische
”
Beschreibung einer ODE nicht zu verwenden ist oder eine sehr kleine Schrittweite h
und damit entsprechend viele Rechenoperationen erfordert.
3.3.2
Runge-Kutta Verfahren
Das Euler Verfahren liefert somit im Allgemeinen nur grobe Näherungswerte. Im folgenden soll daher ein verfeinertes Verfahren angegeben werden, das von Runge und
Kutta entwickelt worden ist. Gegeben sei wieder die durch Gleichung (3.3) beschriebene Differentialgleichung und als Anfangswert y (x0 ) = y0 . Bei diesem Verfahren
teilt man ein gegebenes Intervall [a, b] wiederum in Abschnitte der Schrittweite h
auf. Wenn man nun das Euler Verfahren zu grunde legen würde, erhält man nach den
oben angestellten Betrachtungen schon nach kurzer Zeit starke Abweichungen der
Linearisierung von der zu approximierenden Kurve. Um hier eine genauere Aussage
treffen zu können wird der Endpunkt P (x0 + h) der Geraden für einen Vergleich
und zur Entwicklung des Runge-Kutta Verfahrens herangezogen. Dieser Endpunkt
der Linearisierung wird im folgenden als Approximationspunkt bezeichnet.
Aufbauend auf dem in Abschnitt 3.3.1 beschriebenen Verfahren, kann man – so
Runge-Kutta – den gesuchten Prognosewert nur dadurch grundsätzlich verbessern,
indem man die für die lineare Fortschreibung
yn+1 = yn + hf ′ (xn , yn )
20
(3.8)
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
verwendete Steigung f ′ (xn , yn ) nicht nur aus der anfänglichen Steigung f ′ (x0 , y0 )
bestimmt sondern von dem (mittels der Differentialgleichung bekannten) weiteren
Steigungsverhalten der Funktion y abhängig macht, indem man zunächst mit einer
gewissen Teilschrittweite Hilfsapproximationen erstellt und dann über die dabei gewonnenen Steigungen mittelt. Das hier dargestellte Runge-Kutta Verfahren vierter
Ordnung verwendet Halbschritte h/2, dadurch gewinnt man vier Steigungen deren
gewichtetes arithmetisches Mittel gleich
′
hfges
=
1
(hf1′ + 2 · hf2′ + 2 · hf3′ + hf4′ )
6
(3.9)
ist. Dieses stellt die zur linearen Fortsetzung der Funktion y benutzte Steigung dar.
Durch die doppelte Gewichtung der beiden mittleren Hilfssteigungen“ f2′ und f3′
”
wird dabei im Allgemeinen ein zusätzlicher Genauigkeitsgewinn erzielt. Üblicherweise schreibt man für hfν′ auch kν mit ν = 1, . . . , 4. Man muss somit für jeden
Punkt xn+1 = xn + h die vier Faktoren berechnen um auf yn+1 zu kommen. Dabei
ergeben sich die Faktoren durch die Halbschritte zu
k1 = hf1′ (xn , yn )
h
k1
′
k2 = hf2 xn + , yn +
2
2
h
k2
′
k3 = hf3 xn + , yn +
2
2
′
k4 = hf4 (xn + h , yn + k3 ) .
Somit erhält man durch die Vereinfachung den Wert für yn+1 über
yn+1 = yn +
1
(k1 + 2k2 + 2k3 + k4 ) .
6
(3.10)
Die so ermittelte Näherung stimmt mit der Taylor-Entwicklung6 bis einschließlich
des Gliedes mit dem Faktor h4 überein. Der Fehler dieser Approximation liegt somit
bei einer Größenordnung von O(h5 ).
Zur Illustration des Verfahrens dient als Beispiel die Differentialgleichung y ′ (x) =
y(x) + x − 1 mit dem Anfangswert y(0) = 1 und einer Schrittweite von h = 1. Die
graphische Veranschaulichung ist in Abb. 3.2 zu sehen7 . Mit der anfänglichen Steigung m1 = y ′ (x0 ) wird bei diesem Verfahren ausgehend von einem Startpunkt A
zunächst ein Euler Halbschritt gemacht. Dadurch erhält man einen ersten y1 -Wert
mit y1 = y (x0 ) + m1 1/2h. Nun nimmt man an, dass der zugehörige Approximationspunkt P1 (x0 + 1/2h, y1 ) ein Punkt des Graphen ist (vgl. Abb. 3.2 oben-links)
und errechnet durch einsetzen dieses Punktes in die gegebene Differentialgeichung
die zugehörige Steigung m2 = f (x0 + 1/2h, y1 ) (vgl. Abb. 3.2 oben-mitte). Mit dieser Steigung führt man nun den ersten Euler Halbschritt erneut durch und erhält
daraus einen weiteren Wert y2 = y (x0 ) + m2 1/2h. Wieder nimmt man an, dass
der Punkt P2 (x0 + 1/2h, y2 ) ein Punkt des Graphen ist (vgl. Abb. 3.2 oben-rechts)
und errechnet durch Einsetzen des Punktes P2 in die gegebene Differentialgleichung
die zugehörige Steigung m3 = f (x0 + 1/2h, y2 ). Mit dieser Steigung führt man nun
6
7
genauere Betrachtungen hierzu findet man im Buch von A. Kneschke [18] (Bd. I, Seite 511)
in Anhang C.1, C.2 sind hierzu zwei Algorithmen dargestellt
21
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
Abbildung 3.2: Exemplarische Darstellung des Runge-Kutta Verfahrens vierter Ordnung
mit der Differentialgleichung y ′ (x) = y(x) + x − 1
einen ganzen Euler Schritt aus und erhält einen neuen y Wert y3 = y (x0 ) + m3 h,
durch erneutes einsetzen ergibt sich der Punkt P3 (x0 + h, y3 ) (vgl. Abb. 3.2 untenlinks). Durch einsetzen in die Differentialgleichung ergibt sich die letzte Steigung
m4 = f (x0 + h, y3 ) (vgl. Abb. 3.2 unten-mitte). Aus den so berechneten vier Steigungen wird nun nach Runge-Kutta ein gewichtetes arithmetisches Mittel gebildet
und man erhält als Gesamtsteigung für die Linearisierung
1
(m1 + 2m2 + 2m3 + m4 )
6
1 ′
(y (x0 ) + 2f (x0 + 1/2h, y1 ) + 2f (x0 + 1/2h, y2 ) + f (x0 + h, y3 )) .
=
6
mges =
Mit dieser Gesamtsteigung lässt sich nun in Analogie zum Euler Verfahren das Stück
des Graphen approximieren (vgl. Abb. 3.2 unten-rechts). Man erhält somit nach dem
Runge-Kutta Verfahren vierter Ordnung die Geradengleichung
y (x0 + h) = y (x0 ) + hmges
(3.11)
mit dem zugehörigen Punkt B (x0 + h, y (x0 + h)), dieser wird als der gesuchte
nächste Kurvenpunkt angenommen und dient als Startpunkt für den nächsten Iterationsschritt.
Wie schon in den obigen Erläuterungen beschrieben, liegt der Fehler des RungeKutta Verfahrens bei einer Größenordnung von O (h5 ). Man muss nun bei dem
Runge-Kutta Verfahren die Diskretisierungsfehler (Verfahrensfehler) und die numerischen Fehler (Rundungsfehler) betrachten, da sich beide in unterschiedlicher Weise
auf den Gesamtfehler auswirken. Beide Fehlerarten entwickeln sich in Abhängigkeit
von der Schrittweite h gegensätzlich; wird die Schrittweite verringert, so verkleinert
sich zwar der Diskretisierungsfehler aufgrund von höherem Rechenaufwand wird sich
22
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
aber der numerische Fehler vergrößern. Wird dagegen die Schrittweite vergrößert,
so verringert sich aufgund der geringeren Anzahl der Rechenschritte der numerische
Fehler, wohingegen der Diskretisierungsfehler zunimmt. Diese Betrachtung ist für
die in Abschnitt 3.3.2.1 besprochene adaptive Schrittweitenbestimmung von Bedeutung. Zumindest theoretisch gibt es jeweils für eine bestimmte Differentialgleichung
zusammen mit dem Näherungsverfahren eine bestimmte optimale Schrittweite (vgl.
Abb. 3.3). Diese macht man sich bei einer Schrittweitensteuerung zu nutze. Jedoch reagiert dieses Verfahren wie in Abb. 3.3 dargestellt, sehr empfindlich auf eine
Veränderung der Schrittweite. Die optimale Schrittweite wird gemäß einer empirischen Beziehung festgelegt
h · L ≈ 0.1
(3.12)
mit L der sogenannten Lipschitzkonstanten8 , die eine obere Schranke der Ableitung
darstellt.
Nun stellt sich die Frage, warum die meisten numerischen Softwarepakete eben nur die RungeKutta Verfahren vierter Ordnung und nicht höhere Ordnungen implementieren. Prinzipiell sind
Runge-Kutta Verfahren auch mit höheren Ordnungen möglich. Dabei sind die Grenzen des realisierbaren theoretisch nur durch die Rechenleistung und die numerische Genauigkeit der Variablen eingeschränkt. Im Allgemeinen wird aber
auf das Verfahren vierter Ordnung zurückgegrif- Abbildung 3.3: Fehlerentwicklung
fen. Dieses liegt darin begründet, dass zwar die Fehler geringer werden, die diese
Verfahren machen, der Rechenaufwand dieser Verfahren aber nicht in Relation zu
ihrem Nutzen steht. Das folgende Zitat aus [29] stellt wohl am nachhaltigsten die
Stellung des Runge-Kutta Verfahrens dar.
For many scientific users, fourth-order Runge-Kutta is not just the
”
first word on ODE integrators, but the last word as well. In fact, you
can get pretty far on this old workhorse, especially if you combine it with
an adaptive stepsize algorithm. . . . Bulirsch-Stoer or predictor-corrector
methods can be very much more efficient for problems where very high
accuracy is a requirement. Those methods are the high-strung racehorses.
Runge-Kutta is for ploughing the fields.“
3.3.2.1 Adaptive Schrittweite
Im vorherigen Abschnitt wurde erläutert, wie man das Runge-Kutta Verfahren mathematisch beschreiben kann und welche Fehler dabei auftreten. Dabei gibt es eine
optimale Schrittweite, bei der die Fehler minimal sind. Allerdings ist diese Annahme nur unter der Bedingung richtig, dass die gesuchte Funktion stark veränderlich
ist. Kommt es in einem Bereich zu keinen großen Abweichungen, so kann man eine
sogennante adaptive Schrittweitensteuerung einführen. Diese Steuerung, bzw. diese
Methode verändert die Schrittweite in Abhängigkeit von der Veränderlichkeit der gesuchten Funktion. Um eine solche Steuerung zu implementieren sind jedoch weitere
Rechenschritte nötig, dieses verlangsamt zwar das Verfahren auf stark veränderlichen
8
genaue mathematische Definition siehe O. Forster [9] Kapitel II, S. 102
23
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
Stücken, führt aber zu schnelleren Ergebnissen auf nicht oder kaum veränderlichen
Kurvenabschnitten. Bei dem besprochenen Runge-Kutta Verfahren vierter Ordnung
wird zumeist die step doubling“-Methode verwendet, man verdoppelt bzw. halbiert
”
die Schrittweite. Hierzu berechnet man zu jedem Punkt die vier Runge-Kutta Parameter k1 , k2 , k3 und k4 und macht von diesen die Schrittweite abhängig. Wegen
der empfindlichen Reaktionen des Fehlers auf die Schrittweite sollte diese jedoch
nicht kleiner als nötig gewählt werden. In den heutigen adaptiven Methoden wird
folgendes Kriterium zur Steuerung zugrunde gelegt
k3 − k2 .
q = (3.13)
k2 − k1 Dieser Parameter wird nach jedem Schritt berechnet und in Abhängigkeit davon
wird die Schrittweite nach der Vorschrift

für q < 0.5%
 2hn
hn
für 0.5% < q < 4%
hn+1 =
(3.14)

hn /2
für q > 4%
angepasst. Hierbei wird der vorangehende Schritt wiederholt, wenn die Schrittweite halbiert wird. Somit werden für jeden zu berechnenden Punkt notfalls zwei
vollständige Runge-Kutta Berechnungen durchgeführt. Eine Alternative zum nochmaligen Durchlauf aller Runge-Kutta Schritte mit veränderter Schrittweite ist möglich, wenn man zwei Integrationsverfahren unterschiedlicher Ordnung verwendet.
So lässt sich das Runge-Kutta Verfahren vierter Ordnung mit dem Runge-Kutta
Verfahren fünfter Ordnung durch einen Runge-Kutta-Merson Algorithmus9 so kombinieren, dass man insgesamt nur fünf Auswertungsschritte braucht um gleichzeitig
auch eine Aussage über den Fehler und somit die Änderung der Schrittweite machen
zu können.
3.3.3
Burlisch-Stoer Verfahren
Während das adaptive Runge-Kutta Verfahren vierter Ordnung für allgemeine Systeme verwendet wird, ist für Probleme, welche durch glatte“ Differentialgleichungen
”
beschrieben werden können, dabei beschreibt glatte“ den Verlauf der Lösungsfunk”
tionen, die keine Unstetigkeiten10 oder scharfe Nichtlinearitäten beinhalten und auf
großen Intervallen mit möglichst wenig Rechenaufwand integriert werden sollen, ein
anderes Verfahren maßgebend. Das Burlish-Stoer Verfahren stellt ein solches Verfahren zur höchst präzisen numerischen Berechnung der beschriebenen Differentialgleichungen mit minimalem Rechenaufwand dar. Das Burlish-Stoer Verfahren beruht
auf drei Grundideen. Die erste ist die Richardson Extrapolation. Diese geht davon
aus, dass die numerische Lösung des Problems selbst als eine Art analytische Lösung
angesehen werden kann. Um diese zu bekommen wird eine Fitkurve über die ermittelten Werte gelegt. Die zweite Idee beruht auf der Anpassung der Fitkurve selbst,
Burlisch und Stoer erkannten die Stärke von rationalen Funktionen bei dieser Art
9
siehe Runge-Kutta-Merson Algorithmus Anhang C.3
dieses ist in den meisten physikalischen Systemem der Fall, gerade bei den in dieser Arbeit
betrachteten Bewegungen
10
24
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
Abbildung 3.4: Burlisch-Stoer (Richardson Extrapolation) (Quelle geändert: [29])
der Extrapolation. Die dritte Idee ist, ein Approximationsverfahren zu finden, welches aufgrund der rationalen Funktion ruhig eine Fehlergrößenordnung von O (h2 )
haben kann und einen kleinen Rechenaufwand fordert. So ist es möglich mit nur
einem Bulisch-Stoer Schritt eine große Schrittweite mit sehr genauem Ergebnis zu
erreichen. Hierbei geht man nach folgendem Schema vor: Zunächst wird in immer
kleineren Schritten h = H/n mit n = 2, 4, 6, 8, 12, 16, 24, 32, . . . , [ni = 2ni−2 ] , . . .
numerisch integriert (hier findet zumeist das Runge-Kutta Verfahren zweiter Ordnung Anwendung), so dass zu jeder Schrittweite hi ein Integrationsergebnis yi gehört.
Nun wird durch alle (hi , yi) eine gebrochen rationale Funktion (Interpolationsfunktion) angepasst mit
b0 + b1 h + b2 h2 + . . .
.
(3.15)
R(h) =
a0 + a1 h + a2 h2 + . . .
Das Extrapolieren dieser Interpolationsfunktion auf beliebig kleine Schrittweiten
liefert nun ein optimales Ergebnis für den Zustand am Ende des Intervalls y(x0 +
H) = lim R(h), dieses ist in Abb. 3.4 schematisch dargestellt. Die Extrapolation wird
h→0
nach jeder Schrittweite gemacht und liefert approximativ den Endzustand sowie den
Fehler. Das Verfahren wird abgebrochen, wenn der Fehler kleiner als die vorgegebene
Schranke geworden ist.
3.3.4
Prädiktor-Korrektur Methode
Die Verfahren, die nach dieser Methode arbeiten sind genauer und effektiver als
Runge-Kutta Verfahren aber nur bei glatten“ Verläufen einsetzbar. Ein Nachteil
”
dieser Verfahren ist, dass sie nicht selbststartend sind, da Zustände und Ableitungen
aus Schritten zuvor benötigt werden, daher werden zunächst immer ein paar RungeKutta Schritte benötig um diese Zustände zu berechnen. Erst mit diesen Zuständen
kann die Prädiktor-Methode eine Aussage über den weiteren Verlauf machen. Die
nächsten Punkte werden dann der Prädiktor-Methode entnommen. Um sich den
25
Numerische Beschreibung der Bewegung
3.3 Angewandte Lösungsverfahren
Mechanismus der Prädiktor-Methode klar zu machen, ist es zunächst notwendig,
zu verstehen, dass das integrieren einer ODE sich grundlegend von der Suche nach
einem Integranden unterscheidet. Bei einer Integration kennt man den Zusammenhang zwischen dem Integranden und der Variablen x in analoger Form. Wenn man
nicht numerisch vorgehen würde, sondern analytisch, ließe sich die Linearisierung
und das Vorhersagen eines Punktes auf der Kurve analytisch schreiben als
xZn+1
f (x′ , y) dx′ .
(3.16)
yn+1 = yn +
xn
Bei den bisher vorgestellten Verfahren wurde eben der Integrand durch die Linearisierung ausgedrückt, diese Verfahren werden als Einschrittverfahren bezeichnet,
weil der Wert xn+1 und yn+1 nur auf dem vorherigen Wert yn beruht. Die Prädiktor Methode versucht nun einen anderen Weg den Integranden auszudrücken und
verwendet dazu die bereits bekannten Werte um zunächst einen Prädiktionswert
yP zu berechnen und diesen mit Hilfe eines Korrekturwertes yC anzupassen. Dabei
unterscheidet man bei den Vorgehensweisen zwischen den Ein- und Mehrschrittverfahren, dabei bezieht sich diese Einteilung auf die Anzahl der vorherigen Werte, die
zur Berechnung herangezogen wurden.
3.3.4.1 Einschrittverfahren
Die einfachste Prädiktor-Korrektur Methode ist das implizite Euler Verfahren. Hier-
(a) Prädiktionswert, Näherungslösung und Korrektur
(b) Korrekturberechnung
Abbildung 3.5: Implizites Euler Verfahren
bei wird der yn+1 Wert rückwärts berechnet siehe Gleichung (3.5). Dabei wird
zunächt ein Prädiktionswert yP mittels des expliziten Euler Verfahrens ermittelt. An
diesem Prädiktionspunkt wird die Ableitung, somit die Steigung mP = f ′ (xn+1 , yP )
für den Prädiktionspunkt berechnet. Ausgehend von dieser Steigung ergibt sich von
xn aus eine Gerade (vgl. Abb. 5(a) rote Linie) und man erhält eine Näherung für
yn+1. Diese Näherung liegt allerdings innerhalb eines Fehlers ∆x von der exakten
Lösung entfernt. Um den Fehler zu verifizieren, berechnet man die Fläche, die oberhalb der exakten Lösung liegt (vgl. Abb. 5(b)). Dazu verwendet man zumeist die
Trapezformel11 . Mittels dieses Fehlers ist es möglich eine Korrektur des Näherungswertes durchzuführen, daher wird dieser Schritt auch als Korrektorschritt bezeichnet.
11
26
siehe Anhang B.4 Gleichung (B.14)
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
3.3.4.2 Mehrschrittverfahren
Bei den Mehrschrittverfahren versucht man mittels mehrerer vorheriger Punkte und
der Ableitung eine Aussage über den nächsten Punkt zu erhalten. Bei diesen Mehrschrittverfahren versucht man f (x, y) über ein Polynom durch mehrere vorherige
Punkte xn , xn−1 , xn−2 , . . . anzunähern. Somit wird das oben angeführte Integral zu
′
′
′
yn+1 = yn + h a0 yn+1
+ a1 yn′ + a2 yn−1
+ a3 yn−2
+ ...
(3.17)
mit yn′ = f (xn , yn ). Hierbei heißt die Methode explizit, wenn a0 = 0 und implizit
wenn a0 6= 0.
Abbildung 3.6: Prädiktor Methode (Quelle geändert: [6])
Die Ordnung einer Prädiktor Methode richtet sich nun nicht wie bei Runge-Kutta
nach den Schritten, die gemacht wurden um einen neuen Punkt zu berechnen sondern nach der Anzahl der verwendeten bekannten Punkte. Nun ist es aber problematisch eine implizite Form von Gleichung (3.17) zu finden, da man hierzu yn+1
benötigt. Um dieses Problem zu lösen, muss man eine Abschätzung für diesen Wert
festlegen, entweder geschieht dieses durch raten oder durch den Prädiktorschritt,
der als Grundlage zunächst die explizite Form verwendet um von dort auf den Wert
für yn+1 zu kommen. Dieses geschieht dann durch die Integration des Polynomzuges
durch eine Simpson Integration12 von xn bis xn+1 . Mittels dieser Integration kann
man den Wert für yn+1 korrigieren.
Die Prädiktor Methode kann man wie in Abb. 3.6 verdeutlichen. Zunächst schätzt
man den Prädiktionswert yP (xn + h) durch Extrapolation (Polynomzug, Splinefittung, etc.) aus vorherigen Werten yn−i und den Ableitungen
y (xn ) , y ′ (xn ) , y (xn − h) , y ′ (xn − h) , . . .
12
siehe Simpson Integration Anhang B.4
27
3.3 Angewandte Lösungsverfahren
Numerische Beschreibung der Bewegung
ab. Dabei muss das Differentialgleichungssystem nicht ausgewertet werden. Um nun
zu einer Korrektur des so erzeugten Wertes zu gelangen, berechnet man die Ableitung des Prädiktionswertes. So erhält man mit den vorherigen Ableitungen und
einem Polygonzug bis zu xn + h eine weitere Aussage über den Prädiktionswert.
Nun berechnet man das Integral ∆x als Fläche unterhalb der Kurve zwischen xn
und xn + h mittels der Simpson Integration (siehe Anhang B.4; nur exemplarisch
für MATLABr , für eine eigene Implementation lassen sich alle weiteren diskreten
Integrationsverfahren nutzen). Mittels dieser Fläche lässt sich der korrigierte Wert
der Kurve berechnen yn+1 = y (xn + h) = y (xn ) + ∆x. Somit wird auch deutlich,
warum dieses Lösungsverfahren zunächst berechnete Punkte braucht um eine genaue Aussage über den weiteren Verlauf zu machen, in dem gezeigten Beispiel (vgl.
Abb. 3.6) werden zunächst drei bekannte Punkte vorausgesetzt.
3.3.4.3 Adams-Bashforth-Moulton Verfahren
Dieses Verfahren ist eines der häufigst eingesetzten Mehrschrittverfahren, es ba-
(a) Vierte Ordnung des Adams-Bashforth (b) Vierte Ordnung des Adams-Moulton KorPrädiktionswertes (mit Extrapolation)
rekturwertes (mit Interpolation)
Abbildung 3.7: Adams-Bashforth-Moulton Integration
siert auf der oben beschriebenen Prädiktor-Korrektur Methode. Somit kann man
sehr viel Rechenaufwand sparen. Jedoch können diese Verfahren nur wie auch das
Burlisch-Stoer Verfahren bei glatten“ Differentialgleichungen eingesetzt werden. An
”
dieser Stelle soll kurz das Adams-Bashforth-Moulton Verfahren vorgestellt werden,
da MATLABr es bei einigen Lösungsverfahren verwendet. Das Verfahren basiert auf
der in Gleichung (3.16) dargestellten allgemeinen Form. Hierbei wird das Lagrange
Polynom13 für die Approximation von f (x′ , y) mit den Punkten
(xn−3 , yn−3 ) , (xn−2 , yn−2 ) , (xn−1 , yn−1)
und (xn , yn ) verwendet. Man integriert über das Intervall [xn , xn+1 ]. So erhält man
den Adams-Bashforth Prädiktionswert
yP = yn +
h
(−9fn−3 + 37fn−2 − 59fn−1 + 55fn ) .
24
(3.18)
In gleicher Weise ergibt sich der Korrekturwert. Nun kann man, wie oben beschrieben den Prädiktionswert für yn+1 verwenden und wiederum ein Langrange Polynom
13
28
siehe O. Forster [9] Kapitel I
3.4 MATLAB ODE Suite
Numerische Beschreibung der Bewegung
verwenden. Diesesmal kann man den Punkt (xn+1 , yn+1) mit verwenden. Dieses erzeugt die Adams-Moulton Korrektur, es lässt sich schreiben
yC = yn +
h
(fn−2 − 5fn−1 + 19fn + 9fn+1 ) .
24
(3.19)
Dieses ist in Abb. 3.7 gezeigt. Die Größenordnung des Fehler des Adams-BashforthMoulton Verfahrens liegt bei einer Größenordnung von O (h5 ).
3.4
MATLABr ODE SUITE
Die oben beschriebenen Lösungsverfahren werden in MATLABr in unterschiedlicher
Weise umgesetzt. Im folgenden soll dargestellt werden, auf welche Verfahren MATLABr bei einer Lösung zurückgreift und wie diese intern berechnet werden (hierzu
sind die Arbeiten von R. Ashino und L.F. Shampine [2, 34] grundlegend). Die Sol”
ver“ gehören nicht zum binären Kern von MATLABr , somit ist es möglich sich die
Implementierung über die Kommandos type bzw. dbtype anzuschauen.
3.4.1
Implementierungen und Aufrufe der
”
ODE-Solver“
Die numerischen Hilfsmittel, die MATLABr zur Verfügung stellt, basieren auf den
schon in FORTRAN 90 verwendeten Routinen, die in den Softwarepaketen LAPACK,
D02BGF und DIVPAG zusammengefasst werden. Diese Routinen implementieren die
vorhergehend theoretisch beschriebenen Verfahren. Ausgehend von den in [29] beschriebenen Implementierungen ist es möglich, einzelne einfache Algorithmen für
MATLABr zu entwerfen. Diese stellen schematisch dar, wie die interne Implementierung in MATLABr funktioniert, da diese unter Umständen sehr komplex ist. Die
einfachen Algorithmen sind in Anhang C dargestellt, hierbei wird bei der Darstellung auf eine adaptive Schrittweitensteuerung verzichtet, da diese die Implementierung nur unnötig verkomplizieren würde, es wird auf die vorhergehend gemachten
theoretischen Überlegungen verwiesen.
In diesem Abschnitt werden die einzelnen Funktionen vorgestellt, die MATLABr zur
numerischen Lösung von Differentialgleichungen zur Verfügung stellt. Dabei sind alle
in MATLABr implementierten ODE Funktionen mit einer adaptiven Schrittweitensteuerung ausgestattet, die über die Eingabe der Genauigkeit (Toleranz) gesteuert
werden. MATLABr beinhaltet die folgenden ODE Solver“:
”
• ode23 expliziter Runge-Kutta-Algorithmus zweiter und dritter Ordnung (sogennates Bogacki und Shampine Paar [5])
• ode45 expliziter Runge-Kutta-Algorithmus vierter und fünfter Ordnung (sogenanntes Dormand-Prince Paar [8])
• ode15 abgewandelter Burlisch-Stoer Algorithmus (nach C.W. Gear [34])
• ode113 Adams-Bashforth-Algorithmus mit variabler Ordnung 1, . . . , 13
29
3.4 MATLAB ODE Suite
Numerische Beschreibung der Bewegung
Die verwendeten Algorithmen gehen zwar auf die oben vorgestellten grundlegenden
Theorien zurück sind aber im Laufe der Zeit durch neue Erkenntnisse und durch
neue binäre Implementationen in MATLABr optimiert worden. Daher bieten die
heutigen ODE Solver“, wie sie in den Versionen 6.5 (Release 13) und 7.0 (Release
”
14) vorkommen, die schnellste und komfortabelste Möglichkeit ODE’s numerisch zu
lösen. Zur weiteren Optimierung beinhalten die Runge-Kutta Verfahren immer ein
Paar von Verfahren unterschiedlicher Ordnung (Analogie siehe Anhang C.3). Ein
weiterer Vorteil, den MATLABr bei der Lösung von ODE’s zur Verfügung stellt,
ist, dass alle Lösungsverfahren mit ein und der selben Befehlstruktur aufgerufen
werden können, ohne dass man für jedes Verfahren eine spezifizierte benötigt.
3.4.1.1 Aufruf eines ODE Solvers
Die numerischen Lösungsverfahren sind in MATLABr standardisiert worden, dieses führt zu einer einfachen Handhabung und ermöglicht dem Benutzer ein hohes
Maß an Flexibilität, da mit nur kleinen Änderungen ein anderer ODE Solver“
”
eingebunden werden kann. In diesem Abschnitt soll die MATLABr Syntax zur Behandlung von ODE Problemen beschrieben werden und die einzelnen Optionen, die
MATLABr dazu bietet näher erläutert werden. Die Syntax zum Aufruf eines ODE
”
Solvers“ sieht immer wie folgt aus
>> [x,y] = solvername(@fun,[xinitial xfinal], y0, {options})
Dieser Aufruf erfordert, dass das System von Differentialgleichungen bzw. Differentialgleichungen höherer Ordnung, wie in Abschnitt 3.1 beschrieben, angesehen werden können und vom Problem her der Form y ′ = f (x, y) sind. Beim Aufruf ist @fun
der Name der Funktion, die die Differentialgleichung bestimmt. Das Intervall über
welches die Funktion integriert werden soll, ist dabei durch [xinitial xfinal] gegeben, in der Dokumentation von MATLABr , die mit dem Aufruf doc solvername
aufgerufen wird, findet man an dieser Stelle einen Vektor tspan, dieser muss den
xinitial- und xfinal-Wert enthalten. MATLABr geht dann von einer natürlichen
Schrittweite aus und berechnet hierzu im Intervall die Lösungen. Hat der Vektor
tspan mehr als zwei Elemente, so berechnet MATLABr die Lösungen der Differentialgleichungen explizit nur an diesen Punkten. Dann ist es dem Benutzer überlassen, in welcher Weise er die Daten weiterverarbeitet und welche Interpolation er für
die Darstellung verwenden möchte. Der Wert y0 gibt die Anfangsbedingungen der
einzelnen Gleichungen vor, mittels der Anzahl der Elemente dieses Vektors, ist es
MATLABr möglich die Anzahl der Differentialgleichungen zu bestimmen, die das
System beschreiben und die gelöst werden müssen.
Der Vektor options ist optional, er wird durch die Funktion odesets erzeugt. Hierbei kann man der Funktion als String die beliebigen Optionen übergeben und den
gewünschten Zahlenwert. Hieraus werden die passenden Parameter für die einzelnen
ODE Solver“ automatisch zusammengestellt. Dieses ist eine weitere Optimierung
”
der Lösungsverfahren bzw. des Aufrufs, da man auf diese Weise nicht selbst eine
Auswahl aus den Parametern treffen muss mit denen die Lösungsverfahren arbeiten. Hierbei ist die wichtigste Option die auch schon oben angesprochene Toleranz
des Fehlers, man kann die relative RelTol und die absolute Toleranz AbsTol setzen.
30
3.4 MATLAB ODE Suite
Numerische Beschreibung der Bewegung
Hierbei wird bei jedem Ergebnis der lokale Fehler abgeschätzt, der die Bedingung
|ei | ≤ r |yi | + ai
mit r der relativen Toleranz und ai der absoluten Toleranz erfüllen muss. Die relative
Toleranz liegt standardmäßig bei einem Wert von 10−3 die absolute Toleranz liegt
bei 10−6 , diese Werte müssen je nach Problem angeglichen werden, nach der Arbeit
von J.C. Polking [28] gibt es noch keinen zufriedenstellenden Automatismus, der
dieses für beliebige Probleme lösen könnte.
Eine weitere Option, die man mittels odeset setzen kann, ist das Ausgabeformat.
Hierbei kann man die Eigenschaft OutputFcn auf verschiedene Werte setzen, so das
entweder gleich ein ein- bzw. mehrdimensionaler Plot erzeugt wird. Hierzu dienen
die Werte odeplot, odephas2, odephas3 und odeprint. Des weiteren lässt sich
die Schrittweite für den Algorithmus angeben, dieser wird zwar intern durch die
Schrittweitensteuerung geregelt, jedoch lässt sich ein Maximalwert MaxStep vorgeben. Als Standardwert ist dieser auf ein Zehntel des Integrationsintervalls gesetzt. Für manche Differentialgleichungen ist es sinnvoll, die erste Schrittweite mit
InitialStep vorzugeben. Wenn der Verlauf zunächst sehr glatt“ ist und die ers”
te Schrittweite zu groß gewählt wurde und die Fehlertoleranz überschritten wurde,
greift automatisch die Schrittweitensteuerung ein und erniedrigt die Schrittweite.
Des weiteren bietet MATLABr noch zusätzliche Optionen an, die aber für diese Arbeit nicht maßgebend sind. Man kann sich die weiteren Optionen mit doc odeset
ansehen.
Im folgenden sollen die einzelnen Methoden der verschiedenen ODE Solver“ kurz
”
erläutert werden.
3.4.1.2 ode23 Methode
Die ode23 Methode basiert auf einem Paar von Runge-Kutta Verfahren zweiter und
dritter Ordnung mit einer implementierten Fehlerkontrolle vergleichbar mit dem
Runge-Kutta-Merson Algorithmus. Die Methode extrapoliert den Wert yn+1 mittels
Runge-Kutta dritter Ordnung und kontrolliert den Fehler über die Differenz zum
Wert der zweiten Ordnung. Somit ergeben sich vier Schritte
k1 = hf (xn , yn )
h
k1
k2 = hf xn + , yn +
2
2
3k2
3h
k3 = hf xn + , yn +
4
4
2k1 k2 4k3
k4 = hf xn + h, yn +
+
+
9
3
9
Die ersten drei Schritte produzieren dabei den Wert für yn+1 , es gilt
1
4
2
yn+1 = yn + k1 + k2 + k3 .
9
3
9
(3.20)
Mittels des vierten Schrittes erhält man den Fehler
e=−
1
1
1
5
k1 + k2 + k3 − k4 .
72
12
9
8
(3.21)
31
3.5 Geschwindigkeitskriterium
Numerische Beschreibung der Bewegung
Die Interpolation, die diese Methode verwendet ist ein Zweipunkt Hermite Polynon
des Grades drei, welches die Werte yn und yn+1 interpoliert.
3.4.1.3 ode45 Methode
Die ode45 Methode arbeitet nach dem von J.R. Dormand und P.J. Prince [8] vorgestellten Runge-Kutta Paar vierter und fünfter Ordnung. Auch hier wird wie bei der
ode23 Methode ein weiterer Schritt zur Fehlerbestimmung herangezogen. Das heute in MATLABr implementierte Dormand-Prince-Paar stellt momentan einen der
schnellsten ODE-Solver“ dar, die mit einer mittleren Genauigkeit arbeiten. Auch
”
wenn es mit dem ode45 Algorithmus mittlerweile möglich ist, große Schrittweiten zu
berechnen, so eignet er sich besonders für nicht glatte“ Differentialgleichungen. Die
”
Methode verwendet die Interpolation um innerhalb eines Schrittes vier Stützstellen
im gleichen Abstand zu berechnen auf denen dann der eigentliche Wert yn+1 basiert.
3.4.1.4 ode15s Methode
Die ode15s Methode basiert auf Verfahren, die auf die vorherigen Ableitungen
zurückgehen, dabei wird die Taylor-Entwicklung der Funktion verwendet und mittels
des Differenzenquotienten aus vorherigen Punkten die ODE gelöst.
3.4.1.5 ode113 Methode
Die ode113 Methode geht auf das Adams-Bashforth-Moulton Verfahren zurück, dabei ist die Schrittweite sowie die Ordnung variabel. Die Ordnung kann zwischen 1
und 13 variieren. Hierbei werden die Integrationen sehr genau über die Fehlertoleranz
beobachtet, dieses geschieht graphisch in MATLABr , daher sind diese Methoden
sehr aufwendig und kosten einen erheblichen Rechenaufwand.
3.5
Geschwindigkeitskriterium (Laufzeitanalyse)
Für die Visualisierung der in Abschnitt 2 betrachteten Bewegungen mit den numerischen Mittel aus Abschnitt 3 stellt sich nun die Frage, ob die in MATLABr integrierten Hilfsmittel verwendet werden sollen oder MEX-Funktionen14 aus bekannten C/C++/FORTRAN-Code für die einzelnen Verfahren, wie sie in [29] aufgeführt
werden, erzeugt werden soll.
Während die mögliche Genauigkeit und Komplexität numerischer Verfahren mittlerweile angestiegen sind, birgt der Einsatz der Standardsoftwarepakete wie sie in
MATLABr integriert sind einige Tücken. Je allgemeiner die ODE-Solver“ gehalten
”
sind, desto ungenauer können sie unter Umständen werden. Man darf dabei nie aus
den Augen verlieren, dass das vom Computer gelöste Problem
• weder mit dem ursprünglichen Problem übereinstimmt
• noch exakt gelöst wurde.
14
32
Erläuterungen siehe Anhang A.3
3.5 Geschwindigkeitskriterium
Numerische Beschreibung der Bewegung
Dabei stellt sich allerdings bei allen numerischen Verfahren nicht die Frage nach dem
Übereinstimmen, da die Numerik immer nur innerhalb einer gewissen Grenze an das
Problem herankommen kann, sondern vielmehr nach dem Maße der Exaktheit. Für
spezialisierte Verfahren gilt, dass sie meistens ein hohes Maß an Genauigkeit liefern
und mit dem analytischen Ergebnis, soweit vorhanden im Rahmen der Toleranz
übereinstimmen, dieses ist bei vielen Algorithmen aus [29, 31] der Fall (siehe auch
Anhang C). Jedoch haben diese Verfahren den Nachteil, dass sie wenn sie in MATLABr verwendet werden sollen sehr langsam laufen. Dieses beruht zum einen auf
der Struktur der MEX-Funktion und deren Speicherverwaltung, zum anderen auf den
unterschiedlichen Datenstrukturen.
Die allgemeinen Lösungsverfahren sind gerade im Bezug auf die Verwendung in
MATLABr optimiert und bieten daher einen Geschwindigkeitsvorteil. Da die Visualisierung der Bewegungen der geladenen Teilchen nicht die Exaktheit der Bewegung
darstellt und auch nicht diesen Anspruch erhebt, sind für diese Arbeit die allgemeinen Lösungsverfahren von MATLABr verwendet worden. Mit diesen ist es möglich
die Bewegung in einer flüssigen Simulation zu visualisieren und dieses trägt mehr
zum Verständnis der Physik hinter diesen Vorgängen bei, als eine exakte Lösung. Des
weiteren ist eine exakte Lösung der Bewegungen auch gar nicht nötig und im Rahmen
der Physik auch nicht unbedingt sinnvoll. Die Bewegungen wie sie in Abschnitt 2
beschrieben sind, sind zumeist bei den geladenen Teilchen im Erdmagnetfeld zu
finden. Hier eine exakte Lösung der Bewegungsgleichung bis auf etliche Nachkommastellen anzusetzen ist physikalisch nicht sinnvoll. Alleine kleine Diskrepanzen im
Feld, die von der Theorie abweichen, führen wie auch die Numerik selbst zu kleinen
Abweichungen. Somit lässt sich die reale“-Situation der geladenen Teilchen im Erd”
magnetfeld wahrscheinlich am besten mit der Numerik und der in ihr beinhalteten
kleinen Abweichungen darstellen.
Um einen Überblick über die verschiedenen Stärken und Schwächen der vorgestellten
Algorithmen zu erlangen, sollen im folgenden die Laufzeiten der einzelnen ODE”
Solver“ von MATLABr mit den C-Programmen (vgl. [29], Auszüge siehe Anhang C)
bzw. mit den von Hand“ implementierten Algorithmen verglichen werden. Hierbei
”
werden die Berechnungen jeweils über eine Zeitspanne von 0 bis nLarmor · 2πωB
durchgeführt. Dabei wählt man, um zeitlich eine Aussage treffen zu können, nLarmor
je nach Rechnergeschwindigkeit so hoch, dass man vergleichbare Laufzeiten erhält.
Bei einer Zeitspanne die sehr klein ist, machen sich die Unterschiede kaum bemerkbar. Die in Tabelle 3.1 dargestellten Laufzeiten der einzelnen Solver sind mit einem
AMD XP2000+, mit 1GB 400 MHz DDR-RAM in MATLABr Version 6.5 (Release
13) berechnet worden. Dazu kann man in MATLABr die Kommandos tic und toc
verwenden. Der Aufruf des auszuführenden Programms wird zwischen die Befehle gestellt und man erhält eine Laufzeit des Programms. Der Compiler zur Erzeugung der
MEX-Funktion ist dabei auf den gcc-Compiler von Cygwin15 gesetzt worden. Des weiteren wurden die Ergebnisse der Berechnungen mit denen der Theorie in Abschnitt 2
gegenübergestellt um einen Vergleich der Genauigkeiten zu ermöglichen. Um einen
Vergleich so einfach wie möglich zu gestallten, wird die Gyration zunächst ohne
eine Geschwindigkeitskomponente in Richtung des Magnetfeldes betrachtet, dabei
15
c
Cygwin ist eine von RedHat entwickelte UNIX-Umgebung für Windows
. Grundbestandteil
ist eine Bibliothek von UNIX-Funktionen, die es ermöglichen für UNIX entwickelte Programme
c
unter Windows
auszuführen. (www.cygwin.com)
33
3.5 Geschwindigkeitskriterium
Numerische Beschreibung der Bewegung
werden 200 Larmorradien simuliert und die Laufzeit sowie die Abweichungen des Radiusses betrachtet. Um des weiteren eine Aussage über einen eventuellen Versatz des
Führungszentrums machen zu können, wird die Gyrationsbewegung in einem zweiten
Schritt mit einer Geschwindigkeitskomponente in Richtung des magnetischen Feldes
betrachtet, die Abweichungen werden über die gesamten n-Gyrationen gemittelt. Bei
diesen beiden Betrachtungen ergeben sich die in Tabelle 3.1 dargestellten Laufzeiten für die einzelnen Algorithmen. Bei der Berechnung der Gyrationsflugbahn eines
Teilchens, wurde die Magnetfeldstärke sowie die Ladung und die Masse eines Teilchens auf 1 gesetzt, die Anfangsgeschwindigkeiten betragen vx = 0.04 und vy = 0.04
(vz = 0.04) somit ergibt sich nach Gleichung (2.6) ein theoretischer Larmorradius
von rL = 0.04, die absoluten Abweichungen von diesem theoretischen Wert und der
gemittelte Versatz vom Führungszentrum sind in Tabelle 3.1 dargestellt.
MATLABr (integriert)
Algorithmus Laufzeit [sec] abs. Abweichung rL
ode23
22.7
2.15 · 10−3
ode45
7.3
1.93 · 10−3
ode15s
15.8
1.87 · 10−3
ode113
11.2
1.02 · 10−3
Verschiedene Algorithmen (implementiert)
rk4
52.3
6.33 · 10−5
predcorr
38.2
0.93 · 10−3
bsstep
70.4
4.23 · 10−5
abs. Abweichung g.c.
3.42 · 10−4
0.76 · 10−4
0.68 · 10−4
0.41 · 10−4
1.54 · 10−4
0.33 · 10−4
0.06 · 10−4
Tabelle 3.1: Vergleich der Laufzeiten unterschiedlicher ODE-Solver“
”
Man erkennt, dass die in MATLABr integrierten ODE-Solver“ einen sehr großen
”
Geschwindigkeitsvorteil gegenüber den weiteren Solvern haben. Man darf dabei allerdings nicht außer Acht lassen, dass die Genauigkeit der in MATLABr integrierten
Solver stark schwanken. Wie oben beschrieben, gibt es keinen Automatismus für die
Toleranzeinstellungen. Um vergleichbare Ergebnisse zu erhalten, sind alle Solver mit
einer absoluten Toleranz von 1 · 10−10 berechnet worden. Um auch mit den in MATLABr integrierten Solvern ein möglichst genaues Ergebnis zu erhalten, sind die Toleranzwerte für jeden Solver auszuprobieren16 . Bei den Abweichungen fällt allerdings
auf, dass der Versatz des Führungszentrums bei allen Algorithmen vergleichbar ist.
Zum einen zeigt dieses, dass die Algorithmen alle relativ“ genau arbeiten und es bei
”
keinem der Algorihmen zu einer großen Abweichung vom Theoriewert kommt und
die Bewegung damit im Rahmen der Rechen- und Algorithmengenauigkeit genau
beschrieben wird.
Um allerdings zu vesrtehen, warum der Versatz des Führungszentrums bei den in
MATLABr integrierten Solvern vergleichbar mit den genaueren“ Algorithmen ist,
”
kann man eine Gyration ohne eine Geschwindigkeitskomponente in Richtung des
Magnetfeldes genauer betrachten. Dann erwartet man nach der in 2 beschriebenen
Theorie eine geschlossene Kreisbahn. Verwendet man die in MATLABr integrierten
16
um einen weiteren Einblick in die Unterschiede der integrierten Solver zu erhalten, wird an
dieser Stelle auf [34] (S. 20, Tabelle 8) verwiesen, hier findet sich ein Vergleich der unterschiedlichen
r
MATLAB
Solver für verschiedene Probleme
34
3.5 Geschwindigkeitskriterium
Numerische Beschreibung der Bewegung
ODE-Solver“, so erhält man keine geschlossene Kreisbahn sondern je nach Güte des
”
Verfahrens einen mehr oder weniger dicken Kreisrand. Dieses lässt sich besonders
eindrucksvoll darstellen, wenn man in MATLABr die Funktion Zoom in verwendet
und ein kleines Stück des Kreisrandes sehr groß betrachtet. Dieses ist in Abb. 3.8
dargestellt.
Abbildung 3.8: Genauigkeit der ODE Verfahren; Gyration eines geladenen Teilchens mit
einer Ausschnittsvergrößerung von einem Segment der Größe 5 · 10−4 × 5 · 10−4 , dabei
wurde die Standardeinstellung der relativen Toleranz gewählt
Man erkennt, dass die einzelnen Verfahren durchaus große Unterschiede aufweisen,
im Mittel liegt die Breite des Kreisrandes bei 2 · 10−3 . Dieses ist im Rahmen des
Standardwertes für die relative Toleranz der ODE-Solver“ zu verstehen. Aber ge”
rade diese macht das Verfahren ja auch wie oben gezeigt langsam. Will man eine
höhere Genauigkeit erreichen, so muss man die relative Toleranz verändern. Dieses
geht jedoch auf Kosten der Simulationsgeschwindigkeit. Durch die Breite des Bandes
ist aber gerade zu erklären, warum der Versatz des Führungszentums im Mittel mit
den spezialisierten Solvern vergleichbar ist. Wenn der Gyrationsradius schwankt, so
wird er mal Werte annehmen, die größer bzw. kleiner dem Theoriewert sind, somit
weicht auch die Berechnung des Führungszentrums ab, diese Abweichungen heben
sich allerdings im Mittel gerade auf.
Da in dieser Arbeit die physikalischen Prozesse und eine Verdeutlichung dieser im
Vordergrund stehen, werden im folgenden zur Entwicklung der Visualisierung der
Teilchenbahnen unter MATLABr die in Abschnitt 3.4 beschriebenen Verfahren verwendet. Diese erlauben eine schnelle und annähernd der Theorie entsprechende graphische Darstellung der Teilchenbahnen (die berechneten Abweichungen liegen bei
einer graphischen Darstellung in MATLABr gerade bei einem drittel der Linenbreite
35
3.6 Zusammenfassung
Numerische Beschreibung der Bewegung
und sind somit zu vernachlässigen). Um dem Benutzer eine weitere Möglichkeit zu
bieten mit höherer Genauigkeit zu arbeiten, wird zusätzlich zu der Visualisierung
ein weiteres graphischen Interface zur Verfügung gestellt, welches es dem Benutzer
erlaubt die Toleranzen sowie den ODE-Solver“ selbst zu wählen. Hiermit ist es
”
möglich, die oben beschriebnen Phänomene selbst auszuprobieren. Grundlage einer
schnellen, wenn auch wie oben gezeigt, nicht immer vollständig exakten Lösung bietet wie auch von W.H. Press [29] beschrieben, das Runge-Kutta Verfahren, hier in
der Implementation von J.R. Dormand und P.J. Prince [8].
3.6
Zusammenfassung
Die in diesem Abschnitt gemachten Beschreibungen der numerischen Verfahren dienen dazu, einen Einblick in die Verfahrensweise von ODE-Solvern“ zu erhalten. Mit
”
Hilfe der in MATLABr integrierten Verfahren ist es möglich, die aufgestellten Bewegungsgleichungen geladener Teilchen in elektromagnetischen Feldern numerisch zu
untersuchen und darzustellen. Die in MATLABr zur Verfügung stehenden Algorithmen basieren auf den Einschritt- und Mehrschrittverfahren. Alle diese Verfahren
basieren im Prinzip auf der grundlegenden Idee von Euler, dass man einen Kurvenverlauf durch linearisierte Teilstücke ausdrücken kann. Die Einschrittverfahren
unterscheiden sich dann nur durch die Erzeugung dieser linearisierten Teilstücke.
Dabei ist für jeden weiteren Linearisierungsschritt unterschiedlicher Rechenaufwand
nötig. Die Mehrschrittverfahren, gewinnen im Gegensatz zu den Einschrittverfahren nicht nur aus der Ableitung der Kurve selbst sondern auch über die Historie“
”
des Kurvenverlaufs weitere Informationen um eine Linearisierung möglichst genau
vorzunehmen.
Jedes der vorgestellten Verfahren hat seine Vor- und Nachteile, die zum einen in
sehr hohem Rechenaufwand zum anderen darin begründet liegen, dass sie vom Verfahren her nur mit speziellen Typen von Differenialgleichungen schnell und effizient arbeiten können. Als ein allgemein verwendetes Verfahren für fast beliebige
Verläufe erweist sich das adaptive Runge-Kutta Verfahren bzw. der adaptive RungeKutta-Merson Algorithmus. Hier ist zwar der Rechenaufwand pro Schritt sehr groß,
aber dieses Verfahren liefert innerhalb der Fehlertoleranz schnelle und präzise Werte. Daher wird das Runge-Kutta Verfahren auch für die Visualisierung in MATLABr standardmäßig verwendet. Die Verwendung ergibt sich bei der Visualisierung
gerade aus dem Aspekt heraus, dass man nicht unbedingt mit sehr großer Genauigkeit den mathematischen Ausdruck widerspiegeln will, sondern gerade durch die
Visualisierung erreichen will, dass man die Physik hinter den in Abschnitt 2 beschriebenen Formeln verdeutlicht.
Die in diesem Abschnitt erläuterten Verfahren und Lösungsstrategien mit MATLABr beinhalten alle die Voraussetzung, dass man die Differentialgleichungsysteme auf Systeme gewöhnlicher Differentialgleichungen erster Ordnung zurückführen
kann. Dann können diese simultan gelöst werden. Des weiteren soll an dieser Stelle
noch auf den Verlet Algorithmus17 hingewiesen werden. Mit diesem Algorithmus
wird eine Differentialgleichung nicht simultan sondern sequentiell gelöst. Dieses Verfahren benötigt immer zwei Schritte und soll hier nur exemplarisch für eine Reihe
17
36
siehe Velocity-Verlet Algorithmus Anhang C.5
3.6 Zusammenfassung
Numerische Beschreibung der Bewegung
weiterer Verfahren zur numerischen Berechnung von Differentialgleichungen dienen.
Die hier vorgestellten numerischen Grundlagen dienen dazu, ein Verständnis für die
Arbeitsweise der Algorithmen zu bekommen und wie diese sich bei unterschiedlichen Problemen verhalten bzw. welche Berechnungen jewels intern nötig sind um
eine ODE zu lösen. Mittels dieser Grundlagen und der in MATLABr integrierten
ODE Solver“ ist es möglich die Bewegung von geladenen Teilchen in elektroma”
gnetischen Feldern zu beschreiben. Die Newton’sche Bewegungsgleichung ist mittels
der Numerik für den Computer berechenbar und die Ergebnisse können graphisch
dargestellt werden, dieses soll im folgenden Abschnitt geschehen. Basierend auf den
theoretischen Grundlagen der Bewegung und auf den numerischen Verfahren zum
lösen von ODE’s ist das im folgenden beschriebene Programm entwickelt worden.
37
Visualisierung in MATLAB
4
Visualisierung in MATLAB
r
Die beiden vorherigen Abschnitte behandelten theoretisch die Bewegungen von geladenen Teilchen mittels der Newton’schen Bewegungsgleichung und die Möglichkeiten diese numerisch zu beschreiben. Diese beiden Abschnitte sollen nun dazu dienen,
die Bewegungen deutlich werden zu lassen. Hierzu werden die Bewegungen in unterschiedlichen Feldern dargestellt. In diesem Abschnitt soll beschrieben werden, welche
Grundlagen aus den vorherigen Abschnitten herangezogen wurden um eine Darstellung mit MATLABr zu erreichen und wie dieses in MATLABr zu implementieren
ist.
Allgemein stellt sich die Frage, warum man überhaupt eine Visualisierung von
Vorgängen umsetzen möchte, die im weitesten durch die mathematischen Formeln
beschrieben wurden und die mit Hilfe der Numerik auch berechnet werden können.
Hierzu ist wohl eine der treffensten Aussagen die von P. Marchand [21], die auch auf
die Problemstellung dieser Arbeit übetragen werden kann
Why would I ever want to visualize my data? At its very essence,
”
science is the quest for truth. However, some of those truths are not easily discovered, and in many cases, we dont even know how to ask the
appropriate questions that will lead to the truth. Consider the fact that
many natural phenomena are too fast, too slow, too large, or too small to
be studied through direct observation or with traditional laboratory techniques. How can we see the unseen or gain enough insight into the nature
of things to even know what is worthwhile to investigate? . . . A dictionary will tell us that to visualize means: To form a mental image or vision
of. . . . represent something, whether that something is a graphical representation of a real-world object, a hypothetical mathematical construct,
or specific values of some measurable quantities.“
Eben das hier beschriebene Problem too large“ gegen too small“ stellt sich in dieser
”
”
Arbeit. Die Mechanismen die in Abschnitt 2 beschrieben wurden, sind hauptsächlich
Vorgänge, wie sie im Erdmagnetfeld vorkommen. Diese Siuation lässt sich nur im
begrenzten Maße bzw. gar nicht im Labor nachstellen. Gerade hier tritt die große
Diskrepanz zwischen den Skalen zum Vorschein, die Ausmaße eines geladenen Teilchens und die im Vergleich hierzu riesige Ausdehnung des Erdmagnetfeldes. Um
dieses David gegen Goliath Problem zu untersuchen und die physikalischen Prozesse deutlich werden zu lassen, bedient man sich des Mittels der Visualisierung.
4.1
Implementierung (GUI)
Um nun die Theorie, welche hinter den Bewegungen der geladenen Teilchen steckt
näher zu verstehen, ist es sinnvoll die einzelnen Bewegungen zu simulieren und die
Bedienung der Simulation so einfach wie möglich zu gestalten. Dieses unterstützt
MATLABr durch die Möglichkeit graphische Bedienelemente (engl. graphical user
interface (GUI)) mit einzubinden. Diese GUI’s ermöglichen einem mit denen in
38
4.1 Implementierung (GUI)
Visualisierung in MATLAB
allen Programmen verwendeten Objekten wie Icons“, Buttons“, etc. die Simula”
”
tion mittels der Maus zu steueren ohne die Syntax von MATLABr selbst zu kennen. Man benötigt keine vertieften Kenntnisse um mit der Simulation Ergebnisse
zu produzieren und einzelne Simulationsergebnisse zu speichern um diese weiter
zu verwenden. Das GUI selber gliedert sich bei den neuen Versionen von MATLABr ab Version 5.3 Release 12 in eine FIG-Datei, welche dazu verwendet wird das
Layout des GUI’s zu speichern und in eine m-Datei, in der die einzelnen Aufrufe
bzw. Funktionen implementiert werden. Das GUI ist somit nichts anderes als wie
der Name schon sagt ein Interface zwischen den teilweise komplexen Syntax Aufrufen in MATLABr und den einfachen Icons“, Buttons“ und Dropdownmenues“.
”
”
”
Dieser Abschnitt soll eine kurze Zusammenfassung der Möglichkeiten darstellen,
die MATLABr zur Verfügung stellt um GUI’s zu erstellen18 und gleichzeitig soll
erläutert werden, wie das Programm particles entstanden ist, welches Ziel dieser Arbeit ist. Das Programm bzw. die Funktion particles (bestehend aus den
Dateien: particles.m und particles.fig) bildet die graphische Steuerung der
Visualisierung. Die beiden Dateien wurden mit Hilfe von GUIDE (GUI Development
Environment) erzeugt. Dieses Tool lässt sich in MATLABr mit dem Aufruf
>> guide
starten. Das Tool GUIDE bietet die Möglichkeit, Bedienelemente direkt graphisch
zu bearbeiten (Position, Höhe, Breite, Farbe etc.) und Eigenschaften einzustellen.
Die Funktionen, die diese Elemente dann ausführen (Callback) sind in der m-Datei
enthalten und beinhalten die MATLABr Syntax. Das GUI lässt sich dann in MATLABr mit dem Aufruf
>> particles
starten. MATLABr verbindet automatisch das Layout der fig-Datei und die Aufrufe in der m-Datei. Im GUIDE Editor sieht das Layout des Programms wie in Abb.
4.1 dargestellt aus. Hier können die einzelnen Schalter, Knöpfe etc. positioniert werden und die Eigenschaften der einzelnen Elemente mittels des Property-Inspectors
gesetzt weden. Jedes in Abb. 4.1 dargestellte Element hat eine Callback Funktion,
mittels derer die einzelnen Abläufe gesteuert werden können. Die Callback Funktionen befinden sich in der Funktion particles.m und in vollständiger und auskommentierter Form im Anhang (siehe Anhang D). Eine genaue Beschreibung aller
verwendeten Bedienelemente und deren Funktion für die Simulation findet man in
Abschnitt 4.3. Im folgenden sollen die in den Abschnitten 2 und 3 gemachten theoretischen Grundlagen in MATLABr umgesetzt werden.
Alle in diesem und im vorherigen Abschnitt verwendeten MATLABr Dateien befinden sich auf der dieser Arbeit beigefügten CD-Rom, des weiteren beinhaltet diese
eine HTML Dokumentation der Simulation (Microsoft IE, Netscape sowie MATLABr kompatibel).
18
für eine umfassende Beschreibung der einzelnen GUI Komponenten soll an dieser Stelle auf P.
Marchand [21] Chapter 10 Elements of GUI Design verwiesen werden
39
4.2 Mathematische Umsetzung
Visualisierung in MATLAB
Abbildung 4.1: GUIDE-Ansicht des Layouts vom Programm particles (GUI Steuerung
der Visualisierung); exemplarisch ist der Property-Inspector des Buttons Solver geöffnet
4.2
Mathematische Umsetzung
Wie schon in Abschnitt 3.1 beschrieben, lassen sich die einzelnen Komponenten
der Bewegungsgleichung Formulieren. Im folgenden soll erläutert werden, wie die in
Abschnitt 2 beschriebenen Gleichungen und Bewegungen in eine Syntax von MATLABr überführt werden können und wie diese mit den numerischen Hilfsmitteln aus
Abschnitt 3 gelöst werden können.
Zunächst werden einige Variablen in der Funktion eqMotion.m gesetzt, diese Variablen können in einer weiteren Version des Visualisierungsprogramms geändert
werden, bei der hier vorliegenden Version des Programms soll von relativen Einheiten ausgegangen werden. Diese werden allerdings direkt zu Begin der Funktion
eqMotion.m gesetzt um das Programm für einen weiteren Einsatz möglichst flexibel
zu gestalten. Die vordefinierten Variablen sind der Radius R0 der zur Beschreibung
der radialsymmetrischen Felder verwendet wird (dieser bezieht sich auf die Einheiten von einem Erdradius) und die Masse des Teilchens mass=1 (bezieht sich auf eine
Protonenmasse) sowie die Ladung charge die auf ±1 (bezieht sich auf die Ladung
eines Elektrons) gesetzt wird.
Gleichung (2.1) beschreibt allgemein die Bewegungsgleichung eines geladenen Teilchens in einem Magnetfeld unter der Einwirkung einer weiteren Kraft. In den in
dieser Arbeit vorausgesetzten elektromagnetischen Feldern, tritt diese zusätzliche
Kraft in Form der elektrischen Kraft auf. Eine spezialisiertere Form von Gleichung
(2.1) stellt (3.1) dar. Hier sind die einzelnen ODE’s noch in Form eines vektoriellen
Gleichungssystems beschrieben. Diese kann verwendet werden, um eine Syntax zu erstellen, mit der man in MATLABr arbeiten kann. Die oben beschriebenen Verfahren
gehen auf eine Differentialgleichung der Form y ′ = f (x, y) zurück. Überträgt man
dieses auf Gleichung (3.1) so geht man hier von einem System von ODE’s der vektoriellen Form ~v˙ = f ~t, ~v aus, dieses dv/dt System lässt sich in MATLABr durch
40
4.2 Mathematische Umsetzung
Visualisierung in MATLAB
dvdt = [ v(4,:)
v(5,:)
v(6,:)
charge/mass*( E(1) +(v(5,:).*B(3) -v(6,:).*B(2)) )
charge/mass*( E(2) +(v(6,:).*B(1) -v(4,:).*B(3)) )
charge/mass*( E(3) +(v(4,:).*B(2) -v(5,:).*B(1)) )
];
ausdrücken. Hierbei bilden die letzten drei Elemente die Analogie zu Gleichung
(3.1), die einzelnen Komponenten des elektrischen Feldes und das Kreuzprodukt des
Geschwindigkeitsvektors und der Magnetfeldkomponenten. Die Zahlen 1, 2 und 3
stehen jeweils für die Komponenten x, y und z des Vektors. Bei dem Geschwindigkeitsvektor v sind die ersten drei Komponenten v(1:3,:) der Ort und die letzten
drei Komponenten v(4:6,:) die Geschwindigkeiten in die einzelnen Richtungen.
Die Gesamtgeschwindigkeit ergibt sich dann aus der Vektorsumme der letzten drei
Komponenten.
Das magnetische Feld B sowie des elektrische Feld E sind abhängig von der Wahl im
GUI. Die Felder jeweils nur in eine Raumrichtung werden durch
B = B0*[strength 0 0];
E = E0*[strength 0 0];
dargestellt, wobei die Position der Variablen strength mit der Raumrichtung verknüpft ist. Weitere Feldstrukturen werden durch Überführung der einzelnen Komponenten in eine kartesische Schreibweise ausgedrückt. Im folgenden sollen die einzelnen Feldstrukturen dargestellt werden, die dem GUI zugrunde liegen.
Das dBz/dy-Feld wird durch eine zusätzliche Komponente in der z-Richtung beschrieben, welche von dem Wert y abhängig ist. Dabei ergibt sich der Vektor des
Magnetfeldes zu
B = B0*[0 0 1+value*strength*y];
Für das Toroidal Feld (siehe Magnetic Field of Toroid by Hyperphysics [12])werden
die Toroidal Koordinaten in kartesische Koordinaten umgerechnet (siehe mathworld
[37], [4] Section C, Toroidal Systems) somit gilt
R = sqrt(x^2+y^2); cosphi = x/R; sinphi = y/R;
B = B0*R0/R*[-sinphi cosphi 0]*strength;
Für die Simulation eines Tokamaks (Magnetkäfig) werden drei sich überlagernde
Magnetfelder benötigt. Zunächst ein ringförmiges Feld, des weiteren ein Feld, welches
durch den Stromfluss innerhalb des Ringes erzeugt wird. In diesem kombinierten Feld
laufen die Feldlinien dann schraubenförmig um. So wird eine Verdrillung erzeugt,
die die Teilchen innerhalb des beschriebenen Ringes hält. Ein drittes vertikales Feld
fixiert die Lage des Stroms (Geometrie eines Tokamak’s siehe Abb. 4.2). Damit ergibt
sich für die Beschreibung in kartesischen Koordinaten (Grundlage Transformation
der Toroidal Koordinaten) folgende Darstellung19
19
siehe auch Max-Planck-Institut für Plasmaphysik (IPP MPG)
41
4.2 Mathematische Umsetzung
Visualisierung in MATLAB
R = sqrt(x^2 +y^2); cosphi = x/R; sinphi = y/R;
rho = sqrt((R-R0)^2 + z^2); sint = -z/rho; cost = (R-R0)/rho;
Bt = B0 * (R0/R)*[-sinphi
Bp = B0 *(rho/R)*[-cosphi*sint
B = Bt +Bp/q;
cosphi
-sinphi*sint
0
];
-cost ];
Abbildung 4.2: Tokamak (Quelle: [37])
Die Magnetfeldstärke in einem Dipolfeld wird durch den Abstand vom Mittelpunkt
r, durch die magetische Länge λ (Analog zur geographischen Länge) und durch das
Dipolmoment M charakterisiert. Heirbei gilt
M
(4.1)
B(r) = 3 1 + 3 sin2 λ .
r
Mit einer Transformation in kartesische Koordinaten ergibt sich für das Programm
die folgende Darstellung
r = x^2 +y^2 +z^2;
B = M*r^(-2.5)*[ 3*x*z
3*y*z
3*z^2-r]*strength;
Das zeitlich variable E-Feld wird durch die folgenden Zeilen beschrieben
E = E0*[ 0
t*charge/mass*Btot
0]*strength;
wobei Btot die Norm des B-Feldes ist somit Btot=norm(B).
Mit diesen Darstellungen ist es MATLABr möglich dvdt zu beschreiben und die
ODE’s zu lösen, hierzu wird der Aufruf
options = odeset(options,’AbsTol’,1.e-10,’OutputFcn’,’odephas3’);
feval(’solvername’,@fun,tspan,y0,options);
verwendet. MATLABr erzeugt mit diesem Aufruf einen Plot der Flugbahn. Dieser
Plot kann im GUI dargestellt werden. Die Callback-Funktionen in particles.m
übergibt der Funktion eqMotion.m die einzelnen Parameter, welche aus dem GUI
ausgelesen werden und die Funktion eqMotion.m verwendet diese um damit nach
Gleichung (3.1) die Differentialgleichungen zu lösen und einen Plot der Flugbahn
zu erzeugen. Im folgenden soll das Programm, welches auf den hier gemachten mathematischen Überlegungen beruht genauer beschrieben werden und Ergebnisse der
Simulationen vorgestellt werden.
42
4.3 Programmfunktionen
4.3
Visualisierung in MATLAB
Programmfunktionen
Wie schon oben erwähnt wurde aus den in den Abschnitten 2 und 3 erläuterten
Grundlagen ein Programm zur Visualisierung der Bewegung erzeugt. Dieses stellt
den Schwerpunkt dieser Arbeit dar. Das Programm selbst ist in Form eines GUI’s
für MATLABr programmiert worden. Die einzelnen Elemente sind zur Eingabe der
unterschiedlichen Parameter, die in die Bewegungsgleichung mit einfließen. Somit
ist es möglich die oben theoretisch besprochenen Flugbahnen eines Teilchens unter verschiedenen Bedingungen und mit verschiedenen initialisierenden Parametern
zu simulieren. Dieses ist wie schon in der Einleitung erwähnt der maßgebende Teil
dieser Arbeit. Die Visualisierung der Bewegung geladener Teilchen in elektromagnetischen Feldern, geschieht über das Programm particles. Dieses stellt eine Graphische Benutzeroberfläche zur Verfügung um die einzelnen Parameter der Bewegung
einzustellen und erzeugt basierend auf den in Abschnitt 3 erläuterten numerischen
Verfahren eine Berechnung und Darstellung der Flugbahn. In diesem Abschnitt soll
die Funktionsweise des GUI’s und die einzelnen Bedienelemente erläutert werden.
In einem zweiten Teil werden exemplarisch einige Simulationsergebnisse dargestellt,
die die in Abschnitt 2 beschriebenen Feldstrukturen und die mit ihnen verbundenen
Bewegungen darstellen. Mit Hilfe des GUI’s sind beliebige Parameter möglich und
somit eine Visualisierung unterschiedlichster Bewegungen. Grundlage aller Bewegungen bilden die theoretischen Betrachtungen aus Abschnitt 2.
4.3.1
Bedienung
Das Programm particles ist eine graphische Benutzeroberfläche. Das GUI bietet
eine Methode zur Bedienung der Simulation unter Verwendung von bildlichen Schaltflächen und Befehlsleisten, die mit der Maus gesteuert werden können. Diese Art der
Steuerung ist einfacher und intuitiver als eine Befehlszeilen-Oberfläche. Die in Abschnitt 4.2 dargestellten MATLABr Fragmente ließen sich auch alle über den MATLABr -Prompt eingeben. Dieses für jede Visualisierung allerdings zu wiederholen,
bzw. die Befehle in einer m-Funktion iterativ (quasi als Spagetti-Code“) abzuarbei”
ten würde bedeuten, dass man für jede neue Berechnung einen neuen Aufruf bzw. eine Änderung der m-Funktion benötigt. Um dieses dem Benutzer zu ersparen bzw. um
eine einfachere Bedienung zu gewährleisten, wurde ein GUI in MATLABr erzeugt,
dieses steuert die Parameter der Bewegungsgleichung mittels graphischer Bedienelemente und erlaubt ohne erneute Aufrufe eine weitere Simulation.
Im folgenden wird kurz beschrieben, wie das Programm aufgerufen werden kann und
welche Funktion die einzelnen Bedienelemente haben. Um das Programm zu starten,
ändert man nach dem Start von MATLABr das Current Directory auf den Pfad,
in dem das Programm liegt (Beispiel: >> cd c:\programme\ für Windowsc bzw.
>> cd ../home/user/programme/). Nun kann man das Programm mit dem Aufruf
>> particles
starten. Nach diesem Aufruf erscheint das in Abb. 4.3 dargestellte GUI. Die Bedienelemente links des Titelbildes und unterhalb dienen zur Einstellung der Parameter der Simulation. Hierbei kann die Teilchenart durch exklusive Radiobutton’s fest43
4.3 Programmfunktionen
Visualisierung in MATLAB
Abbildung 4.3: Graphische Benutzeroberfläche der Visualisierung mit Titelbild
gelegt werden. Diese Radiobutton’s sind in der m-Datei mit Callback Aufrufen verknüpft, diese setzen je nach gewählter Teilchenart die globalen Variablen der Masse
mass sowie die Ladung charge auf die für die Teilchenart charakteristischen Werte20 .
Mittels der Eingabefelder für die Positionen ist es möglich die Startposition eines
Teilchens innerhalb eines kartesischen Koordinatensystems festzulegen. Die einzelnen Werte werden dann in den Variablen xpos, ypos und zpos abgelegt. Des weiteren
ist es möglich die Anzahl der Iterationen nLarmor zu wählen, diese Iterationen beziehen sich auf die zu simulierende Zeitspanne. Diese Zeitspanne wird wie oben beschrieben in dem Vektor tspan gespeichert. In diesem Fall steuert man die Zeitspanne über
die Angabe der Larmorradien, der Vektor ergibt sich aus der Gyrationsfrequenz
Omega0=charge/mass*B0 und der Anzahl tspan=[0 nLamor*OmegaO*(2*pi)]. Unterhalb des Titelbildes befinden sich die Popup-Menüs zur Auswahl der einzelnen Felder, hier werden einige Felder fest vorgegeben, mit denen in Abschnitt 4.2
erläuterten Geometrien. Mittels des Popup-Menüs kann man zwischen folgenden
Magnet- und Elektrischen-Feldern wählen und diese beliebig kombinieren
B-Feld B=0, Bz, dBz/dy, dBz/dz cusp, B toroidal, B tokamak, B dipole,
user defined
E-Feld E=0, Ex, Ez, dEy/dt, user defined
Des weiteren kann man in den Eingabefeldern die Stärke des Feldes festlegen, dabei
geht man hier von einer einheitslosen Betrachtung aus. Die Buttons auf der rechten
Seite sind zur Steuerung des Ablaufes der Simulation. Der START- und STOPButton sind selbsterklärend.
Mit dem ADD-Button ist es mögich weitere Bewegungen in den schon simulierten Plot einzubinden. Auf diese Weise lassen sich z.B. die unterschiedlichen Gyrationsrichtungen von Elektronen und Protonen darstellen. Mittels des CLEARButtons lässt sich das Axis-Objekt löschen, bzw. die gezeichnete Flugbahn löschen.
Der SOLVER-Button ruft ein weiteres GUI solvercontrol auf, mit diesem ist es
möglich die Standardwerte für die in der Visualisierung verwendeten ODE Solver“
”
20
in der jetzigen Version des Programms werden relative Einheiten verwendet, diese Beschreibung
gilt somit bei einer Änderung der Konstanten in eqMotion.m
44
4.3 Programmfunktionen
Visualisierung in MATLAB
per Hand zu setzen. Die Standardwerte werden mit dem DEFAULT-Button wieder
hergestellt. So ist es möglich auch die Genauigkeit der Solver zu vergleichen und
je nach Problem insbesondere die relative Toleranz zu setzen, da es hierfür keinen
Automatismus gibt. Die Standardwerte des Solvers sowie auch der anderen Eingabeelemente sind so gewählt, dass sie ohne Veränderungen eine optimale Simulation
des gewählten Problems bilden.
Mit dem HELP-Button ruft man die HTML-Dokumentation des Programmes auf, diese beinhaltet
eine kurze Zusammenfassung der in dieser Arbeit
behandelten Themengebiete, damit das Programm
auch ohne den Kontext dieser Arbeit zu kennen,
verwendet werden kann. Die Dokumentation führt
dabei kurz in die Thematik der Bewegung geladener
Teilchen in elektromagnetischen Feldern ein. Des
weiteren wird ein kurzer Abriss der Solver gegeben,
die verwendet wurden und der Verfahren die hinter
Abbildung 4.4: Solver Control
diesen stehen. Für weitere Details hierzu wird auf
die entsprecheneden Kapitel in der MATLABr -Dokumentation hingewiesen. Mit
dem CLOSE-Button schliesst man das Programm. Das Programm sowie die einzelnen Callback Funktionen befinden sich in auskommentierter Form im Anhang, das
Programm befindet sich auf der beigefüten CD-Rom.
4.3.2
Screenshots
Die in Abschnitt 2 beschriebenen Bewegungen können mit dem Programm simuliert
werden. An dieser Stelle sollen exemplarisch einige Konfigurationen und die Ergebnisse dargestellt werden und mit den theoretisch diskutierten Bewegungen verglichen
werden. Die hier angeführten Einstellungen dienen auch dazu, ein erstes Verständnis
im Umgang mit dem Programm zu erhalten.
4.3.2.1 Gyration
Zunächst soll die Gyration simuliert werden, hierzu werden in der Simulation die Parameter Elektron,xpos=0,ypos=0,zpos=0,vx=4,vy=4,vz=0 gewählt und ein Magnetfeld in Bz Richtung vorgegeben. Dabei entsteht wie in Abb. 5(a) dargestellt ein
Kreis. Wählt man eine Geschwindigkeit in z-Richtung die von Null verschieden ist,
so ergibt sich wie in Abb. 5(b) dargestellt eine Spiralbahn des Teilchens (die dargestellten Flugbahnen sind mit denen in Abb. 2.2 vergleichbar).
4.3.2.2 Driften
In diesem Abschnitt sollen einige Driften dargestellt werden, dabei sind die Parame~ × B~
ter so gewählt, dass sie das theoretisch erläuterte Verhalten aufweisen. Die E
Drift soll exemplarisch für die Gradientendrift und die Polarisationsdrift dargestellt
werden. Hierbei wurden die folgenden Parameter egwählt Elektron, xpos=0, ypos=0,
zpos=0, vx=40, vy=40 und vz=0 gewählt und ein Magnetfeld in Bz Richtung und
einem Elektrischen Feld in Ex Richtung. Dann ergibt sich die in Abb. 6(a) dargestellte Flugbahn. Des weitern kann eine Krümmungsdrift simuliert werden, hierzu
45
4.4 Zusammenfassung
Visualisierung in MATLAB
(a) Simulierte Kreisbahn der Gyration
(b) Simulierte Spiralbahn der Gyration
Abbildung 4.5: Simulierte Gyration
sind die Parameter Elektron, xpos=1, ypos=0, zpos=0, vx=4, vy=4 und vz=7 zu
wählen. Dabei ergibt sich der in Abb. 6(b) dargestellte Verlauf.
~ × B-Drift
~
(a) Simulierte E
(b) Simulierte Krümmungsdrift
Abbildung 4.6: Simulierte Driften
4.3.2.3 Bewegung im Dipolfeld
Wie in Abb. 2.10 dargestellt, kann man die Bewegung geladener Teilchen im Erdmagnetfeld als Zusammenfassung aller Bewegungen sehen. In der Visualisierung lässt
sich dieses mit den Parametern xpos=1, ypos=0, zpos=0, vx=4, vy=4 und vz=8 und
dem B dipol simulieren. Das Ergebniss der Visualisierung ist in Abb. 4.7 dargestellt.
4.4
Zusammenfassung
Die Visualisierung bietet ein umfassendes Hilfsmittel in der modernen Physik. Einzelne physikalische Vorgänge, die sich teilweise nur über komplizierte Formeln ausdrücken lassen, verschliessen sich zumeist einem direkten Verständnis, gerade wenn
46
4.4 Zusammenfassung
Visualisierung in MATLAB
Abbildung 4.7: Simulierte Flugbahn in einem Dipolfeld
diese Vorgänge sich im Mikrokosmus (Diskontinuum) abspielen. Erst wenn ein Vorgang simuliert wird und somit sichtbar gemacht wird, erhält man einen Einblick, was
durch die Mathematik beschrieben wird. Die Bewegungen von geladenen Teilchen
lassen sich durch die Newton’sche Bewegungsgleichung beschreiben, um diese Bewegungen zu simulieren, ist eine numerische Behandlung nötig. Das in dieser Arbeit
entwickelte Programm particles ermöglicht eine Visualisierung von geladenen Teilchen in unterschiedlichen elektrischen bzw. magnetischen Feldern. Das Programm
ist für MATLABr konzipiert und verwendet bei der Visualisierung der Bewegung,
die in MATLABr integrierten numerischen Funktionen. Dabei macht man sich zu
Nutze, dass MATLABr verschiedene Funktionen zur Ausführung mathematischer
Optionen und für die Datenanalyse anbietet (hier seien nur die für diese Arbeit verwendeten Funktionen genannt, einen genauen Überblick findet man unter MathWorks
(MATLABr Online Dokumentation))
• Matrizenmultiplikation
• Polynome und Interpolation
• Optimierung und numerische Integration
• Gewöhnliche Differentialgleichungen
•
..
.
Mit diesen Funktionen ist es möglich die Bewegungsgleichung von geladenen Teilchen
zu beschreiben und zu berechnen. Die großen Datenmengen, die bei der Berechnung entstehen, da je nach angewendetem Lösungsverfahren unterschiedlich viele
Rechenschritte nötig sind, lassen sich in MATLABr darstellen.
Die
mathematische
~
~
Beschreibung der Bewegung liefert bei gegebenen Feldern B, E jeweils die Beschleunigung ~v˙ = ~a. Dieses ergibt sich aus dem zweiten Newton’schen Gesetz, dieses
besagt, dass die Beschleunigung a eines Körpers der Masse m proportional zu der
47
4.4 Zusammenfassung
Visualisierung in MATLAB
auf ihn wirkenden Kraft F~ ist. Durch diese Beziehung kommt man auf die in Abschnitt 2 beschriebenen Bewegungen. Auf ein geladenes Teilchen wirkt in einem
~
~
elektromagnetischen Feld die elektrische Kraft q E und die Lorentzkraft q ~v × B .
Diese Kräfte sind von der Beschaffenheit des Feldes abhängig. Dieses macht sich
bei der Numerik allerdings nur darin bemerkbar, das die Komponenten der Vektoren B=B0*[value1 value2 value3] bzw. E=E0*[value1 value2 value3] unterschiedlich sind. Mittels der numerischen Hilfsmittel von MATLABr ist es möglich
die ODE’s zu lösen und die Teilchenbewegung anhand der Beschleunigung und der
Kenntnis der Feldstruktur über einen bestimmten Zeitraum tspan zu entwickeln
und darzustellen. Dieses ist mit dem Pogramm particles möglich, es basiert mathematisch auf der Beschreibung der Newton’schen Bewegungsgleichung und löst
diese in Abhängigkeit der Feldstruktur mit den in MATLABr integrierten ODE
”
Solvern“. Das Programm ist mit MATLABr 6.5 geschrieben und lässt sich mit folgendem Aufruf starten
>> particles
Die Dokumentation des Programms kann man sich entweder im Programm selbst
über den HELP-Button anzeigen lassen, bzw. aus dem MATLABr Prompt mit
>> open particles.html
aufrufen. Voraussetzung hierfür ist allerdings, dass man MATLABr nicht als nur
Terminal-Session geöffnet hat. Das Programm bietet mittels eines GUI’s eine komfortable Steuerung um schnell sichtbare Ergebnisse zu erhalten. Die einzelnen Komponenenten, die mit in die Bewegungsgleichungen einfließen wie die Ladung (Elektron/Proton), die Anfangsposition, die Geschwindigket des Teilchens, die Zeitspanne und die Feldgeometrie können mittels der graphischen Elemente ausgewählt und
verändert werden. Das GUI erzeugt dann eine graphische Darstellung der virtuellen
Flugbahn eines Teilchens mit den eingestellten Parametern.
48
Zusammenfassung
5
Zusammenfassung
Die Bewegungen geladener Teilchen in elektromagnetischen Feldern sind unter Umständen mathematisch sehr schwer zu beschreiben und zu verstehen. Die Bewegungen der Teilchen resultieren aus den Kräften, die auf sie wirken. Nach dem zweiten
Newton’schen Gesetz, sind alle Kräfte, die auf ein Teilchen wirken proportional
zu seiner Beschleunigung, es lässt sich somit ein mathematischer Zusammenhang
zwischen den Kräften und der Beschleunigung in Form einer Bewegungsgleichung
aufstellen. Die in dieser Arbeit betrachteten Kräfte sind die Lorentzkraft und die
elektrische Kraft, die auf geladene Teilchen in elektromagnetischen Feldern wirken.
Diese Kräfte sind von der Beschaffenheit der Felder abhängig und können daher
sehr unterschiedlich ausprägt sein. Sie führen dazu, dass die Teilchen Gyrationsbewegungen sowie Driften ausführen. Die Lösung der zu den Bewegungen gehörenden
Differentialgleichung ist dabei teilweise sehr komplex.
Um die mathematische Beschreibung der Einzelteilchenbewegungen verständlich
werden zu lassen, sind die Bewegungen mit Hilfe von MATLABr simuliert worden. Hierbei wird aus der grauen mathematischen Theorie der Bewegungsgleichungen eine bunte und anschauliche Visualisierung geschaffen. Auf diese Weise ist ein
Verständnis der einzelnen Bewegungen viel einfacher zu erreichen und man erhält
einen Eindruck davon, was durch die Mathematik beschrieben wird.
Warum wurde MATLABr zur Visualisierung verwendet? Die Antwort liegt in der
Art und Weise wie MATLABr intern arbeitet und an den numerischen Hilfsmitteln
die MATLABr zur Verfügung stellt. MATLABr arbeitet intern mit Matrizen und
stellt auch Skalare durch eine 1×1 Matrix dar, sowie Vektoren durch n×1 bzw. 1×m
Matrizen. Auf diese Weise ist es sehr einfach und intuitiv die Bewegungsgleichungen, welche zunächst vektoriell dargestellt wurden, in MATLABr mit Hilfe von 3 ×1
Matrizen darzustellen, wobei die einzelnen Komponenten jeweils eine Richtung im
dreidimensionalem Raum darstellen. Des weiteren beinhaltet MATLABr numerische
Hilfsmittel, die schon auf FORTRAN 90 Routinen zurückgehen (LAPACK, D02BGF,
DIVPAG) und somit lange erprobt und zuverlässig sind. Hier seien nur das RungeKutta Verfahren vierter Ordnung, der Runge-Kutta-Merson Algorithmus und das
Adams-Bashforth-Moulton Verfahren genannt. All diese Verfahren ermöglichen eine sehr schnelle numerische Berechnung der gegebenen Bewegungsgleichungen und
man erhält auf diese Weise relativ genaue Ergebnisse, die im Rahmen der Rechengenauigkeit mit der Theorie übereinstimmen. Hierbei kann die Numerik niemals die
analytischen Ergebnisse bis ins kleinste widerspiegeln, aber die Visualisierung der
Datenmengen, die aus den numerischen Berechnungen resultieren, können uns einen
viel tieferen Einblick und ein viel intuitiveres Verständnis der Physik geben, die
hinter den Formeln steckt.
49
Abstract
6
Abstract
The motion of charged particles is possibly hard to describe mathematically. The
particles’ motion results from the analysis of all forces which have an effect on
each particle. The resultant of all forces acting on a particle is proportional to the
acceleration of this particle (Newton’s 2nd law), so it is possible to describe the
trajectory of a charged particle in an electromagnetic field. In this case the acting
forces are the Lorentz force and the electrical force. These forces depend on the
composition of the field and could therefore be very variably marked; they lead
to a gyration and a drift of particles. The equations of these movements are very
variable and partly very complex. They depend on the fields, so it is only possible
to solve this ordinary differential equation problem analytically when the fields are
very homogeneous and not variable in time. When the fields vary in time and when
they have a gradient of strength, the only way to solve such problems is to use
numerical methods; this is done with MATLABr .
In order to make the mathematical description of the particles’ motion understandable, the movements have been simulated by MATLABr . On this occasion a coloured
and clear visualization is created from the grey mathematical theory of equations,
an understanding of the single movements is easily achieved, and it is easier to get
an impression of what is described by mathematics.
Why has MATLABr been used for visualization? The answer lies in MATLABr ’s
internal work and provision of numerical methods. MATLABr uses matrices for
the calculations: it works internally with an 1 × 1 matrix for a scalar and uses
n × 1 or 1 × m matrices for vectors. In this way it is very simple to implement
the equations of motion in a very intuitive way by a 3 × 1 vector in which a single component represents a direction in the three-dimensional space. Furthermore,
MATLABr contains numeric methods based on FORTRAN 90 routines (e.g. LAPACK,
D02BGF and DIVPAG); therefore these methods are proven and reliable. Just a few
shall be mentioned here: the Runge-Kutta method of fourth order, the Runge-KuttaMerson algorithm and the Adams-Bashforth-Moulton method.
All these methods facilitate a very fast numerical calculation of the given equations
of motion, so it is possible to receive relatively exact results which agree with the
theory in the context of computed precision. The numerical results could never
totally agree with the analytical ones, but the visualization of the data amount
produced by numerical calculation enables us to gain a much deeper insight and an
intuitive understanding of the physics behind the formulae.
50
LITERATUR
Literatur
[1] H. Alfvén, Tentative Theory of Solar Prominences, Ark. Mat. Astron. Fys. 27A,
1 (1940).
[2] R. Ashino, M. Nagase, Rémi Vaillancourt, Behind and Beyond the MATLABr ODE Suite, The Centre de recherches mathématiques (CRM Université
de Montréal), CRM-2651 (2000).
[3] K. Betzler, Graphik-Workshop (Vorlesungsskript), Universität Osnabrück 2004.
[4] H.J. de Blank, T.J. Schep, Guiding center motion, 5th Carolus Magnus Summer
School, Bad Honnef, Germany, September (2001).
[5] P. Bogacki, L.F. Shampine, A 3(2) pair of Runge-Kutta formulas, Appl. Math.
Letters 2, 1 (1989).
[6] J.J. Buchholz, Systemsimulation (Vorlesungsskript), Hochschule Bremen 1999.
[7] F.F. Chen, Introduction to plasma physics and controlled fusion, Vol. 1, Plenum
Press, New York 1984.
[8] J.R. Dormand, P.J. Prince, A family of embedded Runge-Kutta formulae, J.
Comp. Appl. Math. 6, 19 (1980).
[9] O. Forster, Analysis 2, Differentialrechnung im Rn , gewöhnliche Differentialgleichungen, Vieweg Verlag, Braunschweig 1999.
[10] D. Goeken, O. Johnson, Fifth-order Runge-Kutta with higher order derivative
approximations; 15’th Annual Conference of Applied Mathematics, Electronic
Jounal of Diff. Eqau. Conf. 02, 1 (1999).
[11] V.E. Golant, Fundamentals of plasma physics, Wiley, New York 1980.
[12] HyperPhysics, (Link) http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/toroid.html, Georgia State University, Stand: 29. August 2004.
[13] M.-B. Kallenrode, Space Physics, Ed. II, Springer, Berlin 2001.
[14] M.-B. Kallenrode, Ausarbeitungen (Vorlesung Space Physics), Universität Osnabrück 2003.
[15] W.H. Kegel, Plasmaphysik, Eine Einführung, Springer, Berlin 1998.
[16] M.G. Kivelson, Introduction to space physics, Cambridge University Press,
Cambridge 1997.
[17] R. Knerr, Lexikon der Physik, vom Atom zum Universum, Bassermann Verl.,
München 2000.
[18] A. Kneschke, Differentialgleichungen und Randwertprobleme, VEB Verlag Technik, Berlin 1960.
51
LITERATUR
LITERATUR
[19] N.A. Krall, A.W. Trivelpiece, Principles of Plasma Physics, McGraw-Hill Inc.,
New York 1973.
[20] M.S. Longair, High energy astrophysics, Cambridge University Press, Cambridge 1992.
[21] P. Marchand, O.T. Holland, Graphics and GUIs with MATLABr Ed. III, Chapman & Hall/CRC, Boca Raton, 2003.
[22] J.H. Mathews, Numerical Methods, Prentice-Hall Inc., Englewood Cliffs 1992.
[23] A.I. Morozov, L.S. Solev’ev, Motion of charged particles in electromagnetic
fields, Rev. of Plasma Phys. Vol. 2, M.A. Leontorich (1966).
[24] K. Nishikawa, M. Wakatani, Plasma Physics, Ed. III, Springer, Berlin 2000.
[25] T.G. Northrop, The adiabatic motion of charged particles, Interscience, New
York 1963.
[26] M. Oelschlägel, MATHEMATIK Bd. 18: Numerische Methoden, BSB B.G.
Teubner Verlagsgesellschaft, Leipzig 1991.
[27] A. Piel, Einführung in die Plasmaphysik (Vorlseungsskript 1993-98), Universität Kiel 1999.
[28] J.C. Polking, MATLAB Manual for Ordinary Differential Equations, PrenticeHall Inc., Englewood Cliffs 1995.
[29] W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery, Numerical Recipes
in C, (E-Book), Cambridge University Press, Cambridge 2002.
[30] G.W. Prölss, Physik des erdnahen Weltraums, Springer, Berlin 2001.
[31] A. Quarteroni, F. Saleri, Scientific Computing with MATLAB, Springer, Berlin
2003.
[32] M.N. Saha, Ionization in the solar chromosphere, Phil. Mag. 40, 238 (1920).
[33] K. Schlegel. Joachim Woch, Forschungs-Info (Okt. 2001), Max-Planck-Institut
für Aeronomie, Max-Planck-Institut (2001).
[34] L.F. Shampine, M.W. Reichelt, The Matlab ODE Suite, SIAM J. Sci. Comput.
18.1, 1 (1997).
[35] L. Tonks, I. Langmuir, Oscillations in Ionized Gases, Phys. Rev. 33, 195 (1929).
[36] D.M. Willis, A.R. Gardiner, V.N. Davda, V.J. Bone, Planar charged-particle
trajectories in multipole magnetic fields, Ann. Geophysicae 15, 197 (1997).
[37] Wolfram Research, http://mathworld.wolfram.com/ToroidalCoordinates.html,
Wolfram Research Inc., Stand: 29. August 2004.
52
Formeln, Tabellen, Erläuterungen
A
Formeln, Tabellen, Erläuterungen
A.1
Maxwellsche Gleichungen
Die in dieser Arbeit betrachteten Felder unterliegen den Maxwellschen Gleichungen
1 ∂B
,
c ∂t
divB = 0 ,
1 ∂E 4π
rotB =
+
j,
c ∂t
c
divE = 4πρ .
rotE = −
(A.1)
(A.2)
(A.3)
(A.4)
Hierbei ist j die Stromdichte und ρ die Ladungsdichte. E und B lassen sich durch
ein Vektorpotential A und ein skalares Potential Φ darstellen, die zusammen einen
Vierervektor, das Viererpotential bilden
B = rotA
1 ∂A
− gradΦ .
E = −
c ∂t
A.2
(A.5)
(A.6)
Zeitkonstanten der Bewegungen in Weltraumplasmen
Teilchenart
Energie
Abstand
Periode Gyration
Periode Oszillation
Periode Drift
Protonen
0.6 eV 20 keV 20 MeV
3 RE
4 RE
1.3 RE
0.1 s
0.1 s
5 ms
2h
1 min
0.5 s
45 a
9h
2 min
Tabelle A.1: Vergleich der Gyration-, Oszillation- und Driftperioden (Quelle: [30])
Die Zeitkonstanten beziehen sich hierbei auf die innermagnetosphärischen Bedingungen, dieses kommt im Schalenparameter (Abstand der Feldlinie vom Erdmittelpunkt) zum Ausdruck. Um an dieser Stelle, die Betrachtungen nicht unnötig zu
verkomplizieren, wird an dieser Stelle der Abstand der Feldlinie direkt in Erdradien
(RE ≈ 6378 km) und somit von einer äquatorialen Sicht aus angegeben.
A.3
Erläuterung: MATLAB/MEX
MEX-Dateien sind von MATLABr aufrufbare C/C++ oder FORTRAN Subroutinen
die vom mex-Compiler unter Windows als DLL (Dynamic Link Libraries) erstellt
werden. Der Vorteil dieser Art der Umsetzung ist, dass man in MATLAB auf große
FORTRAN bzw. C/C++ Libraries zurückgreifen kann, ohne erneut einen MATLABr m-File zu generieren. Zur Realsisierung von MEX-Dateien ist im MATLABr System das Kommando mex vorgesehen. Dieses ist in der Lage, aus C oder C++
bzw. Fortran Code die DLL’s zu erstellen.
53
Ausgewählte Gleichungen
Eine sogenannte Gateway-Funktion mexFunction() stellt dabei die Verbindung zu
MATLABr her. Diese Funktion muss in jeder MEX-Datei enthalten sein. Die Usage”
Messages“ werden bei MATLABr als m-File in das zur DLL gehörige Verzeichnis
unter dem gleichen Namen wie die DLL gepackt. MATLABr zeigt beim Aufruf
help <name der DLL> selbstständig den m-File an, indem die Usage-Messages“
”
gespeichert ist. Die Gateway-Funktion einer MEX-Datei hat die folgende Signatur
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
Die vier Parameter beschreiben die Eingabe- und Ausgabeobjekte der MEX-Funktion
(left hand side, right hand side). Die Felder plhs und prhs enthalten Zeiger auf die
Objekte, nlhs und nrhs deren Anzahl. Mit der Funktion void getParameters(...)
lesen wir die Zeiger auf die Objekte aus und setzen die in unserem C-Code verwendeten Variablen auf die übergebenen Objekte bzw. auf die Standart Werte.
B
B.1
Ausgewählte Gleichungen
Saha Gleichung
Die Saha Gleichung [7, 32] gibt den Betrag der Ionisation eines Gases bei der Temperatur T im thermischen Gleichgewicht an:
ni
T 3/2 −Ui /κT
≈ 2.4 × 1021
e
nn
ni
(B.1)
mit ni , nn — Dichte von inosierten zu neutralen Atomen (Anzahl pro m3 ), T —
Temperatur des Gases in Kelvin, κ — Boltzmann Konstante und Ui — Ionisationsenergie des Gases. Die Ionsiationsenergie ist die Menge an Energie, die benötigt wird
um die äußeren Elektronen vom Kern zu separieren. In Abschnitt 2 wird erläutert,
dass der größte Teil der Materie im Weltraum sich im Plasmazustand befindet, also
in Form von dissozierten positiven Ionen und negativen Elektronen. In einer ersten
Näherung kann diese Sichtweise bestätigt werden, da das interstellare Medium, die
Gaswolken, sowie das Innere und die Atmosphäre einiger Planeten im Plasmazustand vorliegen. Schon wenn wir unsere eigene Atmosphäre verlassen, stellen wir
einen Anstieg der Plasmadichten fest, an dieser Stelle seien die Van-Allen Gürtel
sowie der Sonnenwind genannt. Die magnetischen Ausläufer dieses Plasmas und die
separierten Teilchen stellen die Grundlage dieser Arbeit dar.
B.2
Gyration verktoriell
In Abschnitt 2.2 wurde allgemein erläutert, wie eine Gyrationsbewegung in einem
kartesischen Koordinatensystem beschrieben werden kann und wie die Bewegungsgleichungen analytisch gelöst werden können. Hierbei stellt die Gyration eine der
elemantarsten Bewegungsarten von Teilchen in einem elektromagnetischen Feld dar.
Um mit der in Abschnitt 2.2 aufgezeigten Notation auch die Bewegung in anderen
54
Ausgewählte Gleichungen
B.3 Gradientendrift (ausführlich)
(a)
(b)
Abbildung B.1: Definition des Gyrationswinkels φ (a) und des Führungszentrums (b)
(Quelle: [4])
Feldern zu lösen, ist es manchmal nötig eine andere Beschreibung zu wählen. Hierzu
führt man eine Notation mit Hilfe des Führungszentrum-Ansatzes [4] ein.
Als Bezugssystem wählt man die drei Einheitsvektoren e1 , e2 und b, wobei b der Einheitsvektor in Richtung des Magnetfeldes ist. Somit erhält man ein mitrotierendes
Koordinatensystem (vgl. Abb. 1(a)), und es lässt sich schreiben
e⊥ (t) = e1 cos (φ) + e2 sin (φ)
erL (t) = e2 cos (φ) − e1 sin (φ)
mit φ = φ0 − ωrL t. Dieses ist in Abb. 1(b) dargestellt. Hierbei kann man die Position
~ die sich mit der Geschwinx eines Teilchens in eine Führungszentrumsposition R,
~ bewegt und den rotierenden Gyrationsradius Vektor ~rL zerlegen. Somit
digkeit vk B
erhält man
~ + ~rL
~x = R
m
~
~v⊥ × B
~rL = −
|q|B 2
~v⊥ = ~r˙ L .
(B.2)
(B.3)
(B.4)
Auch mit dieser Beschreibung ergibt sich im einfachen Fall des konstanten homogenen Magnetfeldes, für die Gyration eine Helixbahn um das Führungszentrum.
B.3
Gradientendrift (ausführlich)
Nachdem in Abschnitt B.2 den Ansatz des guiding centres“ eingeführt wurde, kann
”
man nun die Bewegung in inhomogenen Feldern beschreiben. Hier einem Magnetfeld, welches durch einen Gradienten in der Magnetfeldstärke vorgegeben ist. Man
nimmt an, dass der Gyrationsradius
rL = ~v⊥ /ωB klein gegenüber der Ausdehnung
~ ~
der Inhomogenität ist L = B
/ ∇B . Somit ist es möglich eine Gyration um das
Führungszentrum zu betrachten. Dannach lässt sich diese durch die Überlagerung
des Fortschreitens des Führungszentrums beschreiben. Zunächst bildet man die im
55
Ausgewählte Gleichungen
B.4 Simpson (Trapez-)Integration
Mittel einer Gyration auf das Teilchen wirkende Lorentzkraft, diese ist gegeben
durch (nach Abb. 2.7)
F̄y = −qvx Bz (y) ,
(B.5)
wobei Bz (y) jeweils das Magnetfeld am Ort des Teilchens ist, für eine weitere Beschreibung ist es sinnvoll, dieses mit Hilfe der Taylorentwicklung um einen Punkt
x0 , y0 = 0 (Ort des Führungszetrums für eine Kreisbahn) zu entwickeln. Es ergibt
sich für das Magnetfeld in z-Richtung (für den in Abb. 2.7 dargestellten Fall)
Bz = B0 + y (∂Bz /∂y) .
(B.6)
Mit dieser Entwicklung lässt sich im Mittel für die Lorentzkraft angeben;
∂B
F̄y = −qv⊥ (cos ωB t) B0 ± rL (cos ωB t)
.
∂y
(B.7)
Mit der Annäherung, rL /L ≪ 1 wird der erste Term im mittel einer Gyration Null,
desweitern wird cos2 ωB t zu 1/2, somit lässt sich schreiben
F̄y = ±qv⊥ rL
1 ∂B
.
2 ∂y
(B.8)
verwendet man diese Beziehung in (2.15), so ergibt sich für die Driftgeschwindigkeit
~vGD = ±
B.4
2
mv⊥
~ ×B
~.
∇B
2qB 3
(B.9)
Simpson (Trapez-)Integration
Die Simpson Integration ist ein Verfahren zur numerischen Berechnung von bestimmten Integralen
Zb
I = f (x) dx .
(B.10)
a
Grundlage der numerischen Intergration einer Funktion ist die Idee, die Funktion
durch ein Polynom zu nähern und dieses dann zu integrieren. Man wählt somit einen
Satz von k + 1 Stützstellen xi = 0, . . . , k, wertet die Funktion dort aus und legt
ein Polynom k-ten Gerades durch die Funktionswerte fi = f (xi ). Im allgemeinen
Fall verwendet man eine Lagrange-Interpolationsformel. Dazu bildet man hilfsweise
Polynome
Y x − xj
li (x) =
⇒ li (xj ) = δij
(B.11)
xi − xj
j(6=i)
und es lässt sich schreiben
f (x) ≈ pn (x) =
X
li (x)fi .
(B.12)
i
Dann kann man das Intgral durch
Zb
a
56
f (x) dx ≈
X
i
ωi fi
mit
ωi =
Zb
a
li (x) dx
(B.13)
Programme
ausdrücken. Beim Simpson Verfahren wählt man äquidistante Stützstellen mit der
Schrittweite h. Im einfachsten Fall einer linearen Interpolation (k = 1) zwischen den
Endpunkten des Intervalls, erhält man mit ω0 = ω1 = h/2 die Trapezregel
Zb
a
1
1
f (x) dx = h
f0 + f1 + O k 3
2
2
(B.14)
Wählt man k = 2, erhält man mit ω0 = ω2 = h/3 und ω1 = 4/3 h die Simpsonregel;
es lässt sich schreiben
Zb
a
1
4
1
f (x) dx = h
f0 + f1 + f2 + O h5 .
3
3
3
(B.15)
Das Ergebnis der Simpson Integration lässt sich dann in der Adams-Moulton Korrektur verwenden.
C
Programme
C.1
C-Programm: Runge-Kutta 4. Ordnung
Hier wird ein C-Programm dargestellt, welches dem Benutzer ermöglicht, das RungeKutta Verfahren zu testen. Hierbei müssen die Startwerte der n Differentialgleichungen eingegeben werden. Die Routine berechnet dann auf der gegebenen Funktion
derivs die Runge-Kutta Näherung (Quelle übersetzt/geändert: [29]).
void rk4(y,dydx,n,x,h,yout,derivs)
float y[],dydx[],x,h,yout[];
void (*derivs)();
int n;
/* n Variablen fuer y[1..n] und die Ableitungen dydx[1..n]*/
{
int i;
float xh,hh,h6,*dym,*dyt,*yt,*vector();
void free_vector();
dym = vector(1,n);
dyt = vector(1,n);
yt = vector(1,n);
hh = h*0.5;
h6 = h/6.0;
xh = x*hh;
for (i=1;i<=n;i++) yt[i]=y[i]+hh*dydx[i]; /* erster RK Schritt */
(*derivs)(xh,yt,dyt); /* zweiter RK Schritt */
for (i=1;i<=n;i++) yt[i]=y[i]+hh*dyt[i];
(*derivs)(xh,yt,dym); /* dritter RK Schritt */
for (i=1;i<=n;i++) {
yt[i]=y[i]+h*dym[i];
dym[i] += dyt[i];
}
(*derivs)(x+h,yt,dyt); /* vierter RK Schritt */
57
C.2 MATLAB: Runge-Kutta 4. Ordnung
Programme
/* Berechnung der Summe */
for (i=1;i<=n;i++) yout[i] = y[i]+h6*(dydx[i]+dydt[i]+2.0*dym[i])
free_vector(yt,1,n);
free_vector(dyt,1,n);
free_vector(dym,1,n);
}
C.2
MATLAB: Runge-Kutta 4. Ordnung
In Analogie zu Abschnitt C.1 lässt sich das Runge-Kutta Verfahren in MATLABr implementieren (siehe CD rk4.m). Dieses Programm dient dazu, die numerischen Prozesse zu verstehen, welche hinter diesem Verfahren stecken. Dabei ist dieses Programm nicht in Vergleich zu setzen, mit dem in MATLABr integrierten ODE Sol”
vern“, da diese sehr stark optimiert sind (siehe R. Ashino [2]).
function xout = rk4(x,t,tau,derivsRK,param)
% Runge-Kutta Verfahren 4. Ordnung
% x = Wert der abhaengigen Variablen
% t = unabhaengige Variable (meistens Zeit)
% tau = Schrittweite
% derivsRK = function die den dx/dt Wert zurueckliefert
% param = Parameter welche an derivsRK uebergeben werden koennen
%
% xout = Ausgabe
half_tau = 0.5*tau;
k1 = feval(derivsRK,x,t,param);
t_half = t + half_tau;
xtemp = x + half_tau+k1;
k2 = feval(derivsRK,xtemp,t_half,param);
xtemp = x + half_tau*k2;
k3 = feval(derivsRK,xtemp,t_half,param);
t_full = t + tau;
xtemp = x + tau*k3
k4 = feval(derivsRK,xtemp,t_full,param);
xout = x + tau/6.*(k1+k4+2*(k2+k3));
return
C.3
Runge-Kutta-Merson Algorithmus
Der Runge-Kutta-Merson Algorithmus ist ein Verfahren, dass auf einer Mischung
aus einem Runge-Kutta vierter Ordnung und einem fünfter Ordnung beruht. Somit
ist es möglich gleich in einem Schritt eine Aussage über den Fehler zu erhalten und
auf diese Weise die Schrittweite anzupassen. Hierzu geht dieser Algorithmis analog
zu jedem Runge-Kutta Verfahren vor. Man geht von der Gleichung dy/dx = f mit
y (xn ) = yn aus. Nun macht man folgende Entwicklungsschritte
k1 = hf ′ (xn , yn )
k1
h
′
k2 = hf xn + , yn +
3
3
58
C.4 Prädiktor-Korrektur Methode
k3
k4
k5
Programme
h
1
= hf xn + , yn + (k1 + k2 )
3
6
1
h
′
= hf xn + , yn + (k1 + 3k3 )
2
8
1
′
= hf xn + h , yn + (k1 − 3k3 + 4k4 )
2
′
und erhält für yn+1 = yn + 16 (k1 + 4k4 + k5 ). Diese Annäherung ist von der gleichen
Fehlergrößenordnung wie das Runge-Kutta Verfahren vierter Ordnung aber erlaubt
gleichzeitig eine Abschätzung über den gemachten lokalen Fehler, hierbei gilt
1
9
1
e=
k1 − k3 + 4k4 − k5 .
(C.1)
15
2
2
Mit dieser Fehlervoraussage ist es möglich eine adaptive Schrittweitensteuerung zu
machen. Hierbei muss nur die Fehlerschranke festgelegt werden. Arbeitet man mit
einer festen Fehlerschranke, die in den Numerikprogrammen durch die Toleranz vorgegeben wird, dann arbeiten die Programme in den meisten Fällen mit der step
”
doubling“-Methode.
C.4
Prädiktor-Korrektur Methode
Die in Abschnitt 3.3.4 vorgestellte Methode um mittels eines Prädiktionswertes
und anschliessender Korrektur den nächsten Zustand verherzusagen, lässt sich in
MATLABr durch die folgenden Funktionen implementieren. Hierbei hat man mehrer Prädiktor- und Korrektorfunktionen zur Auswahl. Je nach Problem müssen diese
angepasst werden, an dieser Stelle seien nur kurz das Euler-Verfahren, das CrankNicolson Verfahren und die Simpson Integration (als weitere Möglichkeit der Korrektur) vorgestellt.
C.4.1
MATLAB: Prädiktor-Korrektur
Eine allgemeine Form der Prädiktor-Korrektur Methode lässt sich wie folgt in MATLAB implementieren (siehe CD predcor.m).
function [xout,yout] = predcorr(odefun,xspan,y0,M,pred,corr,varagin)
% PREDCORR loest eine gegebene ODE mittels der Praediktor-Korrektur
%
Methode, wobei x=[x0 xend] das Intervall ist, ueber der
%
die ODE geloest werden soll. y0 ist dabei der Startwert,
%
M ist die Anzahl der aequidistanten Schrittweiten zur
%
Berechnung. Die Funktion ODEFUN(X,Y) liefert dabei nach
%
y’=f(x,y) die Werte fuer f(x,y). Pred und corr sind die
%
verwendeten Praediktor und Korrektor Methoden, diesen werden
%
die zusaetzlichen Parameter P1, P2,... uebergeben.
H=(xspan(2)-yspan(1))/M; xx=[tspan(1):H:tspan(2)];
u=y0; [n,m]=size(u); if n~=m, u=u’; end
for x = xx(1:end-1)
y = u(:,end); fn = feval(odefun,x,y,varargin{:});
upre = feval(pred,x,y,H,fn);
59
C.5 Velocity-Verlet Algorithmus
Programme
ucor = feval(corr,x+H,y,upre,H,odefun,fn,varargin{:});
yout = [u,ucor];
end;
xout = xx;
return
Die Funktion implementiert eine allgemeine Prädiktor-Korrektor Methode. Hierbei
repräsentieren die Strings pred und corr die zu verwendenden Prädiktor und Korrektor Methoden. So lässt sich diese Methode zum Beispiel mit einer Euler Methode
als Prädiktor und einer Crank-Nicolson Methode als Korrektor aufrufen, der Aufruf
lautet dann
[x,y] = predcorr(fun,xspan,y0,N,’eulerstep’,’cnstep’);
Hierbei sind die gewählten Verfahren mit den folgenden Zeilen zu implementieren
(Euler)
function [y] = eulerstep(x,y0,h,fun)
y = y0 + h*fun;
return
bzw. Crank-Nicolson
function [y] = cnstep(x,y,y0,h,fun,funn,varargin)
y = y + 0.5*h*(feval(fun,x,y,varargin{:})+funn)
return
C.4.2
MATLAB: Simpson
Die Simpson Integration (siehe Anhang B.4) lässt sich in MATLABr wie folgt kurz
implementieren (siehe CD simpson.m).
function [out] = simpson(a,b,M,fun,varargin)
% SIMPSON berechnet nach der Simpsonregel das Integral einer
%
gegebenen Funktion fun ueber dem Intervall [a,b] und
%
teilt dieses Intervall in M aequidistante Abschnitte ein.
H=(b-a)/M;
x=linspace(a,b,M+1);
fpm=feval(fun,x,,varargin{:});
fpm(2:end-1)=2*fpm(2:end-1);
out=H*sum(fpm)/6;
x=linspace(a+H/2,b-H/2,M);
fpm=feval(fun,x,,varargin{:});
out = out + 2*H*sum(fpm)/3;
return
C.5
Velocity-Verlet Algorithmus
Ein weiterer ODE-Solver“ ist der sogenannte Velocity-Verlet Algorithmus. Dieser
”
Algorithmus ist durch ein Paar von Gleichungen gegeben
xn+1 = xn + hxn +
60
h2
F (xn )
2m
(C.2)
MATLAB
und
h
[F (xn+1 ) + F (xn )]
(C.3)
2m
wobei x die Koordinate und ẋ die Geschwindikeit, m die Masse und F (x) die Kraft,
welche auf die Masse m am Punkt x wirkt.
ẋn+1 = ẋn +
Im ersten Anschein sieht diese Methode wie eine Prädiktormethode aus, weil hier
der Term xn+1 auftaucht. Dieser wird aber nicht wie bei den Prädiktor Methoden
approximativ bestimmt sondern in Gleichung (C.2) zunächst bestimmt bevor er in
Gleichung (C.3) verwendet wird.
Der Vorteil dieses Algorithmusses liegt darin, dass er über lange Zeiträume integrieren kann, ohne das der Fehler zu groß wird.
D
MATLAB
In diesem Abschnitt sind die MATLABr Dateien abgedruckt. Die Programme sowie
die HTML-Dokumentation befinden sich auf der beigefügten CD-Rom.
D.1
particles
function varargout = particles(varargin)
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
BEGIN HEAD (nicht aendern)
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
Initialisierung des GUI und der mit ihm verbundenen Callbacks
gui_Singleton = 1;
gui_State = struct(’gui_Name’,
mfilename, ...
’gui_Singleton’, gui_Singleton, ...
’gui_OpeningFcn’, @particles_OpeningFcn, ...
’gui_OutputFcn’, @particles_OutputFcn, ...
’gui_LayoutFcn’, [] , ...
’gui_Callback’, []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% Hier werden Einstellungen getroffen, bevor das GUI sichtbar wird
function particles_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
% Anzeige des Titelbildes und des Logos durch Axis-Objekte
axes(handles.logo)
[a,map]=imread(’logo.png’); image(a); colormap(map); axis equal, axis off
axes(handles.plot_axis)
[a,map]=imread(’title.png’); image(a); colormap(map); axis equal, axis off
function varargout = particles_OutputFcn(hObject, eventdata, handles)
61
D.1 particles
MATLAB
varargout{1} = handles.output;
function figure1_CreateFcn(hObject, eventdata, handles)
handles.figure1=hObject;
guidata(hObject, handles);
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
ENDE HEAD (nicht aendern)
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Patrick Daum, University of Osnabrueck
%
% (C) Version 1.0, 30-August-2004.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARTICLES ist ein GUI zur VISUALISIERUNG der Bewegung geladener Teilchen
% in elektromagnetischen Feldern, es ist enstanden im Rahmen einer
% Bachelor-Arbeit
% globale Variablen fuer die Bewegungen
global ode;
global bFieldTyp bfieldstrength;
global eFieldTyp efieldstrength;
global nLarmor;
global charge; % Ladung
%
%
%
%
global xposv yposv zposv
global velx vely velz
% Werte fuer die Position
% Werte fuer die Geschwindigkeit
ODE Funktion
Variablen fuers B-Feld
Variablen fuers E-Feld
Anzahl der Larmorradien
% Initialisierung der globalen Variablen der Bewegungen
ode = ’eqMotion’;
bFieldTyp=1; bfieldstrength=1;
eFieldTyp=1; efieldstrength=0.2;
nLarmor=10;
charge=1;
xposv=1; yposv=0; zposv=0;
velx=4; vely=4; velz=4;
% allgemeine globale Variablen fuer die Steuerung des GUI’s
global dimview solvername reTol aTol helpfile
% Initialisierung der globalen Variablen zur Steuerung
dimview=’odephas3’;
% Standardwert ist 3D, hierbei
% werden die integrierten
% Draw-Mechanismen von MATLAB
% verwendet, fuer eine
% Aenderung laesst sich
% mittels type die funktion
% odephas3 betrachten
solvername=’ode45’;
reTol = 1.e-3;
aTol = 1.e-10;
helpfile =’particles.html’;
% Standardwert ist RK4(5)
% Toleranzwerte
% Online Dokumentation, diese
% kann in weiteren Versionen
% geaendert werden
% ----------------------------------------------------------------------------%
PARAMETER
62
D.1 particles
MATLAB
% ----------------------------------------------------------------------------% Funktion um die Notation in MATLAB zu unterstuetzen (TRUE falls alles
% richtig, ansonsten FALSE)
function syn = matlabsyn(value)
syn=1;
% TRUE Wert
test= size(str2num(value));
if (test(2)>=2 | test(2)==0)
label=’Fehler bei Eingabe eines Wertes; .-Notation verwenden, keine Charakter
Zeichen’;
msgbox(label,’SYNTAX FEHLER’,’error’);
syn=0;
% FALSE Wert
end;
% Funktion fuer exklusive Radiobuttons
function mutual_exclude(off)
set(off,’Value’,0)
% Wert der einzelnen Buttons, dadurch wird die Ladung gesetzt
function qCharge=charge_value(handles)
if (get(handles.elecbutton,’Value’)==1)
qCharge = (-1);
else
qCharge = (1);
end;
% ==================== RADIOBUTTON (ELEKTRON) =================================
function elecbutton_Callback(hObject, eventdata, handles)
% erzeugt einen exklusiven Radiobutton, schaltet alle weiteren Buttons
% aus
off = [handles.protonbutton];
mutual_exclude(off);
% ==================== RADIOBUTTON ENDE========================================
% ==================== RADIOBUTTON (PROTON) ===================================
function protonbutton_Callback(hObject, eventdata, handles)
% erzeugt einen exklusiven Radiobutton, schaltet alle weiteren Buttons
% aus
off = [handles.elecbutton];
mutual_exclude(off)
% ==================== RADIOBUTTON ENDE========================================
% ==================== POSITIONEN =============================================
% x-Position des Teilchens (Erzeugung/Auswertung) ----------------------------function xpos_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
% je nach Version bzw. THREAD Handling in MATLAB kann es dazu kommen, dass
% nicht alle Objekte im handles Vektor aufgefuehrt werden, um dieses
% abzufangen, wird dem handles Vektor jeweils das entsprechende handle bei
% seiner Erzeugung uebergeben
handles.magnpop=hObject;
guidata(hObject, handles);
function xpos_Callback(hObject, eventdata, handles)
63
D.1 particles
MATLAB
global xposv
if matlabsyn(get(hObject,’String’))
xposv=str2double(get(hObject,’String’));
else
set(hObject,’String’,num2str(xposv));
end;
% y-Position des Teilchens (Erzeugung/Auswertung) ----------------------------function ypos_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function ypos_Callback(hObject, eventdata, handles)
global yposv
if matlabsyn(get(hObject,’String’))
yposv=str2double(get(hObject,’String’));
else
set(hObject,’String’,num2str(yposv));
end;
% z-Position des Teilchens (Erzeugung/Auswertung) ----------------------------function zpos_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function zpos_Callback(hObject, eventdata, handles)
global zposv
if matlabsyn(get(hObject,’String’))
zposv=str2double(get(hObject,’String’));
else
set(hObject,’String’,num2str(zposv));
end;
% ==================== POSITIONEN ENDE ========================================
% ==================== GESCHWINDIGKEITEN ======================================
% x-Komponente der Geschwindigkeit (Erzeugug/Auswertung) ---------------------function xvel_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function xvel_Callback(hObject, eventdata, handles)
global velx
if matlabsyn(get(hObject,’String’))
64
D.1 particles
MATLAB
velx=str2double(get(hObject,’String’));
else
set(hObject,’String’,num2str(velx));
end;
% y-Komponente der Geschwindigkeit (Erzeugug/Auswertung) ---------------------function yvel_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function yvel_Callback(hObject, eventdata, handles)
global vely
if matlabsyn(get(hObject,’String’))
vely=str2double(get(hObject,’String’));
else
set(hObject,’String’,num2str(vely));
end;
% z-Komponente der Geschwindigkeit (Erzeugug/Auswertung) ---------------------function zvel_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function zvel_Callback(hObject, eventdata, handles)
global velz
if matlabsyn(get(hObject,’String’))
velz=str2double(get(hObject,’String’));
else
set(hObject,’String’,num2str(velz));
end;
% ==================== GESCHWINDIGKEITEN ENDE =================================
% ==================== ITERATIONEN ============================================
% diese Funktionen setzten den Wert der Larmorradien
function currentiterations_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function currentiterations_Callback(hObject, eventdata, handles)
global nLarmor
% Syntax abfangen
if matlabsyn(get(hObject,’String’))
65
D.1 particles
MATLAB
value =str2double(get(hObject,’String’));
else
value=set(hObject,’String’,num2str(nLarmor));
end;
% Randwertfehler abfangen
if (value<=0)
msgbox(’Der Wert fuer die Iterationen muss mindestens 1 betragen’,’ERROR’,
’error’);
set(hObject,’String’,’1’);
end;
nLarmor=str2double(get(hObject,’String’));
% ==================== ITERATIONEN ENDE =======================================
% ==================== MAGN POPUP =============================================
function magnpop_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
% die einzelnen Eintragungen werden gesetzt
btypes={’B = 0’,
’Bz’,
’d Bz/dy’,
’d Bz/dz cusp’,
’B toroidal’,
’B tokamak’,
’B dipole’,
’user defined’};
set(hObject,’String’,btypes);
function magnpop_Callback(hObject, eventdata, handles)
global bFieldTyp
% Typ des Feldes bestimmen, dabei stehen die Zahlen fuer die einzelnen
% Felder:1=B0, 2=Bz, 3=d Bz/dy, 4=d Bz/dz Cusp, 5=B toroidal, 6=B tokamak
% 7=B dipole, 8=user defined, 9=error
bFieldTyp=get(hObject,’Value’);
if (bFieldTyp==8) msgbox(’Vorher in eqMotion.m definieren’,’HINWEIS’,’help’);
end;
if (bFieldTyp==9) msgbox(’Diese Konfiguration existiert nicht’,’ERROR’,’error’);
end;
% ==================== MAGN POPUP ENDE ========================================
% ==================== MAGN STRENGTH ==========================================
function bstrength_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.bstrength=hObject;
guidata(hObject, handles);
66
D.1 particles
MATLAB
function bstrength_Callback(hObject, eventdata, handles)
global bfieldstrength;
% Randwertfehler abfangen
value =str2double(get(hObject,’String’));
if (value<0)
msgbox(’Die Staerke darf nicht kleiner Null sein’,’ERROR’,’error’);
set(hObject,’String’,’1’);
end;
% Staerke auslesen und den Wert der Magnetfeldstaerke setzen
bfieldstrength=str2double(get(hObject,’String’));
% ==================== MAGN STRENGTH ENDE =====================================
% ==================== ELEK POPUP =============================================
function epop_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.epop=hObject;
guidata(hObject, handles);
% die einzelnen Eintragungen werden gesetzt
etypes={’E = 0’,
’Ex’,
’Ez’,
’d Ey/dt’,
’user defined’};
set(hObject, ’String’,etypes);
function epop_Callback(hObject, eventdata, handles)
global eFieldTyp;
% Typ des Feldes bestimmen, dabei stehen die Zahlen fuer die einzelnen
% Felder:1=E0, 2=Ex, 3=Ez, 4=d Ey/dt 5=user defined, 6=error
eFieldTyp=get(hObject,’Value’);
if (eFieldTyp==5) msgbox(’Vorher in eqMotion.m definieren’,’HINWEIS’,’help’);
end;
if (eFieldTyp==6) msgbox(’Diese Konfiguration existiert nicht’,’ERROR’,’error’);
end;
% ==================== ELEK POPUP ENDE ========================================
% ==================== ELEK STRENGTH ==========================================
function estrength_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.epop=hObject;
guidata(hObject, handles);
function estrength_Callback(hObject, eventdata, handles)
global efieldstrength
% Randwertfehler abfangen
value =str2double(get(hObject,’String’));
if (value<0)
msgbox(’Die Staerke darf nicht kleiner Null sein’,’ERROR’,’error’);
67
D.1 particles
MATLAB
set(hObject,’String’,’1’);
end;
% Staerke auslesen und den Wert der elek. Feldstaerke setzen
efieldstrength=str2double(get(hObject,’String’));
% ==================== ELEK STRENGTH ENDE =====================================
% ==================== VIEW POPUP =============================================
function viewmenue_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.epop=hObject;
guidata(hObject, handles);
function viewmenue_Callback(hObject, eventdata, handles)
global dimview
% setzen der Ansichtsvariablen
switch num2str(get(hObject,’Value’))
case ’1’
% 3D
dimview = ’odephas3’;
case ’2’
% 2D
dimview = ’odephas2’;
otherwise
% Fehler anfangen falls falsches handle angepackt
msgbox(’Diese Konfiguration existiert nicht’,’ERROR’,’error’);
end
% ==================== VIEW POPUP ENDE ========================================
% ----------------------------------------------------------------------------%
BUTTONS
% ----------------------------------------------------------------------------% ==================== START Button ===========================================
function start_Callback(hObject, eventdata, handles)
global reTol aTol solvername charge
charge = charge_value(handles);
hold off;
drawTraj;
rotate3d on;
hold on;
% ==================== STOP Button ===========================================
function stop_Callback(hObject, eventdata, handles)
% stoppt den Plot ueber die Funktion des odeset OutputFcn
ud=get(gcf,’UserData’);
ud.stop=1;
set(gcf,’UserData’,ud);;
% ==================== ADD Button ============================================
function add_Callback(hObject, eventdata, handles)
global reTol aTol solvername charge dimview
% neuen Wert fuer die Ladung holen
charge = charge_value(handles);
% neue Trajektorie plotten
drawTraj;
% DIRTY TRICK !!!! basiert auf einem Skalierungsfehler in odephas3
68
D.1 particles
MATLAB
% daher ist es noetig das Axis Objekt zu drehen und einen refresh zu machen
% um die neue Skalierung zu bekommen
if dimview==’odephas3’
rot = [1 0 0];
else
rot = [1 0];
end;
% durch die Drehung werden die Skalierungen und das Aspect-Ratio besser
% gesetzt
rotate(handles.plot_axis,rot,1);
refresh;
rotate3d on;
view(30,10);
% ==================== CLEAR Button ===========================================
function clear_Callback(hObject, eventdata, handles)
axes(handles.plot_axis)
cla;
% ==================== SOLVER Button ==========================================
function solverbutton_Callback(hObject, eventdata, handles)
% ruft den Solver Controller auf
solvercontrol;
% ==================== HELP Button ============================================
function helpbutton_Callback(hObject, eventdata, handles)
global helpfile
% Zunaechst muss ueberprueft werden ob die Hilfe Datei zur Verfuegung steht
if (exist(helpfile)==0)
msgbox(’Die Online Dokumentation kann nicht gefunden werden’,’ERROR’,’error’);
else
% kann die Online Dokumentation aufgerufen werden
HelpPath = which(helpfile);
web(HelpPath);
end;
% ==================== CLOSE Button ===========================================
function close_Callback(hObject, eventdata, handles)
% schliesst das komplette figure des GUI’s
close(gcf);
disp(’DANKE das Sie mit particles gearbeitet haben !’)
% ----------------------------------------------------------------------------%
MENUEBAR
% ----------------------------------------------------------------------------% ==================== DATEI MENUE ============================================
function datei_Callback(hObject, eventdata, handles)
% ==================== FIGNEW EINTRAG ========================================
function fignew_Callback(hObject, eventdata, handles)
% Dieser Menuepunkt ermoeglicht es die Simulation in einem eigenen
% Figure-Objekt abzuspielen, damit man dieses dann mit den Optionen der in
% MATLAB integrierten FIGURE TOOLBox bearbeiten kann
figure % neues Figure wird erzeugt
% Simulation mit den Parametern wird in einem eigenen Figure Objekt erzeugt
start_Callback(hObject, eventdata, handles);
69
D.2 eqMotion
MATLAB
% ==================== TAKEOVER EINTRAG ======================================
function takeover_Callback(hObject, eventdata, handles)
% neues Figure erzeugen
figure
% Das Axis Objekt aus dem GUI kopieren, da
help=copyobj(handles.plot_axis,gcf);
% da beim Kopieren die Position innerhalb des GUI’s uebernommen wird,
% muessen die Positionen neu gesetzt werden
set(help,’Position’,[18
5
80
25])
rotate3d on;
% ==================== HILFE MENUE ============================================
function help_Callback(hObject, eventdata, handles)
% ==================== HILFE EINTRAG ==========================================
function prog_help_Callback(hObject, eventdata, handles)
% gleiche Funktion wie der im GUI implementierte HELP-Button
helpbutton_Callback(hObject, eventdata, handles)
% ==================== HILFE EINTRAG ==========================================
function info_Callback(hObject, eventdata, handles)
information;
% ----------------------------------------------------------------------------%
VISUALISIERUNG
% ----------------------------------------------------------------------------function out = drawTraj;
global ode dimview solvername reTol aTol
%figNumber = watchon;
%h = get(figNumber,’Children’);
rotate3d on;
%watchoff(figNumber);
% !!!!!!!!!!!!!!!!!!!!! ODE STEUERUNG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[tspan,y0,options] = feval(ode,[],[],’init’);
options = odeset(options,’RelTol’,reTol,’AbsTol’,aTol,’OutputFcn’,dimview);
feval(solvername,ode,tspan,y0,options);
xlabel(’x’); ylabel(’y’); zlabel(’z’);
% !!!!!!!!!!!!!!!!!!!!!!!!! ENDE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
D.2
eqMotion
function varargout = eqMotion(t,v,flag)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Patrick Daum, University of Osnabrueck
%
% (C) Version 1.0, 30-August-2004.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global mass B0 E0 R0 m0 velscala
% globale
mass
=
R0
=
m0
=
vordefinierte Variablen, diese sind in relativen Einheiten angegeben
1;
% relativ zu einer Protonenmasse
1;
% relativ zu einem Erdradius
1;
% relativ zum Dipolmoment der Erde
velscala = 1.e-2;
70
% relativ Skalierung der Geschwin-
D.2 eqMotion
MATLAB
% digkeit kann bei Aenderung der
% relativen Einheiten auf 1
% gesetzt werden
% diese Variablen werden an dieser Stelle nur fuer eventuelle Erweiterungen
% bzw. Anwendungen auf spezielle Felder eingefuehrt, durch die einzelne
% Feldstaerke, die im GUI eingegeben wird kann die Staerke der Felder direkt
% gesteuert werden
B0
= 1;
E0
= 1;
% globale Variablen
global ode
global bFieldTyp bfieldstrength
global eFieldTyp efieldstrength
global nLarmor
%
%
%
%
ODE Funktion
Variablen fuers B-Feld
Variablen fuers E-Feld
Anzahl der Larmorradien
% Kontroll-Funktion des initialisierenden Aufrufs
switch flag
case ’’
% liefert dv/dt = f(t,v) zurueck
varargout{1} = f(t,v);
case ’init’
% liefert [tspan,y0,options] zurueck
[varargout{1:3}] = init;
otherwise
error([’Unknown flag ’’’ flag ’’’.’]);
end
function dydt = f(t,v)
% ===== Bewegungsgleichung =================================================
% setzen der Globalen Variablen
global ode
global bFieldTyp bfieldstrength
global eFieldTyp efieldstrength
global charge mass B0 E0 R0 m0 q
%
[E,B] = feval(’EandB’,v(1),v(2),v(3),t);
% Hier ist die Newton’sche Bewegungsgleichung in vektorieller Form
% dargestellt; die Positionen v(1:3,:) stellen die Position des Teilchens und
% v(4:6,:) die Geschwindigkeit des Teilchens dar
dydt = [ v(4,:)
v(5,:)
v(6,:)
charge/mass*( E(1) +(v(5,:).*B(3) -v(6,:).*B(2)) )
charge/mass*( E(2) +(v(6,:).*B(1) -v(4,:).*B(3)) )
charge/mass*( E(3) +(v(4,:).*B(2) -v(5,:).*B(1)) )
];
% Diese Funktion stellt die einzelnen Feldstrukturen zusammen
function [E,B] = EandB(x,y,z,t)
global charge mass B0 E0 R0 m0
global bFieldTyp bfieldstrength
global eFieldTyp efieldstrength
% B-FELD: Definition der einzelnen Feldstrukturen
switch num2str(bFieldTyp)
71
D.2 eqMotion
MATLAB
case ’1’
% B=0
B = B0*[ 0 0 0 ];
case ’2’
% Bz
B = B0*[ 0 0 bfieldstrength ];
case ’3’
% dBz/dy
B = B0*[ 0 0 1+bfieldstrength*y ];
case ’4’
% dBz/dz cusp
B = B0*[ -0.5*x (-1)*bfieldstrength*y bfieldstrength*z];
case ’5’
% B toroidal
% Verwendung von Toroidal Koordinaten
R = sqrt(x^2 +y^2 + 1.e-10); cosphi = x/R; sinphi = y/R;
B = B0*(R0/R)*[ -sinphi
cosphi
0 ]*bfieldstrength;
case ’6’
% B tokamak
% Verwendung von Toroidal Koordinaten
R = sqrt(x^2 +y^2 + 1.e-10); cosphi = x/R; sinphi = y/R;
rho = sqrt((R-R0)^2 + z^2+1.e-10); sint = -z/rho; cost = (R-R0)/rho;
Bt = B0 * (R0/R)*[-sinphi cosphi
0];
Bp = B0 *(rho/R)*[-cosphi*sint
-sinphi*sint
-cost ];
B = Bt +Bp/q;
case ’7’
% B dipole
r2 = x^2 +y^2 +z^2;
B = m0*r2^(-2.5)*[ 3*x*z 3*y*z 3*z^2-r2]*bfieldstrength;
case ’8’
% user defined
%
% ==> Hier kann ein beliebiges Vektorfeld eingefuegt werden
%
otherwise
% Hier wird der Fehler, der schon im GUI abgefangen wird nochmals zur
% Sicherheit ueberprueft
msgbox(’Diese Konfiguration existiert nicht’,’ERROR’,’error’);
end
Btot = norm(B); OmegaC=charge/mass*norm(B);
% E-FELD: Definition der einzelnen Feldstrukturen
switch num2str(eFieldTyp)
case ’1’
% E=0
E = E0*[ 0 0 0 ];
case ’2’
% Ex
E = E0*[ efieldstrength 0 0 ];
case ’3’
% Ez
E = E0*[ 0 0 efieldstrength ];
case ’4’
% dEy/dt
E = E0*[ 0 t*charge/mass*Btot 0]*efieldstrength;
case ’5’
% user defined
%
% ==> Hier kann ein beliebiges Vektorfeld eingefuegt werden
%
otherwise
% Hier wird der Fehler, der schon im GUI abgefangen wird nochmals zur
% Sicherheit ueberprueft
msgbox(’Diese Konfiguration existiert nicht’,’ERROR’,’error’);
end
% diese Funktion setzt die initialisierenden Werte fuer die Berechnung
function [tspan,y0,options] = init
global charge mass B0 E0 R0 m0 nLarmor velscala
global xposv yposv zposv velx vely velz
72
D.3 solvercontrol
OmegaC0 = charge/mass*B0;
tspan = [0 nLarmor*OmegaC0*(2*pi)];
y0 = [
xposv
yposv
zposv
velx*velscala
vely*velscala
velz*velscala
];
options = odeset(’Vectorized’,’on’);
D.3
MATLAB
%
%
%
%
%
%
%
%
%
Gyrationsfrequenz
Zeit ueber die entwickelt werden soll
Startkoordinaten und Geschwindigkeiten
x
y
z
vx
vy
vz
solvercontrol
function varargout = solvercontrol(varargin)
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
BEGIN HEAD (nicht aendern)
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
Initialisierung des GUI und der mit ihm verbundenen Callbacks
gui_Singleton = 1;
gui_State = struct(’gui_Name’,
mfilename, ...
’gui_Singleton’, gui_Singleton, ...
’gui_OpeningFcn’, @solvercontrol_OpeningFcn, ...
’gui_OutputFcn’, @solvercontrol_OutputFcn, ...
’gui_LayoutFcn’, [] , ...
’gui_Callback’, []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
ENDE HEAD (nicht aendern)
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Patrick Daum, University of Osnabrueck
%
% (C) Version 1.0, 30-August-2004.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SOLVERCONTROL steuert die einzelnen Optionen, die den ODE Solvern uebergeben
% werden koennen
% globale Variablen definieren
global default_aTol default_reTol
% Initialisierung der globalen Variablen, diese kommen zwar in particles.m schon
% vor, sind aber hier zur Absicherung nochmals als eigene Default Werte
% deklariert, des weiteren dienen diese als Eintragsstring
default_aTol = ’1.e-10’;
default_reTol = ’1.e-3’;
function solvercontrol_OpeningFcn(hObject, eventdata, handles, varargin)
73
D.3 solvercontrol
MATLAB
global aTol reTol solvername
handles.output = hObject;
guidata(hObject, handles);
% setzen der momentan vorhandenen Parameter
set(handles.abs_tol,’String’,num2str(aTol));
set(handles.rel_tol,’String’,num2str(reTol));
switch solvername
case ’ode45’
% zunaechst werden die anderen Radiobuttons ausgeschaltet
ode45_Callback(hObject, eventdata, handles);
% setzen des Default ODE-Solvers
set(handles.ode45,’Value’,1);
case ’ode23’
% zunaechst werden die anderen Radiobuttons ausgeschaltet
ode23_Callback(hObject, eventdata, handles);
% setzen des Default ODE-Solvers
set(handles.ode23,’Value’,1);
case ’ode113’
% zunaechst werden die anderen Radiobuttons ausgeschaltet
ode113_Callback(hObject, eventdata, handles);
% setzen des Default ODE-Solvers
set(handles.ode113,’Value’,1);
case ’ode15s’
% zunaechst werden die anderen Radiobuttons ausgeschaltet
ode15s_Callback(hObject, eventdata, handles);
% setzen des Default ODE-Solvers
set(handles.ode15s,’Value’,1);
otherwise
% Sicherheitsueberpruefung
msgbox(’Diese Konfiguration existiert nicht’,’ERROR’,’error’);
end;
function varargout = solvercontrol_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% ----------------------------------------------------------------------------%
PARAMETER
% ----------------------------------------------------------------------------% Funktion fuer exklusive Radiobuttons
function mutual_exclude(off)
set(off,’Value’,0)
% ==================== RADIOBUTTON (ODE45) ====================================
function ode45_Callback(hObject, eventdata, handles)
off = [handles.ode23,handles.ode113,handles.ode15s];
mutual_exclude(off)
% ==================== RADIOBUTTON (ODE45) ENDE ===============================
% ==================== RADIOBUTTON (ODE23) ====================================
function ode23_Callback(hObject, eventdata, handles)
off = [handles.ode45,handles.ode113,handles.ode15s];
mutual_exclude(off)
% ==================== RADIOBUTTON (ODE23) ENDE ===============================
% ==================== RADIOBUTTON (ODE113) ===================================
function ode113_Callback(hObject, eventdata, handles)
74
D.3 solvercontrol
MATLAB
off = [handles.ode45,handles.ode23,handles.ode15s];
mutual_exclude(off)
% ==================== RADIOBUTTON (ODE113) ENDE ==============================
% ==================== RADIOBUTTON (ODE15s) ===================================
function ode15s_Callback(hObject, eventdata, handles)
off = [handles.ode45,handles.ode23,handles.ode113];
mutual_exclude(off)
% ==================== RADIOBUTTON (ODE15s) ENDE ==============================
% ==================== TOLERANZEN =============================================
% absolute Toleranz ----------------------------------------------------------function abs_tol_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function abs_tol_Callback(hObject, eventdata, handles)
global default_aTol
% Randwertfehler abfangen
value =str2double(get(hObject,’String’));
if (value<0 | isnan(value))
msgbox(’Der Wert fuer die AbsTol muss >= 0 sein’,’ERROR’,’error’);
set(hObject,’String’,default_aTol);
end;
% relative Toleranz ----------------------------------------------------------function rel_tol_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundColor’));
end
handles.magnpop=hObject;
guidata(hObject, handles);
function rel_tol_Callback(hObject, eventdata, handles)
global default_reTol
% Randwertfehler abfangen
value =str2double(get(hObject,’String’));
if (value<0 | isnan(value))
msgbox(’Der Wert fuer die RelTol muss > 0 sein’,’ERROR’,’error’);
set(hObject,’String’,default_reTol);
end;
% ==================== TOLERANZEN =============================================
% ----------------------------------------------------------------------------%
BUTTONS
% ----------------------------------------------------------------------------% ==================== BACK BUTTON =============================================
function backbutton_Callback(hObject, eventdata, handles)
global aTol reTol solvername
% Fragt alle gesetzten GUI Elemente nach ihrem Wert ab und setzt die
75
D.3 solvercontrol
MATLAB
% entsprechenden globalen Variablen
% setzen der Toleranzwerte, durch die Bedingungen in den Parameter Objekten
% ist ein falscher Wert abgefangen worden
aTol=str2double(get(handles.abs_tol,’String’))
reTol=str2double(get(handles.rel_tol,’String’))
% Abfragen der einzelnen RADIO-Buttons, man koennte hier durch exklusives
% else if eine if Abfrage sparen, dieses traegt allerdings nicht zur
% Lesbarkeit des Codes bei
if (get(handles.ode45,’Value’)==1)
solvername = ’ode45’;
end;
if (get(handles.ode23,’Value’)==1)
solvername = ’ode23’;
end;
if (get(handles.ode113,’Value’)==1)
solvername = ’ode113’;
end;
if (get(handles.ode15s,’Value’)==1)
solvername = ’ode15s’;
end;
close(gcf);
% schliessen des Controllers
% ==================== BACK BUTTON ENDE =======================================
% ==================== DEFAULT BUTTON =========================================
function defaultbutton_Callback(hObject, eventdata, handles)
global default_aTol default_reTol
% setzt alle Werte auf die Default-Werte
set(handles.abs_tol,’String’,default_aTol);
set(handles.rel_tol,’String’,default_reTol);
% zunaechst werden die anderen Radiobuttons ausgeschaltet
ode45_Callback(hObject, eventdata, handles);
% setzen des Default ODE-Solvers
set(handles.ode45,’Value’,1);
% ==================== DEFAULT BUTTON ENDE ====================================
76
Danksagungen
Diese Bachelor Arbeit entstand in der Arbeitsgruppe Umweltphysik“ des Fachbe”
reiches Physik an der Universität Osnabrück.
Mein Dank gilt den Mitarbeitern der Arbeitsgruppe für die Unterstützung sowie
Motivation und Frau Prof. Dr. May-Britt Kallenrode für die ausserordentlich interessante Themenstellung und die Begleitung bei dieser Arbeit. Mein besonderer
Dank gilt Herrn PD. Dr. Bernd Heber für seine Betreuung und sein Engagement.
Seine Vorlesungen und seine Art der Lehre, gerade im Bereich der stellaren und
interstellaren Physik haben mich dazu veranlasst, meine Bachelor Arbeit in diesem
Bereich der Physik zu verfassen und mich auch in Zukunft in dieser Richtung zu
orientieren.
Ein ganz besonderer Dank gilt meinen Eltern und meiner Familie, die mir das Studium der Physik erst ermöglicht haben und die mir immer finanziell und mental zu
Seite gestanden haben.
Eidesstattliche Erklärung
Hiermit erkläre ich an Eides statt, dass ich die vorliegende Bachelor Arbeit selbstständig verfasst, keine anderen als die angegebenen Hilfsmittel verwendet und zuvor
noch keine Bachelor Prüfung abgelegt habe.
Osnabrück, den 29. August 2004
Patrick Daum
.
Soweit sich die Gesetze der Mathematik auf die Wirklichkeit beziehen,
”
sind sie nicht gewiß, und soweit sie gewiß sind, beziehen sie sich nicht
auf die Wirklichkeit.“ (Albert Einstein)
Dieses soll als Schlusswort dieser Arbeit gelten, die besprochenen Gleichungen und
Prozesse sind zwar in vieler Hinsicht bis ins kleinste erforscht und beschrieben, jedoch
stellt das Mittel der Numerik wahrscheinlich die Wirklichkeit in ihrer, in ihr selbst
inne ruhenden Ungenauigkeit am besten dar.
Herunterladen