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.]])
[ ]: