Permutationsmatrix

Beispiel für die Permutationsmatrix in Python / Matlab

[1]:
import numpy as np
[2]:
n=5

Programmiertechnisch ist es sinnvoller die Permutation in einem Vektor zu speichern. Im Vektor wird die Reihenfolge der Zeilen gespeichert. Im Beispiel vertauschen wir die 2. und 4. Zeile:

[3]:
ind = np.array([0,3,2,1,4])
ind
[3]:
array([0, 3, 2, 1, 4])

Die zugehörige Permutationsmatrix kann einfach mit Hilfe der Einheitsmatrix erstellt werden. Wir wählen die Einheitsvektoren

\[e_i = (0,\dots,0,\underbrace{1}_{i\ \text{-te Position}},0,\dots,0)^T\]

in der Reihenfolge der Zeilen:

[4]:
id = np.eye(n)
P = id[ind,:]
P
[4]:
array([[1., 0., 0., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 1., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 0., 0., 1.]])

An einer random Matrix getestet:

[5]:
A=np.round(np.random.rand(5,5)*10)
A
[5]:
array([[2., 1., 3., 9., 4.],
       [2., 2., 3., 2., 7.],
       [5., 6., 1., 8., 0.],
       [6., 8., 8., 0., 4.],
       [9., 4., 7., 1., 4.]])

Vertauschen der 2. und 4. Zeile mit Hilfe der Permutationsmatrix:

[6]:
P@A
[6]:
array([[2., 1., 3., 9., 4.],
       [6., 8., 8., 0., 4.],
       [5., 6., 1., 8., 0.],
       [2., 2., 3., 2., 7.],
       [9., 4., 7., 1., 4.]])

Oder mit Hilfe des Permutationsvektors:

[7]:
A[ind,:]
[7]:
array([[2., 1., 3., 9., 4.],
       [6., 8., 8., 0., 4.],
       [5., 6., 1., 8., 0.],
       [2., 2., 3., 2., 7.],
       [9., 4., 7., 1., 4.]])
[ ]: