Swift 程式:透過函式傳遞矩陣來實現兩個矩陣相乘


在本文中,我們將學習如何編寫一個 Swift 程式,透過將矩陣傳遞給函式來實現兩個矩陣相乘。

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

矩陣 1:

$\mathrm{\begin{bmatrix}2 & 2 & 2 \newline3 & 3 & 3 \newline4 & 4 & 4\end{bmatrix}}$

矩陣 2:

$\mathrm{\begin{bmatrix}1 & 1 & 1 \newline1 & 1 & 1 \newline2 & 2 & 2\end{bmatrix}}$

所以乘積 = 矩陣 1 * 矩陣 2

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

$\mathrm{\begin{bmatrix}8 & 8 & 8 \newline12 & 12 & 12 \newline16 & 16 & 16\end{bmatrix}}$

演算法

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

步驟 2 - 建立一個函式。

步驟 3 - 在此函式中建立一個空矩陣,用於儲存具有相同行數和列數的結果。

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

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

步驟 6 - 建立兩個具有相同型別、相同行數和列數的矩陣。

步驟 7 - 呼叫函式並將這兩個矩陣作為引數傳遞給它。

步驟 8 - 列印結果矩陣。

示例

以下 Swift 程式透過將矩陣傳遞給函式來實現兩個矩陣相乘。

import Foundation
import Glibc

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

// Function to multiply two matrices
func multiplyMatrix(mxt1:[[Int]], mxt2:[[Int]]) {

   // 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] += mxt1[x][z] * mxt2[z][y]
         }
      }
   }
   print("Resultant matrix:")
   for x in 0..<row {
      for y in 0..<col {
         print(Mul[x][y], terminator:" ")
      }
      print("\n")
   }
}

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

// Calling the function to display result
multiplyMatrix(mxt1:matrix1, mxt2:matrix2)

輸出

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

Matrix 2:
1 1 4 4
3 2 4 5
5 6 3 2
4 5 6 3

Resultant matrix:
36 42 38 26
13 14 17 14
38 37 58 55
44 48 61 49

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

結論

因此,這就是我們如何透過將矩陣傳遞給函式來實現兩個矩陣相乘的方法。使用此方法,我們還可以相乘不同尺寸的矩陣,例如 4x4、6x3 和 2x3。

更新於: 2023年1月9日

180 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.