C#,数值计算,矩阵相乘的源代码与数据可视化

俺玩数学,你玩技巧,俺不如你,佩服佩服!

一、矩阵乘法的基本概念

定义:矩阵 A ∈ Rm×n B ∈ Rn×p 的乘积为矩阵C∈ Rm×p

限制:矩阵A的列数应该与矩阵B的行数相等。

算法:矩阵A的第一行每个元素分别与B的第一列相乘再求和,得到C矩阵的第一个数;然后A矩阵的第一行再与B矩阵的第二列相乘,得到C矩阵的第二个数;以此类推…

在线性代数中,矩阵在处理不同的概念中扮演着重要的角色。矩阵是数学中按行和列排列的数字、符号或表达式的矩形阵列或表格。我们可以对矩阵执行各种运算,如加法、减法、乘法等。在本文中,您将通过示例详细学习如何将一个矩阵与另一个矩阵相乘,其算法、公式、2×2和3×3矩阵乘法。

矩阵乘法定义

矩阵乘法,也称为矩阵乘积和两个矩阵的乘法,产生一个矩阵。这是一种二进制运算。

如果A和B是两个矩阵,则两个矩阵A和B的乘积表示为:

X=AB

因此,两个矩阵的乘积就是两个矩阵之间的点积。

矩阵乘法算法

近年来,在矩阵乘法算法领域有大量的工作,因为它在许多领域都有应用。有四种类型的算法:

迭代算法

分治算法

亚立方算法

并行和分布式算法

这主要用于各种编程语言,如C、Java等,用于在线乘法。最常见的是2×2、3×3和4×4矩阵乘法。

运算是二进制的,集合中的条目定义了加法、减法、乘法和除法运算。这些运算与实数和有理数的相应运算相同。

虽然矩阵有很多应用,但本质上,矩阵的乘法是线性代数中的一种运算。线性映射包括标量加法和乘法,由矩阵乘法表示。

人们还可以在网格上找到各种各样的算法。这种类型的算法被设计为最小化标准阵列算法的固有效率,其中来自2个不同矩阵的数据的到达可能存在延迟。

矩阵乘法规则

从上面定义的公式和过程中,我们可以写出以下矩阵乘法的规则和属性。

如果A的列数等于B的行数,则定义两个矩阵A和B的乘积。

如果定义了AB,则无需定义BA

如果A和B都是相同阶的方阵,则AB和BA都被定义。

如果AB和BA都定义了,则不必AB=BA。

如果两个矩阵的乘积是零矩阵,则其中一个矩阵不必是零矩阵。

二、矩阵类源代码

#define ANIMATEusing System;
using System.Text;
using System.Collections;
using System.Collections.Generic;namespace Legalsoft.Math.Basic
{public partial class Matrix{/// <summary>/// 行数量/// </summary>public int Row { get; set; } = 0;/// <summary>/// 列数量/// </summary>public int Column { get; set; } = 0;/// <summary>/// 数据(二维数值)/// </summary>private double[,] Data { get; set; } = null;/// <summary>/// 取值this的重载/// </summary>/// <param name="y"></param>/// <param name="x"></param>/// <returns></returns>public double this[int row, int column]{set { Data[row, column] = value; }get { return Data[row, column]; }}/// <summary>/// 构造函数(按二维数组)/// </summary>/// <param name="d"></param>public Matrix(double[,] d){Row = d.GetLength(0);Column = d.GetLength(1);Data = new double[Row, Column];for (int y = 0; y < Row; y++){for (int x = 0; x < Column; x++){Data[y, x] = d[y, x];}}}/// <summary>/// 构造函数(方阵)/// </summary>/// <param name="row"></param>/// <param name="column"></param>public Matrix(int row, int column){Row = row;Column = column;Data = new double[row, column];}/// <summary>/// 随机矩阵(用于演示)/// </summary>/// <param name="row"></param>/// <param name="column"></param>/// <param name="rnder"></param>public Matrix(int row, int column, Random rnder){Row = row;Column = column;Data = new double[row, column];for (int y = 0; y < Row; y++){for (int x = 0; x < Column; x++){Data[y, x] = (rnder.NextDouble() - 0.5);}}}/// <summary>/// 乘号的重载(乘法)/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <returns></returns>public static Matrix operator *(Matrix a, Matrix b){Matrix c = new Matrix(a.Row, b.Column);for (int y = 0; y < c.Row; y++){for (int x = 0; x < c.Column; x++){c[y, x] = 0.0;for (int k = 0; k < a.Column; k++){c[y, x] += a[y, k] * b[k, x];}
#if ANIMATE// 生成演示片段slides.Add(Slide(a, b, c, y, x));
#endif}}return c;}}
}


In linear algebra, matrices play an important role in dealing with different concepts. A matrix is a rectangular array or table of numbers, symbols, or expressions, arranged in rows and columns in mathematics. We can perform various operations on matrices such as addition, subtraction, multiplication and so on. In this article, you will learn how to multiply a matrix by another matrix, its algorithm, formula, 2×2 and 3×3 matrix multiplication with examples in detail.

Matrix Multiplication Definition
Matrix multiplication, also known as matrix product and the multiplication of two matrices, produces a single matrix. It is a type of binary operation. 

If A and B are the two matrices, then the product of the two matrices A and B are denoted by:

X = AB

Hence, the product of two matrices is the dot product of the two matrices. 

Algorithm for Matrix Multiplication
There has been a significant amount of work in recent years in the field of matrix multiplication algorithms as it has found its application in many areas. There are four types of algorithms:

Iterative Algorithm
Divide and conquer algorithm
Sub-cubic algorithms
Parallel and distributed algorithms
This is majorly used in various programming languages such as C, Java, etc., for online multiplication. The most common are 2×2, 3×3 and 4×4, multiplication of matrices.

The operation is binary with entries in a set on which the operations of addition, subtraction, multiplication, and division are defined. These operations are the same as the corresponding operations on real and rational numbers.

Although there are many applications of matrices, essentially,  multiplication of matrices is an operation in linear algebra. The linear mapping, which includes scalar addition and multiplication, is represented by matrix multiplication.

One can also find a wide range of algorithms on meshes. This type of algorithm is designed to minimize the inherent inefficiency of standard array algorithms where there can be a delay in the arrival of data from 2 different matrices.

Matrix multiplication Rules
From the above defined formula and procedure, we can write the following rules and properties for matrix multiplication.

The product of two matrices A and B is defined if the number of columns of A is equal to the number of rows of B.
If AB is defined, then BA need not be defined
If both A and B are square matrices of the same order, then both AB and BA are defined.
If AB and BA are both defined, it is not necessary that AB = BA.
If the product of two matrices is a zero matrix, it is not necessary that one of the matrices is a zero matrix.

三、矩阵动画显示源代码

(略,请下载工程文件)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】部署mysql 和 tomcat

目录 部署MySQL 1.搜索镜像 2. 拉取镜像 部署Tomcat 1. 搜索镜像 2.拉取镜像 3.查看镜像 部署MySQL 1.搜索镜像 docker search mysql 2. 拉取镜像 通过mysql 镜像创建对应的容器&#xff0c;并设置端口映射&#xff0c;目录映射 创建mysql 的目录 docker run -id \ …

【mysql】—— 事务

目录 &#xff08;一&#xff09;前言 &#xff08;二&#xff09;事务的理解 1、为什么会出现事务 2、什么是事务&#xff1f; 3、事务的版本支持 4、事务提交方式 &#xff08;三&#xff09;事务常见操作方式 1、正常演示 - 证明事务的开始与回滚 2、非正常演示…

第一个Java网络爬虫程序

目录 前言第一个Java网络爬虫程序总结 前言 网络爬虫是一种获取互联网信息的技术&#xff0c;它可以模拟浏览器行为&#xff0c;访问网站并提取所需的数据。在这个小Demo中&#xff0c;我们使用Java语言结合HttpClient库实现了一个简单的爬虫程序&#xff0c;用于抓取汽车之家…

网络字节序与主机字节序

字节序区分 多字节的数值在内存中高低位的排列方式会影响所表示的数值处理方式和显示。字节序以字节为基本单位&#xff0c;表示不同字节的存储顺序。 从存储顺序上区分&#xff0c;可分为大端字节序和小端字节序。从处理上区分&#xff0c;可区分为网络字节序和主机字节序。…

Rapberry Pi 4 安装VxWorks笔记

Rapberry Pi 4 安装VxWorks笔记 本文章发表与我的github page&#xff1a; Rapberry Pi 4 安装VxWorks笔记 | Hi, I am watershade. Welcome to my pages. 在github page会有更好体验和更多文章。 一、概述 ROS2推荐的操作系统是ubuntu,众所周知&#xff0c;linux并不是实时…

【陈老板赠书活动 - 21期】- Python树莓派编程从零开始(第3版)

陈老老老板&#x1f9d9;‍♂️ &#x1f46e;‍♂️本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f934;本文简述&#xff1a;活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f473;‍♂️上一篇文章&#xff…

用友BI组合太适配了,数据分析效果惊人

用友和BI&#xff08;Business Intelligence&#xff0c;商业智能&#xff09;的适配性确实很高&#xff0c;这主要得益于用友在企业管理软件领域的深厚积累和BI在数据分析方面的强大能力。通过将用友的软件与BI工具组合起来&#xff0c;企业可以获得以下几个方面的优势&#x…

短视频矩阵系统+无人直播源码+视频批量分发----开发实践

核心技术 1. AI自动直播&#xff1a; 智能系统通过丰富可定制的文案库&#xff0c; 拥有有料有趣的灵魂。不仅能自动语音讲解内容&#xff0c;还可以在直播中和用户灵活互动。直播中可将团购商品同话术自动上下架。 2. AI剪辑 可一键智能批量成片&#xff0c;也可跟着模板剪…

第7章-第2节-Java中集合的体系结构

1、集合的结构&#xff1a; 1&#xff09;、在之前我们都是用数组来存储多条数据&#xff0c;但是数组有个很大的问题就是&#xff0c;数组的长度一旦固定&#xff0c;就不能改变&#xff0c;如果新加一条数据就会很麻烦&#xff0c;需要重新创建数组。 2&#xff09;、而我们…

基于SpringBoot+Vue实现的学生宿舍管理系统

基于SpringBootVue实现的学生宿舍管理系统 文章目录 基于SpringBootVue实现的学生宿舍管理系统系统介绍技术选型成果展示源码获取账号地址及其他说明 系统介绍 基于SpringBootVue实现的学生宿舍管理系统采用前后端分离的架构方式&#xff0c;是为学校宿舍管理打造的一套系统,可…

鹦鹉目标检测数据集VOC格式600张

鹦鹉&#xff0c;一种色彩鲜艳、聪明伶俐的鸟类&#xff0c;以其模仿人类语言的能力和独特的喙形而广受喜爱。 鹦鹉属于鸟纲、鹦鹉科&#xff0c;是热带和亚热带地区的常见鸟类。它们的喙弯曲呈钩状&#xff0c;非常适合啄食种子、果实和坚果等食物。鹦鹉的羽毛通常非常鲜艳&a…

滴水逆向1

八进制加法乘法表 EF11101111 j记住其映射关系 十进制的定义&#xff1a;由十个符号组成&#xff0c;分别是0 1 2 3 4 5 6 7 8 9 逢十进一。九进制的定义&#xff1a;由九个符号组成&#xff0c;分别是0 1 2 3 4 5 6 7 8 逢九进一。十六进制的定义&#xff1a;由十六个符号组成…

前端三剑客——HTML5+CSS3+JavaScript

核心技术●实战训练营●项目实战&#xff08;微视频版&#xff09;   《前端三剑客——HTML5CSS3JavaScript》采用“核心技术→实战训练营→企业级项目实践”的结构和“由浅入深&#xff0c;由深到精”的模式进行讲解。 全书科学设置七大阶段由浅入深循序渐进&#xff0c;为解…

python爬取豆瓣影评,涉及知识点:bs4,requests、time、random

页面源代码: <!DOCTYPE html> <html lang="zh-CN" class="ua-windows ua-webkit"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="renderer" conten…

Postman Newman 教程:轻松管理 API 自动化测试步骤

Postman 中的 Newman 是什么&#xff1f; Newman 是一个 CLI&#xff08;命令行界面&#xff09;工具&#xff0c;用于运行 Postman 中的集合&#xff08;Collection&#xff09;和环境&#xff08;Environment&#xff09;来进行自动化测试。它允许直接从命令行运行 Postman …

WPF自定义漂亮顶部工具栏 WPF自定义精致最大化关闭工具栏 wpf导航栏自定义 WPF快速开发工具栏

在WPF应用程序开发中&#xff0c;自定义一个漂亮的顶部工具栏具有多重关键作用&#xff0c;它不仅增强了用户体验&#xff0c;还提升了整体应用的专业性和易用性。以下是对这一功能的详细介绍&#xff1a; 首先&#xff0c;自定义顶部工具栏是用户界面设计的重要组成部分&…

LeetCode-58/709

1.最后一个单词的长度&#xff08;58&#xff09; 题目描述&#xff1a; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 思路&…

水文模型(科普类)

SWMM 模型概况&#xff1a; SWMM5 系列拥有编辑区域数据的功能&#xff0c;而且能模拟水文、 水力和水质。其核心部分是管道汇流计算模块&#xff0c;提供了恒定流法、运动波法和动力波法三种水动力学 方法。其中动力波法通过求解完整的圣维南方 程组进行计算&#xff0c;能够…

算法通关村番外篇-LeetCode热题100系列一

大家好我是苏麟 , 今天开始出这个LeetCode热题100系列 . LeetCode热题100 , 是LeetCode的热门题目也是面试比较爱考的 . 大纲 两数之和 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;…

如何保障集团下达的政策要求有效落地

随着新一轮国企改革的推进&#xff0c;很多国有企业建立了集团化的管控体系。通过集团化经营管理的模式&#xff0c;帮助国有企业凝聚更强的竞争力&#xff0c;集团企业通过资源整合、反向投资、控股、参股等手法创造业务板块之间的协同、互补效应&#xff0c;从而实现战略联动…