Hauptübersicht

# Klasse `Matrix`

Klasse `Matrix`
vgl. Menü: Einfügen -- Matrix
Matrix(v): v Liste von gleichlangen Listen,
Beispiel:
`Matrix([[11,12,13],[21,22,23]])`
Die Klasse `Matrix` ist abgeleitet von `Vector`:
Ein `Matrix`-Objekt ist ein `Vector` von gleichlangen `Vector`-Objekten.
Die Elemente können mit Doppelindizes (z.B.: `A[i,k]`) angesprochen werden. Indizes werden (wie in Python-Listen etc.) ab 0 gezählt.
vgl. Klassenmethoden mit `Matrix.`

Basisklasse: `Vector`

Übersicht:

## Konstruktor

Matrix (v)

## Klassenmethoden (statische Methoden)

Methode | Bedeutung
fromFunction (m, n, fn, offset=0) | Durch Funktion `fn` berechnete `m*n`-Matrix
fromString (s) | Matrix aus String
identity (n) | n*n-Einheitsmatrix
null (m, n=0) | m*n-Nullmatrix
random (m,n=0, r=100) | m*n-Matrix mit Zufallswerten 0..r-1

## Operatoren

Operator | Bedeutung
x + y | Matrix addition operator
x[i] | Counts from 0 A[i] à i-th row vector A[i,k] à element in i-th row, k-th column
~x |
x * y | Scalar or matrix multiplication
-x |
str(x) |
x[i] = y | Counts from 0 A[i] à i-th row vector A[i,k] à element in i-th row, k-th column
x - y | Matrix subtraction operator

## Objektmethoden

Methode | Bedeutung
adjoint () | Adjungierte Matrix
cofactor (i, k) | Kofaktor zur Zeile i und der Spalte k
colRange () | Liste aller Spaltenindizes
complement (i, k) | Matrix ohne die Zeile i und die Spalte k
copy () | unabhängige Kopie der Matrix A
det () | Determinante der Matrix A
float () | gibt die Matrix A zurück, in der alle Elemente nach `float` konvertiert sind
gaussElim (jordan=True) | Zeilenstufenform der Matrix A.
gramSchmidt (normalize=False) | Gram-Schmidt'sches Orthogonalisierungsverfahren.
height () | Anzahl der Zeilen der Matrix A
inverse () | Inverse Matrix A
isSquare () | Wahrheitswert (A quadratisch)
joinBottom (B) | Vertikale Verkettung von A mit B
joinRight (B) | Horizontale Verkettung von A mit B
leastSquares (b) | Lösung der Normalgleichung
lup () | LRP-Zerlegung (LUP decomposition) der Matrix
minor (i, k) | Minor zur Zeile i und der Spalte k
operators () | Nur zur Dokumentation
rank () | Rang der Matrix A
rowRange () | Liste aller Zeilenindizes
solve (b) | Lösung x des linearen Gleichungssystems Ax = b
str (i,k) | String-Darstellung des Elements [i,k]
submatrix (i, k, m, n) | m*n-Untermatrix (Zeilen i..i+m-1, Spalten k..k+n-1)
transp () | berechnet die Transponierte der Matrix A
width () | Anzahl der Spalten der Matrix A

# Konstruktor

### Matrix

Konstruktor

Aufruf: `Matrix(v)`

# Klassenmethoden (statische Methoden)

### fromFunction

Matrix.fromFunction(m,n, fn, offset=0)

Aufruf: `Matrix.fromFunction(m, n, fn, offset=0)`

Beschreibung:
Durch Funktion `fn` berechnete `m*n`-Matrix
`fn` muss eine zweistellige Funktion sein.
Das allgemeine Element `A[i,k]` wird mit `fn(i+offset,k+offset)` berechnet.
Beispiel:
`Matrix.fromFunction(2,4, pow, 1)`
liefert die Matrix

     / 1 1 1  1 \
     |          |
     \ 2 4 8 16 /

### fromString

Matrix.fromString(s)

Aufruf: `Matrix.fromString(s)`

Beschreibung:
Matrix aus String
Im String s werden die Elemente der Matrix zeilenweise angegeben.
Die Zeilen werden durch Semikolon getrennt, die Elemente innerhalb der Zeilen durch Komma.
Elemente können auch rational sein (mit Schrägstrich).
Beispiel:
`Matrix.fromString("1, 2, 3.14; 4/5, 5, 6")` liefert die Matrix

     / 1    2  3.14 \
     |              |
     \ 4/5  5   6   /

### identity

Matrix.identity(n)

Aufruf: `Matrix.identity(n)`

Beschreibung:
n*n-Einheitsmatrix

### null

Matrix.null(m, n=0)

Aufruf: `Matrix.null(m, n=0)`

Beschreibung:
m*n-Nullmatrix
Quadratische Matrix, falls n weggelassen wird.

### random

Matrix.random(m,n=0, r=100)

Aufruf: `Matrix.random(m,n=0, r=100)`

Beschreibung:
m*n-Matrix mit Zufallswerten 0..r-1

# Operatoren

### x + y

A.__add__(B)

Aufruf: `x + y`

Beschreibung:
Matrix addition operator
Instead of A = A + B you may write A += B.

### x[i]

Definition of the Index operator []

Aufruf: `x[i]`

Beschreibung:
Counts from 0 A[i] à i-th row vector A[i,k] à element in i-th row, k-th column

### ~x

Operator ~ (transposition)

Aufruf: `~x`

Beschreibung:

### x * y

A.__sub__(B)

Aufruf: `x * y`

Beschreibung:
Scalar or matrix multiplication
Instead of A = A * B you may write A *= B.

### -x

unary minus operator

Aufruf: `-x`

Beschreibung:

### str(x)

Object representation as string

Aufruf: `str(x)`

Beschreibung:

### x[i] = y

Definition of the Index operator [] for assignments

Aufruf: `x[i] = y`

Beschreibung:
Counts from 0 A[i] à i-th row vector A[i,k] à element in i-th row, k-th column

### x - y

A.__sub__(B)

Aufruf: `x - y`

Beschreibung:
Matrix subtraction operator
Instead of A = A - B you may write A -= B.

# Objektmethoden

### adjoint

A.adjoint()

Aufruf: `A.adjoint()`

Beschreibung:
Adjungierte Matrix

### cofactor

A.cofactor(i, k)

Aufruf: `A.cofactor(i, k)`

Beschreibung:
Kofaktor zur Zeile i und der Spalte k
(Minor mit Vorzeichen)

### colRange

A.rowRange()

Aufruf: `A.colRange()`

Beschreibung:
Liste aller Spaltenindizes

### complement

A.complement(i, k)

Aufruf: `A.complement(i, k)`

Beschreibung:
Matrix ohne die Zeile i und die Spalte k
(Algebraisches Komplement)

### copy

A.copy()

Aufruf: `A.copy()`

Beschreibung:
unabhängige Kopie der Matrix A

### det

A.det()

Aufruf: `A.det()`

Beschreibung:
Determinante der Matrix A

### float

A.float()

Aufruf: `A.float()`

Beschreibung:
gibt die Matrix A zurück, in der alle Elemente nach `float` konvertiert sind

### gaussElim

A.gaussElim(jordan=True)

Aufruf: `self.gaussElim(jordan=True)`

Beschreibung:
Zeilenstufenform der Matrix A.
Wenn jordan `True` ist, wird die reduzierte Zeilenstufenform (Gauß-Jordan-Elimination) zurückgegeben, sonst die einfache Zeilenstufenform (Gauß-Elimination).

### gramSchmidt

A.gramSchmidt(normalize=False)

Aufruf: `self.gramSchmidt(normalize=False)`

Beschreibung:
Gram-Schmidt'sches Orthogonalisierungsverfahren.
`A` muss Matrix aus den (linear unabhängigen) zu orthogonalisierenden Vektoren (als Zeilen) sein.
Wenn normalize True ist, werden die Vektoren normalisiert.
Rückgabewert: Matrix mit den orthogonalen Vektoren.
Beispiel

     A = Matrix([[1,1],[2,0]])
     A.gramSchmidt()

liefert die Matrix

     / 1   1 \
     |       |
     \ 1  -1 /

### height

A.height()

Aufruf: `A.height()`

Beschreibung:
Anzahl der Zeilen der Matrix A

### inverse

A.inverse()

Aufruf: `A.inverse()`

Beschreibung:
Inverse Matrix A

### isSquare

A.isSquare()

Aufruf: `A.isSquare()`

Beschreibung:
Wahrheitswert (A quadratisch)

### joinBottom

A.concat(B)

Aufruf: `A.joinBottom(B)`

Beschreibung:
Vertikale Verkettung von A mit B
Voraussetzung: Die beiden Matrizen müssen gleich viele Spalten haben.

### joinRight

A.concat(B)

Aufruf: `A.joinRight(B)`

Beschreibung:
Horizontale Verkettung von A mit B
Voraussetzung: Die beiden Matrizen müssen gleich viele Zeilen haben.

### leastSquares

A.leastSquares(b)

Aufruf: `A.leastSquares(b)`

Beschreibung:
Lösung der Normalgleichung
Rückgabewert: `(~A*A).solve(~A*b)`

### lup

.lup()

Aufruf: `self.lup()`

Beschreibung:
LRP-Zerlegung (LUP decomposition) der Matrix
Rückgabewert: Tripel (L, U, P) mit P*A = L*R, wobei:
P Permutationsmatrix,
L linke (lower) Dreiecksmatrix mit Einsen auf Diagonale,
U rechte (upper) Dreiecksmatrix ist.
Voraussetzung: Matrix ist invertierbar.

### minor

A.minor(i, k)

Aufruf: `A.minor(i, k)`

Beschreibung:
Minor zur Zeile i und der Spalte k
(Determinante des Algebraischen Komplements)

### operators

Matrix.operators()

Aufruf: `self.operators()`

Beschreibung:
Nur zur Dokumentation
Die Klasse Matrix erlaubt folgende Operatoren:

Op. | Funktion | Beispiele
--- | --- | ---
+ | Addition | `A + B; A += B`
- | Subtraktion | `A - B; A -= B`
* | Matrizenmultiplikation (wenn beide Operanden Matrizen sind) bzw. Skalarmultiplikation (sonst) | `a * b; a *= b`
- | unäres Minus | `-A`
~ | Transponierte Matrix | `~A`
| | Verkettung | `A | B; A |= B`
[ ] | Indexoperator | `A[i,k]` `A[i]` (Zeilenvektor)

Diese Methode dient nur zur Dokumentation. Sie hat keine Wirkung.

### rank

A.rank()

Aufruf: `A.rank()`

Beschreibung:
Rang der Matrix A

### rowRange

A.rowRange()

Aufruf: `A.rowRange()`

Beschreibung:
Liste aller Zeilenindizes

### solve

A.solve(b)

Aufruf: `A.solve(b)`

Beschreibung:
Lösung x des linearen Gleichungssystems Ax = b
b kann Vektor oder Spaltenmatrix sein.

### str

A.str(i,k)

Aufruf: `A.str(i,k)`

Beschreibung:
String-Darstellung des Elements [i,k]

### submatrix

A.submatrix(i, k, m, n)

Aufruf: `A.submatrix(i, k, m, n)`

Beschreibung:
m*n-Untermatrix (Zeilen i..i+m-1, Spalten k..k+n-1)

### transp

A.transp()

Aufruf: `A.transp()`

Beschreibung:
berechnet die Transponierte der Matrix A
kürzer: ~A

### width

A.width()

Aufruf: `A.width()`

Beschreibung:
Anzahl der Spalten der Matrix A