Ü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 |
| 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