quarta-feira, 2 de fevereiro de 2022

Python Transposição de matrizes

 

Transposição de matrizes

Podemos transpor uma matriz com a propriedade .T dos arrays:

A.T
array([[1., 3.],
       [2., 4.]])

Observe que os números fora da diagonal trocaram de posição com relação à matriz original:

A
array([[1., 2.],
       [3., 4.]])

É interessante observar também que, para qualquer matriz A, a operação A A^T produz uma matriz simétrica:

A @ A.T
array([[ 5., 11.],
       [11., 25.]])

Python -- Inversão de matrizes

 

Inversão de matrizes

Matrizes são invertidas com numpy.linalg.inv:

Ai = np.linalg.inv(A)
Ai
array([[-2. ,  1. ],
       [ 1.5, -0.5]])

A matriz inversa A^{-1} é tal que

A^{-1} A = A A^{-1} = I \text{,}

onde I é a matriz identidade

I = \begin{bmatrix}1 & 0\\0 & 1\end{bmatrix}\text{.}
Ai @ A
array([[1.00000000e+00, 0.00000000e+00],
       [1.11022302e-16, 1.00000000e+00]])

A menos de erros numéricos, essa parece ser a resposta correta (valores da ordem de 10^{-16} são praticamente zero). Vamos checar isso por comparação da multiplicação acima com a matriz identidade (usando a função numpy.allclose, que compara arrays a menos de erros numéricos):

np.allclose(Ai @ A, np.eye(2))
True

Lembre-se: nem toda matriz possui inversa! Uma maneira de identificar se uma matriz possui inversa é com o cálculo do rank da mesma (numpy.linalg.matrix_rank), que deve ser igual à dimensão do array:

np.linalg.matrix_rank(A)
2
A.ndim
2

Python -- numpy: Traço de matrizes

 

Traço de matrizes

O que é traço de uma matriz? é a soma de seus valores diagonais. Ele pode ser calculado com numpy.trace:

A
array([[1., 2.],
       [3., 4.]])

Para o caso da matriz acima, o traço deve ser 1 + 4 = 5:

np.trace(A)
5.0

Python -- Numpy: Determinantes de matrizes

 

Determinantes de matrizes

Determinantes são calculados com numpy.linalg.det:

det_A = np.linalg.det(A)
det_A
-2.0000000000000004

A matriz inversa tem a propriedade de que \det(A^{-1}) = \det(A)^{-1}:

det_Ai = np.linalg.det(Ai)
det_Ai
-0.49999999999999967

De fato, podemos verificar \det(A) \det(A^{-1}) = 1 a menos de erros numéricos com numpy.allclose:

np.allclose(det_A * det_Ai, 1.)
True

Como remover marcação html em Python? Como tirar marcação html com python?

import re texto = re.sub('<[^>]+?>', '', texto)