Skip to content

Commit 6c048bf

Browse files
feat: menambahkan operasi matriks (#348)
* feat: menambahkan operasi matriks * feat: menambahkan operasi matriks
1 parent 1878b95 commit 6c048bf

1 file changed

Lines changed: 123 additions & 0 deletions

File tree

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# macam - macam operasi matriks
2+
from typing import Union
3+
4+
5+
def penjumlahan(
6+
matriks_1: list[list[Union[int, float]]], matriks_2: list[list[Union[int, float]]]
7+
) -> list[list[Union[int, float]]]:
8+
"""
9+
Fungsi untuk melakukan penjumlahan 2 matrriks
10+
11+
>>> penjumlahan([[2, 3], [3, 4]], [[3, 2], [2, 1]])
12+
[[5, 5], [5, 5]]
13+
"""
14+
if len(matriks_1) != len(matriks_2):
15+
return ValueError("Ukuran Matriks Harus Sama")
16+
else:
17+
result = []
18+
n = len(matriks_1)
19+
for i in range(n):
20+
row = []
21+
for j in range(n):
22+
operation = matriks_1[i][j] + matriks_2[i][j]
23+
row.append(operation)
24+
result.append(row)
25+
return result
26+
27+
28+
def pengurangan(
29+
matriks_1: list[list[Union[int, float]]], matriks_2: list[list[Union[int, float]]]
30+
) -> list[list[Union[int, float]]]:
31+
"""
32+
Fungsi untuk melakukan kalkulasi pengurangan matriks
33+
34+
>>> pengurangan([[3, 3], [3, 3]], [[2, 1], [2, 1]])
35+
[[1, 2], [1, 2]]
36+
"""
37+
if len(matriks_1) != len(matriks_2):
38+
return ValueError("Ukuran Matriks Sama")
39+
else:
40+
result = []
41+
n = len(matriks_1)
42+
for i in range(n):
43+
row = []
44+
for j in range(n):
45+
operation = matriks_1[i][j] - matriks_2[i][j]
46+
row.append(operation)
47+
result.append(row)
48+
return result
49+
50+
51+
def perkalian(
52+
matriks_1: list[list[Union[int, float]]], matriks_2: list[list[Union[int, float]]]
53+
) -> list[list[Union[int, float]]]:
54+
"""
55+
Fungsi untuk melakukan kalkulasi perkalian matriks
56+
57+
>>> perkalian([[1, 2], [3, 4]], [[5, 6], [7, 8]])
58+
[[19, 22], [43, 50]]
59+
"""
60+
baris1 = len(matriks_1)
61+
kolom1 = len(matriks_1[0])
62+
baris2 = len(matriks_2)
63+
kolom2 = len(matriks_2[0])
64+
if kolom1 != baris2:
65+
return ValueError("Ukuran baris dan kolom mesti sama")
66+
67+
result = [[0 for _ in range(kolom2)] for _ in range(baris1)]
68+
for i in range(baris1):
69+
for j in range(kolom2):
70+
for k in range(kolom1):
71+
result[i][j] += matriks_1[i][k] * matriks_2[k][j]
72+
return result
73+
74+
75+
def perkalian_skalar_matriks(
76+
matriks: list[list[Union[int, float]]], x: int
77+
) -> list[list[Union[int, float]]]:
78+
"""
79+
Fungsi untuk kalkulasi skalar dan matriks
80+
81+
>>> perkalian_skalar_matriks([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 2)
82+
[[2, 4, 6], [8, 10, 12], [14, 16, 18]]
83+
"""
84+
result = []
85+
n = len(matriks)
86+
for i in range(n):
87+
row = []
88+
for j in range(n):
89+
multi = x * matriks[i][j]
90+
row.append(multi)
91+
result.append(row)
92+
return result
93+
94+
95+
def matriks_identitas(n: int) -> list[list[int]]:
96+
"""
97+
Funsi untuk menghasilkan matriks identitas
98+
99+
>>> matriks_identitas(2)
100+
[[1, 0], [0, 1]]
101+
>>> matriks_identitas(3)
102+
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
103+
"""
104+
if n < 0:
105+
return ValueError("ukuran harus positif")
106+
else:
107+
return [[1 if j == i else 0 for j in range(int(n))] for i in range(int(n))]
108+
109+
110+
def main(args=None):
111+
import doctest
112+
113+
print(penjumlahan([[2, 3], [3, 4]], [[3, 2], [2, 1]]))
114+
print(pengurangan([[3, 3], [3, 3]], [[2, 1], [2, 1]]))
115+
print(perkalian([[1, 2], [3, 4]], [[5, 6], [7, 8]]))
116+
print(perkalian_skalar_matriks([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 2))
117+
print(matriks_identitas(3))
118+
119+
doctest.testmod()
120+
121+
122+
if __name__ == "__main__":
123+
main()

0 commit comments

Comments
 (0)