使用多维数组进行矩阵相乘的 Swift 程序

swiftserver side programmingprogramming更新于 2025/9/17 8:07:17

在本文中,我们将学习如何编写一个使用多维数组进行矩阵相乘的 Swift 程序。

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

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

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

// 创建 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] += 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 循环来遍历两个矩阵的每个元素。现在,我们使用 * 运算符将 matrix1 中 [x][z] 位置的元素与 matrix2 行中的每个元素相乘,然后将值相加,并将结果存储在结果矩阵的 [x][y] 位置。对 matrix1 的所有元素重复此过程。

结论

以上就是如何使用多维数组对矩阵进行乘法运算。您还可以使用多维数组创建任意大小的矩阵,例如 4x4、6x3 和 2x3,并对其进行乘法运算。



相关文章



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