Technische Universiä München WS 11/1 Insiu für Informaik Prof. Dr. Hans-Joachim Bungarz Michael Lieb, M. Sc. Dipl.-Inf. Chrisoph Riesinger Dipl.-Inf. Marin Schreiber Numerisches Programmieren 4. Programmieraufgabe: Freier Fall & ODEs Dieses Aufgabenbla seh wieder ganz uner dem Moo Spielerisch zur numerischen Simulaion. Wir werden uns hierbei ODEs im Zusammenhang mi einem punkförmigen Objek anschauen z. B. einer kleinen Kugel. Ein solches Objek berachen wir uns im freien Fall und uner der Beeinflussung von diversen anderen Kräfen. Einführung: Freier Fall Physikalische Grundlagen Berachen wir zuers ein sark vereinfaches Modell des freien Falls von einer kleinen Kugel in D. Der Zusand unserer vereinfachen Kugel is für einen Zeipunk eindeuig über die Posiion p( und die momenane Geschwindigkei v( besimm. Nun berachen wir die Änderung der Posiion und Geschwindigkei über einen kleinen Zeischri. Hierbei gil, dass die Posiionsänderung dem Inegral der Geschwindigkei v während des nächsen Zeischris ensprich: p( + = p( + + v(t dt (1 Des Weieren gil auch, dass sich die Geschwindigkeisänderung über das besimme Inegral der Beschleunigung a( berechnen läß: v( + = v( + + a(t dt ( Zur Vereinfachung berachen wir nun den freien Fall mi konsaner Beschleunigung durch die Graviaion mi g = 9.81 m und dami a = (, g s T : + ( + v( + = a(t dt = dt (3 g Nun können wir uns die Geschwindigkei zu jedem beliebigen Zeipunk für gegebene Anfangswere v( exak ausrechnen indem wir die Inegrale weier ausweren: ( [( ] ( v( = v( + v( = dt = v( + = v( + (4 g g T g 1
Mi der Auswerung des Inegrals für die Posiionsänderung können wir lezendlich auch die Posiion in Abhängigkei von der Zei berechnen: [( ] ( v(t p( = p( + v(t 1 gt = p( + v( 1 g Dami lieg uns eine analyische Lösung vor, die uns für gegebene Anfangswere zu einem beliebigen Zeipunk die Posiion zurückgib. Nachdem wir den freien Fall nun analyisch berache haben, wollen wir im Weieren berachen, wie man eine solche Simulaion durch numerische Verfahren approximieren kann. Leider häng z. B. in Spielen die Simulaion nich nur von der Graviaion ab, sondern auch noch von vielen anderen Einflussgrößen (Federn, Söße durch andere Objeke, Kollisionsimpulse, ec. die uns eine analyische Lösung erschweren bzw. unmöglich machen. (5 Zeischriverfahren (Folgende Informaionen finden sich auch in den Vorlesungsunerlagen. Explizier Euler Mi Genauigkeisordnung 1 is der explizie Euler das einfachse Zeiinegraionsverfahren. Aus der Ordnung des Verfahrens knnen wir schließen, dass es nur für lineare Funkionen exak is. Ausgehend von einem Zeipunk wird angenommen, dass die zu inegrierenden Funkion als Gerade beschrieben werden kann. Die Posiion zum nächsen Zeipunk + ergib sich dami wie folg: p( + = p( + f(, p( (6 Die Funkion f gib in dieser Aufgabe die Geschwindigkei zum gegebenen Zeipunk und einer Posiion p( zurück. Heun Das Verfahren von Heun is ein Verfahren zweier Ordnung und mi eine Ordnungssufe genauer als das Eulerverfahren. Die erse Gleichung, die hierbei benöig wird, approximier den nächsen Punk analog dem Eulerverfahren: p( + = p( + f(, p( (7 Dieser Punk wird aber nun nich als neuer Punk, sondern in einer weieren Formel verwende um den neuen Punk mi einem Genauigkeisgrad zu berechnen: p( + = p( + ( f(, p( + f( +, p( + (8
Runge-Kua Die ersen nach ihren Erfindern Carl Runge und Marin Willhelm Kua benannen Mehoden wurden zu Beginn des. Jahrhunders beschrieben. Die grundlegende Idee hiner den Verfahren is es, durch das Berechnen von Zwischenweren innerhalb eines Zeischries das ein Verfahren höherer zu erhalen. Mahemaiker sind dabei immer noch auf der Suche nach Wegen, um mi mglichs wenigen Auswerungen der Ableiungsfunkion eine mglichs genaue Abschzung des nchsen Funkionsweres zu erhalen. Zur Zeiinegraion von Crashsimulaionen oder der Simulaion von Srmungsprozessen verwende man hier of Kombinaionen von Runge-Kua-Verfahren (z. B. 8. und 7. Ordnung. Sowohl das Eulerals auch das Heun-Verfahren ensprechen im brigen Runge-Kua-Verfahren der jeweiligen Genauigkeisordnung. Das hier beschriebene Verfahren sell das sogenanne klassische Runge-Kua-Verfahren dar und is von Genauigkeisordnung 4. Zuers werden die Koeffizienen k i besimm: k1 = f(, p( (9 k = f( + 1, p( + 1 k 1 (1 k3 = f( + 1, p( + 1 k (11 k4 = f( +, p( + k 3 (1 Die neue Posiion können wir dann mi folgender Formel ausrechnen: p( + = p( + 1 6 ( k 1 + k + k 3 + k 4 (13 ODE Beispielfunkionen Die erse im Rahmen dieses Aufgabenblas zu implemenierende ODE is die des freien Falls: ( f f(p, = x ( f y ( g f ensprich hierbei der Geschwindigkei v. Des Weieren berachen wir auch noch zwei weiere, ewas komplexere Funkionen um die Unerschiede der Verfahren besser versehen zu können. Die zweie Funkion in unserer Tesreihe is mi ( gx ( + p g(p, = x (.5 g y ( g p x (.1 gegeben, wobei p( die Anfangsbedingung beschreib, g die Funkion und g die Graviaionskonsane. Sie is. Ordnung in (p x ( und (! 3
Die drie is 4. Grades in und gegeben mi: ( hx ( + 4. h(p, = hy ( +.1 4 8. Programmoberfläche Als Hilfesellung und zur Veranschaulichung der Funkionen gib es eine GUI die im Screensho 1 genauer erklär is. 1s Funcion nd Funcion 3rd Funcion RED: Euler BLUE: Heun Timesep size Iniial velociy (x,y Iniial posiion (x,y GREY: Accurae soluion (RG wih small imeseps GREEN: Runge-Kua Choose which imesep mehods should be compued and drawn Abbildung 1: Screensho: GUI for imesep mehods Auf der rechen Seie kann eine de im obigen Abschni beschriebenen Funkionen gewhl werden. Die Zeischriweie sowie Anfangswere für Posiion und Geschwindigkei lassen sich direk daruner einsellen. Im Zeichenfenser auf der linken Seie markier der roe Punk den im rechen Bereich angegebenen Sarpunk der ODE. Die Zeischriverfahren sind farbkodier (siehe Legende rechs, die Kurvenwere an den diskreen Zeipunken jeweils mi einem schwarzen Kreuz markier. Aufgabensellung Sämliche Aufgaben müssen in der Daei InegraionGraphic.java implemenier werden. Andere Daeien sind hierbei nich zu modifizieren. Das Programm kann bei ensprechender Insallaion der Java Enwicklungsumgebung mi make kompilier und mi make run ausgeführ werden. In der Daei Inegraor.java dürfen ausschließlich Änderungen an den ensprechend markieren Sellen vorgenommen werden, da die Korrekur auomaisier erfolg! 4
1 Zeischriverfahren Implemenieren Sie die oben beschriebenen Zeischriverfahren in den Mehoden eulerinegraion(, heuninegraion( und rungekuainegraion(. Genauigkei und Ordnung Die zweie Aufgabe beseh weniger in der Implemenierung von Zeischriverfahren sondern soll dem Versändnis der Zeischriverfahren dienen. Geben Sie in der Mehode isexac( rue zurück, wenn die als Parameer angegebene Mehode für die auch als Parameer angegebene Funkion exak is. Ansonsen soll false zurückgegeben werden. Nehmen Sie unendliche Maschinengenauigkei an! Formalien Das Programmgerüs erhalen Sie auf den Webseien zur Vorlesung. Ergänzen Sie das Programmgerüs bie nur an den dafür vorgegebenen Sellen! Falls Sie die Srukur der Programme eigenmächig verändern, können wir sie evl. nich mehr esen. Beseiigen Sie vor Abgabe Ihres Programms alle Ausgaben an die Konsole! Bie reichen Sie Ihre Abgabe bis zum 3. Januar 1, 1: Uhr über das Web- Poral ein. 5