【C++】矩阵的乘法

这篇具有很好参考价值的文章主要介绍了【C++】矩阵的乘法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先复习一下矩阵的乘法 。

已知

c++矩阵相乘,# 数学与编程,矩阵,c++,线性代数

求AB。 

因为矩阵A是2×3矩阵,矩阵B是3×3矩阵,A的列数等于B的行数,所以矩阵A与B可以相乘,乘积AB是一个2×3矩阵。

c++矩阵相乘,# 数学与编程,矩阵,c++,线性代数

矩阵相乘时需要注意两点,一点是矩阵1的列数要等与矩阵2的行数,一点是矩阵相乘后的矩阵

c[i][j] = a[i][k]*b[k][j] 

 由矩阵相乘的性质可以用三层循环求出结果,注意i的循环需要放在最外层,j的循环需要放在中间层,k的循环需要放在最低层。

for(int i=0;i<ROW1;i++)
            for(int j=0;j<COL2;j++)
                for(int k=0;k<COL1;k++)
                    arr3[i][j] += arr1[i][k]*arr2[k][j];

 完整代码:

#include<iostream>
using namespace std;

//第i个矩阵的行数和列数 
#define ROW1 3
#define COL1 3
#define ROW2 3
#define COL2 3

/*
矩阵乘法 
*/
void matrix_mutiplicate(double(*arr1)[COL1], double (*arr2)[COL2], double(*arr3)[COL2]) {
	if(COL1==ROW2) {
		//矩阵相乘的性质c[i][j] += a[i][k]*b[k][j] 
		for(int i=0;i<ROW1;i++)
			for(int j=0;j<COL2;j++)
				for(int k=0;k<COL1;k++)
					//	*(* (arr3 + i)+j) += *(*(arr1 + i) + k) * *(*(arr2 +k) + j);
					arr3[i][j] += arr1[i][k]*arr2[k][j];
	}
	return;
}


/*
打印矩阵 
*/
void matrix_print(double(*arr)[COL2]) {
	for(int i=0;i<ROW1;i++) {
		for(int j=0;j<COL2;j++)
			cout<<arr[i][j]<<" ";
		cout<<endl;
	}
}

int main()
{
    double arr1[ROW1][COL1] = {1,2,3,1,2,3,1,2,3};
    double arr2[ROW2][COL2] = {1,1,1,1,1,1,1,1,1};
    double arr3[ROW1][COL2] = {0};
    matrix_mutiplicate(arr1,arr2,arr3);
    matrix_print(arr3);
	return 0;   	  		   		 
}

输出结果:

c++矩阵相乘,# 数学与编程,矩阵,c++,线性代数

手算一下AB,不难发现结果是正确的。

总结 

我的想法是把矩阵相乘封装成一个函数,但是二维数组作为参数时列数必须是常量,这就限制了函数的调用。其实c99标准支持变量,有兴趣的可以尝试。文章来源地址https://www.toymoban.com/news/detail-653579.html

到了这里,关于【C++】矩阵的乘法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【C++】开源:Eigen3矩阵与线性代数库配置使用

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍Eigen3线性代数模板库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 项目Gitlab地址: https://gitlab.com/libeigen/eigen 官网:

    2024年02月14日
    浏览(41)
  • 【线性代数】通过矩阵乘法得到的线性方程组和原来的线性方程组同解吗?

    如果你进行的矩阵乘法涉及一个线性方程组 Ax = b,并且你乘以一个可逆矩阵 M,且产生新的方程组 M(Ax) = Mb,那么这两个系统是等价的;它们具有相同的解集。这是因为可逆矩阵的乘法可以视为一个可逆的线性变换,不会改变方程解的存在性或唯一性。 换句话说,如果你将原

    2024年02月03日
    浏览(58)
  • 线性代数矩阵乘法中的行向量和列向量

    在矩阵中有两个概念,行向量与列向量,这是从两个不同的角度看待矩阵的组成。这篇文章将从 行向量 和 列向量 两个角度来分解 矩阵的乘法 。 假设有两个矩阵 A 和 B 一般矩阵的乘法分解 简单的理解就是A矩阵的第一行与B矩阵的第一列逐元素相乘,就是 结果矩阵 的左上角

    2024年02月11日
    浏览(44)
  • GPU编程 CUDA C++ 线性代数求解器 cuSolver库

    cuSolver库较cuBLAS库更为高级,其能处理矩阵求逆,矩阵对角化,矩阵分解,特征值计算等问题。cuSolver库的实现是基于cuBLAS库和cuSPARSE库这两个基本库。cuSolver库的功能类似于Fortran中的LAPACK库:是Linear Algebra PACKage的简称。 以下以一个厄米矩阵的本征值(特征值)问题,代码示

    2024年02月05日
    浏览(49)
  • <3>【深度学习 × PyTorch】必会 线性代数 (含详细分析):点积 | 矩阵-向量积 | Hadamard积 | 矩阵乘法 | 范数/矩阵范数

      拍照的意义在于你按下快门的那一刻,万里山河的一瞬间变成了永恒。   🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能领域

    2024年02月05日
    浏览(53)
  • 第一百二十一天学习记录:线性代数:矩阵乘法运算(宋浩板书)

    在编程和学习数据结构的过程中,发现有些算法会用到矩阵和矩阵的乘法运算,因此先将这一个知识点学习一下。 乘法☆ 总结三条不满足

    2024年02月13日
    浏览(40)
  • 【学习笔记】(数学)线性代数-矩阵的概念和特殊矩阵

    由 m × n mtimes n m × n 个数按一定的次序排成的 m m m 行 n n n 列的矩形数表成为 m × n mtimes n m × n 的矩阵,简称 矩阵 (matrix)。 横的各排称为矩阵的 行 ,竖的各列称为矩阵的 列 。 元素为实数的称为 实矩阵 ,一般情况下我们所讨论的矩阵均为实矩阵。 1 行 n n n 列的矩阵称为

    2024年02月09日
    浏览(45)
  • 考研数学笔记:线性代数中抽象矩阵性质汇总

    在考研线性代数这门课中,对抽象矩阵(矩阵 A A A 和矩阵 B B B 这样的矩阵)的考察几乎贯穿始终,涉及了很多性质、运算规律等内容,在这篇考研数学笔记中,我们汇总了几乎所有考研数学要用到的抽象矩阵的性质,详情在这里: 线性代数抽象矩阵(块矩阵)运算规则(性

    2024年02月03日
    浏览(47)
  • 图解AI数学基础 | 线性代数与矩阵论

    一个标量就是一个单独的数。 只具有数值大小,没有方向 (部分有正负之分),运算遵循一般的代数法则。 一般用小写的变量名称表示。 质量mmm、速率vvv、时间ttt、电阻ρrhoρ 等物理量,都是数据标量。 向量指具有大小和方向的量,形态上看就是一列数。 通常赋予向量

    2024年04月10日
    浏览(48)
  • 【考研数学】线性代数第六章 —— 二次型(3,正定矩阵与正定二次型)

    (1)二次型 f ( x 1 , x 2 , x 3 ) = x 1 2 + 3 x 2 2 + 2 x 3 2 = X T A X f(x_1,x_2,x_3)=x_1^2+3x_2^2+2x_3^2=pmb{X^TAX} f ( x 1 ​ , x 2 ​ , x 3 ​ ) = x 1 2 ​ + 3 x 2 2 ​ + 2 x 3 2 ​ = X T A X 有如下特点: 对任意的 x 1 , x 2 , x 3 x_1,x_2,x_3 x 1 ​ , x 2 ​ , x 3 ​ ,有 f ( x 1 , x 2 , x 3 ) ≥ 0 f(x_1,x_2,x_3)geq0 f ( x 1 ​

    2024年02月07日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包