Einführung in die wissenschaftliche Programmierung - Winter 09

From Sccswiki
Revision as of 08:57, 19 November 2009 by Zimmer (talk | contribs)
Jump to navigation Jump to search
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.)

Kontrollstrukturen (2./4.11.)

  • Die Folien
    Update 2.11.: import math und math.exp statt from math import exp und exp (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
    Update 9.11.: Tippfehler auf Folie 46 entfernt, Programm auf Folie 58 ausgetauscht, in den Programmen auf Folien 57 und 59 den empfohlenen import-Mechanismus verwendet
  • Die Programme aus der Vorlesung:
  • Ein Vorschlag für die Selbermach-Aufgabe (Simpson-Regel): simpson.py
    In der Funktion tabelle sieht man etwas, was ich bisher noch nicht erklärt hatte: mittels eines \ am Zeilenende kann man eine lange Progemmzeile auf mehrere Bildschirmzeilen aufteilen.

Daten in Python (16./18.11.)

  • Die Folien
    Update 3.11.: Tippfehler auf Folie 74 entfernt - a[1:1] gibt ()
    Update 16.11.: auf Folie 77 range(Start, Stop) statt range(Start:Stop)
  • Ein Vorschlag für die Selbermach-Aufgabe (Auswertung für das Euler-Verfahren): euler_auswert.py

Ein Beispiel aus der Finanzmathematik (23./25.11.)

Ein- und Ausgabe (30.11. - am 2.12. entfällt die Übung wegen Dies Academicus)

  • Die Folien
  • Die Programme aus der Vorlesung:
  • Eine Anmerkung: Dateien, wie sie in der Selbermachaufgabe vorkommen, eignen sich gut, um Diagramme aus unseren Daten zu ertellen, indem man z.B. Gnuplot verwendet. Wenn man Gnuplot in dem Verzeichnis gestartet hat, in dem eine Datei bsp.txt wie von Folie 121 rechts liegt, kann man in der Gnuplot-Konsole (nicht mit der Python- oder der normalen Shell verwechseln!) mit einem Kommando wie plot 'bsp.txt' with lines die Zahlenpaare als Polygonzug zeichnen lassen.

Markov-Prozesse (17./19.12.)