Identitas dan Invers

Matriks identitas dan pembatalan transformasi melalui invers.

Daftar isi

Matriks identitas dan invers melengkapi gambaran matriks sebagai transformasi. Matriks identitas membiarkan setiap titik tetap di tempatnya, sedangkan invers membatalkan kerja sebuah transformasi sehingga titik kembali ke posisi semula. Topik ini membahas keduanya, syarat kemunculan invers, serta cara menghitung dan memeriksanya menggunakan NumPy. Setelah topik ini selesai, hubungan AA−1=IA A^{-1} = I dapat dijelaskan sekaligus diverifikasi dalam kode.

Matriks identitas#

Matriks identitas (identity matrix) adalah matriks persegi dengan angka 1 pada diagonal utama dan angka 0 pada posisi lainnya. Notasinya adalah InI_n untuk ukuran n×nn \times n, dan yang terkecil ditulis sebagai berikut.

I2=(1001) I_2 = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}

Perkalian sembarang matriks dengan identitas menghasilkan matriks semula, yaitu AI=AAI = A dan IA=AIA = A selama ukurannya cocok. Peran ini sama dengan bilangan 1 pada perkalian bilangan biasa, yang tidak mengubah nilai apa pun yang dikalikannya. Pada konteks transformasi, II berarti transformasi tanpa kerja, yaitu setiap titik dibiarkan pada posisinya. Dalam kode, identitas dibuat dengan fungsi np.eye yang menerima banyak baris sebagai argumennya.

Invers sebagai pembatalan transformasi#

Invers dari matriks AA, ditulis A−1A^{-1}, adalah matriks yang membatalkan kerja AA. Hubungannya ditetapkan sebagai berikut.

AA−1=A−1A=I A A^{-1} = A^{-1} A = I

Maknanya paling mudah dilihat pada transformasi. Memutar sebuah titik 90 derajat berlawanan arah jarum jam lalu memutarnya lagi 90 derajat searah jarum jam mengembalikan titik ke posisi awal, sehingga invers dari matriks rotasi 90 derajat adalah matriks rotasi −90-90 derajat. Diagram berikut memperlihatkan urutan tersebut.

titik (2, 0)R, 90°titik (0, 2)R⁻¹, -90°kembali (2, 0)invers R membatalkan kerja R sehingga titik pulih seperti semula
Invers rotasi mengembalikan titik ke posisi semula

Untuk matriks 2×22 \times 2, invers dapat dihitung dengan rumus tertutup yang membagi dengan nilai ad−bcad - bc, yaitu determinan matriks tersebut.

A=(abcd),A−1=1ad−bc(d−b−ca) A = \begin{pmatrix} a & b \\ c & d \end{pmatrix}, \qquad A^{-1} = \frac{1}{ad - bc} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix}

Pada matriks A=(2153)A = \begin{pmatrix} 2 & 1 \\ 5 & 3 \end{pmatrix}, nilai determinannya adalah 2×3−1×5=12 \times 3 - 1 \times 5 = 1, sehingga inversnya adalah (3−1−52)\begin{pmatrix} 3 & -1 \\ -5 & 2 \end{pmatrix}. Nilai ini dapat diperiksa ulang dengan mengalikan kedua matriks secara manual, dan hasilnya diharapkan sama persis dengan identitas.

Memeriksa invers di NumPy#

Fungsi np.linalg.inv menghitung invers, sedangkan kesamaan hasil kali dengan identitas diperiksa menggunakan np.allclose karena komputasi pecahan dapat menyisakan angka kecil di belakang koma. Kode berikut membangun identitas, memverifikasi sifat netralnya, lalu menghitung dan memeriksa invers dari contoh di atas.

python invers_matriks.py
import numpy as np

# matriks identitas 2x2: diagonal utama 1, sisanya 0
I = np.eye(2)
print("Matriks identitas 2x2:")
print(I)

A = np.array([
    [2.0, 1.0],
    [5.0, 3.0],
])
print(f"A @ I sama dengan A ? {np.array_equal(A @ I, A)}")

invers_A = np.linalg.inv(A)
print("Invers A:")
print(invers_A)
print("A @ invers(A):")
print(A @ invers_A)
print(f"A @ invers(A) mendekati I ? {np.allclose(A @ invers_A, I)}")

# matriks singular: baris keduanya dua kali baris pertama, invers tidak ada
B = np.array([
    [1.0, 2.0],
    [2.0, 4.0],
])
try:
    np.linalg.inv(B)
except np.linalg.LinAlgError as e:
    print(f"Invers B gagal dihitung: {e}")
text Keluaran
Matriks identitas 2x2:
[[1. 0.]
 [0. 1.]]
A @ I sama dengan A ? True
Invers A:
[[ 3. -1.]
 [-5.  2.]]
A @ invers(A):
[[ 1.00000000e+00  2.22044605e-16]
 [-8.88178420e-16  1.00000000e+00]]
A @ invers(A) mendekati I ? True
Invers B gagal dihitung: Singular matrix

Hasil kali A @ invers(A) pada keluaran tidak persis sama dengan identitas, melainkan menyisakan angka sekecil 2.22×10−162.22 \times 10^{-16} pada posisi di luar diagonal. Sisa ini berasal dari pembulatan pecahan biner pada proses internal pustaka, bukan dari kesalahan rumus. Fungsi np.allclose membandingkan dengan toleransi sehingga mengembalikan True, dan kebiasaan inilah yang digunakan setiap kali kesamaan pecahan diperiksa dalam kode. Nilai invers yang dicetak juga sama dengan hasil rumus manual di atas, yaitu (3−1−52)\begin{pmatrix} 3 & -1 \\ -5 & 2 \end{pmatrix}.

Kapan invers tidak ada#

Tidak semua matriks memiliki invers. Rumus 2×22 \times 2 di atas membagi dengan ad−bcad - bc, sehingga invers tidak terdefinisi apabila nilai itu nol. Matriks semacam ini disebut singular (singular), dan cirinya yang paling mudah dilihat adalah adanya baris yang merupakan kelipatan baris lain, sebagaimana matriks BB pada contoh kode yang baris keduanya dua kali baris pertamanya. NumPy memberitahukan keadaan ini melalui exception LinAlgError dengan pesan Singular matrix, sebagaimana terlihat pada baris terakhir keluaran.

Secara geometris, matriks singular memadatkan bidang dua dimensi ke dalam satu garis, sehingga informasi arah hilang dan tidak ada transformasi yang mampu memulihkan keadaan semula. Kehilangan informasi inilah yang membuat pembatalan menjadi mustahil, bukan keterbatasan algoritma penghitungnya. Kode yang baik menyiapkan penanganan untuk keadaan ini alih-alih mengasumsikan setiap matriks pasti memiliki invers.

Di mana hal ini ditemui dalam kode#

Pembatalan transformasi dan pencarian invers matriks muncul pada kode yang perlu memulihkan keadaan semula atau membalik arah pemetaan. Bentuk yang paling akrab adalah tombol urungkan (undo) pada aplikasi gambar, sedangkan bentuk lanjutannya tersebar pada pustaka numerik dan pengolahan data. Beberapa contoh yang mudah dikenali adalah sebagai berikut:

  • Fitur urungkan pada editor gambar membatalkan rotasi dan penskalaan sebelumnya melalui logika pembatalan yang ditulis sebagai perkalian dengan invers transformasi.
  • Kalibrasi kamera menghitung invers matriks parameter untuk memetakan titik pada foto kembali ke koordinat aslinya.
  • Pra-pemrosesan data pada machine learning kadang memutihkan data dengan mengalikannya dengan invers matriks kovarians, yaitu pembatalan korelasi antarfitur.
  • Pustaka numerik menyarankan np.linalg.solve untuk sistem persamaan dan menyimpan np.linalg.inv untuk kasus yang memang memerlukan matriks balikannya berulang kali.

Kebalikan dari contoh pertama juga patut dicatat, yaitu permainan digital yang menyimpan riwayat transformasi sebagai matriks agar setiap langkah dapat dibatalkan satu per satu. Matriks identitas dan invers memberikan kerangka yang sama untuk kedua arah tersebut. Riwayat semacam itu pada praktiknya berupa tumpukan matriks yang teratasnya dibatalkan lebih dahulu.

Ringkasan#

  • Matriks identitas II tidak mengubah matriks maupun titik apa pun yang dikalikannya, sebagaimana bilangan 1 pada perkalian biasa.
  • Invers A−1A^{-1} membatalkan kerja AA karena AA−1=IA A^{-1} = I, sebagaimana rotasi balik mengembalikan titik ke posisi semula.
  • Invers hanya ada apabila ad−bc≠0ad - bc \neq 0, dan matriks dengan nilai nol disebut singular.
  • NumPy menghitung invers dengan np.linalg.inv, memeriksa kesamaannya dengan np.allclose, dan menyelesaikan sistem persamaan dengan np.linalg.solve.

Referensi#