当前位置: 首页 > news >正文

C#实现矩阵乘法

目录

一、使用的方法

1.矩阵

2.矩阵的乘法原理

二、实例

1.源码

2.生成效果


一、使用的方法

        矩阵相当于一个数组,主要用来存储一系列数,例如,m×n矩阵是排列在m行和n列中的一系列数,m×n矩阵可与一个n×p矩阵相乘,结果为一个m×p矩阵。这里需要注意的是,如果两个矩阵相乘,第一个矩阵的列数必须与第二个矩阵的行数相同。 

1.矩阵

        矩阵是指纵横排列的二维数据表格。

2.矩阵的乘法原理

        矩阵乘法是一种高效的算法,它可以把一些一维递归优化到log(n),还可以求路径方案等。在执行两个矩阵的乘法运算时,需要将前面矩阵的第i行与后面矩阵的第j列对应的元素相乘,然后再相加,最后将得到的结果放到结果矩阵的第(i,j)这个位置上即可。

二、实例

1.源码

//矩阵乘法
namespace _108
{public partial class Form1 : Form{static Label? label1;static Label? label2;static Label? label3;static Label? label4;public Form1(){InitializeComponent();StartPosition = FormStartPosition.CenterScreen;Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,BackColor = SystemColors.Control,ForeColor = Color.Red,Location = new Point(74, 13),Name = "label1",Size = new Size(0, 17),TabIndex = 0};// // label2// label2 = new Label{AutoSize = true,ForeColor = Color.Red,Location = new Point(213, 13),Name = "label2",Size = new Size(0, 17),TabIndex = 1};// // label3// label3 = new Label{AutoSize = true,Font = new Font("Microsoft YaHei UI", 14.25F, FontStyle.Bold, GraphicsUnit.Point, 134),ForeColor = Color.Red,Location = new Point(186, 43),Name = "label3",Size = new Size(21, 26),TabIndex = 2,Text = "*"};// // label4// label4 = new Label{AutoSize = true,ForeColor = Color.Red,Location = new Point(150, 82),Name = "label4",Size = new Size(0, 17),TabIndex = 3};// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(384, 156);Controls.Add(label4);Controls.Add(label3);Controls.Add(label2);Controls.Add(label1);Name = "Form1";Text = "矩阵的乘积";MatrixMulti();}static void MatrixMulti(){//定义3个float类型的二维数组,作为矩阵float[,] Matrix1 = new float[3, 3];float[,] Matrix2 = new float[3, 3];float[,] MatrixResult = new float[3, 3];//为第一个矩阵中的各个项赋值Matrix1[0, 0] = 2;Matrix1[0, 1] = 2;Matrix1[0, 2] = 1;Matrix1[1, 0] = 1;Matrix1[1, 1] = 1;Matrix1[1, 2] = 1;Matrix1[2, 0] = 1;Matrix1[2, 1] = 0;Matrix1[2, 2] = 1;//为第二个矩阵中的各个项赋值Matrix2[0, 0] = 0;Matrix2[0, 1] = 1;Matrix2[0, 2] = 2;Matrix2[1, 0] = 0;Matrix2[1, 1] = 1;Matrix2[1, 2] = 1;Matrix2[2, 0] = 0;Matrix2[2, 1] = 1;Matrix2[2, 2] = 2;label1!.Text += "第一个矩阵:\n";//循环遍历第一个矩阵并逐行输出for (int i = 0; i < 3; i++){label1.Text += "|     ";for (int j = 0; j < 3; j++){label1.Text += Matrix1[i, j] + "   ";}label1.Text += "   |\r\n";}label2!.Text = "第二个矩阵:\n";//循环遍历第二个矩阵并逐行输出for (int i = 0; i < 3; i++){label2.Text += "|     ";for (int j = 0; j < 3; j++){label2.Text += Matrix2[i, j] + "   ";}label2.Text += "   |\r\n";}MultiplyMatrix(Matrix1, Matrix2, MatrixResult);//调用自定义方法计算两个矩阵的乘积label4!.Text = "两个矩阵的乘积:\n";//循环遍历新得到的矩阵并逐行输出for (int i = 0; i < 3; i++){label4.Text += "|     ";for (int j = 0; j < 3; j++){label4.Text += MatrixResult[i, j] + "   ";}label4.Text += "   |\r\n";}}#region 矩阵乘法/// <summary>/// 在执行两个矩阵的乘法运算时,/// 需要将前面矩阵的第i行与后面矩阵的第j列对应的元素相乘,/// 然后再相加,最后将得到的结果放到结果矩阵的第(i,j)这个位置上即可。/// </summary>/// <param name="Matrix1"></param>/// <param name="Matrix2"></param>/// <param name="MatrixResult"></param>public static void MultiplyMatrix(float[,] Matrix1, float[,] Matrix2, float[,] MatrixResult){for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){for (int k = 0; k < 3; k++){MatrixResult[i, j] += Matrix1[i, k] * Matrix2[k, j];//计算矩阵的乘积}}}}#endregion}
}

2.生成效果

 

http://www.lryc.cn/news/297950.html

相关文章:

  • Objective-C 中的SEL
  • 使用 Docker 镜像预热提升容器启动效率详解
  • 锁(二)队列同步器AQS
  • 【知识整理】招人理念、组织结构、招聘
  • 监控概述、安装zabbix、配置zabbixagent、添加被控端主机、常用监控指标、自定义监控项
  • 恒创科技:香港 BGP 服务器网络连通性如何测试?
  • 《动手学深度学习(PyTorch版)》笔记7.6
  • Quicker读取浏览器的书签(包括firefox火狐)
  • 【数学建模】【2024年】【第40届】【MCM/ICM】【B题 搜寻潜水器】【解题思路】
  • 深入探索Redis:如何有效遍历海量数据集
  • 贪心算法之田忌赛马,多种语言实现
  • C++ static 修饰全局变量时的作用探究
  • Git的基础操作指令
  • 前端开发:(四)JavaScript入门
  • js文件忽略ESLint语法检查
  • 【深度学习】:实验6布置,图像自然语言描述生成(让计算机“看图说话”)
  • 内网安全-内网穿透
  • 【Make编译控制 01】程序编译与执行
  • MySQL如何定位慢查询
  • npm 上传一个自己的应用(4) 更新自己上传到NPM中的工具版本 并进行内容修改
  • Linux开发:PAM1 介绍
  • Leetcode 3036. Number of Subarrays That Match a Pattern II
  • 华为环网双机接入IPTV网络部署案例
  • “智能检测,精准把控。温湿度检测系统,为您的生活带来全方位的健康保障。”#非标协议项目【上】
  • 牛客网SQL进阶137:第二快/慢用时之差大于试卷时长一半的试卷
  • CVE-2022-0760 漏洞复现
  • WordPress突然后台无法管理问题
  • STM32F1 - 标准外设库_规范
  • 推荐系统|召回04_离散特征处理
  • 一个查看armv8系统寄存器-值-含义的方式