24.02.2014 Aufrufe

Teilchenbewegungen in el./magn. Feldern (Visualisierung)

Teilchenbewegungen in el./magn. Feldern (Visualisierung)

Teilchenbewegungen in el./magn. Feldern (Visualisierung)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!