Inverse einer Matrix mit Python und Numpy:
>>> import numpy as np
>>> b = np.array([[2,3],[4,5]])
>>> np.linalg.inv(b)
array([[-2.5, 1.5],
[ 2. , -1. ]])
Nicht alle Matrizen können invertiert werden. Zum Beispiel sind singuläre Matrizen nicht invertierbar :
>>> import numpy as np
>>> b = np.array([[2,3],[4,6]])
>>> np.linalg.inv(b)
LinAlgError: Singular matrix
Lösung des singulären Matrixproblems:
Versuchen Sie, die Singular Matrix-Ausnahme abzufangen, und fahren Sie fort, bis Sie eine Transformation finden, die Ihren vorherigen Kriterien entspricht UND auch invertierbar ist.
Intuition, warum Matrixinversion nicht immer durchgeführt werden kann; wie in singulären Matrizen:
Stellen Sie sich einen alten Overhead-Filmprojektor vor, der ein helles Licht durch den Film auf eine weiße Wand strahlt. Die Pixel im Film werden auf die Pixel an der Wand projiziert.
Wenn ich die Filmprojektion auf einem einzelnen Bild stoppe, sehen Sie die Pixel des Films an der Wand und ich bitte Sie, den Film basierend auf dem, was Sie sehen, neu zu generieren. Das ist einfach, sagen Sie, nehmen Sie einfach die Umkehrung der Matrix, die die Projektion durchgeführt hat. Eine Umkehrung einer Matrix ist die Umkehrung der Projektion.
Stellen Sie sich nun vor, der Projektor wäre beschädigt, und ich habe ein verzerrtes Objektiv vor den Film gestellt. Jetzt werden mehrere Pixel auf dieselbe Stelle an der Wand projiziert. Ich habe Sie erneut gebeten, "diese Operation mit der inversen Matrix rückgängig zu machen". Sie sagen: "Ich kann nicht, weil Sie Informationen durch die Linsenverzerrung zerstört haben. Ich kann nicht dorthin zurückkehren, wo wir waren, weil die Matrix entweder Singular oder Degenerate ist."
Eine Matrix, mit der einige Daten in andere Daten umgewandelt werden können, kann nur invertiert werden, wenn der Prozess ohne Informationsverlust rückgängig gemacht werden kann. Wenn Ihre Matrix nicht invertiert werden kann, definieren Sie Ihre Projektion möglicherweise mithilfe einer Guess-and-Check-Methode, anstatt einen Prozess zu verwenden, der eine nicht beschädigende Transformation garantiert.
Wenn Sie eine Heuristik oder eine weniger als perfekte mathematische Genauigkeit verwenden, müssen Sie einen anderen Prozess definieren, um Verzerrungen zu verwalten und unter Quarantäne zu stellen, damit die Programmierung durch Brownsche Bewegung fortgesetzt werden kann.
Quelle:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.inv.html#numpy.linalg.inv
np.matrix(x)
damit die.I
Methode verfügbar ist.