Como corrigir: numpy.linalg.linalgerror: matriz singular


Um erro que você pode encontrar em Python é:

 numpy.linalg.LinAlgError: Singular matrix

Este erro ocorre quando você tenta inverter uma matriz singular, que por definição é uma matriz cujo determinante é zero e não pode ser invertida.

Este tutorial explica como resolver esse erro na prática.

Como reproduzir o erro

Suponha que criemos a seguinte matriz usando NumPy:

 import numpy as np

#create 2x2 matrix
my_matrix = np. array ([[1., 1.], [1., 1.]])

#display matrix
print (my_matrix)

[[1. 1.]
 [1. 1.]]

Agora suponha que tentemos usar a função inv() do NumPy para calcular o inverso da matriz:

 from numpy import inv

#attempt to invert matrix
inv(my_matrix)

numpy.linalg.LinAlgError: Singular matrix

Recebemos um erro porque a matriz que criamos não possui uma matriz inversa.

Nota : Confira esta página do Wolfram MathWorld que mostra 10 exemplos diferentes de matrizes que não possuem uma matriz inversa.

Por definição, uma matriz é singular e não pode ser invertida se tiver determinante zero.

Você pode usar a função det() do NumPy para calcular o determinante de uma determinada matriz antes de tentar invertê-la:

 from numpy import det

#calculate determinant of matrix
det(my_matrix)

0.0

O determinante da nossa matriz é zero, o que explica porque encontramos um erro.

Como corrigir o erro

A única maneira de contornar esse erro é simplesmente criar uma matriz que não seja singular.

Por exemplo, suponha que usemos a função inv() para inverter a seguinte matriz:

 import numpy as np
from numpy. linalg import inv, det

#create 2x2 matrix that is not singular
my_matrix = np. array ([[1., 7.], [4., 2.]])

#display matrix
print (my_matrix)

[[1. 7.]
 [4. 2.]]

#calculate determinant of matrix
print (det(my_matrix))

-25.9999999993

#calculate inverse of matrix
print (inv(my_matrix))

[[-0.07692308 0.26923077]
 [0.15384615 -0.03846154]]

Não recebemos erros ao inverter a matriz porque a matriz não é singular.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:

Como corrigir: o objeto ‘numpy.float64’ não pode ser chamado
Como corrigir: o objeto ‘numpy.ndarray’ não pode ser chamado
Como corrigir: o objeto ‘numpy.float64’ não pode ser interpretado como um número inteiro

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *