A. Bittracher Programmierpraktikum: Numerik von ODEs (MA9502) Übungsblatt 6 01. Juni 2015 Aufgabe 8 (Freier Fall mit Luftreibung) Wir wollen die Bewegung eines Körpers mit Position x ∈ R2 modellieren. Auf den Körper wirke zum einen die Gravitationskraft (in x2 -Richtung), zum anderen die Luftwiderstandskraft. Die Bewegung wir durch Netwon’s zweites Gesetz F = m · a beschrieben. Dabei ist m die Masse des Körpers, F die Gesamtkraft und a die Beschleunigung des Körpers. Die Gesamtkraft ist F = FG + FR , mit Symbol Größe SI-Einheit Gravitationskraft F Kraft kg · m/s2 v Geschwindigkeit m/s 0 FG = m a Beschleunigung m/s2 −g m Masse kg und Luftwiderstandskraft g Fallbeschleunigung m/s2 cW Luftwiderstandskoeff. ohne 1 FR = − cW Aρkvk2 v . A Angriffsfläche m2 2 ρ Luftdichte kg/m3 Die Größen x, v, a und F sind dabei vektorwertig zu verstehen. (a) Beschreiben Sie die Bewegung des Körpers durch ein Differentialgleichungssystem zweiter Ordnung. (b*) Schreiben Sie das System aus (a) als Differentialgleichungssystem erster Ordnung. Implementieren Sie seine rechte Seite in Matlab als function [y] = freierfall_rs(t,x), so dass die Matlab-Standardlöser (z.B. ode45) leicht darauf anwendbar sind. (c) Realistische Werte für einen Fallschirmspringer sind m = 80, g = 9.81, cw = 1.35, A = 25, ρ = 1.2. Ermitteln Sie experimentell (z.B. mit ode45) die Endgeschwindigkeit des Fallschirmspringers. Aufgabe 9 (Springender Ball) Wir nehmen den Körper aus der vorherigen Aufgabe jetzt als Ball an und lassen ihn aus einiger Höhe auf eine lineare Rampe fallen. Die Rampe verbindet die Punkte (0, 1) und (1, 0), und setzt sich bis ins Unendliche fort. Beim Aufprall auf die Rampe soll der Geschwindigkeitsvektor umgelenkt werden (Eintrittswinkel = Austrittswinkel) und leicht gedämpft werden. x2 1 x1 1 (a) Den Aufprall behandeln wir in Matlab mit so genannten Events. Machen Sie sich mit dem Event Handling von ode45 vertraut. Schauen Sie sich dazu nochmals Aufgabe A16 aus NumODE, sowie das in Matlab enthaltene Beispiel ballode an. Dokumentation: ODE Event Location (b*) Schreiben Sie eine Eventfunktion function [value,isterminal,direction] = event_rampe(t,y), die das Auftreffen auf der Rampe erkennt, d.h. die val=0 genau dann zurückgibt, falls y auf der Rampe liegt. Der Löser soll bei erkanntem Event terminieren (isterminal=1). Achten Sie darauf, auch direction korrekt zu setzen! (c*) Schreiben Sie damit ein Programm, das den Ball auf der Rampe simuliert. Wir lassen den Ball von Position (0, 2) fallen. Beim Auftreffen auf die Rampe soll ode45 gestoppt werden. Der Geschwindigkeitsvektor des Balls soll dann angepasst werden (Dämpfungsfaktor 0.7). Anschließend soll ode45 mit den neuen Anfangswerten re-initiiert werden, um den weiteren Verlauf der Flugbahn zu simulieren. Die weiteren Parameter sind m = 1, g = 9.81, cW = 1, A = 0.2, ρ = 1.2. Lassen Sie den Ball 5 mal springen. Visualisieren Sie die Bewegung des Balls mit einen Trajektorienplot. Abgabedatum: 06.06.2015 Die Lösungen der mit (*) markierten Aufgaben sind bis zum Abgabedatum an [email protected] zu senden. Verwenden Sie den Betreff ProgODE und erwähnen Sie in der Email Ihre Matrikelnummer!