使用多維陣列的Swift程式實現矩陣乘法


在這篇文章中,我們將學習如何編寫一個Swift程式,使用多維陣列來實現兩個矩陣的乘法。

矩陣是一種數學結構,其元素以行和列的形式排列。例如,第一個元素位於a00位置,第二個位於a01位置,以此類推。因此,要乘以兩個矩陣,我們將第一個矩陣的第m行乘以第二個矩陣的第n列,並將乘積相加。這將建立一個位於結果矩陣的第m行和第n列的元素。例如:

矩陣1:

$\mathrm{\begin{bmatrix}2 & 3 & 4 \newline5 & 2 & 7 \newline9 & 3 & 2\end{bmatrix}}$

矩陣2:

$\mathrm{\begin{bmatrix}4 & 7 & 1 \newline1 & 1 & 4 \newline5 & 7 & 2\end{bmatrix}}$

所以積 = 矩陣1 * 矩陣2

$\mathrm{\begin{bmatrix}(2^{*}4+3^{*}1+4^{*}4) & (2^{*}7+3^{*}1+4^{*}7) & (2^{*}1+3^{*}4+4^{*}2) \newline(5^{*}4+2^{*}1+7^{*}4) & (5^{*}7+2^{*}1+7^{*}7) & (5^{*}1+2^{*}4+7^{*}2) \newline(9^{*}4+3^{*}1+2^{*}4) & (9^{*}7+3^{*}1+2^{*}7) & (9^{*}1+3^{*}4+2^{*}2)\end{bmatrix}}$

$\mathrm{\begin{bmatrix}27 & 45 & 22 \newline50 & 86 & 27 \newline47 & 80 & 25\end{bmatrix}}$

演算法

步驟1 - 定義行和列的大小。

步驟2 - 使用多維陣列建立兩個具有相同行和列的矩陣。

步驟3 - 建立一個具有相同行和列數的空矩陣。

步驟4 - 執行巢狀for迴圈來迭代兩個矩陣的每個元素。

步驟5 - 將矩陣1中[x][z]位置的元素與矩陣2的行中的每個元素相乘,並將值相加,將值儲存在結果矩陣的[x][y]位置。此過程將持續到矩陣1的最後一個元素。

步驟6 - 列印結果矩陣。

示例

以下是使用多維陣列實現兩個矩陣乘法的Swift程式。

import Foundation
import Glibc

// Size of the matrix
var row = 4
var col = 4

// Creating 4x4 matrix of integer type
var matrix1 : [[Int]] = [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]
print("Matrix 1:")
for x in 0..<row {
   for y in 0..<col {
      print(matrix1[x][y], terminator:" ")
   }
   print("\n")
}
var matrix2 : [[Int]] = [[1, 0, 0, 1], [2, 0, 0, 2], [3, 0, 0, 3], [4, 0, 0, 4]]
print("Matrix 2:")
for x in 0..<row {
   for y in 0..<col {
      print(matrix2[x][y], terminator:" ")
   }
   print("\n")
}

// Creating 4x4 matrix to store the result
var Mul = Array(repeating: Array(repeating: 0, count: 4), count: 4)

// Multiply two matrices

// Using * operator
for x in 0..<row {
   for y in 0..<col {
      for z in 0..<row {
         Mul[x][y] += matrix1[x][z] * matrix1[z][y]
      }
   }
}
print("Resultant matrix:")
for x in 0..<row {
   for y in 0..<col {
      print(Mul[x][y], terminator:" ")
   }
   print("\n")
}

輸出

Matrix 1:
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4

Matrix 2:
1 0 0 1
2 0 0 2
3 0 0 3
4 0 0 4

Resultant matrix:
10 10 10 10
20 20 20 20
30 30 30 30
40 40 40 40

在上面的程式碼中,我們建立了兩個4x4矩陣以及值,並使用多維陣列建立了一個空的4x4矩陣來儲存結果。現在,我們執行巢狀for迴圈來迭代兩個矩陣的每個元素。現在,我們使用*運算子將矩陣1中[x][z]位置的元素與矩陣2的行中的每個元素相乘,並將值相加,並將結果儲存在結果矩陣的[x][y]位置。對矩陣1的所有元素重複此過程。

結論

因此,這就是我們如何使用多維陣列進行矩陣乘法。您還可以使用多維陣列建立任何大小的矩陣,例如4x4、6x3和2x3,並能夠對其進行乘法運算。

更新於:2023年1月9日

646 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.