当前位置:首页 > C# > 正文

C#实现矩阵加法与乘法(小白也能学会的C#矩阵运算教程)

在科学计算、图形处理、机器学习等领域,C#矩阵运算是基础而重要的操作。本教程将手把手教你如何在 C# 中实现矩阵加法矩阵乘法,即使你是编程新手,也能轻松掌握!我们将从基本概念讲起,逐步构建完整的代码示例。

C#实现矩阵加法与乘法(小白也能学会的C#矩阵运算教程) C#矩阵运算 矩阵加法C# 矩阵乘法C# C#数值计算 第1张

什么是矩阵?

矩阵是一个由数字排列成的矩形阵列,通常用行和列表示。例如,一个 2×3 的矩阵有 2 行 3 列:

[1  2  3][4  5  6]  

准备工作:创建矩阵类

我们首先定义一个简单的 Matrix 类,用于存储矩阵数据并提供基本操作方法。这有助于组织代码,提高可读性。

public class Matrix{    public int Rows { get; }    public int Cols { get; }    public double[,] Data { get; }    public Matrix(int rows, int cols)    {        Rows = rows;        Cols = cols;        Data = new double[rows, cols];    }    // 索引器,方便访问元素    public double this[int i, int j]    {        get => Data[i, j];        set => Data[i, j] = value;    }}  

一、C#矩阵加法实现

两个矩阵相加的前提是它们具有相同的维度(即行数和列数都相同)。加法规则是对应位置元素相加。

例如:

A = [1 2]     B = [5 6]     A + B = [6  8]    [3 4]         [7 8]             [10 12]  

下面是 C# 中实现矩阵加法的方法:

public static Matrix Add(Matrix a, Matrix b){    if (a.Rows != b.Rows || a.Cols != b.Cols)        throw new ArgumentException("矩阵维度不匹配,无法相加。");    Matrix result = new Matrix(a.Rows, a.Cols);    for (int i = 0; i < a.Rows; i++)    {        for (int j = 0; j < a.Cols; j++)        {            result[i, j] = a[i, j] + b[i, j];        }    }    return result;}  

二、C#矩阵乘法实现

矩阵乘法比加法复杂一些。只有当第一个矩阵的列数等于第二个矩阵的行数时,才能相乘。结果矩阵的维度为(第一个矩阵的行数 × 第二个矩阵的列数)。

乘法规则:结果中第 i 行第 j 列的元素等于第一个矩阵第 i 行与第二个矩阵第 j 列对应元素乘积之和。

C# 实现如下:

public static Matrix Multiply(Matrix a, Matrix b){    if (a.Cols != b.Rows)        throw new ArgumentException("矩阵无法相乘:第一个矩阵的列数必须等于第二个矩阵的行数。");    Matrix result = new Matrix(a.Rows, b.Cols);    for (int i = 0; i < a.Rows; i++)    {        for (int j = 0; j < b.Cols; j++)        {            double sum = 0;            for (int k = 0; k < a.Cols; k++)            {                sum += a[i, k] * b[k, j];            }            result[i, j] = sum;        }    }    return result;}  

完整示例:运行你的第一个矩阵运算

下面是一个完整的控制台程序示例,演示如何使用上述方法进行矩阵加法C#矩阵乘法C#操作:

using System;class Program{    static void Main()    {        // 创建两个 2x2 矩阵        Matrix A = new Matrix(2, 2);        A[0, 0] = 1; A[0, 1] = 2;        A[1, 0] = 3; A[1, 1] = 4;        Matrix B = new Matrix(2, 2);        B[0, 0] = 5; B[0, 1] = 6;        B[1, 0] = 7; B[1, 1] = 8;        // 矩阵加法        Matrix sum = Matrix.Add(A, B);        Console.WriteLine("A + B =");        PrintMatrix(sum);        // 矩阵乘法        Matrix product = Matrix.Multiply(A, B);        Console.WriteLine("\nA * B =");        PrintMatrix(product);    }    static void PrintMatrix(Matrix m)    {        for (int i = 0; i < m.Rows; i++)        {            for (int j = 0; j < m.Cols; j++)            {                Console.Write(m[i, j].ToString().PadRight(6));            }            Console.WriteLine();        }    }}  

总结

通过本教程,你已经掌握了在 C# 中实现C#数值计算中最基础的矩阵加法与乘法。这些操作是更高级算法(如线性代数、图像变换、神经网络等)的基石。建议你动手敲一遍代码,加深理解。

记住关键点:

  • 矩阵加法要求两个矩阵维度完全相同;
  • 矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数;
  • 使用类封装矩阵数据,使代码结构清晰、易于维护。

希望这篇关于C#矩阵运算的教程对你有所帮助!继续练习,你很快就能在项目中灵活运用矩阵操作了。