<- matrix(c(1,2,4,1,1,0,1,1,2), nrow=3, ncol=3, byrow=TRUE) # byrow=TRUE -> disusun per baris
A A
[,1] [,2] [,3]
[1,] 1 2 4
[2,] 1 1 0
[3,] 1 1 2
Matrix Algebra in R
September 24, 2024
Untuk membuat suatu matrix di R, gunakan fungsi
matrix(<values>, nrow=<jumlah baris>, ncol=<jumlah kolom>, byrow=TRUE/FALSE)
Argumen byrow
digunakan untuk mengatur apakah matrix disusun per baris atau per kolom.
[,1] [,2] [,3]
[1,] 1 2 4
[2,] 1 1 0
[3,] 1 1 2
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 1 1
[3,] 4 0 2
Tiap baris dan kolom dapat diberikan nama dengan argumen dimnames=list(rownames, colnames)
# Matriks disusun per baris diberikan nama
rownames = c("row1", "row2", "row3")
colnames = c("col1", "col2", "col3")
A <- matrix(c(1,2,4,1,1,0,1,1,2), nrow=3, ncol=3, byrow=TRUE, dimnames=list(rownames, colnames))
A
col1 col2 col3
row1 1 2 4
row2 1 1 0
row3 1 1 2
Untuk mengubah suat dataframe menjadi matrix, dapat digunakan fungsi as.matrix()
data(iris)
data <- head(iris[, c('Sepal.Length', 'Sepal.Width')])
mat_data <- as.matrix(data)
mat_data
Sepal.Length Sepal.Width
1 5.1 3.5
2 4.9 3.0
3 4.7 3.2
4 4.6 3.1
5 5.0 3.6
6 5.4 3.9
'data.frame': 6 obs. of 2 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9
num [1:6, 1:2] 5.1 4.9 4.7 4.6 5 5.4 3.5 3 3.2 3.1 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:6] "1" "2" "3" "4" ...
..$ : chr [1:2] "Sepal.Length" "Sepal.Width"
Operasi penjumlahan dan pengurangan pada matriks dapat dilakukan layaknya operasi penjumlahan dan pengurangan pada skalar di R
Operasi perkalian pada matriks dapat dilakukan layaknya operasi perkalian pada skalar di R
Operasi perkalian matriks dengan matriks harus menggunakan tanda %*%
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 2 1
[,1] [,2]
[1,] 2 1
[2,] 1 2
[3,] 3 1
[,1] [,2]
[1,] 6 4
[2,] 7 6
Melakukan perkalian matriks dengan matriks tanpa menggunakan tanda %
akan melakukan operator lain, yaitu Hadamard Product
[,1] [,2] [,3]
[1,] 2 0 -1
[2,] 4 1 3
[,1] [,2] [,3]
[1,] 1 3 7
[2,] 2 0 6
Transpose matriks dapat dilakukan dengan fungsi t()
[,1] [,2] [,3] [,4]
[1,] 1 1 3 5
[2,] 2 1 1 0
[3,] 1 2 3 5
Untuk penghitungan trace, diperlukan library matlib
dengan fungsi tr()
Determinan matriks dapat dihitung dengan fungsi det()
Invers matriks A dapat dihitung dengan fungsi solve(A)
Matriks A^n dapat dihitung dengan operator A %^% n
Matriks identitas n x n dapat dengan mudah dibuat menggunakan fungsi diag(n)
Notasi vektor sama dengan membuat suatu matriks dengan ncol=1
[,1]
[1,] 1
[2,] 0
[3,] 2
[,1]
[1,] 2
[2,] 2
[3,] 1
Untuk menghitung rank matriks, dibutuhkan library Matrix
dengan fungsi rankMatrix()
Untuk membuat bentuk eselon baris suatu matriks, dibutuhkan library matlib
dengan fungsi echelon()
Untuk mencari nilai eigen, gunakan fungsi eigen()
dan akses nilainya dengan $values
[,1] [,2] [,3]
[1,] 0 0 -2
[2,] 1 2 1
[3,] 1 0 3
[1] 2 2 1
Untuk mencari vektor eigen dari nilai eigen yang bersesuaian, gunakan $vectors
Dekomposisi cholesky dari suatu matriks A dapat dilakukan dengan fungsi chol(A)
[,1] [,2] [,3]
[1,] 3 0 -3
[2,] 0 6 3
[3,] -3 3 6
[,1] [,2] [,3]
[1,] 1.732051 0.00000 -1.732051
[2,] 0.000000 2.44949 1.224745
[3,] 0.000000 0.00000 1.224745
Sehingga dapat dibuktikan A = U`U dengan U matriks segitiga atas dari dekomposisi cholesky matriks A
[,1] [,2] [,3]
[1,] 1 0 1
[2,] 0 1 0
Nilai diagonal matriks D dapat diakses dengan $d
Matriks U dapat diakses dengan $u
Matriks V dapat diakses dengan $v
Sehingga dapat dibuktikan A = UDV`
Diberikan matriks berikut
Carilah nilai:
2.576 x (A + B)
Bx
y`B
x`Ay
Inner product dari x dan x
Inner product dari x dan y
Outer product dari y dan y
Nilai eigen dari A tanpa menggunakan fungsi eigen()$values
(sertakan kode)
Vektor eigen dari A tanpa menggunakan fungsi eigen()$vectors
(sertakan kode)
Matriks U, D dan V dari singular value decomposition pada invers dari matriks B