0Pricing
Pandas & NumPy Academy · Pelajaran

Determinan, Invers, dan Transpos

Hitung determinan matriks dengan np.linalg.det, invers dengan np.linalg.inv, dan transpos dengan .T.

Determinan, Invers, dan Transpos adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Transpose Matriks

Transpose suatu matriks membaliknya terhadap diagonalnya: baris menjadi kolom dan kolom menjadi baris. Jika A memiliki bentuk (m, n), maka A.T memiliki bentuk (n, m). Transpose muncul di berbagai bagian aljabar linear: dalam penghitungan matriks kovarians, penerapan propagasi balik gradien, dan konversi antara konvensi vektor baris dan vektor kolom. NumPy mengakses transpose dengan atribut .T—tidak ada salinan yang dibuat; ini hanya tampilan dengan stride yang diurutkan ulang.

import numpy as np

A = np.array([[1, 2, 3],
              [4, 5, 6]])
print('A shape:', A.shape)       # (2, 3)
print('A.T shape:', A.T.shape)   # (3, 2)
print(A.T)

Transpose dalam Praktik

Pola yang sering digunakan adalah menghitung A.T @ A, yang menghasilkan matriks persegi simetris dan muncul dalam regresi kuadrat terkecil, PCA, serta persamaan normal. Jika A memiliki bentuk (n, p), maka A.T @ A memiliki bentuk (p, p). Hasilnya selalu simetris karena (A.T @ A)[i,j] == (A.T @ A)[j,i]. Sifat ini dimanfaatkan oleh banyak pemecah numerik agar lebih efisien.

import numpy as np

A = np.array([[1.0, 2.0],
              [3.0, 4.0],
              [5.0, 6.0]])  # shape (3, 2)

ATA = A.T @ A   # shape (2, 2), symmetric
print('A.T @ A:')
print(ATA)
print('Is symmetric:', np.allclose(ATA, ATA.T))

Determinan: Maknanya

Determinan suatu matriks persegi adalah nilai skalar yang menyimpan informasi geometris: nilai ini mengukur faktor skala matriks terhadap luas (2D) atau volume (dimensi yang lebih tinggi). Determinan bernilai nol berarti matriks tersebut singular—matriks memampatkan ruang ke subruang berdimensi lebih rendah dan tidak memiliki invers. Determinan yang tidak nol menjamin bahwa matriks dapat dibalik. NumPy menghitungnya dengan np.linalg.det().

import numpy as np

# Non-singular matrix
A = np.array([[3.0, 1.0],
              [2.0, 4.0]])
print('det(A):', np.linalg.det(A))   # 3*4 - 1*2 = 10

# Singular matrix (row 2 = 2 * row 1)
B = np.array([[1.0, 2.0],
              [2.0, 4.0]])
print('det(B):', np.linalg.det(B))   # ~0

Menghitung Invers dengan np.linalg.inv()

Invers matriks A, yang ditulis sebagai A⁻¹, memenuhi A @ A⁻¹ = I, dengan I sebagai matriks identitas. Invers hanya ada untuk matriks persegi yang tidak singular. np.linalg.inv(A) menghitung invers secara numerik. Dalam praktiknya, Anda sebaiknya jarang menghitung invers secara eksplisit karena cara ini tidak stabil secara numerik; sebagai gantinya, gunakan np.linalg.solve() untuk sistem persamaan. Namun, memahami invers secara konseptual sangat penting.

import numpy as np

A = np.array([[3.0, 1.0],
              [2.0, 4.0]])

A_inv = np.linalg.inv(A)
print('Inverse:')
print(A_inv)

# Verify: A @ A_inv should be identity
I = A @ A_inv
print('A @ A_inv (should be I):')
print(np.round(I, 10))

Ketidakstabilan Numerik pada Pembalikan Langsung

Menghitung invers matriks lalu melakukan perkalian menimbulkan kesalahan titik mengambang yang terakumulasi. Misalnya, menyelesaikan A_inv @ b kurang akurat daripada langsung memanggil np.linalg.solve(A, b). Matriks yang terkondisi dengan baik (determinan jauh dari nol) tidak terlalu sensitif terhadap kesalahan ini. Bilangan kondisi (np.linalg.cond(A)) mengukur seberapa dekat suatu matriks dengan kondisi singular—bilangan kondisi yang tinggi menandakan masalah numerik.

import numpy as np

A = np.array([[1.0, 2.0],
              [1.0001, 2.0]])
print('Condition number:', np.linalg.cond(A))
# Very high condition number -> near-singular, unstable inversion

b = np.array([3.0, 3.0001])
# Prefer solve over inv @ b
print('Solution via solve:', np.linalg.solve(A, b))

Matriks Ortogonal dan Transposenya

Salah satu kelas matriks khusus adalah matriks ortogonal, yang memenuhi A.T @ A = I. Artinya, transpose IS invers, sehingga matriks ortogonal sangat murah untuk dibalik. Matriks rotasi dan faktor Q dalam dekomposisi QR bersifat ortogonal. Kolom-kolom matriks ortogonal membentuk basis ortonormal—setiap kolom memiliki panjang satu dan tegak lurus terhadap semua kolom lainnya.

import numpy as np

# 90-degree rotation matrix is orthogonal
theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

print('R.T @ R (should be identity):')
print(np.round(R.T @ R, 10))
print('Is orthogonal:', np.allclose(R.T @ R, np.eye(2)))

Pseudo-Invers untuk Matriks Nonpersegi

Invers biasa hanya ada untuk matriks persegi, tetapi pseudo-invers Moore-Penrose memperluas pembalikan ke matriks apa pun. np.linalg.pinv(A) menghitungnya menggunakan SVD. Pseudo-invers ini menjadi dasar solusi kuadrat terkecil untuk sistem yang terlalu ditentukan (jumlah persamaan lebih banyak daripada peubah), persis seperti yang diselesaikan oleh regresi linear. Jika A persegi dan dapat dibalik, pinv(A) sama dengan inv(A).

import numpy as np

# Over-determined system: 3 equations, 2 unknowns
A = np.array([[1.0, 1.0],
              [1.0, 2.0],
              [1.0, 3.0]])
b = np.array([2.0, 3.0, 5.0])

# Least-squares solution using pseudo-inverse
x = np.linalg.pinv(A) @ b
print('Best-fit solution:', x)
# Or use lstsq directly
x2, _, _, _ = np.linalg.lstsq(A, b, rcond=None)
print('lstsq solution:', x2)

Tanda Determinan dan Skala Volume

Tanda determinan menunjukkan apakah transformasi mempertahankan atau membalik orientasi. Determinan positif berarti orientasi dipertahankan (seperti rotasi); determinan negatif berarti orientasi dibalik (seperti pencerminan). Nilai absolutnya memberikan faktor skala volume. Untuk matriks 2×2 [[a,b],[c,d]], det = a*d - b*c. NumPy menangani berbagai ukuran matriks persegi secara efisien.

import numpy as np

# Identity: det = 1 (no scaling, no flip)
I = np.eye(3)
print('det(I):', np.linalg.det(I))    # 1.0

# Scaling by 2 in all directions: det = 8 = 2^3
S = 2 * np.eye(3)
print('det(2I):', np.linalg.det(S))   # 8.0

# Reflection: det = -1
F = np.array([[-1.0, 0.0],
              [ 0.0, 1.0]])
print('det(reflection):', np.linalg.det(F))

Menggunakan np.linalg.slogdet() untuk Stabilitas

Untuk matriks besar, determinan dapat mengalami luapan atau jatuh di bawah batas hingga menjadi nol meskipun matriks tersebut tidak singular. np.linalg.slogdet(A) mengembalikan (sign, log_abs_det)—tanda dan log natural dari determinan absolut—sehingga luapan numerik dapat dihindari. Cara ini banyak digunakan dalam model probabilistik (kemungkinan Gaussian) yang bekerja dalam ruang log agar angka tetap mudah dikelola.

import numpy as np

A = np.random.rand(100, 100)

# Direct det might underflow for large matrices
sign, logdet = np.linalg.slogdet(A)
print('Sign:', sign)
print('Log|det|:', logdet)
print('Actual det (may be ~0 due to float):', np.linalg.det(A))
print('Reconstructed |det|:', np.exp(logdet))

Praktik: Menyelesaikan 2x2 dengan Tangan vs NumPy

Untuk matriks 2×2 [[a, b], [c, d]], inversnya adalah (1/det) * [[d, -b], [-c, a]], dengan det = ad - bc. Mengetahui rumus ini membantu Anda memeriksa hasil NumPy secara cepat. Untuk matriks yang lebih besar, menghitung invers secara analitis tidak praktis—itulah alasan kita menggunakan np.linalg.inv(). Selalu verifikasi hasil numerik dengan np.allclose(A @ A_inv, np.eye(n)).

import numpy as np

a, b, c, d = 3.0, 1.0, 2.0, 4.0
A = np.array([[a, b], [c, d]])
det = a*d - b*c

# Manual inverse
A_inv_manual = (1/det) * np.array([[d, -b], [-c, a]])
print('Manual inv:')
print(A_inv_manual)

# NumPy inverse
print('np.linalg.inv:')
print(np.linalg.inv(A))
print('Match:', np.allclose(A_inv_manual, np.linalg.inv(A)))

Menggabungkan Transpose dan Invers dalam Alur Pemrosesan

Pola aljabar linear yang umum menggabungkan transpose dan invers: menghitung (A.T @ A)⁻¹ @ A.T menghasilkan matriks proyeksi yang digunakan dalam kuadrat terkecil biasa. Dalam NumPy, ini dapat ditulis sebagai np.linalg.inv(A.T @ A) @ A.T, tetapi sekali lagi, np.linalg.lstsq lebih baik secara numerik. Memahami pola yang mendasarinya membantu Anda memahami cara kerja pemecah dan menelusuri masalah ketika matriks hampir singular.

import numpy as np

# Design matrix for simple linear regression (with bias)
X = np.column_stack([np.ones(5), np.array([1., 2., 3., 4., 5.])])
y = np.array([2.1, 3.9, 6.2, 8.1, 9.8])

# OLS via normal equations: beta = (X.T @ X)^-1 @ X.T @ y
beta = np.linalg.inv(X.T @ X) @ X.T @ y
print('Coefficients (intercept, slope):', np.round(beta, 3))

# Verify with lstsq
beta2, _, _, _ = np.linalg.lstsq(X, y, rcond=None)
print('lstsq result:', np.round(beta2, 3))

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa: A.T adalah transpose yang menukar baris dan kolom, np.linalg.inv() menghitung invers matriks tetapi sebaiknya jarang digunakan secara langsung (lebih baik gunakan solve atau lstsq), dan np.linalg.det() mengembalikan determinan yang bernilai nol untuk matriks singular. Selanjutnya kita akan membahas penyelesaian sistem linear secara langsung dengan np.linalg.solve.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Determinan, Invers, dan Transpos” gratis?

Ya — teks lengkap “Determinan, Invers, dan Transpos” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Determinan, Invers, dan Transpos”?

Hitung determinan matriks dengan np.linalg.det, invers dengan np.linalg.inv, dan transpos dengan .T. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Determinan, Invers, dan Transpos” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Perkalian Matriks dengan np.matmul dan @
  2. Determinan, Invers, dan Transpos
  3. Menyelesaikan Sistem Linear
  4. Gambaran Umum Nilai Eigen dan SVD
← Kembali ke Pandas & NumPy Academy