R Academy · Pelajaran

Perkalian Matriks dan Determinan

Gunakan %*% untuk perkalian matriks dan det() untuk menghitung determinan.

Pelajaran 1 dari 413 langkah

Perkalian Matriks dan Determinan adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 1 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 R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Membuat Matriks di R

Matriks adalah larik 2D yang secara bawaan diisi berdasarkan kolom. Gunakan matrix(data, nrow, ncol). Anda dapat memberi nama pada baris dan kolom dengan rownames() dan colnames().

# Create a 3x3 matrix (filled column-wise)
A <- matrix(c(1, 2, 3,
              4, 5, 6,
              7, 8, 9), nrow = 3, ncol = 3, byrow = TRUE)
print(A)
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6
# [3,]    7    8    9

dim(A)   # 3 3
nrow(A)  # 3
ncol(A)  # 3

Perkalian Matriks: %*%

Operator %*% melakukan perkalian matriks sebenarnya (hasil kali titik baris dan kolom). Operator * bekerja per elemen—kesalahan yang umum terjadi! Dimensi harus kompatibel: (m×n) %*% (n×p) = (m×p).

A <- matrix(c(1, 2, 3, 4), nrow = 2)
B <- matrix(c(5, 6, 7, 8), nrow = 2)

# Element-wise multiplication (NOT matrix mult)
A * B
#      [,1] [,2]
# [1,]    5   21
# [2,]   12   32

# True matrix multiplication
A %*% B
#      [,1] [,2]
# [1,]   19   43
# [2,]   22   50

# Verify: entry [1,1] = 1*5 + 2*6 = 17... wait:
# A[1,] = c(1,3), B[,1] = c(5,6): 1*5 + 3*6 = 23

Memahami Hasil %*%

Mari verifikasi perkalian matriks secara manual. Entri (i,j) dari C = A %*% B adalah hasil kali titik baris i dari A dengan kolom j dari B: sum(A[i,] * B[,j]).

A <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, byrow = TRUE)
B <- matrix(c(7, 8, 9, 10, 11, 12), nrow = 3, byrow = TRUE)
# A is 2x3, B is 3x2 -> result is 2x2
C <- A %*% B
print(C)

# Verify entry C[1,1]:
# row 1 of A: c(1,2,3), col 1 of B: c(7,9,11)
manual_11 <- sum(A[1, ] * B[, 1])
manual_11  # 1*7 + 2*9 + 3*11 = 58
C[1, 1]   # should match

Determinan: det()

Determinan adalah nilai skalar yang menyatakan faktor skala suatu matriks. det(A) menghitungnya. Jika det(A) == 0, matriks tersebut singular (tidak dapat dibalik). Untuk matriks 2×2, det = ad - bc.

# 2x2 matrix: det = a*d - b*c
A <- matrix(c(3, 2, 1, 4), nrow = 2)
det(A)  # 3*4 - 2*1 = 10

# Singular matrix: det = 0
S <- matrix(c(1, 2, 2, 4), nrow = 2)
det(S)  # 0 -> not invertible

# Larger matrix
B <- matrix(c(2, -1, 0,
             -1,  2, -1,
              0, -1,  2), nrow = 3, byrow = TRUE)
det(B)  # 4

Jejak: sum(diag())

Jejak suatu matriks adalah jumlah elemen diagonalnya. R tidak memiliki trace() bawaan untuk matriks (fungsi tersebut memiliki kegunaan yang berbeda), jadi gunakan sum(diag(A)). Jejak sama dengan jumlah nilai eigen.

A <- matrix(c(4, 2, 1,
              3, 5, 0,
              2, 1, 6), nrow = 3, byrow = TRUE)
# Extract diagonal elements
diag(A)  # c(4, 5, 6)

# Trace = sum of diagonal
trace_A <- sum(diag(A))
trace_A  # 15

# Trace = sum of eigenvalues (verify)
eigs <- eigen(A)$values
sum(Re(eigs))  # should also be approximately 15

# trace() in base R is NOT the matrix trace:
# trace(A) # this does something else

crossprod() dan tcrossprod()

crossprod(A, B) menghitung t(A) %*% B secara efisien—hasil kali silang. tcrossprod(A, B) menghitung A %*% t(B). Keduanya lebih cepat daripada transposisi eksplisit karena tidak perlu membuat matriks hasil transposisi.

A <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3)
B <- matrix(c(7, 8, 9, 10, 11, 12), nrow = 3)

# t(A) %*% B  (the slow way)
result1 <- t(A) %*% B

# crossprod(A, B) = t(A) %*% B (faster)
result2 <- crossprod(A, B)
all.equal(result1, result2)  # TRUE

# crossprod(A) = t(A) %*% A
ATA <- crossprod(A)
print(ATA)

# tcrossprod(A, B) = A %*% t(B)
result3 <- tcrossprod(A, B)
all.equal(A %*% t(B), result3)  # TRUE

Matriks Identitas dengan diag()

diag(n) membuat matriks identitas n×n. diag(v), dengan v berupa vektor, membuat matriks diagonal dengan v pada diagonalnya. diag(A), dengan A berupa matriks, mengekstrak diagonalnya.

# 3x3 identity matrix
I3 <- diag(3)
print(I3)
#      [,1] [,2] [,3]
# [1,]    1    0    0
# [2,]    0    1    0
# [3,]    0    0    1

# A * I = A (identity property)
A <- matrix(c(2, 3, 4, 5), nrow = 2)
all.equal(A %*% diag(2), A)  # TRUE

# Create diagonal matrix from vector
D <- diag(c(2, 5, 10))
print(D)
det(D)  # Product of diagonal: 100

Pangkat Matriks dan Perkalian Berulang

R tidak memiliki operator bawaan untuk pangkat matriks, tetapi Anda dapat menulisnya menggunakan %*% dalam perulangan atau menggunakan paket expm. Kuadrat matriks A² = A %*% A adalah operasi yang umum.

# Matrix square
A <- matrix(c(1, 1, 1, 0), nrow = 2)
A_sq <- A %*% A
print(A_sq)
# Fibonacci connection: A^n gives Fib numbers!

# Simple matrix power function
mat_pow <- function(M, n) {
  result <- diag(nrow(M))  # start with identity
  for (i in seq_len(n)) result <- result %*% M
  result
}

mat_pow(A, 5)  # A to the 5th power
# [1,]  8  5
# [2,]  5  3

Hasil Kali Luar dengan %o%

Hasil kali luar x %o% y membuat matriks dengan entri (i,j) = x[i] * y[j]. Setara dengan outer(x, y). Berguna untuk membuat matriks interaksi dan konstruksi matematis tertentu.

x <- c(1, 2, 3)
y <- c(10, 20)

# Outer product: 3x2 matrix
P <- x %o% y
print(P)
#      [,1] [,2]
# [1,]   10   20
# [2,]   20   40
# [3,]   30   60

# Same as outer(x, y)
identical(P, outer(x, y))  # TRUE

# Outer with custom function
outer(1:3, 1:3, FUN = '+')
#      [,1] [,2] [,3]
# [1,]    2    3    4
# [2,]    3    4    5
# [3,]    4    5    6

Sifat-Sifat Determinan

Sifat-sifat utama: det(A %*% B) = det(A) * det(B); det(t(A)) = det(A); det(k*A) = k^n * det(A) untuk matriks n×n; operasi baris mengubah det dengan cara yang dapat diprediksi.

A <- matrix(c(2, 1, 5, 3), nrow = 2)
B <- matrix(c(4, 2, 1, 6), nrow = 2)

# det(A %*% B) = det(A) * det(B)
det(A %*% B)
det(A) * det(B)

# det(t(A)) = det(A)
det(t(A)); det(A)

# det(2A) = 2^n * det(A) for n=2
det(2 * A); 2^2 * det(A)

# det of upper triangular = product of diagonal
U <- matrix(c(3, 0, 0, 4, 2, 0, 1, 5, 7), nrow = 3, byrow = TRUE)
det(U); prod(diag(U))  # both = 42

Praktik: Persamaan Normal

Dalam regresi linear, penduga OLS menyelesaikan t(X) %*% X %*% beta = t(X) %*% y. Ini menggunakan perkalian matriks dan syarat det(t(X)%*%X) != 0 untuk memastikan solusi yang unik.

# Generate simple regression data
set.seed(42)
n <- 20
x <- runif(n, 0, 10)
y <- 2 + 3 * x + rnorm(n)

# Design matrix with intercept column
X <- cbind(1, x)

# Check det of X'X (should be nonzero)
XtX <- crossprod(X)  # t(X) %*% X
det(XtX)  # large positive value

# Solve normal equations: beta = solve(X'X) %*% X'y
Xty <- crossprod(X, y)  # t(X) %*% y
beta <- solve(XtX) %*% Xty
beta  # Should be close to c(2, 3)

# Compare with lm()
coef(lm(y ~ x))  # same result

Pemeriksaan Singkat

Uji pemahaman Anda tentang operasi matriks di R.

Ringkasan: Operasi Matriks

Hal-hal penting: Gunakan %*% untuk perkalian matriks (bukan *). det(A) menghasilkan determinan — nilai nol berarti singular. sum(diag(A)) adalah jejak matriks. crossprod(A,B) menghitung t(A)%*%B secara efisien. diag(n) membuat matriks identitas; diag(v) membuat matriks diagonal. Operasi-operasi ini menjadi dasar regresi, PCA, dan banyak metode numerik.

A <- matrix(c(2, 1, 1, 3), nrow = 2)
B <- matrix(c(1, 0, 0, 1), nrow = 2)  # Identity

# Core matrix operations summary:
A %*% B             # matrix multiply -> A
det(A)              # 2*3 - 1*1 = 5
sum(diag(A))        # trace = 2+3 = 5
crossprod(A)        # t(A) %*% A
tcrossprod(A)       # A %*% t(A)
diag(3)             # 3x3 identity
diag(c(1,2,3))      # diagonal matrix
A %o% c(1, 2)       # outer product
Gratis untuk memulai

Belajar R dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
43
Pelajaran
159

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Perkalian Matriks dan Determinan” gratis?

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

Apa yang akan aku pelajari di “Perkalian Matriks dan Determinan”?

Gunakan %*% untuk perkalian matriks dan det() untuk menghitung determinan. Kamu berlatih R 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 R Academy?

Tidak diperlukan pengalaman sebelumnya. R 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 1 dari 4.

Berapa lama pelajaran “Perkalian Matriks dan Determinan” 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 R Academy ini?

Ya. Setiap pelajaran R 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 dan Determinan
  2. Menyelesaikan Sistem Linear dengan solve()
  3. Nilai Eigen dan Vektor Eigen
  4. Dekomposisi SVD, QR, dan Cholesky
← Kembali ke R Academy