WaBis

walter.bislins.ch

Numerisches Lösen der Bewegungsgleichungen

Beim numerischen Lösen der Bewegungsgleichungen werden Schritt für Schritt aus den momentanen Randbedingungen (z.B. aktuelle Geschwindigkeit) die aktuellen Kräfte berechnet. Aus Fx = f(v,s,t) ergibt sich dann die Beschleunigung a zu einem gewissen Zeitpunkt. Daraus lässt sich für den nächsten Schritt die resultierende Geschwindigkeit v und der zurückgelegte Bremsweg s durch numerisches Integrieren berechnen. Diese Prozedur wird solange wiederholt, bis v = 0 geworden ist. In s lässt sich dann der zurückgelegte Bremsweg ablesen.

Beschleunigung a(t), Geschwindigkeit v(t) und Weg s(t) sind mathematisch miteinander verknüpft:

Zusammenhang: Beschleunigung - Geschwindigkeit - Weg

Wir kennen die Beschleunigung a(t) (Herleitung) und können durch Integrieren daraus Geschwindigkeit v(t) und Weg s(t) berechnen:

(1)
\vec a(t) = \sum \vec F(\ \vec v(t),\ \vec s(t),\ t\ ) / m
(2)
\vec v(t) = \int_{ 0 }^{ t } \vec a(t) \ \mathrm{d} t + \vec v_0
(3)
\vec s(t) = \int_{ 0 }^{ t } \vec v(t) \ \mathrm{d} t + \vec s_0
wobei'
\sum \vec F ' =' 'Summe der Kräfte zum Zeitpunkt t
m ' =' 'Masse des Körpers
\vec a(t) ' =' 'Beschleunigung zum Zeitpunkt t
\vec v(t) ' =' 'Geschwindigkeit zum Zeitpunkt t
\vec s(t) ' =' 'Position zum Zeitpunkt t
\vec v_0 ' =' 'Anfangsgeschwindigkeit
\vec s_0 ' =' 'Anfangsposition
t ' =' 'Zeit

Numerische Integration

Da Fx(v,s,t) nicht als einfache mathematische Formel ausgedrückt werden kann, muss numerisch integriert werden. Wie geht das?

Grundlagen

Wenn man den Verlauf der Beschleunigung a(t) grafisch aufzeichnet, erhält man eine bestimmte Kurve a = f(t). An jeder Stelle ti kann die zugehörige Beschleunigung a(ti) abgelesen werden 1. Die Fläche unter der Kurve a(t) vom Zeitpunkt t = 0 bis ti entspricht gerade der Geschwindigkeit v(ti) zu diesem Zeitpunkt, abzüglich der Startgeschwindigkeit (Integrationskonstante) v0 2.

Wenn man die Beschleunigung a(ti) zum Zeitpunkt ti kennt, kann man daraus die ungefähre Geschwindigkeitsänderung Δv bis zum nächsten Zeitpunkt ti+1 berechnen. Wenn wir annehmen, die Beschleunigung ändere sich im Zeitraum Δt nicht, so ist die Geschwindigkeitsänderung Δv = a(ti) · Δt 3.

Solange man Δt 4 klein genug wählt, ist dies eine hinreichend genaue Annäherung. Man kann jedoch die Berechnung noch verbessern, wenn man die Steigung der Kurve a(t) berücksichtigt. Die Änderung der Beschleunigung Δa im Zeitraum Δt 5 kann man abschätzen, indem man den vorletzten Beschleunigungswert a(ti−1) 6 mit berücksichtigt:

(4)
\Delta a(t_{i+1}) = \Delta a(t_i) = a(t_i) - a(t_{i-1})

Damit ergibt sich ein genauerer Wert für die Geschwindigkeitsänderung und Geschwindigkeit:

(5)
\Delta v(t_{i+1}) = \left[ a(t_i) + \Delta a(t_{i+1}) / 2 \right] \cdot \Delta t

7

(6)
v(t_{i+1}) = v(t_i) + \Delta v(t_{i+1})

Analog kann aus der Geschwindigkeit der Weg berechnet werden:

(7)
\Delta s(t_{i+1}) = \left[ v(t_i) + \Delta v(t_{i+1}) / 2 \right] \cdot \Delta t
(8)
s(t_{i+1}) = s(t_i) + \Delta s(t_{i+1})

Fehlerbetrachtung

Die obigen Formeln sind exakt, wenn die Beschleunigung konstant oder linear ist und die Geschwindigkeit linear zu oder ab nimmt. Dies ist beim Bremsvorgang eines Flugzeuges ein sehr guter Ansatz, insbesondere wenn die Autobrake-Funktion die Beschleunigung konstant hält.

Aber selbst wenn keine idealen Verhältnisse herrschen, kann mit diesem Integrationsverfahren eine fast beliebige Genauigkeit erreicht werden, indem man Δt entsprechend klein wählt.

Verändere den Wert dt Bremsweg (Δt) auf der Seite Simulation des Bremsweges und beobachte, wie sich der Bremsweg dadurch kaum ändert. Dies ist ein Indiz dafür, dass diese numerische Integration sehr genau ist.

Algorithmus

Mit obigen Formeln lässt sich nun ein Programm schreiben, welches Beschleunigung, Geschwindigkeit und Weg Schritt für Schritt berechnet:

var dt = 0.1;   // Delta t
var da, dv, dt; // Zwischenwerte

// Startbedingungen
var t = 0;      // Zeit
var v = Vstart; // Anfangsgeschwindigkeit
var s = 0;      // Bremsweg

// Initiale Berechnung
var a = Beschleunigung( v, s, t );
var aOld = a;   // Beschleunigung der letzten Iteration
Zeichne( a, v, s, t );  // Resultate anzeigen

while (v > 0) {
  // Änderungen für nächsten Schritt berechnen
  da = a - aOld;
  dv = (a + da/2) * dt;
  ds = (v + dv/2) * dt;
  // neue Werte berechnen
  v = v + dv;
  s = s + ds;
  t = t + td;
  aOld = a;
  a = Beschleunigung( v, s, t );
  Zeichne( a, v, s, t );
}

In der Funktion Beschleunigung( v, s, t ) wird die neue Beschleunigung aufgrund der aktuellen Situation über die Berechnung aller Kräfte berechnet. In der Simulation werden auch die verschiedenen Kräfte und andere Parameter dynamisch angezeigt.

Weitere Infos zur Seite
Erzeugt Freitag, 7. September 2007
von wabis
Zum Seitenanfang
Geändert Donnerstag, 17. November 2016
von wabis