np.linalg.det() în NumPy

Algebră liniară NumPy 1.0+

Calculează determinantul unei matrice pătrate; rezultatul este float aproximativ, compară-l cu np.isclose sau rotunjește-l.

Sintaxă
np.linalg.det(a)

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 exemplu det(A) == 0) și testul nu se potrivește din cauza erorilor mici de rotunjire. Folosește np.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.