Teilchenbewegungen in el./magn. Feldern (Visualisierung)
Teilchenbewegungen in el./magn. Feldern (Visualisierung)
Teilchenbewegungen in el./magn. Feldern (Visualisierung)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Programme<br />
ausdrücken. Beim Simpson Verfahren wählt man äquidistante Stützst<strong>el</strong>len mit der<br />
Schrittweite h. Im e<strong>in</strong>fachsten Fall e<strong>in</strong>er l<strong>in</strong>earen Interpolation (k = 1) zwischen den<br />
Endpunkten des Intervalls, erhält man mit ω 0 = ω 1 = h/2 die Trapezreg<strong>el</strong><br />
∫ b<br />
a<br />
[ 1<br />
f(x) dx = h<br />
2 f 0 + 1 1]<br />
2 f + O ( k 3) (B.14)<br />
Wählt man k = 2, erhält man mit ω 0 = ω 2 = h/3 und ω 1 = 4/3 h die Simpsonreg<strong>el</strong>;<br />
es lässt sich schreiben<br />
∫ b<br />
f(x) dx = h<br />
[ 1<br />
3 f 0 + 4 3 f 1 + 1 2]<br />
3 f + O ( h 5) . (B.15)<br />
a<br />
Das Ergebnis der Simpson Integration lässt sich dann <strong>in</strong> der Adams-Moulton Korrektur<br />
verwenden.<br />
C<br />
Programme<br />
C.1 C-Programm: Runge-Kutta 4. Ordnung<br />
Hier wird e<strong>in</strong> C-Programm dargest<strong>el</strong>lt, w<strong>el</strong>ches dem Benutzer ermöglicht, das Runge-<br />
Kutta Verfahren zu testen. Hierbei müssen die Startwerte der n Differentialgleichungen<br />
e<strong>in</strong>gegeben werden. Die Rout<strong>in</strong>e berechnet dann auf der gegebenen Funktion<br />
derivs die Runge-Kutta Näherung (Qu<strong>el</strong>le übersetzt/geändert: [29]).<br />
void rk4(y,dydx,n,x,h,yout,derivs)<br />
float y[],dydx[],x,h,yout[];<br />
void (*derivs)();<br />
<strong>in</strong>t n; /* n Variablen fuer y[1..n] und die Ableitungen dydx[1..n]*/<br />
{<br />
<strong>in</strong>t i;<br />
float xh,hh,h6,*dym,*dyt,*yt,*vector();<br />
void free_vector();<br />
dym = vector(1,n);<br />
dyt = vector(1,n);<br />
yt = vector(1,n);<br />
hh = h*0.5;<br />
h6 = h/6.0;<br />
xh = x*hh;<br />
for (i=1;i