Matris Çarpımı ve Determinantlar
Matris çarpımı için %*%, determinant hesabı için det() kullanın.
Matris Çarpımı ve Determinantlar, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
R'de Matris Oluşturma
Matrisler, varsayılan olarak sütun sütun doldurulan iki boyutlu dizilerdir. matrix(data, nrow, ncol) kullanın. Satırları ve sütunları rownames() ve colnames() ile adlandırabilirsiniz.
# 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) # 3Matris Çarpımı: %*%
%*% işleci gerçek matris çarpımını gerçekleştirir (satırların ve sütunların nokta çarpımı). * işleci öğe bazında çarpma yapar; bu, sık karşılaşılan bir hatadır! Boyutlar uyumlu olmalıdır: (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%*% Sonuçlarını Anlama
Matris çarpımını elle doğrulayalım. C = A %*% B matrisinin (i,j) girdisi, A'nın i. satırı ile B'nin j. sütununun nokta çarpımıdır: 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 matchDeterminant: det()
Determinant, bir matrisin ölçekleme çarpanını kodlayan skaler bir değerdir. det(A) bu değeri hesaplar. det(A) == 0 ise matris tekildir (terslenemez). 2×2 matris için det = ad - bc'dir.
# 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İz: sum(diag())
Bir matrisin izi, köşegen öğelerinin toplamıdır. R'de matrisler için yerleşik bir trace() işlevi yoktur (bu ad farklı bir işleve aittir); bu nedenle sum(diag(A)) kullanın. İz, özdeğerlerin toplamına eşittir.
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 elsecrossprod() ve tcrossprod()
crossprod(A, B), t(A) %*% B işlemini verimli biçimde hesaplar; bu, çapraz çarpımdır. tcrossprod(A, B) ise A %*% t(B) işlemini hesaplar. Açıkça transpoze etmeye göre daha hızlıdırlar; çünkü transpoze matrisi oluşturmazlar.
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) # TRUEdiag() ile Birim Matris
diag(n), n×n boyutunda bir birim matrisi oluşturur. Vektör olan v için diag(v), köşegeninde v bulunan bir köşegen matrisi oluşturur. Matris olan A için diag(A), köşegeni çıkarır.
# 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: 100Matris Üssü ve Tekrarlı Çarpma
R'de yerleşik bir matris üssü işleci yoktur; ancak %*% kullanarak bir döngü içinde kendiniz yazabilir veya expm paketini kullanabilirsiniz. Matris karesi A² = A %*% A, yaygın bir işlemdir.
# 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%o% ile Dış Çarpım
Dış çarpım x %o% y, (i,j) girdisi x[i] * y[j] olan bir matris oluşturur. outer(x, y) ile eşdeğerdir. Etkileşim matrisleri ve belirli matematiksel yapıları oluşturmak için kullanışlıdır.
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 6Determinantın Özellikleri
Temel özellikler: det(A %*% B) = det(A) * det(B); det(t(A)) = det(A); n×n boyutlu bir matris için det(k*A) = k^n * det(A); satır işlemleri det değerini öngörülebilir biçimlerde değiştirir.
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 = 42Uygulama: Normal Denklemler
Doğrusal regresyonda OLS tahmin edicisi t(X) %*% X %*% beta = t(X) %*% y denklemini çözer. Bu işlem matris çarpımını ve tek bir çözüm elde edilmesini sağlamak için det(t(X)%*%X) != 0 koşulunu kullanır.
# 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 resultHızlı Kontrol
R'deki matris işlemlerini anlayıp anlamadığınızı test edin.
Özet: Matris İşlemleri
Temel çıkarımlar: Matris çarpımı için %*% kullanın (* kullanmayın). det(A) determinantı verir — sıfır olması matrisin tekil olduğunu gösterir. sum(diag(A)) iz değeridir. crossprod(A,B), t(A)%*%B işlemini verimli biçimde hesaplar. diag(n) birim matrisi oluşturur; diag(v) köşegen matris oluşturur. Bu işlemler regresyonun, PCA'nın ve birçok sayısal yöntemin temelini oluşturur.
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 productSıkça Sorulan Sorular
“Matris Çarpımı ve Determinantlar” dersi ücretsiz mi?
Evet — “Matris Çarpımı ve Determinantlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“Matris Çarpımı ve Determinantlar” dersinde ne öğreneceğim?
Matris çarpımı için %*%, determinant hesabı için det() kullanın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Matris Çarpımı ve Determinantlar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Matris Çarpımı ve Determinantlar
- solve() ile Doğrusal Sistemleri Çözme
- Özdeğerler ve Özvektörler
- SVD, QR ve Cholesky Ayrışımları