Pertanyaan 1: Matriks M dan Operasi-Operasinya

Membuat Matriks M

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}\]

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)
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

a. Perkalian Elemen demi Elemen (\(M \times M\))

Perkalian elemen demi elemen (Hadamard product) mengalikan setiap elemen pada posisi yang sama. Dalam R digunakan operator *.

cat("Hasil Perkalian Elemen demi Elemen (M * M):\n")
M * M
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

b. Perkalian Matriks M dengan M (Secara Aljabar)

Perkalian matriks secara aljabar (\(M \times M = M^2\)) menggunakan operator %*% di R.

cat("Hasil Perkalian Matriks M %*% M:\n")
M %*% M
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

c. Invers dari Matriks M

Invers matriks dihitung dengan fungsi solve(). Invers hanya ada jika determinan matriks tidak sama dengan nol.

cat("Determinan M =", det(M), "\n")
cat("Invers Matriks M (solve(M)):\n")
solve(M)
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

d. Transpos dari Matriks M

Transpos matriks diperoleh dengan menukar baris menjadi kolom dan sebaliknya, menggunakan fungsi t().

cat("Transpos Matriks M (t(M)):\n")
t(M)
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

e. \(M^T \times M\)

cat("Hasil t(M) %*% M:\n")
t(M) %*% M
Hasil t(M) %*% M:
     [,1] [,2] [,3] [,4]
[1,]  102   70   51   60
[2,]   70  140  110   82
[3,]   51  110   90   63
[4,]   60   82   63   54

Pertanyaan 2: Pengolahan Anak Matriks

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

a. Anak Matriks \(M_1\)

\[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)]
cat("M1 = M[c(2,4), c(2,4)]:\n")
M1
M1 = M[c(2,4), c(2,4)]:
     [,1] [,2]
[1,]    9    5
[2,]    1    3

b. Anak Matriks \(M_2\)

\[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)]
cat("M2 = M[c(1,3), c(2,3)]:\n")
M2
M2 = M[c(1,3), c(2,3)]:
     [,1] [,2]
[1,]    7    5
[2,]    3    4

c. Menambahkan \(a\) ke Baris ke-5 dari \(M\) -> \(M_3\)

Karena \(M\) hanya memiliki 4 baris, menambahkan vektor \(a\) berarti menambahkan baris baru (baris ke-5) menggunakan fungsi rbind().

M3 <- rbind(M, a)
cat("M3 = rbind(M, a) -> menambahkan a sebagai baris ke-5:\n")
M3
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

d. Menambahkan \(B^T\) ke Kolom ke-1 dan ke-2 dari \(M\) -> \(M_4\)

\(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")
M4
Transpos 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

Pertanyaan 3: Contoh Program R

Contoh Program 1: Operasi Array dan Statistik Deskriptif

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 

Contoh Program 2: Operasi Matriks untuk Sistem Persamaan Linear

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