Einführung in die wissenschaftliche Programmierung - Winter 09
- Term
- Winter 09
- Lecturer
- Dr. rer. nat. Stefan Zimmer
- Time and Place
- Vorlesung: Montags, 10:15-11:45, MI HS1
- Beginn: Damit sich alle SET-Tutoren um die SET kümmern können, ist in der ersten Semesterwoche noch kein WiPro, die Veranstaltung beginnt also mit der Vorlesung am 26.10.
- Audience
- Modul IN8008
- Pflichtfach im Studiengang Physik (Bachelor)
- Hörer anderer Fachrichtungen sind ebenfalls willkommen!
- Tutorials
- Zentralübung: Mittwochs 8:30-10:00, PH HS1
- Beginn am Mittwoch, 28.10.
- Exam
- Klausur am Semesterende; voraussichtlich Freitag, 26.2.2010, 9:30-10:30 im Hörsaal MW0001
- Semesterwochenstunden / ECTS Credits
- 4 SWS / 4 Credits
- TUMonline
- {{{tumonline}}}
Einleitung (26./28.10.)
- Die Folien
Update 26.10.: Auf Folie 5 'Notepad' statt 'Wordpad'; Tippfehler beseitigt - Software
- Die offizielle Python-Website (mit Donwnload-Seite)
- Wer die IPython-Shell bnutzen möchte, findet die hier
- Dokumentation
- Online-Dokumentation
- Schriftenverkauf im LRZ (da gibt's das Python-Heft)
Kontrollstrukturen (2./4.11.)
- Die Folien
Update 2.11.:import math
undmath.exp
stattfrom math import exp
undexp
(ist auch in den Beispielprogrammen 1,3 und 4 unten geändert); Beispiele auf Folie 33 nachgezählt :-) - Die Programme aus der Vorlesung:
- logistisch1.py: Die Wertetabelle (Update 2.11., s.o.)
- logistisch2.py: Das Euler-Verfahren
- logistisch3.py: Das Euler-Verfahren mit Auswertung (Update 2.11., s.o.)
- logistisch4.py: Das Verfahren von Heun (Update 2.11., s.o., dieses Programm hatte bisher auch ein Einrückungsproblem, das ist nun behoben)
- Ein Vorschlag für die Selbermach-Aufgabe (Räuber-Beute-Modell): raeuberbeute.py
Anmerkung: ich bin in der Übung darauf aufmerksam gemacht worden, dass mein erster hier publizierte Versuch keine korrekte Implementierung des Euler-Verfahrens war (bei der Berechnung der Ableitung von q habe ich den neuen Wert von p verwendet). Dummerweise wird das Verfahren (eher "zufällig") dadurch wesentlich genauer - wer einen richtigen Euler (so wie in der aktuellen Fassung meines Programms) nimmt, muss deutlich meht Zeitschritte investieren als von mir vorgeschlagen: mindestens 100, besser viel mehr.
Noch eine Anmerkung: die bei mir implementierte Bestimmung eines Schnittpunkts zwischen zwei Zeitschritten dient beim Euler-Ferfahren nur als Programmierübung: Numerisch ist es sinnlos, weil der Fehler, mit dem man die Periodenlänge gegenüber der exakten Lösung falsch bestimmt, hier schon durch die Diskretisierung der DGL in der Größenordnung der Zeitschrittweite ist. Wenn man das Verfahren von Heun implementiert, hilft es für kleine Schrittweiten (weil der Diskretisierungsfehler hier schneller abnimmt als die Zeitschrittweite)
Funktionsdefinitionen (9./11.11.)
- Die Folien
- Die Programme aus der Vorlesung:
- trapez.py: Trapezregel
- trapez2.py: Trapezregel mit Funktion als Parameter
Daten in Python (16./18.11.)
- Die Folien
Update 3.11.: Tippfehler auf Folie 74 entfernt -a[1:1]
gibt()