Funciones Scipy Lapack

Funciones Scipy Lapack
Las bibliotecas scipy y numpy incorporadas son increíbles para realizar cualquier tipo de operaciones de álgebra lineal en un programa de Python. Sin embargo, si no encuentra una función o método específico que satisfaga su necesidad de funciones de álgebra lineal, siempre puede consultar las funciones de Lapack. Las funciones de Lapack se utilizan para resolver funciones de álgebra lineal complejas con facilidad y rápidamente. En esta guía, nuestro objetivo es explorar tantas funciones de Lapack como sea posible para ayudarlo a comprender cómo puede facilitar su trabajo con funciones de álgebra lineal.

¿Cuál es la función de lapack??

LaPack es una biblioteca independiente, abierta y gratuita utilizada específicamente para realizar operaciones de álgebra lineal. Significa paquete de álgebra lineal y proporciona cálculos de matriz robustos y rápidos y álgebra lineal numérica. Lapack proporciona una base para todo tipo de funciones numéricas de álgebra lineal y cálculo de matriz en SciPy, Numpy y Matlab. LaPack se basa básicamente en una biblioteca Fortran grande de varios atuendas específicamente para álgebra lineal numérica. El paquete Lapack es capaz de administrar múltiples columnas de matriz simultáneamente y es muy rápido, ya que se hizo intencionalmente en supercomputadoras.

La biblioteca Scipy ofrece una amplia gama de funciones de Lapack de bajo nivel dentro del módulo Linalg. Estas funciones no realizan una verificación de errores y si lo hacen, eso será muy poco lo que conduce al bloqueo del sistema. La lista de Scipy.linalg.Las funciones de Lapack son muy largas, ya que contiene varias funciones útiles, yo.mi., sgbsv, cgbsv, sgbtrs, zgbtrs, sgecon, cgeequ, sgeev, sgehrd, dgejsv, dgelsd, zgelss, zgelsy, zgeqrf, dgesv, cggev, etc. Cada método tiene diferentes funciones y tiene diferentes características. Solo hay una función de búsqueda en el scipy.linalg.Módulo Lapack y esa es la función get_lapack_funcs. Pasemos a la sección Ejemplo para comprender el funcionamiento de Scipy.linalg.Funciones de Lapack.

Ejemplo 1:

El scipy.linalg.La función de Lapack solo tiene una función de búsqueda y eso es get_lapack_funcs. El get_lapack_funcs se usa para obtener la función LAPACK disponible especificada por el atributo de nombre. La sintaxis del get_lapack_funcs es la siguiente:

El parámetro 'nombre' contiene el nombre de la función en forma de una cadena o secuencia de cadenas sin ningún tipo de prefijo. El parámetro 'Array' contiene la secuencia de matrices multidimensionales que se utilizan para determinar los prefijos óptimos de la rutina de Lapack. El parámetro 'dtype' define el tipo de datos y, por último, el parámetro 'ILP' determina la variante de rutina ILP64. El nombre de tres parámetros, DTYPE e ILP son opcionales, por lo que si no proporciona específicamente un valor para estos parámetros, la función usará los valores predeterminados automáticamente. Get_lapack_funcs devolverá la lista de funciones que se encuentran con los valores de los parámetros proporcionados. Considere el código de ejemplo que se proporciona a continuación para tener una mejor comprensión:

importar numpy como np
importación.linalg como la
R = NP.aleatorio.default_rng ()
a = r.aleatorio ((1, 2))
Lab = LA.get_lapack_funcs ('lange', (a+1j,)))
impresión (laboratorio.Typecode)

La función comenzó con la importación de la biblioteca Numpy como NP y Scipy.paquete linalg como la. Después de importar todas las bibliotecas requeridas, llamamos a la función aleatoria () para ejecutar la función default_rng (). El valor calculado se almacena en una variable 'r' y 'r' se usa para llamar a la función aleatoria para generar una matriz de valores aleatorios que consisten en una fila y dos columnas. Ahora que tenemos todos los datos esenciales, podemos llamar a la función get_lapack_funcs para obtener la lista de las funciones.

Hay cuatro tipos de prefijo en cada función en el scipy.linalg.LAPACK LIBICILIDAD Y son C, D, S y Z y cada uno de ellos tiene un tipo de datos Complex64, Float64, Float32 y Complex128 respectivamente. Cualquiera que sea el nombre de la función que proporcione al get_lapack_funcs, obtendrá el tipo de prefijo C, D, S o Z a cambio. Aquí, mencionamos el nombre de la función 'lange' y llamamos el método typecode. El nombre de prefijo se almacena en el atributo typecode, por lo que cuando lo llame, obtendrá el nombre de prefijo del nombre de la función proporcionado. Veamos qué resultado obtenemos de la función get_lapcak_funcs:

Ejemplo 2:

Supongamos que necesitamos usar la rutina 'lange' para calcular la norma de matriz seleccionada, pero no estamos seguros del prefijo de la función. Para el caso, podemos pasar nuestra matriz a la función get_lapack_funcs y obtener el sabor de prefijo correcto para la matriz. Aquí, solo estamos ajustando un poco el ejemplo anterior para mostrarle los diferentes resultados de la función get_lapcak_funcs para una matriz diferente. Considere el código de referencia que se proporciona a continuación:

importar numpy como np
importación.linalg como la
R = NP.aleatorio.default_rng ()
a = r.aleatorio ((5, 5))
Lab = LA.get_lapack_funcs ('lange', (a,))
impresión (laboratorio.Typecode)

Como puede notar, solo cambiamos los datos de la matriz y la rutina de prefijo para verificar cómo cambia el resultado de la función get_lapack_funcs. El resultado se da a continuación en el fragmento:

Ejemplo 3:

Como hemos discutido anteriormente, la función LAPACK de bajo nivel hace poco o ninguna verificación de errores, pero están muy rápidos e intencionalmente diseñados para administrar una gran cantidad de datos. Por lo tanto, funcionan mejor para datos lo suficientemente grandes para el cálculo rápido y lo suficientemente pequeño puede evitar el desperdicio de memoria. Ahora, probemos las capacidades de optimización de get_lapack_funcs proporcionándole una matriz de tamaño de 1000 x 2000. Considere el código de referencia dado en el fragmento de código a continuación:

importar numpy como np
importación.linalg como la
R = NP.aleatorio.default_rng ()
a = rng.aleatorio ((1000, 2000))
XLWORK = LA.get_lapack_funcs ('sysv_lwork', (a,)))
opt_lwork, _ = xlwork (a.forma [0])
imprimir (opt_lwork)
Imprimir (XLWork.Typecode)

Como puede ver, proporcionamos el tamaño de 1000 x 2000 de la matriz a generar. Se ha dado el nombre de la función 'sysv_lwork' y la matriz calculada se ha pasado a la función get_lapack_funcs. Si el tamaño de la matriz generada es óptimo o no está determinado por una consulta dedicada que se conoce como ### _ lwork. Como puede ver, utilizamos XLWork junto con la consulta SYSV_LWORK para obtener el tamaño óptimo de la matriz calculada. También llamamos al typecode para conocer el tipo de typi óptimo para la matriz generada contra el nombre de la función sysv_lwork.

Conclusión

Esta guía está envuelta alrededor de la biblioteca Lapack para funciones de matriz complejas y sistemas numéricos de álgebra lineal. Aprendimos sobre el funcionamiento de las funciones de Lapack de bajo nivel con la ayuda de múltiples ejemplos. Lapack significa paquete de álgebra lineal, que es utilizado por Numpy, Scipy y Matlab. Es la base de las funciones de álgebra lineal ofrecidas por las bibliotecas Scipy and Numpy. Para comprender mejor las funciones de Lapack de bajo nivel, practique estos ejemplos e intente modificarlos en función de diferentes escenarios.