C# 实现矩阵乘法:基于交错数组的高效算法与代码解析

橘子海
橘子海
发布时间:2026-10-13| 6人浏览过
原创

介绍如何利用 C# 语言的核心特性,特别是交错数组(Jagged Arrays),来实现标准的矩阵乘法运算。包含完整的代码示例、维度校验逻辑及内存管理细节。

实现原理与数据结构选择

在 .NET 环境中处理矩阵数据时,最常用且灵活的方式是使用 交错数组(即 double[][])。相较于多维数组(double[,]),交错数组在每一行的长度允许不一致,且在频繁分配小尺寸矩阵对象时具有更好的性能表现和内存局部性优势。

矩阵乘法的核心数学逻辑是:对于矩阵 A (m × n) 和矩阵 B (n × p),其结果矩阵 C (m × p) 中的每一个元素 C[i][j] 等于 A 的第 i 行与 B 的第 j 列对应元素的乘积之和。

核心代码解析

以下是实现矩阵乘法的完整 C# 代码段。该实现包含两个部分:用于创建空结果矩阵的工具函数,以及执行具体乘法运算的主逻辑。

第 1 步:定义矩阵乘法主函数

目的:计算两个矩阵的乘积并进行前置条件检查。 关键逻辑:采用标准的三重嵌套循环。

static double[][] MatrixMultiplication(double[][] matrixOne, double[][] matrixTwo)
{
    // 1. 获取矩阵维度
    int aRows = matrixOne.Length;
    int aCols = matrixOne[0].Length;
    int bRows = matrixTwo.Length;
    int bCols = matrixTwo[0].Length;

    // 2. 兼容性检查:前一个矩阵的列数必须等于后一个矩阵的行数
    if (aCols != bRows)
        throw new Exception("Out of shape matrices");

    // 3. 初始化结果矩阵
    double[][] result = CreateMatrix(aRows, bCols);

    // 4. 执行乘法运算
    // 外层遍历结果矩阵的行
    for (int i = 0; i < aRows; ++i)
    {
        // 中间层遍历结果矩阵的列
        for (int j = 0; j < bCols; ++j)
        {
            // 内层遍历公共维度(求和过程)
            for (int k = 0; k < aCols; ++k)
            {
                // C[i][j] += A[i][k] * B[k][j]
                result[i][j] += matrixOne[i][k] * matrixTwo[k][j];
            }
        }
    }

    return result;
}

第 2 步:定义辅助函数以创建矩阵

目的:快速实例化指定行数和列数的空矩阵。

static double[][] CreateMatrix(int rows, int cols)
{
    // 创建外层的行数组
    double[][] result = new double[rows][];
    
    for (int i = 0; i < rows; ++i)
    {
        // 为每一行初始化具体的列数组
        result[i] = new double[cols];
    }
    
    return result;
}

算法复杂度分析

该实现遵循标准的矩阵乘法算法:

  • 时间复杂度:O(n³)。由于存在三层嵌套循环,当矩阵规模扩大时,计算量呈立方级增长。
  • 空间复杂度:O(n²)。主要用于存储结果矩阵的数据。

以上就是C#实现矩阵乘法的详细内容,更多关于C#线性代数运算的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。