C++两个矩阵相乘代码(内附有矩阵相乘的条件与规则,以及对代码的详细解答)

这篇具有很好参考价值的文章主要介绍了C++两个矩阵相乘代码(内附有矩阵相乘的条件与规则,以及对代码的详细解答)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

     再复制粘贴代码之前可以先了解学习一下什么是矩阵相乘,矩阵相乘的条件与规则又是什么。

点击一下链接即可进入学习:
                      #矩阵相乘的学习链接

         以下是两个矩阵相乘的代码块(输入版)

​
#include<iostream>
using namespace std;
int main()
{
	int A1,A2,B1,B2;
    cout<<"请依次输入矩阵A的行、列 : "; 
	cin>>A1>>A2;
	int Arr[A1][A2]={};
	cout<<"请依次输入矩阵B的行、列 : ";
	cin>>B1>>B2;
	cout<<endl;
	int Brr[B1][B2]={};
  //以上部分是先输入两个矩阵的规模,然后用下面的if去判断是否满足矩阵相乘的条件
	if(A2==B1)
{
		
	cout<<"请输入矩阵A的数据 : "<<endl;
		cout<<endl;
	for(int a=0;a<A1;a++)
	{
		for(int b=0;b<A2;b++)
		{
			cin>>Arr[a][b];
		}
	}
	    cout<<endl;
	cout<<"请输入矩阵B的数据 : "<<endl;
	  cout<<endl;
		for(int a=0;a<B1;a++)
	{
		for(int b=0;b<B2;b++)
		{
			cin>>Brr[a][b];
		}
	}
	cout<<endl; //以上是使用for循环实现二维数组的定义
	
	int Crr[A1][B2]={};//根据一个m*n的矩阵和一个n*p的矩阵相乘,将会得到一个m*p的矩阵可得为何如此定义Crr 
	for(int i=0;i<A1;i++)
	{
		for(int k=0;k<B2;k++)
		{
			for(int q=0;q<A2;q++)
			{
				Crr[i][k]+=Arr[i][q]*Brr[q][k];
			}
		}
	}
//这一步可以在草稿纸上适当列举然后寻找规律,寻找变量并合理使用变量就可以完成矩阵的乘法了    
//同时也要熟悉三个for循环的执行逻辑    
	cout<<"矩阵A和矩阵B乘法运算得到的矩阵C为 : "<<endl;
	cout<<endl;
	for(int a=0;a<A1;a++)
	{
		for(int b=0;b<B2;b++)
		{
			cout<<Crr[a][b]<<" ";
		}
		cout<<endl;
	}
}
//以上为输出二维数组 
  else
  {
  	cout<<"不满足矩阵相乘条件!"; 
  }

	return 0;
}
​

补充①:对于for循环了解还不够透彻的可以进入以下链接去学习

                    #for循环学习链接

同时在这里我也描述以下我对代码里三层for循环嵌套的理解:①先进入最外层循环,满足后进入第二层循环,不满足最外层循环条件则直接退出整个循环,执行循环之后的语句 。②进入第二层循环后,满足第二层循环的条件则进入最内层循环,不满足返回到①接着重复①的步骤。③执行内循环到内循环死去,然后返回第二层看是否满足,满足则又一次执行③,若不满足则返回到最外层循环,即返回到①,接着重复①的步骤。    整个过程按照①→②→③逻辑执行,遇到返回的时候返回即可。

同时:整一个循环是直到最外层循环死去的时候才结束。、

以上是我对矩阵乘法的设计和理解,若有帮助可以点赞+收藏,谢谢老铁们的支持~
   

 

       文章来源地址https://www.toymoban.com/news/detail-504745.html

到了这里,关于C++两个矩阵相乘代码(内附有矩阵相乘的条件与规则,以及对代码的详细解答)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有R a​ 行、C a​ 列,B有R b​ 行、C b​ 列,则只有C a

    输入格式: 输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。 输出格式: 若输入的两个矩阵的规模是

    2024年02月12日
    浏览(47)
  • JAVA深化篇_29—— 线程使用之线程联合以及Thread类中的其他常用方法【附有详细说明及代码案例】

    线程联合 当前线程邀请调用方法的线程优先执行,在调用方法的线程执行结束之前,当前线程不能再次执行。线程A在运行期间,可以调用线程B的join()方法,让线程B和线程A联合。这样,线程A就必须等待线程B执行完毕后,才能继续执行。 join方法的使用 join()方法就是指调用该

    2024年02月05日
    浏览(47)
  • 实现两个列表对应数值相乘、相除、相加等

    for循环遍历两个列表元素,乘积结果使用append添加到一个空列表。 输出结果: zip()是Python的一个内置函数,参数为可迭代的对象,将对象中对应的元素打包成一个个元组,然后返回列表。若参数的长度不等,则返回长度和参数中长度最短的对象相同。 输出结果: 在Python中实

    2024年02月13日
    浏览(42)
  • 【C++实验】运算符重载(两个矩阵相加)

    运算符重载 概念 对已有的运算符赋予新的含义,用一个运算符表示不同功能的运算,从而适用于用户自定义类型的数据(比如复数、矩阵等)之间的运算 运算符重载 方法 定义一个重载运算符函数,在需要时系统自动调用该函数,完成相应的运算。 运算符重载实质上是函数

    2024年02月02日
    浏览(42)
  • 矩阵和矩阵如何相乘?

    矩阵与矩阵相乘遵循特定的数学规则。为了相乘,第一个矩阵的列数必须等于第二个矩阵的行数。矩阵乘法的结果是一个新矩阵,其行数等于第一个矩阵的行数,列数等于第二个矩阵的列数。矩阵乘法不满足交换律,即 AB≠BA。 例子: 假设我们有两个矩阵 A 和 B,其中: 在这

    2024年01月22日
    浏览(63)
  • 动态规划--矩阵链相乘问题

    明确原始问题A[1:n]: 计算矩阵链 所需的 最小乘法次数。 (1)是否满足最优子结构,问题的解是否包含子问题的优化解? 若计算A[1:n]的优化顺序在 k 处断开矩阵链,即A[1:n]=A[1:k]×A[k+1:n],则在A[1:n]的优化顺序中,对应于子问题A[1:k]的解必须是A[1:k]的优化解,对应A[k+1:n]的解必

    2024年01月25日
    浏览(45)
  • 14-矩阵相乘及其运算法则

    矩阵与向量的乘法 在这一篇文章中我们就将基于上一篇重新审视矩阵的这个视点来理解矩阵的乘法,那么在这一篇,我们主要来看一下矩阵和向量的乘法。这里这个线性方程组是上一小节给大家举的模拟的一个非常简单的小型经济系统的例子,我们可以把这个经济系统其实本

    2024年02月13日
    浏览(42)
  • 矩阵和向量如何相乘?

    矩阵与向量相乘遵循特定的数学规则,这个过程通常被称为矩阵向量乘法。在进行矩阵向量乘法时,矩阵的列数必须与向量的行数相同。以下是一个具体的例子: 例子: 假设我们有一个矩阵 A 和一个向量 v,其中: 在这个例子中,矩阵 A 是一个 3x2 矩阵(3行2列),向量v 是

    2024年01月22日
    浏览(45)
  • 矩阵链相乘(动态规划法)

    矩阵链乘法是耳熟能详的问题了,有很多矩阵,排列成矩阵链,矩阵链的要求是相邻的两个是可以相乘的,可以相乘是有条件的,两个矩阵能够相乘的条件就是行、列之间是有关系的,两个矩阵如果能够相乘,就是前面矩阵的列号和后面矩阵的行号是一致的。 如何确定矩阵的

    2024年02月09日
    浏览(49)
  • 矩阵与对角阵相乘的一般特点

    矩阵与对角阵相乘的一般特点 用对角阵左乘一个矩阵,就是用对角阵的对角元分别乘这个矩阵的对应各行;用对角阵右乘一个矩阵,就是用对角阵的对角元分别乘这个矩阵的对应各列。 只有对角线上有非0元素的矩阵称为对角矩阵,或说若一个方阵除了主对角线上的元素外,

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包