Ce face np.linalg.det()
np.linalg.det(A) returnează determinantul matricei pătrate A. Determinantul 0 înseamnă că matricea este singulară: nu are inversă, iar sistemul de ecuații asociat nu are o soluție unică.
NumPy nu calculează determinantul cu formula de la școală, ci printr-o descompunere numerică (LU), cu numere cu virgulă. De aceea, pentru matricea [[1, 2], [3, 4]] rezultatul este -2.0000000000000004, nu exact -2. Pentru afișare folosește round(), iar pentru comparații np.isclose(), nu ==.
Parametri
| Parametru | Descriere |
|---|---|
a |
O matrice pătrată (sau un set de matrice, în ultimele două axe). |
Ce returnează
Un np.float64 (sau un tablou de determinanți pentru mai multe matrice).
Exemple
Exemplul 1: Rezultat aproximativ
import numpy as np
A = np.array([[1, 2], [3, 4]])
d = np.linalg.det(A)
print(d)
print(round(float(d), 6))
print(d == -2)
print(np.isclose(d, -2))
Rezultat
-2.0000000000000004
-2.0
False
True
Exemplul 2: Verificarea unei matrice singulare
Pentru o verificare de „aproape zero” se folosește np.isclose(d, 0).
import numpy as np
matrice = {
"A": np.array([[2.0, 1.0], [1.0, 3.0]]),
"B": np.array([[1.0, 2.0], [2.0, 4.0]]),
}
for nume, M in matrice.items():
d = np.linalg.det(M)
stare = "singulară" if np.isclose(d, 0) else "inversabilă"
print(nume, round(float(d), 4), stare)
Rezultat
A 5.0 inversabilă
B 0.0 singulară
Exemplul 3: Determinantul unei matrice 3×3
import numpy as np
M = np.array([
[2, 0, 1],
[1, 3, 2],
[1, 1, 2],
])
print(np.linalg.det(M))
print(round(float(np.linalg.det(M)), 10))
Rezultat
6.0
6.0
Greșeli frecvente
- Compari determinantul cu
==(de exempludet(A) == 0) și testul nu se potrivește din cauza erorilor mici de rotunjire. Foloseștenp.isclose(det(A), 0). - Calculezi determinantul unei matrice nepătrate: primești
LinAlgError. Determinantul există doar pentru matrice pătrate.
Comenzi înrudite
np.linalg.inv(): Calculează inversa unei matrice pătrate; pentru o matrice singulară aruncă LinAlgError.np.linalg.solve(): Rezolvă un sistem de ecuații liniare A @ x = b și returnează soluția x; verifici rezultatul cu np.allclose.np.matmul() și operatorul @: Înmulțirea de matrice cu np.matmul sau operatorul @; diferența față de *, care înmulțește element cu element.