So beheben sie folgendes: numpy.linalg.linalgerror: singuläre matrix


Ein Fehler, der in Python auftreten kann, ist:

 numpy.linalg.LinAlgError: Singular matrix

Dieser Fehler tritt auf, wenn Sie versuchen, eine singuläre Matrix zu invertieren, bei der es sich per Definition um eine Matrix handelt, deren Determinante Null ist und die nicht invertiert werden kann.

In diesem Tutorial wird erläutert, wie Sie diesen Fehler in der Praxis beheben können.

So reproduzieren Sie den Fehler

Angenommen, wir erstellen mit NumPy die folgende Matrix:

 import numpy as np

#create 2x2 matrix
my_matrix = np. array ([[1., 1.], [1., 1.]])

#display matrix
print (my_matrix)

[[1. 1.]
 [1. 1.]]

Nehmen wir nun an, wir versuchen, die inv() -Funktion von NumPy zu verwenden, um die Umkehrung der Matrix zu berechnen:

 from numpy import inv

#attempt to invert matrix
inv(my_matrix)

numpy.linalg.LinAlgError: Singular matrix

Wir erhalten eine Fehlermeldung, weil die von uns erstellte Matrix keine inverse Matrix hat.

Hinweis : Schauen Sie sich diese Seite von Wolfram MathWorld an, die 10 verschiedene Beispiele für Matrizen zeigt, die keine inverse Matrix haben.

Per Definition ist eine Matrix singulär und kann nicht invertiert werden, wenn sie eine Nulldeterminante hat.

Sie können die det() -Funktion von NumPy verwenden, um die Determinante einer bestimmten Matrix zu berechnen, bevor Sie versuchen, sie zu invertieren:

 from numpy import det

#calculate determinant of matrix
det(my_matrix)

0.0

Die Determinante unserer Matrix ist Null, was erklärt, warum wir auf einen Fehler stoßen.

So beheben Sie den Fehler

Die einzige Möglichkeit, diesen Fehler zu umgehen, besteht darin, einfach eine Matrix zu erstellen, die nicht singulär ist.

Angenommen, wir verwenden die Funktion inv() , um die folgende Matrix zu invertieren:

 import numpy as np
from numpy. linalg import inv, det

#create 2x2 matrix that is not singular
my_matrix = np. array ([[1., 7.], [4., 2.]])

#display matrix
print (my_matrix)

[[1. 7.]
 [4. 2.]]

#calculate determinant of matrix
print (det(my_matrix))

-25.9999999993

#calculate inverse of matrix
print (inv(my_matrix))

[[-0.07692308 0.26923077]
 [0.15384615 -0.03846154]]

Beim Invertieren der Matrix erhalten wir keine Fehler, da die Matrix nicht singulär ist.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

Fehlerbehebung: Das Objekt „numpy.float64“ kann nicht aufgerufen werden
Fehlerbehebung: Das Objekt „numpy.ndarray“ kann nicht aufgerufen werden
Problembehebung: Das Objekt „numpy.float64“ kann nicht als Ganzzahl interpretiert werden

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert