Scipy Lapack -Funktionen

Scipy Lapack -Funktionen
Die integrierten Scipy- und Numpy-Bibliotheken sind unglaublich, um jede Art von linearen Algebra-Operationen in einem Python-Programm durchzuführen. Wenn Sie jedoch keine bestimmte Funktion oder Methode finden, die Ihren Bedarf an linearen Algebra -Funktionen erfüllt, können Sie sich immer auf die Lapack -Funktionen beziehen. Die Lapack -Funktionen werden verwendet, um komplexe lineare Algebrafunktionen problemlos und schnell zu lösen. In diesem Leitfaden möchten wir so viele Lapack -Funktionen wie möglich untersuchen, um zu verstehen, wie Sie Ihre Arbeit mit linearen Algebra -Funktionen erleichtern können.

Was ist die Lapack -Funktion??

LAPACK ist eine unabhängige Open -Source -Bibliothek und kostenlose Bibliothek. Es steht für ein lineares Algebra -Paket und bietet robuste und schnelle Matrixberechnungen und numerische lineare Algebra. LAPACK bietet eine Grundlage für alle Arten von numerischen linearen Algebra -Funktionen und Matrixberechnung in Scipy, Numpy und MATLAB. LAPACK basiert im Grunde genommen auf einer multi -verfassten großen FORTRAN -Bibliothek speziell für numerische lineare Algebra. Das Lapack -Paket kann mehrere Matrixspalten gleichzeitig verwalten und ist sehr schnell, da es absichtlich für die Verwendung in Supercomputern hergestellt wurde.

Die Scipy Library bietet eine breite Palette von Lapack -Funktionen mit niedriger Ebene innerhalb des Linalg -Moduls. Diese Funktionen führen keine Fehlerprüfung durch und wenn dies der Fall ist, ist dies sehr wenig, was zum Systemabsturz führt. Die Liste der Skipye.Linalg.Lapack -Funktionen sind sehr lang, da es mehrere nützliche Funktionen enthält, ich.e., SGBSV, CGBSV, SGBTRS, ZGBTRS, SGECON, CGEEQUE, SGEEV, SGEHRD, DGEJSV, DGELSD, ZGELSS, ZGELSY, ZGEQRF, DGEV, CGGEV usw. Jede Methode hat unterschiedliche Funktionen und hat unterschiedliche Funktionen. Es gibt nur eine Fundfunktion in der Skipie.Linalg.LAPACK -Modul und das ist die Funktion get_lapack_funcs. Übergehen wir zum Beispielabschnitt, um die Arbeit von Scipy zu verstehen.Linalg.Lapack -Funktionen.

Beispiel 1:

Die Skipie.Linalg.LAPACK -Funktion hat nur eine Befundungsfunktion, und das ist get_lapack_funcs. Mit dem GET_LAPACK_FUNCS wird die vom Namensattribut verfügbare Lapack -Funktion verwendet. Die Syntax der get_lapack_funcs lautet wie folgt:

Der Parameter 'Name' enthält den Namen der Funktion in Form einer Zeichenfolge oder einer Abfolge von Zeichenfolgen ohne Präfixtyp. Der Parameter "Array" enthält die Abfolge mehrdimensionaler Arrays, die verwendet werden, um die optimalen Präfixe der Lapack -Routine zu bestimmen. Der Parameter 'DTYPE' definiert den Datentyp, und schließlich bestimmt der Parameter 'ILP' die ILP64 -Routinevariante. Die drei Parameternamen, DTYPE und ILP sind optional. Wenn Sie also keinen Wert für diese Parameter angeben, verwendet die Funktion die Standardwerte automatisch. Die GET_LAPACK_FUNCS gibt die Liste der Funktionen zurück, die gegen die angegebenen Parameterwerte gefunden wurden. Betrachten Sie den unten angegebenen Beispielcode als besseres Verständnis:

Numph als NP importieren
Skipie importieren.Linalg als la
r = np.willkürlich.default_rng ()
a = r.zufällig ((1, 2))
Labor = la.get_lapack_funcs ('lange', (a+1j,))
Druck (Labor.Typschlüssel)

Die Funktion begann mit dem Import der Numpy -Bibliothek als NP und Scipy.Linalg -Paket als la. Nachdem wir alle erforderlichen Bibliotheken importiert hatten, haben wir die Funktion randal () aufgerufen, um die Funktion default_rng () auszuführen. Der berechnete Wert wird in einer Variablen 'r' und 'r' gespeichert, um die zufällige Funktion aufzurufen, um ein Array von zufälligen Werten zu generieren, die aus einer Zeile und zwei Spalten bestehen. Nachdem wir alle wesentlichen Daten haben, können wir die Funktion get_lapack_funcs aufrufen, um die Liste der Funktionen zu erhalten.

Es gibt vier Präfixtypen gegen jede Funktion in der Scipy.Linalg.LAPACK -Bibliothek und sie sind C, D, S und Z und jedes von ihnen hat einen Datentyp Complex64, Float64, Float32 bzw. Komplex128. Unabhängig davon, welcher Funktionsname Sie dem Get_Lapack_Funcs angeben, erhalten Sie entweder C, D, S oder Z Präfixtyp als Gegenleistung. Hier haben wir den Funktionsnamen "Lange" erwähnt und die Typecode -Methode aufgerufen. Der Präfixname wird im Attribut typecode gespeichert. Wenn Sie ihn also aufrufen, erhalten Sie den Präfixnamen des angegebenen Funktionsnamens. Mal sehen, welches Ergebnis wir von der Funktion get_lapcak_funcs erhalten:

Beispiel 2:

Angenommen, wir müssen die "Lange" -Routine verwenden, um die ausgewählte Array -Norm zu berechnen, sind uns jedoch nicht sicher über das Präfix der Funktion. Wir können unser Array einfach an die Funktion get_lapack_funcs übergeben und das richtige Präfixgeschmack für das Array erhalten. Hier optimieren wir nur das vorherige Beispiel ein wenig, um Ihnen die verschiedenen Ergebnisse der Funktion get_lapcak_funcs für ein anderes Array zu zeigen. Betrachten Sie den nachstehend angegebenen Referenzcode:

Numph als NP importieren
Skipie importieren.Linalg als la
r = np.willkürlich.default_rng ()
a = r.zufällig ((5, 5))
Labor = la.get_lapack_funcs ('lange', (a,))
Druck (Labor.Typschlüssel)

Wie Sie bemerken können, haben wir nur die Array -Daten und die Präfixroutine geändert, um zu überprüfen, wie sich das Ergebnis der Funktion get_lapack_funcs ändert. Das Ergebnis ist unten im Snippet angegeben:

Beispiel 3:

Wie wir oben diskutiert haben, führt die Lapack -Funktion mit niedriger Ebene nur wenig oder gar keine Fehlerprüfung durch, aber sie sind sehr schnell und absichtlich für die Verwaltung einer großen Datenmenge konzipiert. Daher eignen sie sich am besten für Daten, die groß genug für schnelle Berechnungen sind, und klein genug kann eine Speicherverschwendung vermeiden. Lassen Sie uns nun die Optimierungsfunktionen des Get_Lapack_funcs testen, indem wir sie mit einem 1000 x 2000 -Größenarray zur Verfügung stellen. Betrachten Sie den Referenzcode im folgenden Code -Snippet:

Numph als NP importieren
Skipie importieren.Linalg als la
r = np.willkürlich.default_rng ()
a = rng.zufällig ((1000, 2000))
xlwork = la.get_lapack_funcs ('sysv_lwork', (a,))
opt_lwork, _ = xlwork (a.Form [0])
print (opt_lwork)
drucken (xlwork.Typschlüssel)

Wie Sie sehen können, haben wir die 1000 x 2000 -Größe des zu erzeugenden Arrays bereitgestellt. Der Funktionsname "sysv_lwork" wurde angegeben und das berechnete Array wurde an die Funktion get_lapack_funcs übergeben. Ob die Größe des generierten Arrays optimal ist oder nicht, wird durch eine dedizierte Abfrage bestimmt, die als ### _ lwork bezeichnet wird. Wie Sie sehen können, haben wir XLWork zusammen mit der SYSV_LWork -Abfrage verwendet, um die optimale Größe des Computerarrays zu erhalten. Wir haben auch die TypeCode aufgerufen, um den optimalen Typcode für das generierte Array gegen den Namen Sysv_lwork zu kennen.

Abschluss

Diese Anleitung ist um die Lapack -Bibliothek für komplexe Matrixfunktionen und numerische lineare Algebra -Systeme eingewickelt. Wir haben mithilfe mehrerer Beispiele von der Arbeit von Lapack -Funktionen mit niedrigem Level gelernt. LAPACK steht für lineare Algebra -Paket, das von Numpy, Scipy und Matlab verwendet wird. Es ist die Grundlage für die linearen Algebrafunktionen, die von den Scipy- und Numpy -Bibliotheken angeboten werden. Üben Sie diese Beispiele und versuchen Sie, sie anhand verschiedener Szenarien zu ändern.