Simulering med Euler-Cromer-metoden

En gennemgang af, hvordan Euler-Cromer-metoden kan bruges til numerisk løsning af bevægelsesproblemer i fysik.

Løsning af en differentialligning

Givet differentialligningen

\[ y' = f(t,y) \]

Vi tilnærmer de infinitesimale ændringer med endelige ændringer:

\[ \frac{\Delta y}{\Delta t} = f(t,y) \]

Da \(\Delta y = y_{\text{ny}} - y_{\text{gammel}}\), får vi

\[ y_{\text{ny}} = y_{\text{gammel}} + f(t,y_{\text{gammel}})\,\Delta t \]

Det er den grundlæggende Euler-Cromer-opdatering: den nyeste kendte værdi bruges i funktionen.

Bevægelsesanalyse i én dimension

Newtons 2. lov kan skrives som

\[ F_{\text{res}} = m\,a \]

Da \(a = \frac{dv}{dt}\), får vi

\[ \frac{dv}{dt} = \frac{1}{m}F_{\text{res}}(v,s,t) \]

Euler-Cromer-opdateringen for hastigheden bliver derfor

\[ v_{\text{ny}} = v_{\text{gammel}} + \frac{1}{m}F_{\text{res}}(v,s,t)\,\Delta t \]

Positionen findes fra \(v = \frac{ds}{dt}\):

\[ s_{\text{ny}} = s_{\text{gammel}} + v_{\text{gammel}}\,\Delta t \]

Simuleringsligninger

Med en enklere notation, hvor de gamle værdier kaldes \(s_1\) og \(v_1\), bliver iterationen:

\[ \begin{aligned} s &= s_1 + v_1\,\Delta t \\ v &= v_1 + \frac{1}{m}F_{\text{res}}(v_1,s_1,t)\,\Delta t \end{aligned} \]

For at simuleringen bliver god, skal \(\Delta t\) vælges tilstrækkeligt lille. Det er en god idé først at teste simuleringen på et problem, hvor løsningen kendes fra en færdig formel.

Startværdier

For at starte simuleringen skal man kende startpositionen \(s_0\), starthastigheden \(v_0\), massen \(m\) og den resulterende kraft \(F_{\text{res}}\). Første iteration bruger \(s_0\) og \(v_0\); derefter itereres frem trin for trin.

To- og tredimensionel bevægelse

I to eller tre dimensioner udvides ligningerne til vektorer:

\[ \begin{aligned} \vec{s} &= \vec{s}_1 + \vec{v}_1\,\Delta t \\ \vec{v} &= \vec{v}_1 + \frac{1}{m}\vec{F}_{\text{res}}\,\Delta t \end{aligned} \]

I to dimensioner itereres der over fire størrelser:

\[ \begin{aligned} s_x &= s_{x1} + v_{x1}\,\Delta t \\ s_y &= s_{y1} + v_{y1}\,\Delta t \\ v_x &= v_{x1} + \frac{1}{m}F_{x,\text{res}}\,\Delta t \\ v_y &= v_{y1} + \frac{1}{m}F_{y,\text{res}}\,\Delta t \end{aligned} \]

Kraftvektoren er

\[ \vec{F}_{\text{res}} = \begin{bmatrix} F_{x,\text{res}} \\ F_{y,\text{res}} \end{bmatrix} \]

Original: Download PDF-version.