SymPy - Matrices

En matemáticas, una matriz es una matriz bidimensional de números, símbolos o expresiones. La teoría de la manipulación de matrices se ocupa de realizar operaciones aritméticas en objetos de matriz, sujeto a ciertas reglas.

La transformación lineal es una de las aplicaciones importantes de las matrices. Muchos campos científicos, especialmente relacionados con la física, utilizan aplicaciones relacionadas con la matriz.

El paquete SymPy tiene un módulo de matrices que se ocupa del manejo de matrices. Incluye la clase Matrix cuyo objeto representa una matriz.

Note: If you want to execute all the snippets in this chapter individually, you need to import the matrix module as shown below −

>>> from sympy.matrices import Matrix

Example

>>> from sympy.matrices import Matrix 
>>> m=Matrix([[1,2,3],[2,3,1]]) 
>>> m
$\displaystyle \left[\begin{matrix}1 & 2 & 3\\2 & 3 & 1\end{matrix}\right]$

Al ejecutar el comando anterior en el shell de Python, se generará el siguiente resultado:

[1 2 3 2 3 1]

La matriz se crea a partir de objetos List de tamaño adecuado. También puede obtener una matriz distribuyendo los elementos de la lista en un número específico de filas y columnas.

>>> M=Matrix(2,3,[10,40,30,2,6,9]) 
>>> M
$\displaystyle \left[\begin{matrix}10 & 40 & 30\\2 & 6 & 9\end{matrix}\right]$

Al ejecutar el comando anterior en el shell de Python, se generará el siguiente resultado:

[10 40 30 2 6 9]

Matrix es un objeto mutable. El módulo de matrices también proporciona la clase ImmutableMatrix para obtener una matriz inmutable.

Manipulación básica

los shape La propiedad del objeto Matrix devuelve su tamaño.

>>> M.shape

La salida para el código anterior es la siguiente:

(2,3)

El método row () y col () devuelve respectivamente una fila o columna de un número especificado.

>>> M.row(0)
$\displaystyle \left[\begin{matrix}10 & 40 & 30\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[10 40 30]

>>> M.col(1)
$\displaystyle \left[\begin{matrix}40\\6\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[40 6]

Utilice el operador de corte de Python para recuperar uno o más elementos pertenecientes a la fila o columna.

>>> M.row(1)[1:3]
[6, 9]

La clase Matrix tiene métodos row_del () y col_del () que eliminan la fila / columna especificada de la matriz dada -

>>> M=Matrix(2,3,[10,40,30,2,6,9]) 
>>> M.col_del(1) 
>>> M

Al ejecutar el comando anterior en el shell de Python, se generará el siguiente resultado:

Matrix([[10, 30],[ 2, 9]])

Puede aplicar estilo a la salida usando el siguiente comando:

$\displaystyle \left[\begin{matrix}10 & 30\\2 & 9\end{matrix}\right]$

Obtiene el siguiente resultado después de ejecutar el fragmento de código anterior:

[10 30 2 9]

>>> M.row_del(0) 
>>> M

$\displaystyle \left[\begin{matrix}2 & 9\end{matrix}\right]$

Obtiene el siguiente resultado después de ejecutar el fragmento de código anterior:

[2 9]

De manera similar, los métodos row_insert () y col_insert () agregan filas o columnas en el índice de fila o columna especificado

>>> M1=Matrix([[10,30]]) 
>>> M=M.row_insert(0,M1)
>>> M

$\displaystyle \left[\begin{matrix}10 & 30\\2 & 9\end{matrix}\right]$

Obtiene el siguiente resultado después de ejecutar el fragmento de código anterior:

[10 40 30 2 9]

>>> M2=Matrix([40,6]) 
>>> M=M.col_insert(1,M2) 
>>> M

$\displaystyle \left[\begin{matrix}10 & 40 & 30\\2 & 6 & 9\end{matrix}\right]$

Obtiene el siguiente resultado después de ejecutar el fragmento de código anterior:

[10 40 30 6 9]

Operaciones aritmeticas

Los operadores habituales +, - y * se definen para realizar sumas, restas y multiplicaciones.

>>> M1=Matrix([[1,2,3],[3,2,1]]) 
>>> M2=Matrix([[4,5,6],[6,5,4]]) 
>>> M1+M2

$\displaystyle \left[\begin{matrix}5 & 7 & 9\\9 & 7 & 5\end{matrix}\right]$

Obtiene el siguiente resultado después de ejecutar el fragmento de código anterior:

[5 7 9 9 7 5]

>>> M1-M2
$\displaystyle \left[\begin{matrix}-3 & -3 & -3\\-3 & -3 & -3\end{matrix}\right]$

Obtiene el siguiente resultado después de ejecutar el fragmento de código anterior:

[- 3 -3 -3 -3 -3 -3]

La multiplicación de matrices solo es posible si: El número de columnas de la primera matriz debe ser igual al número de filas de la segunda matriz. - Y el resultado tendrá el mismo número de filas que la primera matriz y el mismo número de columnas que la segunda matriz.

>>> M1=Matrix([[1,2,3],[3,2,1]]) 
>>> M2=Matrix([[4,5],[6,6],[5,4]]) 
>>> M1*M2
$\displaystyle \left[\begin{matrix}31 & 29\\29 & 31\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[31 29 29 31]

>>> M1.T
$\displaystyle \left[\begin{matrix}1 & 3\\2 & 2\\3 & 1\end{matrix}\right]$

La siguiente salida se obtiene después de ejecutar el código:

[1 3 2 2 3 1]

Para calcular un determinante de matriz, use el método det (). Un determinante es un valor escalar que se puede calcular a partir de los elementos de una matriz cuadrada.

>>> M=Matrix(3,3,[10,20,30,5,8,12,9,6,15])
>>> M
$\displaystyle \left[\begin{matrix}10 & 20 & 30\\5 & 8 & 12\\9 & 6 & 15\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[10 20 30 5 8 12 9 6 15]

>>> M.det()

La salida para el código anterior es la siguiente:

-120

Constructores de matrices

SymPy proporciona muchos tipos especiales de clases de matriz. Por ejemplo, matriz de identidad, matriz de todos los ceros y unos, etc. Estas clases se denominan ojo, ceros y unos respectivamente. La matriz de identidad es una matriz cuadrada con elementos que caen en diagonal se establecen en 1, el resto de los elementos son 0.

Example

from sympy.matrices import eye eye(3)

Output

Matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
$\displaystyle \left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 1\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[1 0 0 0 1 0 0 0 1]

En diag matrix, los elementos en diagonal se inicializan según los argumentos proporcionados.

>>> from sympy.matrices import diag 
>>> diag(1,2,3)

$\displaystyle \left[\begin{matrix}1 & 0 & 0\\0 & 2 & 0\\0 & 0 & 3\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[1 0 0 0 2 0 0 0 3]

Todos los elementos de la matriz de ceros se inicializan a 0.

>>> from sympy.matrices import zeros 
>>> zeros(2,3)

$\displaystyle \left[\begin{matrix}0 & 0 & 0\\0 & 0 & 0\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[0 0 0 0 0 0]

De manera similar, ones es una matriz con todos los elementos establecidos en 1.

>>> from sympy.matrices import ones
>>> ones(2,3)

$\displaystyle \left[\begin{matrix}1 & 1 & 1\\1 & 1 & 1\end{matrix}\right]$

La salida para el código anterior es la siguiente:

[1 1 1 1 1 1]