【基础算法】矩阵的几种基本运算 & C++实现

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

●矩阵的加减乘(数乘)转置运算

        从线性代数中我们已知,两个矩阵可以进行加减乘运算,但矩阵之间没有除法运算。(下面以3×3矩阵为例):

【基础算法】矩阵的几种基本运算 & C++实现

         矩阵的数乘运算类属与两矩阵相乘的一种特殊形式(数乘矩阵的这个数,我们可以将其化为对角线为该数,其余位置都为0的矩阵,再用该对角矩阵乘我们要乘的这个矩阵)直接用数乘以矩阵中的每一个数即可。转置矩阵为将矩阵的行列互换得到的新矩阵称为转置矩阵,转置矩阵的行列式不变。下面我们展示数乘和转置两个算法的关键代码片段:

{
	double juzhen[3][3] = { {1,2,3},
							{4,5,6},
							{7,8,9} };  
	double n;cin >> n;
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 3; j++)
			juzhen[i][j] = n * juzhen[i][j];
}
{
	double juzhen[3][3] = { {1,2,3},
							{4,5,6},
							{7,8,9} };  
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 3; j++)
			jizhen[j][i] = juzhen[i][j];
}

 在下面代码中我们输入了两个矩阵让其进行运算(只进行加减乘)

#include<iostream>
#define i 3   //定义矩阵的行数
#define j 3   //定义矩阵的列数
using namespace std;
class juzhen {
public:
	void clear()  //将矩阵清空
	{
		this->c[i][j] = { 0 };
	}
	void add();   //相加算法
	void sub();   //相减算法
	void mul();   //相乘算法
	void showresult();
	double a[i][j];
	double b[i][j];
	double c[i][j];
};
void juzhen::add()
{
	for (int m = 0; m < i; m++)
	{
		for (int n = 0; n < j; n++)
		{
			c[m][n] = a[m][n] + b[m][n];
		}
	}
}
void juzhen::sub()
{
	for (int m = 0; m < i; m++)
	{
		for (int n = 0; n < j; n++)
		{
			c[m][n] = a[m][n] - b[m][n];
		}
	}
}
void juzhen::mul()
{
	for (int m = 0; m < i; m++)
	{
		int p = 0;
		for (int n = 0; n < j; n++)
		{
			int q = 0;
			c[m][n] = a[m][p] * b[q][n]
				+ a[m][p + 1] * b[q + 1][n]
				+ a[m][p + 2] * b[q + 2][n];
			//c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]
			//c[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]
			//c[0][2]=a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]
			//...
		}
	}
}
void juzhen::showresult()
{
	for (int m = 0; m < i; m++)
	{
		for (int n = 0; n < j; n++)
		{
			cout << c[m][n] << " ";
		}
		cout << endl;
	}
}
juzhen jz;
void text()  //写入矩阵
{
	cout << "请输入这两个" << i << "×" << j << "矩阵:" << endl;
	cout << "①" << endl;
	for (int m = 0; m < i; m++)
		for (int n = 0; n < j; n++)
			cin >> jz.a[m][n];
	cout << "②" << endl;
	for (int m = 0; m < i; m++)
		for (int n = 0; n < j; n++)
			cin >> jz.b[m][n];
}
void text1()   //加法运算
{
	jz.clear();
	jz.add();
	cout << "两矩阵相加为:" << endl;
	jz.showresult();
}
void text2()   //减法运算
{
	jz.clear();
	jz.sub();
	cout << "两矩阵相减为:" << endl;
	jz.showresult();
}
void text3()   //乘法运算
{
	jz.clear();
	jz.mul();
	cout << "两矩阵相乘为:" << endl;
	jz.showresult();
}
int main()
{
	text();
	text1();
	text2(); 
	text3();  
}

【基础算法】矩阵的几种基本运算 & C++实现

         综合上面的讲解及其程序代码,我们可以将加、减、乘、数乘、转置这几种基本运算的方法充分结合,运用线性代数中矩阵运算的基本公式,在程序中从而实现多个矩阵复合运算的复杂算法。文章来源地址https://www.toymoban.com/news/detail-509129.html


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

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

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

相关文章

  • C++实现回调函数的几种方式

    通常认为通过函数指针在其他地方调用函数的过程称为回调,被调用的函数称为回调函数,函数指针通过传参方式传递。 在C++的实际应用中,有很多实现回调函数的方式,不一定要传递函数指针才能实现回调,只要实现了回调的功能,都叫回调函数。 回调函数是和调用者在

    2024年02月16日
    浏览(32)
  • MATLAB矩阵基本运算的实现(一)

    MATLAB是matrixlaboratory两个词的组合,意为矩阵工厂(矩阵实验室),强大的矩阵运算能力是MATLAB的一个重要的特点,下面我就为大家整理了一下利用MATLAB实现矩阵基本运算的方法。 一、矩阵的加减法 矩阵加减法运算必须保证参与运算的矩阵是同维数,就是在算例中的a和b矩阵,

    2023年04月08日
    浏览(33)
  • C#简单的矩阵类并实现基本的矩阵运算

    在C#中,你可以通过创建自定义类或使用现有的库(如MathNet.Numerics)来实现矩阵计算。下面是一个简单的例子,说明如何创建一个简单的矩阵类并实现基本的矩阵运算。 首先,我们定义一个 Matrix 类来表示矩阵,并提供基本的矩阵操作,如加法、乘法和转置。 然后,你可以这

    2024年04月17日
    浏览(21)
  • Python 四则运算的几种方法?

    Python的四则运算主要有以下几种方法: 1、使用基本算术运算符: Python支持基本的算术运算符,包括加(+), 减(-), 乘(*), 除(/) 和求模运算符(%), 可以用于数值类型的数据,例如整数(int)、浮点数(float)等。例如: 2、使用math模块中的函数: Python的标准库中提供了一个math模块,其

    2024年03月21日
    浏览(32)
  • C#的几种位操作运算,与、或、非、异或、左移、右移

    C#的常见几种位操作运算,与($)、或(|)、非(~)、异或(^)、左移()、右移() 位操作一般来说比加减乘除计算要快一些 与()操作符的位都为1时,才为1,其他都为0,因此与()操作符的结果范围在[0, Math.Min(x,y)],x,y均为正整数 或(|)操作符的位都为0时,才为0,其他都为1,因此或(|)操作

    2024年02月16日
    浏览(29)
  • 生成矩阵的几种方法

    生成矩阵的几种方法 在 MATLAB 中,生成矩阵有许多种方法。下面介绍几种比较常用的方法。 使用 zeros 或 ones 函数 可以使用 MATLAB 中的 zeros 或 ones 函数来创建一个特定大小的全零或全一矩阵。这两个函数的语法如下: 其中,m 和 n 分别表示矩阵的行数和列数。例如,要创建一

    2024年02月04日
    浏览(37)
  • C++借助Eigen库实现矩阵开方(开根号)运算

    在matlab中我们可以通过sqrtm()函数实现简单的矩阵开方运算,当使用C++时,可以通过以下函数实现。 1、添加头文件: 2、开方函数: 3、主函数调用 在matlab中我们可以通过sqrtm()函数实现简单的矩阵开方运算,当使用C++时,可以通过以上函数实现。

    2024年02月15日
    浏览(23)
  • 【Java】打印矩阵的几种方法

    首先创建一个矩阵 int[][] grid = {{1,2,4},{3,3,1},{3,4,5}}; 如果直接输出grid,则会打印矩阵地址,所以,我们需要进行矩阵遍历,得到矩阵的值。 直接打印grid: 首先,用row记录矩阵的行数,用column记录矩阵的列数,并通过行数和列数进行矩阵遍历 得到结果: 结果: 结果:

    2024年02月11日
    浏览(31)
  • 实现环形队列的各种基本运算的算法

    目的: 领会环形队列的存储结构和掌握环形队列中各种基本运算算法的设计。 内容: 编写一个乘成sqqueue.cpp,实现环形队列(假设栈中的元素类型ElemType为char)的各种基本运算,并在此基础上设计一个程序3-3.cpp完成以下功能。 初始化队列q。 判断队列q是否非空。 依次进队

    2024年02月06日
    浏览(26)
  • 【Python】求矩阵鞍点的几种思路

    代码思路仅供参考,欢迎大家批评指正! 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。 本题要求编写程序,求一个给定的n阶方阵的鞍点。 遍历矩阵m,判断每一个点是否为鞍点。 时间复杂度为O(n 3 ) 代码 根据鞍点的特征——某一行最大值,

    2024年02月03日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包