Matriks \(M\) berukuran \(4 \times 4\) dibuat menggunakan fungsi
matrix() dengan argumen byrow = TRUE agar
pengisian dilakukan per baris.
\[M = \begin{bmatrix} 5 & 7 & 5 & 4 \\ 2 & 9 & 7 & 5 \\ 3 & 3 & 4 & 2 \\ 8 & 1 & 0 & 3 \end{bmatrix}\]
[,1] [,2] [,3] [,4]
[1,] 5 7 5 4
[2,] 2 9 7 5
[3,] 3 3 4 2
[4,] 8 1 0 3
Perkalian elemen demi elemen (Hadamard product) mengalikan
setiap elemen pada posisi yang sama. Dalam R digunakan operator
*.
Hasil Perkalian Elemen demi Elemen (M * M):
[,1] [,2] [,3] [,4]
[1,] 25 49 25 16
[2,] 4 81 49 25
[3,] 9 9 16 4
[4,] 64 1 0 9
Perkalian matriks secara aljabar (\(M
\times M = M^2\)) menggunakan operator %*% di R.
Hasil Perkalian Matriks M %*% M:
[,1] [,2] [,3] [,4]
[1,] 86 117 94 77
[2,] 89 121 101 82
[3,] 49 62 52 41
[4,] 66 68 47 46
Invers matriks dihitung dengan fungsi solve(). Invers
hanya ada jika determinan matriks tidak sama dengan nol.
Determinan M = 132
Invers Matriks M (solve(M)):
[,1] [,2] [,3] [,4]
[1,] 0.2954545 -2.50000e-01 0.06818182 -0.02272727
[2,] 0.6590909 -2.50000e-01 -0.38636364 -0.20454545
[3,] -0.2121212 2.92164e-17 0.51515152 -0.06060606
[4,] -1.0075758 7.50000e-01 -0.05303030 0.46212121
Transpos matriks diperoleh dengan menukar baris menjadi kolom dan
sebaliknya, menggunakan fungsi t().
Transpos Matriks M (t(M)):
[,1] [,2] [,3] [,4]
[1,] 5 2 3 8
[2,] 7 9 3 1
[3,] 5 7 4 0
[4,] 4 5 2 3
Mendefinisikan ulang \(M\), vektor \(a\), dan matriks \(B\).
M <- matrix(c(5, 7, 5, 4,
2, 9, 7, 5,
3, 3, 4, 2,
8, 1, 0, 3),
nrow = 4, ncol = 4, byrow = TRUE)
a <- c(1, 4, 5, 6)
B <- matrix(c(1, 2, 4, 4,
1, 2, 3, 4),
nrow = 2, ncol = 4, byrow = TRUE)
cat("Matriks M:\n"); print(M)
cat("\nVektor a:\n"); print(a)
cat("\nMatriks B (2x4):\n"); print(B)Matriks M:
[,1] [,2] [,3] [,4]
[1,] 5 7 5 4
[2,] 2 9 7 5
[3,] 3 3 4 2
[4,] 8 1 0 3
Vektor a:
[1] 1 4 5 6
Matriks B (2x4):
[,1] [,2] [,3] [,4]
[1,] 1 2 4 4
[2,] 1 2 3 4
\[M_1 = \begin{bmatrix} 9 & 5 \\ 1 & 3 \end{bmatrix}\]
\(M_1\) diperoleh dari baris ke-2 dan ke-4, kolom ke-2 dan ke-4 dari matriks \(M\).
M1 = M[c(2,4), c(2,4)]:
[,1] [,2]
[1,] 9 5
[2,] 1 3
\[M_2 = \begin{bmatrix} 7 & 5 \\ 3 & 4 \end{bmatrix}\]
\(M_2\) diperoleh dari baris ke-1 dan ke-3, kolom ke-2 dan ke-3 dari matriks \(M\).
M2 = M[c(1,3), c(2,3)]:
[,1] [,2]
[1,] 7 5
[2,] 3 4
Karena \(M\) hanya memiliki 4 baris,
menambahkan vektor \(a\) berarti
menambahkan baris baru (baris ke-5) menggunakan fungsi
rbind().
M3 = rbind(M, a) -> menambahkan a sebagai baris ke-5:
[,1] [,2] [,3] [,4]
5 7 5 4
2 9 7 5
3 3 4 2
8 1 0 3
a 1 4 5 6
\(B\) berukuran \(2 \times 4\), sehingga \(B^T\) berukuran \(4 \times 2\). Kolom ke-1 dan ke-2 dari \(M\) dijumlahkan dengan \(B^T\).
BT <- t(B)
cat("Transpos B (B^T), ukuran 4x2:\n"); print(BT)
M4 <- M
M4[, c(1, 2)] <- M[, c(1, 2)] + BT
cat("\nM4 = M dengan kolom 1 dan 2 ditambah B^T:\n")
M4Transpos B (B^T), ukuran 4x2:
[,1] [,2]
[1,] 1 1
[2,] 2 2
[3,] 4 3
[4,] 4 4
M4 = M dengan kolom 1 dan 2 ditambah B^T:
[,1] [,2] [,3] [,4]
[1,] 6 8 5 4
[2,] 4 11 7 5
[3,] 7 6 4 2
[4,] 12 5 0 3
Program ini membuat sebuah array 3 dimensi yang merepresentasikan data nilai ujian mahasiswa pada 2 mata kuliah, 3 semester, dan 4 mahasiswa, lalu menghitung statistik deskriptifnya.
# Membuat array 3 dimensi: 4 mahasiswa x 2 matkul x 3 semester
set.seed(42)
nilai <- array(
data = c(75, 80, 65, 90, # semester 1, matkul 1
70, 85, 60, 95, # semester 1, matkul 2
78, 82, 68, 88, # semester 2, matkul 1
72, 79, 74, 91, # semester 2, matkul 2
80, 84, 70, 92, # semester 3, matkul 1
76, 88, 66, 93), # semester 3, matkul 2
dim = c(4, 2, 3),
dimnames = list(
Mahasiswa = c("Mhs_A", "Mhs_B", "Mhs_C", "Mhs_D"),
MataKuliah = c("MatKul_1", "MatKul_2"),
Semester = c("Smt_1", "Smt_2", "Smt_3")
)
)
cat("=== Array Nilai Ujian Mahasiswa ===\n")
print(nilai)
cat("\n=== Rata-rata Nilai per Mahasiswa (semua semester & matkul) ===\n")
apply(nilai, 1, mean)
cat("\n=== Rata-rata Nilai per Mata Kuliah ===\n")
apply(nilai, 2, mean)
cat("\n=== Rata-rata Nilai per Semester ===\n")
apply(nilai, 3, mean)
cat("\n=== Nilai Tertinggi dan Terendah ===\n")
cat("Nilai tertinggi:", max(nilai), "\n")
cat("Nilai terendah :", min(nilai), "\n")
cat("Rata-rata keseluruhan:", round(mean(nilai), 2), "\n")=== Array Nilai Ujian Mahasiswa ===
, , Semester = Smt_1
MataKuliah
Mahasiswa MatKul_1 MatKul_2
Mhs_A 75 70
Mhs_B 80 85
Mhs_C 65 60
Mhs_D 90 95
, , Semester = Smt_2
MataKuliah
Mahasiswa MatKul_1 MatKul_2
Mhs_A 78 72
Mhs_B 82 79
Mhs_C 68 74
Mhs_D 88 91
, , Semester = Smt_3
MataKuliah
Mahasiswa MatKul_1 MatKul_2
Mhs_A 80 76
Mhs_B 84 88
Mhs_C 70 66
Mhs_D 92 93
=== Rata-rata Nilai per Mahasiswa (semua semester & matkul) ===
Mhs_A Mhs_B Mhs_C Mhs_D
75.16667 83.00000 67.16667 91.50000
=== Rata-rata Nilai per Mata Kuliah ===
MatKul_1 MatKul_2
79.33333 79.08333
=== Rata-rata Nilai per Semester ===
Smt_1 Smt_2 Smt_3
77.500 79.000 81.125
=== Nilai Tertinggi dan Terendah ===
Nilai tertinggi: 95
Nilai terendah : 60
Rata-rata keseluruhan: 79.21
Program ini menyelesaikan sistem persamaan linear (SPL) menggunakan operasi matriks di R. Diberikan sistem:
\[\begin{cases} 2x + 3y - z = 1 \\ x - y + 4z = 8 \\ 3x + 2y + z = 10 \end{cases}\]
# Matriks koefisien A
A <- matrix(c(2, 3, -1,
1, -1, 4,
3, 2, 1),
nrow = 3, byrow = TRUE)
# Vektor konstanta b
b <- c(1, 8, 10)
cat("=== Matriks Koefisien A ===\n")
print(A)
cat("\n=== Vektor Konstanta b ===\n")
print(b)
cat("\n=== Determinan A ===\n")
cat("det(A) =", det(A), "\n")
cat("\n=== Invers Matriks A ===\n")
A_inv <- solve(A)
print(round(A_inv, 4))
# Solusi SPL: x = A^{-1} * b
solusi <- solve(A, b)
cat("\n=== Solusi Sistem Persamaan Linear ===\n")
cat("x =", round(solusi[1], 4), "\n")
cat("y =", round(solusi[2], 4), "\n")
cat("z =", round(solusi[3], 4), "\n")
# Verifikasi: A %*% solusi harus = b
cat("\n=== Verifikasi: A %*% x (harus sama dengan b) ===\n")
print(round(A %*% solusi, 6))
cat("\n=== Rank Matriks A ===\n")
cat("Rank A =", qr(A)$rank, "\n")
cat("\n=== Norma Matriks A ===\n")
cat("Norma Frobenius =", round(norm(A, "F"), 4), "\n")
cat("Norma-1 =", round(norm(A, "1"), 4), "\n")
cat("Norma-Inf =", round(norm(A, "I"), 4), "\n")=== Matriks Koefisien A ===
[,1] [,2] [,3]
[1,] 2 3 -1
[2,] 1 -1 4
[3,] 3 2 1
=== Vektor Konstanta b ===
[1] 1 8 10
=== Determinan A ===
det(A) = 10
=== Invers Matriks A ===
[,1] [,2] [,3]
[1,] -0.9 -0.5 1.1
[2,] 1.1 0.5 -0.9
[3,] 0.5 0.5 -0.5
=== Solusi Sistem Persamaan Linear ===
x = 6.1
y = -3.9
z = -0.5
=== Verifikasi: A %*% x (harus sama dengan b) ===
[,1]
[1,] 1
[2,] 8
[3,] 10
=== Rank Matriks A ===
Rank A = 3
=== Norma Matriks A ===
Norma Frobenius = 6.7823
Norma-1 = 6
Norma-Inf = 6