Swift 程序通过将矩阵传递给函数来实现两个矩阵的乘法

swiftserver side programmingprogramming更新于 2025/9/17 7:52:17

在本文中,我们将学习如何编写一个 Swift 程序,通过将矩阵传递给函数来实现两个矩阵的乘法。

矩阵是一种数学结构,其元素以行和列的形式存在。例如,第一个元素位于00位置,第二个元素位于01位置,依此类推。因此,要将两个矩阵相乘,我们将第一个矩阵的第 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

// 矩阵的大小
var row = 4
var col = 4

// 矩阵乘法函数
func multiplyMatrix(mxt1:[[Int]], mxt2:[[Int]]) {

    // 创建 4x4 矩阵来存储结果
    var Mul = Array(repeating: Array(repeating: 0, count: 4), count: 4)
    
    // 将两个矩阵相乘
    
    // 使用 * 运算符
   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")
   }
}

// 创建 4x4 整数类型的矩阵
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")
}

// 调用函数显示结果
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。



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部