quarta-feira, 2 de fevereiro de 2022

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

Nenhum comentário:

Postar um comentário

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

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