Linear algebra adalah cabang matematika yang mempelajari struktur dan operasi pada vektor dan matriks. Dalam bahasa pemrograman R, terdapat beberapa paket yang menyediakan fungsi dan operasi untuk menerapkan konsep-konsep linear algebra. Salah satu paket yang umum digunakan adalah paket ’MASS’dan “matlib” yang sudah terintegrasi dengan R secara default.
Skalar: Skalar adalah bilangan tunggal yang hanya memiliki besaran (magnitude) tanpa “arah”. Contohnya adalah kecepatan. Skalar dapat direpresentasikan dengan angka tunggal dalam matematika. Misalnya, kecepatan 50 km/jam adalah contoh skalar.
Vektor: Vektor adalah daftar terurut dari skalar yang memiliki besaran (magnitude) dan arah. Contohnya adalah kecepatan dan arah pergerakan. Vektor dapat direpresentasikan dengan menggunakan urutan bilangan atau matriks dalam matematika. Misalnya, vektor kecepatan dalam koordinat dua dimensi dapat direpresentasikan sebagai vektor [3, 4], dengan 3 dan 4 mewakili besaran dalam sumbu x dan y, dan arahnya menunjukkan arah pergerakan.
a <- c(12, 13, 45, 46, 89)
a
## [1] 12 13 45 46 89
Dua vektor x dan y dikatakan ortogonal jika hasil perkalian dot (dot product) antara mereka sama dengan 0, yang dituliskan sebagai ⟨x, y⟩ = 𝑥1𝑦1+𝑥2𝑦2+…+𝑥𝑛𝑦𝑛 = 0.
Dalam konteks geometri, ini berarti bahwa dua vektor ortogonal saling tegak lurus satu sama lain. Secara intuitif, jika dua vektor ortogonal digambarkan dalam sistem koordinat dua atau tiga dimensi, vektor-vektor tersebut tidak memiliki kesamaan arah atau arah yang berlawanan.
x <- c(1,1)
y <- c(-1,1)
sum(x*y)
## [1] 0
Linear Independence (Kemandirian Linear): Dua vektor x dan y dikatakan linear independen jika tidak ada konstanta skalar c sedemikian rupa sehingga x ≠ cy.
Matrix (Matriks): Matriks adalah kumpulan dari skalar/angka-angka. Jika sebuah matriks memiliki n baris dan m kolom, maka kita akan menyebutnya sebagai matriks n×m; dengan demikian, kita bisa menganggap vektor sebagai matriks yang hanya memiliki satu baris atau satu kolom.
library(MASS)
A <- matrix(c(1, 5, 0, 2, 4,-10, 0, -20, 0), nrow = 3, byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 1 5 0
## [2,] 2 4 -10
## [3,] 0 -20 0
A <- matrix(c(1, 5, 0, 2, 4,-10, 0, -20, 0), nrow = 3, byrow = FALSE)
A
## [,1] [,2] [,3]
## [1,] 1 2 0
## [2,] 5 4 -20
## [3,] 0 -10 0
Transpose (Transposisi): Transposisi matriks adalah operasi yang menghasilkan matriks baru dengan jumlah kolom dan baris yang dibalik. Dalam transposisi, setiap elemen pada baris matriks asli akan menjadi elemen pada kolom matriks transposisi yang sama, dan sebaliknya.
A <- matrix(c(1, 5, 0, 2, 4,-10), nrow = 3, byrow = FALSE)
A
## [,1] [,2]
## [1,] 1 2
## [2,] 5 4
## [3,] 0 -10
t(A)
## [,1] [,2] [,3]
## [1,] 1 5 0
## [2,] 2 4 -10
Multiplication with a scalar/number:
A <- matrix(c(1, 5, 0, 2, 4,-10), nrow = 3, byrow = FALSE)
10 * A
## [,1] [,2]
## [1,] 10 20
## [2,] 50 40
## [3,] 0 -100
Multiplication between matrices
A <- matrix(c(1, 5, 0, 2, 4,-10, 0, 1, 0), nrow = 3, byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 1 5 0
## [2,] 2 4 -10
## [3,] 0 1 0
B <- matrix(c(1, 1, 1, 3, 5, 7, 0, 2, 0), nrow = 3, byrow = TRUE)
B
## [,1] [,2] [,3]
## [1,] 1 1 1
## [2,] 3 5 7
## [3,] 0 2 0
A %*% B
## [,1] [,2] [,3]
## [1,] 16 26 36
## [2,] 14 2 30
## [3,] 3 5 7
Determinant
A <- matrix(c(1, 5, 0, 2, 4,-10, 0, 1, 0), nrow = 3, byrow = TRUE)
det(A)
## [1] 10
Inverse of a matrix
A <- matrix(c(1, 5, 0, 2, 4, -10, 0, 1, 0), nrow = 3, byrow = TRUE)
solve(A)
## [,1] [,2] [,3]
## [1,] 1.0 0.0 -5.0
## [2,] 0.0 0.0 1.0
## [3,] 0.2 -0.1 -0.6
fractions(solve(A))
## [,1] [,2] [,3]
## [1,] 1 0 -5
## [2,] 0 0 1
## [3,] 1/5 -1/10 -3/5