Die Klasse CMatrix


Inhalt

  1. Einleitung
  2. Member-Variablen
  3. Konstruktion / Destruktion
  4. Allgemeine Fnktionen
  5. Operatoren

Einleitung

Die Klasse CMatrix stellt eine voll funktionsfähige Matrix-Klasse zur Verfügung. Die meisten Funktionen sollten selbsterklärend sein.
Headerdatei:matrix.hh
Implementationsdatei:matrix.cc


Die Member-Variablen


CMatrix<CTemplate>();

Erzeugt ein CMatrix-Objekt. Die Variable aVector bekommt den Wert NULL zugewiesen und zeigt somit auf keinen gültigen Speicherbereich.


CMatrix<CTemplate>(int height,int width);

Erzeugt ein CMatrix-Objekt. Die Matrix hat die Größe height Zeilen auf width Spalten.


CMatrix<CTemplate>(CMatrix<CTemplate>& A);

Erzeugt ein CMatrix-Objekt. Das Objekt ist identisch zur übergebenen Matrix A.


~CMatrix<CTemplate>()

Zerstört das CMatrix-Objekt.


void Allocate(intn height, int width);

Allokiert den Speicher für das bestehende CMatrix-Objekt neu. Die Matrix hat dann height Zeilen und width Spalten.


void Free();

Gibt den durch das CMatrix-Objekt allokierten Speicher wieder frei.


void Clear();

Löscht den Inhalt der Matrix. Im Gegensatz zur Free() wird hier jedes Element der Matrix auf 0 gesetzt, der allokierte Speicher jedoch bleibt erhalten.


inline int GetWidth() { return m; };

Liefert die Spaltenanzahl der Matrix.


inline int GetHeight() { return n; };

Liefert die Zeilenanzahl der Matrix.


void ChangeLines (int i, int j);

Vertauscht Zeile i mit Zeile j innerhalb der Matrix.


void Identity(int n);

Erzeugt eine Einheitsmatrix der Größe n x n. Bedingung hierfür ist, daß ein Objekt vom Typ CTemplate als natürliche Zahl darstellbar ist.


void Epsilon(double e = 1.0e-10);

Führt eine Fehlerkorrektur durch. Jeder Wert x der der Matrix wird auf 0 gesetzt, sobald der Betrag von x kleiner als der der Funktion Epsilon übergebene Wert e ist.


friend CMatrix<CTemplate> Transpose (CMatrix<CTemplate>& A);

Liefert die zu A transponierte Matrix zurück. Die Matrix A bleibt dabei unverändert.


void Transpose ( );

Transponiert die Matrix.


inline CVector<CTemplate>& operator[] (int Index ) { return aVector[Index]; };

Liefert eine Referenz auf die i-te Zeile der Matrix als CVector-Objekt.


CMatrix<CTemplate>& operator= (const CMatrix<CTemplate>& A);

Kopiert das durch A übergebene CMatrix-Objekt.


friend CMatrix<CTemplate> operator+ (CMatrix<CTemplate>&, CMatrix<CTemplate>& );

Addiert zwei Matrizen komponentenweise.


friend CMatrix<CTemplate> operator- (CMatrix<CTemplate>&, CMatrix<CTemplate>& );

Subtrahiert zwei Matrizen komponentenweise.


friend CMatrix<CTemplate> operator* (CMatrix<CTemplate>&, CMatrix<CTemplate>& );

Multipliziert zwei Matrizen.


friend CVector<CTemplate> operator* (CMatrix<CTemplate>&, CVector<CTemplate>& );

Multipliziert eine Matrix mit einem Vektor. Die Multiplikation hat die Form A*b, wobei A eine n x m Matrix ist und b ein Spaltenvektor mit m Zeilen.


friend CVector<CTemplate> operator* (CVector<CTemplate>&, CMatrix<CTemplate>& );

Multipliziert einen Vektor mit einer Matrix. Die Multiplikation hat die Form b*A, wobei A eine n x m Matrix ist und b ein Spaltenvektor mit n Zeilen.


CMatrix<CTemplate>& operator+= (CMatrix<CTemplate>& );

Addiert zum CMatrix-Objekt eine andere Matrix komponentenweise.


CMatrix<CTemplate>& operator-= (CMatrix<CTemplate>& );

Subtrahiert vom CMatrix-Objekt eine andere Matrix komponentenweise.


friend CMatrix<CTemplate> operator* (CMatrix<CTemplate>&, CTemplate );

Multipliziert das CMatrix-Objekt mit einer Matrix .


friend CMatrix<CTemplate> operator/ (CMatrix<CTemplate>&, CTemplate );

Dividiert ein CMatrix-Objekt durch ein Objekt vom Typ CTemplate, d.h. jedes Element der Matrix wird durch das CTemplate-Objekt dividiert.


friend CMatrix<CTemplate> operator* (CTemplate, CMatrix<CTemplate>& );

Multipliziert ein CMatrix-Objekt mit einem Objekt vom Typ CTemplate, d.h. jedes Element der Matrix wird mit dem CTemplate-Objekt multipliziert.


friend CMatrix<CTemplate> operator/ (CTemplate, CMatrix<CTemplate>& );

Dividiert ein CMatrix-Objekt durch ein Objekt vom Typ CTemplate, d.h. jedes Element der Matrix wird durch das CTemplate-Objekt dividiert.


CMatrix<CTemplate>& operator*= (CTemplate );

Multipliziert das CMatrix-Objekt mit einem Objekt vom Typ CTemplate, d.h. jedes Element der Matrix wird mit dem CTemplate-Objekt multipliziert.


CMatrix<CTemplate>& operator/= (CTemplate );

Dividiert das CMatrix-Objekt durch ein Objekt vom Typ CTemplate, d.h. jedes Element der Matrix wird durch das CTemplate-Objekt dividiert.


friend ostream& operator<< (ostream&, CMatrix<CTemplate>& );

Gibt das CMatrix-Objekt auf dem Ausgabestream ostream aus.


friend istream& operator>> (istream&, CMatrix<CTemplate>& );

Liest das CMatrix-Objekt vom Eingabestream istream.


void Read (istream* );

Liest das CMatrix-Objekt vom Eingabestream istream.


void Invert ( );

Invertiert die Matrix durch den modifizierten Gauß-Algorithmus.


void InvertAdj ( );

Invertiert die Matrix mit Hilfe der zur Matrix adjungierten Matrix. (A-1 = 1/|A|*ad(A))


CTemplate Triangle (CVector<CTemplate> *b = NULL );

Wandelt die Matrix in Dreiecksform. Wird ein Vektor übergeben (d.h. ist b ungleich NULL), dann wird der übergebene Vektor parallel zur Matrix umgeformt. Die Funktion liefert außerdem die Determinante der Matrix zurück.


CTemplate det ( );

Berechnet die Determinate der Matrix. (Diese Funktion ist nicht effizient, aber sie funktioniert.)


friend CVector<CTemplate> Solve (CMatrix<CTemplate>, CVector<CTemplate> );

Löst ein Gleichungssystem der Form A*x = b und liefert den Vektor x zurück.


void Sort (int Index );

Sortiert die Zeilen der Matrix in aufsteigender Reiehfolge. Sortierschlüssel ist hierbei die durch Index angegebene Spalte. Die Funktion nutzt den QuickSort-Algorithmus.


void QuickSort (int, int, int );

Quick-Sort-Algorithmus zum Sortieren der Matrix. Diese Funktion sollte mit Vorsicht genossen werden. Zum Sortieren der Matrix verwende man am besten die Funktion Sort.