Setiap matriks persegi bisa diringkas menjadi satu angka yang bernama determinant. Satu angka ini menjawab dua pertanyaan yang muncul terus-menerus: apakah matriks punya inverse, dan seberapa besar transformasi yang dibawanya mengembangkan atau menyusutkan ruang. Fungsi np.linalg.det menghitungnya untuk matriks berukuran berapa pun.
Menghitung Determinant 2x2 #
Untuk matriks 2x2 A = [[a, b], [c, d]], determinant dihitung dengan rumus ad - bc. Matriks A = [[1, 2], [3, 4]] yang kita pakai sejak section Operasi Matriks menghasilkan 1(4) - 2(3) = -2. Fungsi np.linalg.det bekerja lewat dekomposisi LU di LAPACK, sehingga cara pemanggilan yang sama berlaku untuk matriks 100x100 tanpa usaha tambahan. Mari kita cocokkan kedua cara:
import numpy as np
A = np.array([[1.0, 2.0],
[3.0, 4.0]])
manual = A[0, 0] * A[1, 1] - A[0, 1] * A[1, 0]
det_A = np.linalg.det(A)
print("manual :", manual)
print("np.linalg.det:", det_A)
print("allclose :", np.allclose(det_A, manual))Output yang Dihasilkan:
manual : -2.0
np.linalg.det: -2.0000000000000004
allclose : TrueBaris demi baris:
- Baris 5 (
manual = ...): rumus ad - bc ditulis langsung dengan pengindeksan dua dimensi —A[0, 0]adalah a,A[1, 1]adalah d, dan seterusnya. Hasilnya -2.0, persis seperti hitungan tangan. - Baris 6 (
det_A = np.linalg.det(A)): fungsidetmemfaktorisasi A secara LU lalu mengalikan elemen diagonal hasil faktorisasinya. Pada matriks kecil pun hasilnya bisa meleset di digit terakhir. - Baris 9 (
print(... allclose ...)):np.allclosemengonfirmasi bahwa kedua nilai setara dalam toleransi, meskipun tidak identik bit-per-bit.
Determinant Nol Berarti Matriks Singular #
Bab Inverse Matriks memperlihatkan S = [[1, 2], [2, 4]] yang inverse-nya gagal dihitung karena baris keduanya tepat 2 kali baris pertama. Determinant memberi diagnosis yang sama dari sudut lain: matriks singular punya determinant nol.
import numpy as np
S = np.array([[1.0, 2.0],
[2.0, 4.0]])
det_S = np.linalg.det(S)
print("det(S) =", det_S)
print("det(S) == 0.0:", det_S == 0.0)
print("abs(det(S)) < 1e-9:", abs(det_S) < 1e-9)Output yang Dihasilkan:
det(S) = 0.0
det(S) == 0.0: True
abs(det(S)) < 1e-9: TrueUntuk matriks 2x2 sekecil ini, det(S) keluar sebagai 0.0 persis, sehingga == 0.0 pun bernilai True. Jangan jadikan itu kebiasaan:
Sifat Skala: det(kA) = k^n det(A) #
Mengalikan seluruh entri matriks n x n dengan bilangan k sama artinya mengalikan hasil transformasinya k kali di setiap arah, sehingga luas (atau volume) ikut berlipat k pangkat n. Sifat ini mudah diuji:
import numpy as np
A = np.array([[1.0, 2.0],
[3.0, 4.0]])
k = 3
det_A = np.linalg.det(A)
det_kA = np.linalg.det(k * A)
print("det(3A) :", det_kA)
print("3**2 * det(A) :", k**2 * det_A)
print("allclose :", np.isclose(det_kA, k**2 * det_A))Output yang Dihasilkan:
det(3A) : -18.000000000000004
3**2 * det(A) : -18.000000000000004
allclose : TrueDengan n = 2 dan k = 3, sifat ini memprediksi det(3A) = 9 × (-2) = -18; pada contoh ini kedua jalur perhitungan bahkan menghasilkan angka yang identik bit-per-bit. Untuk kasus umum, tetap gunakan np.isclose karena kedua jalur bisa menyisakan pembulatan yang berbeda. Sifat determinan lain yang sering terpakai: det(A @ B) = det(A) × det(B).
Makna Geometris: Faktor Skala Luas #
Determinant punya tafsiran geometris yang langsung: nilai mutlaknya adalah faktor pengali luas. Persegi satuan dengan titik sudut (0, 0), (1, 0), (0, 1), dan (1, 1), ketika ditransformasi oleh A = [[1, 2], [3, 4]], menjadi jajar genjang yang dibentang oleh vektor (1, 3) dan (2, 4) — keduanya adalah kolom-kolom A. Luas jajar genjang itu 2, yaitu |det(A)|, dua kali luas semula. Tanda negatif pada det(A) = -2 membawa informasi lain: orientasi terbalik, efek yang sama seperti pencerminan.
| Nilai determinant | Arti pada transformasi |
|---|---|
| |det| > 1 | luas dikembangkan; det = 2 berarti luas menjadi dua kali |
| 0 < |det| < 1 | luas disusutkan |
| det = 0 | seluruh bidang dipadatkan ke garis atau titik — matriks singular |
| det < 0 | orientasi terbalik, seperti hasil pencerminan |
Tafsiran luas inilah yang menjelaskan kenapa determinant nol membuat inverse tidak ada: transformasi yang memadatkan bidang ke sebuah garis tidak bisa diputar balik, karena informasi arah tegak lurusnya sudah hilang dari hasilnya.