SciPy Álgebra Lineal – SciPy Linalg

El paquete SciPy incluye las funciones del paquete NumPy en Python. Utiliza arrays NumPy como estructura de datos fundamental. Tiene todas las características incluidas en el álgebra lineal del módulo NumPy y algunas funcionalidades extendidas. Consiste en un submódulo linalg y hay una superposición en la funcionalidad proporcionada por los submódulos SciPy y NumPy.

Analicemos algunos métodos proporcionados por el módulo y su funcionalidad con algunos ejemplos.

Resolviendo las ecuaciones lineales

La función linalg.solve se utiliza para resolver las ecuaciones lineales dadas. Se utiliza para evaluar las ecuaciones automáticamente y encontrar los valores de las variables desconocidas.

Sintaxis: scipy.linalg.solve(a, b, sym_pos, lower, overwrite_a, overwrite_b, debug, check_finite, assum_a, transposed)

Consideremos un ejemplo en el que la función linalg.solve toma dos arrays a y b . La array a contiene los coeficientes de las variables desconocidas, mientras que la array b contiene el valor del lado derecho de la ecuación lineal. La ecuación lineal se resuelve mediante la función para determinar el valor de las variables desconocidas. Supongamos que las ecuaciones lineales son:

7x + 2y = 8
4x + 5y = 10

Python

# Import the required libraries
from scipy import linalg
import numpy as np
  
# The function takes two arrays
a = np.array([[7, 2], [4, 5]])
b = np.array([8, 10])
  
# Solving the linear equations
res = linalg.solve(a, b)
print(res)

Producción:

[0.74074074 1.40740741]

Calcular la inversa de una array

El scipy.linalg.inv se usa para encontrar el inverso de una array.

Sintaxis: scipy.linalg.inv(a, overwrite_a, check_finite)

Parámetros:

  • a: Es una array cuadrada.
  • overwrite_a ( opcional) : descartar datos en la array cuadrada.
  • check_finite ( opcional) : comprueba si la array de entrada contiene solo números finitos.

Devoluciones:

  • scipy.linalg.inv devuelve el inverso de la array cuadrada.

Considere un ejemplo en el que la función scipy.linalg.inv toma una entrada x . Esta entrada es la array cuadrada. Devuelve y, que es la inversa de la array x. Sea la array –

Python

# Import the required libraries
from scipy import linalg
import numpy as np
  
# Initializing the matrix
x = np.array([[7, 2], [4, 5]])
  
# Finding the inverse of
# matrix x
y = linalg.inv(x)
print(y)

Producción:

[[ 0.18518519 -0.07407407]
 [-0.14814815  0.25925926]]

Cálculo de la pseudo inversa de una array

Para evaluar la pseudo-inversa (Moore-Penrose) de una array, se usa scipy.linalg.pinv .

Sintaxis:  scipy.linalg.pinv(a, cond, rcond, return_rank, check_finite)

Parámetros:

  • a: Es la Array de Entrada.
  • cond, rcond ( Opcional) : Es el factor de corte para pequeños valores singulares.
  • return_rank ( Opcional) : Devuelve el rango efectivo de la array si el valor es True.
  • check_finite ( Opcional) : Comprueba si la array de entrada consta solo de números finitos.

Devoluciones:

  • scipy.linalg.pinv devuelve el pseudo-inverso de la array de entrada.

Ejemplo: scipy.linalg.pinv toma una array x para ser pseudoinvertida. Devuelve la pseudo-inversa de la array x y el rango efectivo de la array.

Python

# Import the required libraries
from scipy import linalg
import numpy as np
  
# Initializing the matrix
x = np.array([[8 , 2] , [3 , 5] , [1 , 3]])
  
# finding the pseudo inverse of matrix x
y = linalg.pinv(x)
print(y)

Producción:

Encontrar el determinante de una array

El determinante de una array cuadrada es un valor derivado aritméticamente de los coeficientes de la array. En el módulo linalg, usamos la función linalg.det() para encontrar el determinante de una array.

Sintaxis:  scipy.linalg.det(a, overwrite_a, check_finite)

Parámetros:

  • a: Es una array cuadrada.
  • overwrite_a ( Opcional) : Otorga permiso para sobrescribir datos en un.
  • check_finite ( opcional) : verifica si la array cuadrada de entrada consta solo de números finitos.

Devoluciones:

  • Valor de punto flotante

El scipy.linalg.det toma una array cuadrada A y devuelve D, el determinante de A. El determinante es una propiedad específica de la transformación lineal de una array. El determinante de una array de 2×2 viene dado por:

A partir del código de Python anterior, el determinante se calcula como:

Ejemplo:

Python

# Importing the required libraries
from scipy import linalg
import numpy as np
  
# Initializing the matrix A
A = np.array([[9 , 6] , [4 , 5]])
  
# Finding the determinant of matrix A
D = linalg.det(A)
print(D)

Producción:

21.0

Valor singular de descomposición

La descomposición en valores singulares es un método de descomposición de arrays para reducir una array a sus partes constituyentes para simplificar los cálculos de array posteriores específicos. Se calcula usando scipy.linalg.svd .

Sintaxis:  scipy.linalg.svd(a, full_arrays, compute_uv, overwrite_a, check_finite, lapack_driver)

Parámetros:

  • a: La array de entrada.
  • full_arrays (opcional) : si es verdadero, las dos arrays unitarias descompuestas de la array de entrada tienen la forma (M, M), (N, N).
  • compute_uv (opcional) : el valor predeterminado es verdadero.
  • overwrite_a (Opcional) : Otorga permiso para sobrescribir datos en un.
  • check_finite (Opcional) : Comprueba si la array de entrada consta solo de números finitos.
  • lapack_driver (Opcional) : Toma el enfoque divide y vencerás (‘gesdd’) o el enfoque rectangular general (‘gesvd’).

La función scipy.linalg.svd toma una array M para descomponer y devuelve:

  1. Una array unitaria que ha dejado vectores singulares como columnas.
  2. Los valores singulares ordenados en orden no creciente.
  3. Una array unitaria que tiene vectores rectos singulares como filas.

Ejemplo:

Python

# Importing the required libraries
from scipy import linalg
import numpy as np
  
# Initializing the matrix M
M = np.array([[1 , 5] , [6 , 10]]) 
  
# Passing the values to the 
# eigen function
x , y , z = linalg.svd(M)
print(x , y , z)

Producción:

Valores propios y vectores propios

Sea M una array de n×n y sea X∈C n un vector distinto de cero para el cual:

MX = λX for some scalar λ.

λ se denomina valor propio de la array M y X se denomina vector propio de M asociado con λ, o vector propio λ de M.

Sintaxis:  scipy.linalg.eig(a, b, izquierda, derecha, overwrite_a, overwrite_b, check_finite, homogeneous_eigvals)

Parámetros:

  • a: Array de entrada.
  • b (Opcional) : Es una array del lado derecho en un problema de valor propio generalizado.
  • izquierda, derecha (opcional): si calcular y devolver los vectores propios izquierdo o derecho respectivamente.
  • overwrite_a, overwrite_b (Opcional): Otorga permiso para sobrescribir datos en a y b respectivamente.
  • check_finite (Opcional): Comprueba si la array de entrada consta solo de números finitos.
  • homogeneous_eigvals (Opcional): Devuelve los autovalores en coordenadas homogéneas si el valor es True.

La función scipy.linalg.eig toma una array M compleja o real cuyos autovalores y autovectores se van a evaluar. Devuelve el conjunto escalar de valores propios de la array. Encuentra los valores propios y los vectores propios derecho o izquierdo de la array.

Ejemplo:

Python

# Importing the required libraries
from scipy import linalg
import numpy as np
  
# Initializing the matrix M
M = np.array([[9 , 3] , [2 , 4]])
  
# Passing the values to the eigen
# function
val , vect = linalg.eig(M)
  
# Display the Eigen values and Eigen
# vectors
print(val)
print(vect)

Producción:

Cálculo de la norma

Para definir qué tan cerca están dos vectores o arrays, y para definir la convergencia de secuencias de vectores o arrays, se usa la norma. La función scipy.linalg.norm se utiliza para calcular la norma matricial o vectorial.

Sintaxis:  scipy.linalg.norm(a, ord, axis, keepdims, check_finite)

Parámetros:

  • a: Es un arreglo o array de entrada.
  • ord ( Opcional) : Es el orden de la norma
  • axis ( Opcional) : Denota los ejes.
  • keepdims (opcional) : si el valor es verdadero, los ejes que están normados se dejan en la salida como dimensiones con tamaño = 1.
  • check_finite ( Opcional) : Comprueba si la array de entrada consta solo de números finitos.

Devoluciones:

  • scipy.linalg.norm devuelve la norma de a.

La función scipy.linalg.norm devuelve una de las siete normas de array diferentes o una de un número infinito de normas de vector. 

  1. La norma L2 evalúa la distancia de la coordenada vectorial desde el origen del espacio vectorial. También se conoce como norma euclidiana, ya que se calcula como la distancia euclidiana desde el origen. El resultado es un valor de distancia positivo.
  2. La norma L1 se evalúa como la suma de los valores absolutos del vector. Es una evaluación de la distancia de Manhattan desde el origen del espacio vectorial.

Ejemplo:

Python

# Importing the required libraries
from scipy import linalg
import numpy as np
  
# Initializing the input array 
x = np.array([6 , 3])
  
# Calculating the L2 norm
a = linalg.norm(x)
  
# Calculating the L1 norm
b = linalg.norm(x , 1)
  
# Displaying the norm values
print(a)
print(b)

Producción:

Más funciones de array

Nombre de la función Definición
scipy.linalg.sqrtm(A, visualización, tamaño de bloque) Calcula la raíz cuadrada de la array.
scipy.linalg.expm(A) Calcula la array exponencial utilizando la aproximación de Pade.
scipy.linalg.sinm(A) Calcula el seno de la array.
scipy.linalg.cosm(A) Calcula el coseno de la array.
scipy.linalg.tanm(A) Calcula la tangente de la array.

Ejemplo:

Python

# Importing the required libraries
from scipy import linalg
import numpy as np
  
# Initializing the matrix 
x = np.array([[16 , 4] , [100 , 25]])
  
# Calculate and print the matrix 
# square root
r = linalg.sqrtm(x)
print(r)
print("\n")
  
# Calculate and print the matrix 
# exponential
e = linalg.expm(x)
print(e)
print("\n")
  
# Calculate and print the matrix
# sine
s = linalg.sinm(x)
print(s)
print("\n")
  
# Calculate and print the matrix 
# cosine
c = linalg.cosm(x)
print(c)
print("\n")
  
# Calculate and print the matrix 
# tangent
t = linalg.tanm(x)
print(t)

Producción:

Publicación traducida automáticamente

Artículo escrito por shubhikagarg1999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *