Nasıl düzeltilir: numpy.linalg.linalgerror: tekil matris
Python’da karşılaşabileceğiniz bir hata:
numpy.linalg.LinAlgError: Singular matrix
Bu hata, tanımı gereği determinantı sıfır olan ve ters çevrilemeyen bir matris olan tekil bir matrisi ters çevirmeye çalıştığınızda ortaya çıkar.
Bu eğitimde bu hatanın pratikte nasıl çözüleceği açıklanmaktadır.
Hata nasıl yeniden oluşturulur?
NumPy kullanarak aşağıdaki matrisi oluşturduğumuzu varsayalım:
import numpy as np
#create 2x2 matrix
my_matrix = np. array ([[1., 1.], [1., 1.]])
#display matrix
print (my_matrix)
[[1. 1.]
[1. 1.]]
Şimdi matrisin tersini hesaplamak için NumPy’nin inv() fonksiyonunu kullanmaya çalıştığımızı varsayalım:
from numpy import inv
#attempt to invert matrix
inv(my_matrix)
numpy.linalg.LinAlgError: Singular matrix
Oluşturduğumuz matrisin ters matrisi olmadığı için hata alıyoruz.
Not : Ters matrisi olmayan 10 farklı matris örneğini gösteren Wolfram MathWorld’den bu sayfaya göz atın.
Tanım gereği bir matris tekildir ve sıfır determinantına sahipse ters çevrilemez.
Belirli bir matrisi tersine çevirmeyi denemeden önce, determinantını hesaplamak için NumPy’nin det() işlevini kullanabilirsiniz:
from numpy import det
#calculate determinant of matrix
det(my_matrix)
0.0
Matrisimizin determinantının sıfır olması neden hatayla karşılaştığımızı açıklıyor.
Hata nasıl düzeltilir?
Bu hatayı aşmanın tek yolu tekil olmayan bir matris oluşturmaktır.
Örneğin, aşağıdaki matrisi tersine çevirmek için inv() işlevini kullandığımızı varsayalım:
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]]
Matris tekil olmadığı için matrisi ters çevirirken herhangi bir hata almıyoruz.
Ek kaynaklar
Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
Nasıl düzeltilir: ‘numpy.float64’ nesnesi çağrılabilir değil
Nasıl düzeltilir: ‘numpy.ndarray’ nesnesi çağrılabilir değil
Nasıl düzeltilir: ‘numpy.float64’ nesnesi bir tamsayı olarak yorumlanamıyor