Übung zur Vorlesung:

Konzepte der Nichtlinearen Dynamik

 

Methodisches Ziel:
Veranschaulichen und Verstehen der in der Vorlesung vorgestellten Prozesse und Zusammenhänge.
Technisches Ziel:
Programmieren in C und C++ unter Verwendung der C++-Standard-Bilbliothek, den Numerical Recipes und der GNU Scientific Library. Shell- und Perl-Skripte dienen der Automatisierung und die Programme Gnuplot und Matlab der Visualisierung.
Literatur:
"Die Programmiersprache C. Ein Nachschlagewerk" und "C++ für C-Programmierer" vom RRZN Hannover. Die Dokumentationen kosten je 3 Euro und sind von 9 bis 12 Uhr im Rechenzentrum, Hermann-Herder-Str. 10 erhältlich: Rechte Eingangstür, 1. Tür auf der rechten Seite. Siehe auch hier.
Voraussetzungen: Account im Computer-Pool der Physik, Gustav-Mie-Haus. Programmierkenntnisse werden nicht vorausgesetzt, aber Engagement :) In der ersten Übung werden die Grundlagen besprochen. Es ist vorteilhaft, sich mit den kommentierten Beispielprogrammen dieser Web-Seite vertraut zu machen.
Kontakt: Jens Timmer
Beginn: 15. Oktober 2003, 15 Uhr c.t., Computer-Pool, Gustav-Mie-Haus

 

Kommentierte, einführende Programme in C/C++:

Programm Beschreibung Neue Funktionen
halloWelt.cpp Gibt "Hallo Welt!" auf der Konsole aus. main, printf, return, #include
zweierPotenzen.cpp Gibt die Potenzen 2^1 bis 2^20 aus. int*, new, delete, [], for, ++,
primzahlenBis100.cpp Gibt alle Primzahlen bis 100 aus. bool, if, %, break
primzahlenBisN.cpp Gibt alle Primzahlen bis N aus. Dabei wird N dem Programm als Parameter übergeben. main(int argc, char** argv), atoi, exit
zufallszahlen.cpp Programm erzeugt Pseudo-Zufallszahlen mit Hilfe der Funktionen ran1 und gasdev der Numerical Recipes.Als 'Seed' werden u.a. die Millisekunden der aktuellen Systemzeit genutzt. Im zweiten Teil werden die Zufallszahlen in zwei Dateien gespeichert. ran1, gasdev, #ifdef, #else, #endif, timeval, gettimeofday, FILE*, fopen, fclose
harmonischerOszillator.cpp Simuliert einen harmonischen Oszillator x'' = - w^2 x, w = 2 PI/T, der in jedem Sampling-Schritt zufällig gestoert wird. #define
ar2UndVanDerPol.cpp AR-Prozesse und Van der Pol Oszillator ofstream, ios::out
vanderpol.cpp Simuliert den Van der Pol - Oszillator
unter Verwendung der Integrationsmethode Runge Kutta 4. Ordnung
rk4

Unter Unix gibt es verschiedene Texteditoren, um den Quellcode zu erstellen oder zu bearbeiten. Verbreitet sind "xemacs" und "gvim", wobei xemacs intuitiver funktioniert und gvim mehr Funktionen über Tastenkombinationen erlaubt. Starten der Programme innerhalb einer Unix-Shell (Konsole) mit dem Befehl "xemacs" bzw. "gvim". Nach dem Speichern des Quellcodes z.B. unter zufallszahlen.cpp kann man ihn mit dem Compiler "g++" kompilieren:

g++ -c zufallszahlen.cpp

Dies liefert die Datei zufallszahlen.o, die noch mit den Numerical Recipes gelinkt werden muss, da deren Funktion ran1 benutzt wird:

g++ -o zufallszahlen zufallszahlen.o Pfad/libnr.a

In dem Archiv libnr.a befinden sich sämtliche .o-Dateien der Numerical Recipes. Es wird eine ausführbare Datei mit dem Namen zufallszahlen erzeugt, die man mit

./zufallszahlen

starten kann. Mit ./ wird explizit das aktuelle Verzeichnis angesprochen. Die Option "-o zufallszahlen" beim Aufruf von g++ steht für "Output in die Datei zufallszahlen".

Diese und andere Befehle gibt es zusammen mit einem kurzen C++-Programm zum Ausdrucken auch hier.

 

Stand 15.10.2003