8. Gewöhnliche Differentialgleichungen und Event-Detektion

In dieser Übung geht es weiter mit ODEs. Es wird der Bremsvorgang von einem bzw. mehreren Fahrzeugen simuliert.

Dabei sollen allerdings auch bestimmte Ereignisse - Events - erkannt werden, wie z.B. die Kollision zweier Fahrzeuge.

1. Bremsvorgang (1)

Auf einer Versuchsstrecke fährt ein Auto mit \(13.9\frac{\text{m}}{\text{s}}\) (ca. \(50\frac{\text{km}}{\text{h}}\)). Nach dem Auslösen eines Signals betätigt der Fahrer die Bremse (Reaktionszeit \(1s\)). Das Auto wird anschließend mit einer konstanten Gegenbeschleunigung von \(8\frac{\text{m}}{\text{s}^2}\) zum Stillstand gebracht.

Stellen Sie eine Differentialgleichung für die Bewegung des Autos auf, implementieren Sie diese, unter Berücksichtigung der Reaktionszeit, in Matlab und plotten Sie die Bewegung des Fahrzeugs über 5 Sekunden.

Hinweis

Zur Vereinfachung der Simulation werden zunächst keine Reibkräfte o.ä. angenommen. Betrachten Sie das Auto als Massepunkt, welcher sich gemäß dem 2. Newtonschen Axiom (\(\vec{F}=m\cdot \vec{a}\)) verhält.

function main
    x0 = [0;13.9];
    tspan = [0,5];
    [t,x] = ode45(@ode,tspan,x0);
end

function dx = ode(t,x)
    % Hier die DGL(s) einfügen
end

2. Bremsvorgang (2)

Im ersten Teil ließ sich der Bremsweg bzw. die Bremsdauer am Plot grob ablesen. Nun sollen diese Werte numerisch bestimmt werden und die Simulation bei Stillstand des Autos abgebrochen werden.

Ergänzen Sie Ihr Programm um eine Event-function, welche die Simulation bei \(v=0\) abbricht.

Hinweis

Event-functions müssen dem Solver über die ODE-options mitgeteilt werden (vgl. hierzu auch die Matlab-documentation).

function main
    x0 = [0;13.9];
    tspan = [0,5];
    options = odeset('Events',@events);
    [t,x] = ode45(@ode,tspan,x0,options);
end

function dx = ode(t,x)
    % Hier die DGL(s) einfügen
end

function [value,isterminal,direction] = events(t,x)
    % t und x sind je Zeitpunkt und Ergebnis des
    % aktuellen Simulationschritts
    value = % Dieser Wert wird auf Null geprüft
    isterminal = % Bricht Simulation bei value == 0 ab
    direction = % Prüft die Richtung des Nulldurchgangs
end

3. Bremsvorgang (3)

Ergänzen Sie die Differentialgleichung des Autos um eine Geschwindigkeitsabhängige Gegenkraft \(F(v)=0.1v\).

  1. Welche Differenz ergibt sich im Vergleich zum alten Bremsweg?

  2. Wie lange dauert es, bis sich das Auto bei diesem fiktionalen Widerstand ohne zu Bremsen auf \(30\frac{\text{km}}{\text{h}}\) verlangsamt hat?

  3. Ergänzen Sie die Event-function oben so, dass die Simulation bei \(v = 0\) abgebrochen wird, aber Zeitpunkt und Ort für \(v = 30\frac{\text{km}}{\text{h}}\) auch erkannt werden.

4. Bremsvorgang von zwei Fahrzeugen (1)

Ergänzen Sie Ihr ODE-System um ein zweites Set an Gleichungen, welche die Bewegung eines weiteren, baugleichen Fahrzeuges beschreiben.

Die Fahrzeuge fahren parallel auf der Teststrecke und beginnen den Bremsvorgang, inkl. \(1\,\text{s}\) Reaktionszeit, zum selben Zeitpunkt. Allerdings fährt das zweite Auto anfangs mit \(19.4\frac{\text{m}}{\text{s}}\) (ca. \(70\frac{\text{km}}{\text{h}}\)).

Welchen Abstand haben die Fahrzeuge, wenn das langsamere Auto bereits angehalten hat?

function main
    x0 = [0; 13.9; 0; 19.4];
    tspan = [0,5];
    options = odeset('Events',@events);
    [t,x] = ode45(@ode,tspan,x0);
end

function dx = ode(t,x)
    % Hier die DGL(s) einfügen
    dx(1,1) = % ...
    dx(2,1) = % ...
    dx(3,1) = % ...
    dx(4,1) = % ...
end

5. Zusatz: Bremsvorgang von zwei Fahrzeugen (2)

Nun fahren beide Fahrzeuge hintereinander (mit Reibverlust aus 3.). Das vordere Fahrzeug fährt mit \(50\,\text{m}\) Abstand voraus und hat durch eine Baustelle eine Geschwindigkeit von \(70\frac{\text{km}}{\text{h}}\). Der hintere Wagen nähert sich mit \(130\frac{\text{km}}{\text{h}}\).

Durch ein plötzliches Ereignis müssen beide Fahrzeuge zeitgleich bremsen (\(a= -8 \frac{\text{m}}{\text{s}^2}\)).

  1. Nach wie viel Sekunden bzw. Metern kommt es zur Kollision?

  2. Wie viel Abstand hätte das hintere Fahrzeug halten müssen, damit es bei Stillstand noch \(1\,\text{m}\) Abstand zum vorausfahrenden Fahrzeug gehabt hätte?

Hinweis

Ergänzen Sie die ODE-function zunächst so, dass die Fahrzeuge nach Stillstand (\(v=0\)) nicht rückwärts fahren.

Prüfen Sie dann die zurückgelegten Wegstrecken, nachdem beide Fahrzeuge zum Halt gekommen sind.

Lösung

- Hinweis: Dieses Video ist von YouTube aus eingebunden und nicht Teil des frei lizenzierten Materials! -