Funkcje Scipy LaPack

Funkcje Scipy LaPack
Wbudowane biblioteki Scipy i Numpy są niesamowite do wykonywania dowolnych operacji algebry liniowej w programie Python. Jeśli jednak nie znajdziesz konkretnej funkcji lub metody, która zaspokaja potrzebę funkcji algebry liniowej, zawsze możesz odwołać się do funkcji LaPack. Funkcje LAPACK są używane do rozwiązywania złożonych funkcji algebry liniowej z łatwością i szybkim. W tym przewodniku staramy się zbadać jak najwięcej funkcji LaPack, aby pomóc Ci zrozumieć, w jaki sposób możesz ułatwić pracę z funkcjami algebry liniowej.

Jaka jest funkcja lapacka?

Lapack to niezależna, open source i bezpłatna biblioteka używana specjalnie do wykonywania operacji algebry liniowej. Oznacza pakiet algebry liniowej i zapewnia solidne i szybkie obliczenia macierzy oraz liczbowe algebra liniowa. Lapack stanowi podstawę dla wszystkich rodzajów liczbowych funkcji algebry liniowej i obliczeń macierzy w Scipy, Numpy i Matlab. LaPack jest w zasadzie zbudowany na wielu autowych bibliotece Fortran specjalnie dla liczbowej algebry liniowej. Pakiet LaPack jest w stanie zarządzać wieloma kolumnami macierzy jednocześnie i jest bardzo szybki, ponieważ był celowo wykonany w superkomputerach.

Biblioteka Scipy oferuje szeroką gamę funkcji LAPACK na niskim poziomie w module Linalg. Te funkcje nie wykonują sprawdzania błędów, a jeśli to zrobią, będzie to bardzo mało, co prowadzi do awarii systemu. Lista Scipy.Linalg.Funkcje lapacka są bardzo długie, ponieważ zawiera kilka przydatnych funkcji, i.mi., SGBSV, CGBSV, SGBTRS, ZGBTRS, SGECON, CGEESP, SGEEV, SGEHRD, DGEJSV, DGELSD, ZGELSS, ZGELSY, ZGEQRF, DGESV, CGGEV itp. Każda metoda ma inne funkcje i ma różne funkcje. W Scipy jest tylko jedna funkcja znalezienia.Linalg.moduł lapack i to jest funkcja get_lapack_funcs. Przejdźmy do sekcji przykładowej, aby zrozumieć działanie Scipy.Linalg.Funkcje lapacka.

Przykład 1:

Scipy.Linalg.Funkcja LaPack ma tylko jedną funkcję znalezienia, a mianowicie get_lapack_funcs. Get_lapack_funcs służy do uzyskania dostępnej funkcji LAPACK określonej przez atrybut nazwy. Składnia get_lapack_funcs jest następująca:

Parametr „Nazwa” zawiera nazwę funkcji w postaci ciągu lub sekwencji ciągów bez żadnego typu prefiks. Parametr „tablicy” zawiera sekwencję tablic wielowymiarowych, które są używane do określenia optymalnych prefiksów rutyny lapacka. Parametr „Dtype” definiuje typ danych, a na koniec parametr „ILP” określa rutynowy wariant ILP64. Nazwa trzech parametrów, DTYPE i ILP są opcjonalne, więc jeśli nie podajesz konkretnie wartości dla tych parametrów, funkcja będzie korzystać z wartości domyślnych automatycznie. Get_lapack_funcs zwróci listę funkcji znalezionych w stosunku do podanych wartości parametrów. Rozważ przykład podany poniżej, aby lepiej zrozumieć:

importować Numpy jako NP
Import Scipy.Linalg jako la
r = np.losowy.default_rng ()
a = r.losowy ((1, 2))
lab = la.get_lapack_funcs („Lange”, (A+1J,))
Drukuj (laboratorium.typeCode)

Funkcja rozpoczęła się od importowania biblioteki Numpy jako NP i Scipy.Pakiet Linalg jako LA. Po zaimportowaniu wszystkich wymaganych bibliotek wywołaliśmy funkcję Random (), aby wykonać funkcję default_rng (). Obliczona wartość jest przechowywana w zmiennej „R”, a „R” jest następnie używana do wywołania funkcji losowej do wygenerowania tablicy wartości losowych składających się z jednego wiersza i dwóch kolumn. Teraz, gdy mamy wszystkie niezbędne dane, możemy wywołać funkcję get_lapack_funcs, aby uzyskać listę funkcji.

Istnieją cztery typy prefiksów w stosunku do każdej funkcji w SCIPY.Linalg.Biblioteka LaPack i to C, D, S i Z, a każdy z nich ma odpowiednio kompleks typu danych 64, float64, float32 i complex128. Niezależnie od tego, co podajesz nazwę funkcji get_lapack_funcs, otrzymasz w zamian typ C, D, S lub Z. W tym miejscu wspomnieliśmy o nazwie funkcji „Lange” i nazwieniu metodę typeCode. Nazwa prefiksu jest przechowywana w atrybucie typeCode, więc kiedy ją wywołasz, otrzymasz nazwę prefiksu podanej nazwy funkcji. Zobaczmy, jaki wynik otrzymamy z funkcji get_lapcak_funcs:

Przykład 2:

Załóżmy, że musimy użyć procedury „Lange” do obliczenia wybranej normy tablicy, ale nie jesteśmy pewni przedrostka funkcji. W tym przypadku możemy po prostu przekazać naszą tablicę do funkcji get_lapack_funcs i uzyskać odpowiedni smak prefiks. Tutaj nieco poprawiamy poprzedni przykład, aby pokazać różne wyniki funkcji get_lapcak_funcs dla innej tablicy. Rozważ kod referencyjny podany poniżej:

importować Numpy jako NP
Import Scipy.Linalg jako la
r = np.losowy.default_rng ()
a = r.losowy ((5, 5))
lab = la.get_lapack_funcs („Lange”, (a,))
Drukuj (laboratorium.typeCode)

Jak można zauważyć, zmieniliśmy tylko dane tablicy i procedurę prefiks. Wynik podano poniżej w fragmencie:

Przykład 3:

Jak omówiliśmy powyżej, funkcja LAPACK na niskim poziomie wykonuje niewiele lub żaden sprawdzanie błędów, ale są bardzo szybkie i celowo zaprojektowane do zarządzania dużą ilością danych. Dlatego najlepiej działają na dane wystarczająco duże do szybkiego obliczania, a wystarczająco małe mogą uniknąć marnotrawstwa pamięci. Teraz przetestujmy możliwości optymalizacji get_lapack_funcs, zapewniając jej tablicę o rozmiarze 1000 x 2000. Rozważ kod referencyjny podany w fragmencie kodu poniżej:

importować Numpy jako NP
Import Scipy.Linalg jako la
r = np.losowy.default_rng ()
a = rng.losowy ((1000, 2000))
xlwork = la.get_lapack_funcs („sysv_lwork”, (a,))
opt_lwork, _ = xlwork (a.kształt [0])
print (opt_lwork)
Drukuj (xlwork.typeCode)

Jak widać, dostarczyliśmy rozmiar 1000 x 2000 tablicy do wygenerowania. Podana nazwa funkcji „sysv_lwork” i obliczona tablica została przekazana do funkcji get_lapack_funcs. To, czy rozmiar wygenerowanej tablicy jest optymalny, czy nie, jest określone przez dedykowane zapytanie, które jest znane jako ### _ lWork. Jak widać, użyliśmy xlwork wraz z zapytaniem SYSV_LWORK, aby uzyskać optymalny rozmiar obliczonej tablicy. Nazwaliśmy również typeCode, aby poznać optymalny typeCode dla wygenerowanej tablicy w stosunku do nazwy funkcji SYSV_LWORK.

Wniosek

Ten przewodnik jest owinięty wokół biblioteki Lapack dla złożonych funkcji macierzy i numerycznych systemów algebry liniowej. Dowiedzieliśmy się o pracy funkcji LAPACK na niskim poziomie za pomocą wielu przykładów. Lapack oznacza pakiet algebry liniowej, który jest używany przez Numpy, Scipy i Matlab. Jest to podstawa funkcji algebry liniowej oferowanych przez biblioteki Scipy i Numpy. Aby lepiej zrozumieć funkcje LAPACK na niskim poziomie, ćwicz te przykłady i spróbuj je zmodyfikować na podstawie różnych scenariuszy.