Lewati ke konten utama

Matrix Manual

Matrix adalah susunan angka dalam bentuk baris dan kolom. Di Python, matrix sederhana bisa dibuat menggunakan nested list, yaitu list yang berisi list lain di dalamnya.

Pada bagian ini, kita akan membuat matrix dan melakukan beberapa operasi matrix secara manual tanpa menggunakan package seperti NumPy.

Membuat Matrix dari List

Matrix bisa dibuat dengan menulis setiap baris sebagai list.

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]

print(matrix)

Penjelasan: Matrix di atas memiliki 3 baris dan 3 kolom. Setiap list di dalam matrix mewakili satu baris.

Untuk mengambil data tertentu, gunakan dua index. Index pertama untuk baris, index kedua untuk kolom.

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]

print(matrix[0][0])
print(matrix[1][2])
print(matrix[2][1])

Penjelasan: matrix[0][0] mengambil data pada baris pertama kolom pertama. Karena index Python dimulai dari 0, baris pertama ditulis sebagai index 0.

Menampilkan Matrix

Jika matrix langsung ditampilkan menggunakan print(matrix), bentuknya masih terlihat seperti list biasa. Agar lebih rapi, kita bisa menggunakan for loop.

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]

for baris in matrix:
print(baris)

Output dari program di atas adalah:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

Penjelasan: Variabel baris akan mengambil isi matrix satu baris setiap perulangan.

Kita juga bisa menampilkan setiap angka satu per satu menggunakan nested loop.

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]

for baris in matrix:
for nilai in baris:
print(nilai, end=" ")
print()

Penjelasan: Loop pertama membaca setiap baris, sedangkan loop kedua membaca setiap nilai di dalam baris tersebut.

Mengecek Ukuran Matrix

Ukuran matrix biasanya ditulis dalam bentuk baris x kolom. Untuk mengecek jumlah baris, gunakan len(matrix). Untuk mengecek jumlah kolom, gunakan len(matrix[0]).

matrix = [
[1, 2, 3],
[4, 5, 6],
]

jumlah_baris = len(matrix)
jumlah_kolom = len(matrix[0])

print(jumlah_baris)
print(jumlah_kolom)

Penjelasan: Matrix di atas memiliki 2 baris dan 3 kolom.

Membuat Matrix Nol

Matrix nol adalah matrix yang semua elemennya bernilai 0. Matrix ini sering digunakan sebagai tempat menyimpan hasil operasi.

baris = 3
kolom = 3

matrix_nol = []

for i in range(baris):
baris_baru = []

for j in range(kolom):
baris_baru.append(0)

matrix_nol.append(baris_baru)

print(matrix_nol)

Penjelasan: Loop bagian luar membuat baris, sedangkan loop bagian dalam mengisi setiap kolom dengan angka 0.

Dengan list comprehension, kode tersebut bisa ditulis lebih ringkas.

baris = 3
kolom = 3

matrix_nol = [[0 for j in range(kolom)] for i in range(baris)]

print(matrix_nol)

Penjumlahan Matrix

Penjumlahan matrix dilakukan dengan menjumlahkan elemen yang posisinya sama. Dua matrix hanya bisa dijumlahkan jika ukurannya sama.

a = [
[1, 2],
[3, 4],
]

b = [
[5, 6],
[7, 8],
]

hasil = []

for i in range(len(a)):
baris_baru = []

for j in range(len(a[0])):
baris_baru.append(a[i][j] + b[i][j])

hasil.append(baris_baru)

print(hasil)

Penjelasan: Nilai a[i][j] dijumlahkan dengan b[i][j] karena keduanya berada pada posisi baris dan kolom yang sama.

Contoh di atas juga bisa dibuat menjadi fungsi.

def tambah_matrix(a, b):
hasil = []

for i in range(len(a)):
baris_baru = []

for j in range(len(a[0])):
baris_baru.append(a[i][j] + b[i][j])

hasil.append(baris_baru)

return hasil


a = [
[1, 2],
[3, 4],
]

b = [
[5, 6],
[7, 8],
]

print(tambah_matrix(a, b))

Pengurangan Matrix

Pengurangan matrix memiliki aturan yang sama seperti penjumlahan matrix. Elemen yang dikurangi adalah elemen yang posisinya sama.

a = [
[10, 8],
[6, 4],
]

b = [
[1, 2],
[3, 4],
]

hasil = []

for i in range(len(a)):
baris_baru = []

for j in range(len(a[0])):
baris_baru.append(a[i][j] - b[i][j])

hasil.append(baris_baru)

print(hasil)

Penjelasan: Setiap elemen pada matrix b dikurangkan dari elemen matrix a yang posisinya sama.

Perkalian Matrix dengan Skalar

Perkalian matrix dengan skalar dilakukan dengan mengalikan setiap elemen matrix dengan satu angka.

matrix = [
[1, 2],
[3, 4],
]

skalar = 3
hasil = []

for i in range(len(matrix)):
baris_baru = []

for j in range(len(matrix[0])):
baris_baru.append(matrix[i][j] * skalar)

hasil.append(baris_baru)

print(hasil)

Penjelasan: Semua elemen matrix dikalikan dengan nilai skalar, yaitu 3.

Perkalian Matrix

Perkalian matrix berbeda dengan perkalian biasa antar elemen. Matrix a bisa dikalikan dengan matrix b jika jumlah kolom matrix a sama dengan jumlah baris matrix b.

a = [
[1, 2],
[3, 4],
]

b = [
[5, 6],
[7, 8],
]

hasil = [
[0, 0],
[0, 0],
]

for i in range(len(a)):
for j in range(len(b[0])):
for k in range(len(b)):
hasil[i][j] += a[i][k] * b[k][j]

print(hasil)

Penjelasan: Loop i digunakan untuk baris matrix a, loop j digunakan untuk kolom matrix b, dan loop k digunakan untuk menghitung jumlah hasil perkalian baris dan kolom.

Perkalian matrix juga bisa dibuat menjadi fungsi agar lebih mudah digunakan kembali.

def kali_matrix(a, b):
hasil = [[0 for j in range(len(b[0]))] for i in range(len(a))]

for i in range(len(a)):
for j in range(len(b[0])):
for k in range(len(b)):
hasil[i][j] += a[i][k] * b[k][j]

return hasil


a = [
[1, 2, 3],
[4, 5, 6],
]

b = [
[7, 8],
[9, 10],
[11, 12],
]

print(kali_matrix(a, b))

Penjelasan: Matrix a berukuran 2 x 3, sedangkan matrix b berukuran 3 x 2. Karena jumlah kolom a sama dengan jumlah baris b, kedua matrix bisa dikalikan.

Transpose Matrix

Transpose adalah operasi menukar baris menjadi kolom. Jika matrix awal berukuran 2 x 3, hasil transpose akan menjadi 3 x 2.

matrix = [
[1, 2, 3],
[4, 5, 6],
]

transpose = []

for j in range(len(matrix[0])):
baris_baru = []

for i in range(len(matrix)):
baris_baru.append(matrix[i][j])

transpose.append(baris_baru)

print(transpose)

Penjelasan: Index baris dan kolom ditukar. Nilai yang awalnya berada pada matrix[i][j] dipindahkan menjadi bagian dari baris baru berdasarkan kolomnya.

Determinan Matrix 2x2

Determinan hanya bisa dihitung pada matrix persegi, yaitu matrix yang jumlah baris dan kolomnya sama.

Untuk matrix 2 x 2:

|a b|
|c d|

Rumus determinannya adalah:

(a * d) - (b * c)

Contoh dalam Python:

matrix = [
[1, 2],
[3, 4],
]

determinan = (matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0])

print(determinan)

Penjelasan: Nilai diagonal utama dikalikan terlebih dahulu, lalu dikurangi dengan hasil kali diagonal lainnya.

Kita juga bisa membuat fungsi determinan untuk matrix 2 x 2.

def determinan_2x2(matrix):
return (matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0])


matrix = [
[1, 2],
[3, 4],
]

print(determinan_2x2(matrix))

Determinan Matrix 3x3

Untuk matrix 3 x 3, determinan bisa dihitung manual menggunakan aturan Sarrus.

Misalnya matrix berikut:

|a b c|
|d e f|
|g h i|

Rumus determinannya adalah:

(a * e * i) + (b * f * g) + (c * d * h) - (c * e * g) - (a * f * h) - (b * d * i)

Contoh dalam Python:

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]

a = matrix[0][0]
b = matrix[0][1]
c = matrix[0][2]
d = matrix[1][0]
e = matrix[1][1]
f = matrix[1][2]
g = matrix[2][0]
h = matrix[2][1]
i = matrix[2][2]

determinan = (a * e * i) + (b * f * g) + (c * d * h) - (c * e * g) - (a * f * h) - (b * d * i)

print(determinan)

Penjelasan: Determinan 3 x 3 dihitung dengan menjumlahkan hasil kali diagonal searah, lalu dikurangi hasil kali diagonal berlawanan.

Kita juga bisa membuatnya menjadi fungsi.

def determinan_3x3(matrix):
a = matrix[0][0]
b = matrix[0][1]
c = matrix[0][2]
d = matrix[1][0]
e = matrix[1][1]
f = matrix[1][2]
g = matrix[2][0]
h = matrix[2][1]
i = matrix[2][2]

return (a * e * i) + (b * f * g) + (c * d * h) - (c * e * g) - (a * f * h) - (b * d * i)


matrix = [
[2, 1, 3],
[1, 0, 2],
[4, 1, 8],
]

print(determinan_3x3(matrix))

Mengecek Ukuran Sebelum Operasi

Sebelum melakukan operasi matrix, sebaiknya kita mengecek apakah ukuran matrix sudah sesuai. Ini membantu program menghindari hasil yang salah.

def ukuran_matrix(matrix):
return len(matrix), len(matrix[0])


a = [
[1, 2],
[3, 4],
]

b = [
[5, 6],
[7, 8],
]

baris_a, kolom_a = ukuran_matrix(a)
baris_b, kolom_b = ukuran_matrix(b)

print(baris_a, kolom_a)
print(baris_b, kolom_b)

Penjelasan: Fungsi ukuran_matrix() mengembalikan jumlah baris dan kolom dari sebuah matrix.

Contoh pengecekan sebelum penjumlahan:

def bisa_dijumlahkan(a, b):
return len(a) == len(b) and len(a[0]) == len(b[0])


a = [
[1, 2],
[3, 4],
]

b = [
[5, 6],
[7, 8],
]

if bisa_dijumlahkan(a, b):
print("Matrix bisa dijumlahkan")
else:
print("Matrix tidak bisa dijumlahkan")

Contoh pengecekan sebelum perkalian:

def bisa_dikalikan(a, b):
return len(a[0]) == len(b)


a = [
[1, 2, 3],
[4, 5, 6],
]

b = [
[7, 8],
[9, 10],
[11, 12],
]

if bisa_dikalikan(a, b):
print("Matrix bisa dikalikan")
else:
print("Matrix tidak bisa dikalikan")

Penjelasan: Penjumlahan membutuhkan ukuran matrix yang sama, sedangkan perkalian membutuhkan jumlah kolom matrix pertama sama dengan jumlah baris matrix kedua.

Latihan Singkat

Coba buat program sederhana dengan ketentuan berikut:

  • Buat dua matrix berukuran 2 x 2 menggunakan nested list.
  • Tampilkan setiap matrix menggunakan for loop.
  • Buat fungsi untuk menjumlahkan dua matrix.
  • Buat fungsi untuk mengurangi dua matrix.
  • Buat fungsi untuk mengalikan matrix dengan skalar.
  • Buat fungsi untuk mengalikan dua matrix.
  • Buat fungsi untuk melakukan transpose matrix.
  • Buat fungsi untuk menghitung determinan matrix 2 x 2.
  • Buat satu contoh matrix 3 x 3, lalu hitung determinannya secara manual menggunakan fungsi.