Program Python untuk Mengalikan Dua Matriks

Dalam contoh ini, kita akan belajar mengalikan matriks menggunakan dua cara berbeda: loop bersarang dan, comprenhension daftar bersarang

Untuk memahami contoh ini, Anda harus memiliki pengetahuan tentang topik pemrograman Python berikut:

  • Python untuk Loop
  • Daftar Python
  • Matriks Python dan Array NumPy

Dengan Python, kita dapat mengimplementasikan matriks sebagai daftar bersarang (daftar di dalam daftar).

Kita dapat memperlakukan setiap elemen sebagai baris matriks.

Misalnya X = ((1, 2), (4, 5), (3, 6))akan mewakili sebuah 3x2matriks.

Baris pertama dapat dipilih sebagai X(0). Dan, elemen di baris pertama, kolom pertama dapat dipilih sebagai X(0)(0).

Perkalian dua matriks X dan Y ditentukan hanya jika jumlah kolom di X sama dengan jumlah baris Y.

Jika X adalah n x mmatriks dan Y adalah m x lmatriks, maka XY ditentukan dan memiliki dimensi n x l(tetapi YX tidak ditentukan). Berikut adalah beberapa cara untuk mengimplementasikan perkalian matriks dengan Python.

Kode Sumber: Perkalian Matriks dengan Nested Loop

# Program to multiply two matrices using nested loops # 3x3 matrix X = ((12,7,3), (4 ,5,6), (7 ,8,9)) # 3x4 matrix Y = ((5,8,1,2), (6,7,3,0), (4,5,9,1)) # result is 3x4 result = ((0,0,0,0), (0,0,0,0), (0,0,0,0)) # iterate through rows of X for i in range(len(X)): # iterate through columns of Y for j in range(len(Y(0))): # iterate through rows of Y for k in range(len(Y)): result(i)(j) += X(i)(k) * Y(k)(j) for r in result: print(r) 

Keluaran

 (114, 160, 60, 27) (74, 97, 73, 14) (119, 157, 112, 23) 

Dalam program ini, kami telah menggunakan forloop bersarang untuk melakukan iterasi melalui setiap baris dan setiap kolom. Kami mengumpulkan jumlah produk dalam hasil.

Teknik ini sederhana tetapi mahal secara komputasi karena kita meningkatkan urutan matriks.

Untuk operasi matriks yang lebih besar, kami merekomendasikan paket perangkat lunak yang dioptimalkan seperti NumPy yang beberapa (di urutan 1000) kali lebih cepat daripada kode di atas.

Kode Sumber: Perkalian Matriks Menggunakan Pemahaman Daftar Bersarang

# Program to multiply two matrices using list comprehension # 3x3 matrix X = ((12,7,3), (4 ,5,6), (7 ,8,9)) # 3x4 matrix Y = ((5,8,1,2), (6,7,3,0), (4,5,9,1)) # result is 3x4 result = ((sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*Y)) for X_row in X) for r in result: print(r) 

Output dari program ini sama seperti di atas. Untuk memahami kode di atas kita harus terlebih dahulu mengetahui tentang fungsi built-in zip()dan daftar argumen unpacking menggunakan operator *.

Kami telah menggunakan pemahaman daftar bersarang untuk melakukan iterasi melalui setiap elemen dalam matriks. Kode awalnya terlihat rumit dan tidak dapat dibaca. Tetapi setelah Anda memahami pemahaman daftar, Anda mungkin tidak akan kembali ke loop bersarang.

Artikel yang menarik...