From 17c405a57185593d791986b21505df028489f856 Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Sun, 4 Jan 2026 18:36:03 +0700 Subject: [PATCH 1/2] feat: menambahkan operasi matriks --- .../linear_algebra/operasi_matriks.py | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 implementation/linear_algebra/operasi_matriks.py diff --git a/implementation/linear_algebra/operasi_matriks.py b/implementation/linear_algebra/operasi_matriks.py new file mode 100644 index 00000000..70e1dd27 --- /dev/null +++ b/implementation/linear_algebra/operasi_matriks.py @@ -0,0 +1,122 @@ +# macam - macam operasi matriks +from typing import Union + + +def penjumlahan( + matriks_1 : list[list[Union[int, float]]], + matriks_2 : list[list[Union[int, float]]]) -> list[list[Union[int, float]]]: + """ + Fungsi untuk melakukan penjumlahan 2 matrriks + + >>> penjumlahan([[2, 3], [3, 4]], [[3, 2], [2, 1]]) + [[5, 5], [5, 5]] + """ + if len(matriks_1) != len(matriks_2): + return ValueError("Ukuran Matriks Harus Sama") + else : + result = [] + n = len(matriks_1) + for i in range(n): + row = [] + for j in range(n): + operation = matriks_1[i][j] + matriks_2[i][j] + row.append(operation) + result.append(row) + return result + + +def pengurangan( + matriks_1 : list[list[Union[int, float]]], + matriks_2 : list[list[Union[int, float]]]) -> list[list[Union[int, float]]]: + """ + Fungsi untuk melakukan kalkulasi pengurangan matriks + + >>> pengurangan([[3, 3], [3, 3]], [[2, 1], [2, 1]]) + [[1, 2], [1, 2]] + """ + if len(matriks_1) != len(matriks_2): + return ValueError("Ukuran Matriks Sama") + else : + result = [] + n = len(matriks_1) + for i in range(n): + row = [] + for j in range(n): + operation = matriks_1[i][j] - matriks_2[i][j] + row.append(operation) + result.append(row) + return result + + +def perkalian( + matriks_1 : list[list[Union[int, float]]], + matriks_2 : list[list[Union[int, float]]]) -> list[list[Union[int, float]]]: + """ + Fungsi untuk melakukan kalkulasi perkalian matriks + + >>> perkalian([[1, 2], [3, 4]], [[5, 6], [7, 8]]) + [[19, 22], [43, 50]] + """ + baris1 = len(matriks_1) + kolom1 = len(matriks_1[0]) + baris2 = len(matriks_2) + kolom2 = len(matriks_2[0]) + if kolom1 != baris2: + return ValueError("Ukuran baris dan kolom mesti sama") + + result = [[0 for _ in range(kolom2)] for _ in range(baris1)] + for i in range(baris1): + for j in range(kolom2): + for k in range(kolom1): + result[i][j] += matriks_1[i][k] * matriks_2[k][j] + return result + + +def perkalian_skalar_matriks(matriks : list[list[Union[int, float]]], + x : int) -> list[list[Union[int, float]]]: + """ + Fungsi untuk kalkulasi skalar dan matriks + + >>> perkalian_skalar_matriks([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 2) + [[2, 4, 6], [8, 10, 12], [14, 16, 18]] + """ + result = [] + n = len(matriks) + for i in range(n): + row = [] + for j in range(n): + multi = x * matriks[i][j] + row.append(multi) + result.append(row) + return result + + +def matriks_identitas(n : int) -> list[list[int]]: + """ + Funsi untuk menghasilkan matriks identitas + + >>> matriks_identitas(2) + [[1, 0], [0, 1]] + >>> matriks_identitas(3) + [[1, 0, 0], [0, 1, 0], [0, 0, 1]] + """ + if n < 0 : + return ValueError("ukuran harus positif") + else: + return [[1 if j == i else 0 for j in range(int(n))] for i in range(int(n))] + + +def main(args=None): + import doctest + + print(penjumlahan([[2, 3], [3, 4]], [[3, 2], [2, 1]])) + print(pengurangan([[3, 3], [3, 3]], [[2, 1], [2, 1]])) + print(perkalian([[1, 2], [3, 4]], [[5, 6], [7, 8]])) + print(perkalian_skalar_matriks([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 2)) + print(matriks_identitas(3)) + + doctest.testmod() + + +if __name__ == "__main__": + main() From eef2564d06d75dbff4bfef987d3273f9bf2b0696 Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Sun, 4 Jan 2026 18:41:49 +0700 Subject: [PATCH 2/2] feat: menambahkan operasi matriks --- .../linear_algebra/operasi_matriks.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/implementation/linear_algebra/operasi_matriks.py b/implementation/linear_algebra/operasi_matriks.py index 70e1dd27..40b7b443 100644 --- a/implementation/linear_algebra/operasi_matriks.py +++ b/implementation/linear_algebra/operasi_matriks.py @@ -3,8 +3,8 @@ def penjumlahan( - matriks_1 : list[list[Union[int, float]]], - matriks_2 : list[list[Union[int, float]]]) -> list[list[Union[int, float]]]: + matriks_1: list[list[Union[int, float]]], matriks_2: list[list[Union[int, float]]] +) -> list[list[Union[int, float]]]: """ Fungsi untuk melakukan penjumlahan 2 matrriks @@ -13,7 +13,7 @@ def penjumlahan( """ if len(matriks_1) != len(matriks_2): return ValueError("Ukuran Matriks Harus Sama") - else : + else: result = [] n = len(matriks_1) for i in range(n): @@ -26,8 +26,8 @@ def penjumlahan( def pengurangan( - matriks_1 : list[list[Union[int, float]]], - matriks_2 : list[list[Union[int, float]]]) -> list[list[Union[int, float]]]: + matriks_1: list[list[Union[int, float]]], matriks_2: list[list[Union[int, float]]] +) -> list[list[Union[int, float]]]: """ Fungsi untuk melakukan kalkulasi pengurangan matriks @@ -36,7 +36,7 @@ def pengurangan( """ if len(matriks_1) != len(matriks_2): return ValueError("Ukuran Matriks Sama") - else : + else: result = [] n = len(matriks_1) for i in range(n): @@ -49,8 +49,8 @@ def pengurangan( def perkalian( - matriks_1 : list[list[Union[int, float]]], - matriks_2 : list[list[Union[int, float]]]) -> list[list[Union[int, float]]]: + matriks_1: list[list[Union[int, float]]], matriks_2: list[list[Union[int, float]]] +) -> list[list[Union[int, float]]]: """ Fungsi untuk melakukan kalkulasi perkalian matriks @@ -72,8 +72,9 @@ def perkalian( return result -def perkalian_skalar_matriks(matriks : list[list[Union[int, float]]], - x : int) -> list[list[Union[int, float]]]: +def perkalian_skalar_matriks( + matriks: list[list[Union[int, float]]], x: int +) -> list[list[Union[int, float]]]: """ Fungsi untuk kalkulasi skalar dan matriks @@ -91,7 +92,7 @@ def perkalian_skalar_matriks(matriks : list[list[Union[int, float]]], return result -def matriks_identitas(n : int) -> list[list[int]]: +def matriks_identitas(n: int) -> list[list[int]]: """ Funsi untuk menghasilkan matriks identitas @@ -100,7 +101,7 @@ def matriks_identitas(n : int) -> list[list[int]]: >>> matriks_identitas(3) [[1, 0, 0], [0, 1, 0], [0, 0, 1]] """ - if n < 0 : + if n < 0: return ValueError("ukuran harus positif") else: return [[1 if j == i else 0 for j in range(int(n))] for i in range(int(n))]