1. Grundlagen

Matlab ist eines der verbreitetsten Tools zur numerischen Lösung verschiedener Problemstellungen, ist aber als komerzielles Produkt nicht kostenlos. Octave ist ein weitgehend kompatibler Matlab-Klon unter der GPL und frei verfügbar.

Im Kurs sollen Grundlagen zum Umgang mit Matlab ( oder Octave ) gelegt werden. Kompatibilitätsprobleme zwischen Matlab und Octave werden bei einfachen Anwendungen noch nicht auftreten, Spezialfälle sind aber zu testen.

Produktspezifisches zu Matlab/Octave:

Die Matlab-Startseite http://www.mathworks.com
Matlab - Helpdesk http://www.mathworks.com/access/helpdesk/help/helpdesk.shtml
Vorstellung neuer Produkte rund um Matlab http://www.mathworks.com/products/matlab
Installationsanleitung über Universitätsrechenzentrum https://www.tu-chemnitz.de/urz/software/overview_sw.php?name=matlab
Octave - Homepage http://www.gnu.org/software/octave
Octave - Download http://www.gnu.org/software/octave/download.html

Tutorials, Informationsmaterial etc. zu Matlab und Octave:

Hierbei wird nicht mehr zwischen Matlab und Octave unterschieden, alle angeführten Scripte, Tutorien lassen sich im Umfang der Kompatibilität sowohl auf Matlab als auch auf Octave anwenden.
Matlab - Getting Started https://de.mathworks.com/help/matlab/getting-started-with-matlab.html?searchHighlight=getting_started&s_tid=srchtitle_getting_started_1
Octave-Manual octave.pdf

Aufgaben:

Ausprobieren und Verstehen

Schleifen / Matlab Befehle und Zeitmessung

Machen Sie sich zunächst mit der Verwendung der Matlab-Befehle tic und toc vertraut. Nun erstellen Sie Matlab-Programme, die die folgenden Aufgaben einmal mit selbstgeschriebenen Schleifen und zum anderen mit geschickt gewählten Matlab-Befehlen oder Matrix/Vektor-Operationen ausführen. Variieren Sie dabei die Dimension des Vektors, z.B. n=10,100 , 1000 ... ca. 100 Millionen, messen Sie die Laufzeiten und stellen Sie dies alles in geeigneten Plots dar. Fazit ?

Hier ein Lösungsbeispiel:mymin.m und myminstart.m

Scripte und Funktionen

Bauen Sie sich eine Matlab Funktion leap_year(y) , die als Argument eine Jahreszahl empfängt und falls das Jahr ein Schaltjahr ist den Wert 1 , sonst 0 zurück liefert.

Erzeugen Sie nun ein Matlab-Script was folgendes leistet

ASCII-Daten einlesen und verwenden

In einem FEM-Programm wurde das eindimensionale logistische Populationsmodell gerechnet. Details dazu sind in Population dispersal via diffusion-reaction equations nachzulesen, sind aber für den Kurs nicht wirklich wichtig.

Hier im Kurs sollen nun die erzeugten Ausgabedaten: trawa.zip die aus einzelnen ASCII-Files zur Approximation von u(t,x) bestehen weiterverarbeitet werden. Dabei handelt es sich für jeden Zeitschritt um eine Datei mit Namenskonvention

u1-step-00000.txt
wobei hier 00000 die Nummer des Zeitschrittes darstellt. Die im Programm verwendete Zeitschrittweite war tau=0.1. In jedem File sind 2 Spalten der Art
0.000000 0.460252 
0.005000 0.458711 
0.010000 0.454101 
0.015000 0.446462 
0.020000 0.435865 
0.025000 0.422412 
...
1.990000 0.000000 
1.995000 0.000000 
2.000000 0.000000 
wobei die erste Spalte die x-Koordinaten der Knotenpunkte und in der zweiten Spalte die zugehörigen Werte u(t,x_i) stehen.

Entwickeln Sie ein Matlab-Programm welches die Daten einliest und folgende Plots erzeugt:

Hinweis: Anhand der Anzahl der Datenfiles werden Sie schnell sehen, dass eine automatische Namensgenerierung unabdingbar ist. Dazu ist der Befehl sprintf nützlich
Speichern Sie die Plots mittels einem Befehl als farbiges png- und pdf-File ab.

Binärdaten einlesen und verwenden

Innerhalb einer (fiktiven!!) statistischen Analyse wurden von einem C-Programm Datensätze in einem File binär gespeichert. Jeder Datensatz hat dabei die Struktur

typedef struct
{
   int  index;
   char name[256];
   int pad;
   double size;
   int age;
   int male_female;
} personaldata;

und das zugehörige Datenfile beginnt mit einem Integer, der die Anzahl der Records angibt, gefolgt von den Records. Dabei codieren die Variablen Daten entsprechend ihres Namens, male_female steht für 0==Mann / 1==Frau.

Hier das geZIPte File: persons.dat.zip und ein Lösungsvorschlag: readdata.m

Entwickeln Sie ein Matlab-Programm welches die Daten einliest und folgendes leistet:

Speichern Sie die Plots als farbiges png- und pdf-File.