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

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

矩阵的数乘运算类属与两矩阵相乘的一种特殊形式(数乘矩阵的这个数,我们可以将其化为对角线为该数,其余位置都为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++实现相关推荐

  1. 【数论基础】有关素数的基础算法(内含三种筛法,低至O(N^(2/3))!)

    目录 1.P3383 [模板]线性筛素数 2.P3912 素数个数 3.O(n(2/3)/logn)O(n^(2/3)/log n)O(n(2/3)/logn)的洲阁筛 4.O(N(2/3))O(N^ ...

  2. matlab中服从高斯分布的矩阵_推荐基础算法之矩阵分解PMF

    推荐基础算法之矩阵分解PMF 大多数存在的协同过滤算法不能处理以下两种情况: 1. 不能处理大规模数据 2.不能处理评分非常少的用户数据 概率矩阵分解模型可以解决大规模.稀疏且不平衡的数据.这篇文章主 ...

  3. 两个卡方分布之和_推荐基础算法之矩阵分解PFM

    推荐基础算法之矩阵分解PFM PFM被称为概率因子模型(Probabilistic Factor Model)或泊松因子模型(Poission factor model).PFM本质上和概率矩阵分解( ...

  4. 【基础算法】简单了解一下常见的几种散列算法?

    简单了解一下常见的几种散列算法? 如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 前提概念 好的哈希函数 MD5 与 SHA MD5 SHA 家族 CRC Murmu ...

  5. 小白机器学习基础算法学习必经之路

    https://www.toutiao.com/a6657427848900379150/ 2019-02-14 15:21:13 未来,人工智能是生产力,是变革社会的主要技术力量之一. 掌握人工智能 ...

  6. 基础,算法,编程的1000+篇文章总结

    基础,算法,编程的1000+篇文章总结 本文收集和总结了有关基础,算法,编程的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:http://www.ai2news.com/, ...

  7. CUDA系列学习(五)GPU基础算法: Reduce, Scan, Histogram

    喵~不知不觉到了CUDA系列学习第五讲,前几讲中我们主要介绍了基础GPU中的软硬件结构,内存管理,task类型等:这一讲中我们将介绍3个基础的GPU算法:reduce,scan,histogram,它 ...

  8. python实现sklearn的基本操作流程,sklearn预处理方法,sklearn基础算法的使用,以及sklearn模型的选择方法。

    python实现sklearn的基本操作流程,sklearn预处理方法,sklearn基础算法的使用,以及sklearn模型的选择方法. 一.数据的获取与分析 1.读取数据 2.分析数据 二.数据的预 ...

  9. 一看“左程云:200道算法与数据结构”,二刷“阿里云:70+算法题、30种大厂笔试高频知识点”,3月过去终于挺进我梦中的字节!

    不管是学生还是已经工作的人,我想彼此都有一个相同的梦想:进大厂! 眼看着2020年还有个三十来天就要完美收尾了,那么如何才能在未来三个月弯道超车赶上"金三银四的春招",进入梦寐以求 ...

最新文章

  1. 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_t
  2. 解决eclipse中出现Resource is out of sync with the file system问题
  3. LeetCode 110. 平衡二叉树(Balanced Binary Tree) 15
  4. 南通大学计算机网络及应用,南通大学《计算机网络》课程设计资料.pdf
  5. Chrome 双击关闭标签,新窗口打开新地址,一个插件搞定,安装方便,自带hosts
  6. java byte[] 文件流 转换成string是乱码_Java学习--IO(二)、多线程
  7. 23种设计模式之中介者模式
  8. Spring整合Redis详解
  9. 用汇编的眼光看c++(之模板函数)
  10. 转贴XML的写法建议
  11. SQL:postgresql增加自增字段
  12. 神经网络激活函数优缺点和比较(sigmod,tanh,relu,softmax,leaky relu,ELU,SELU)
  13. 15款免费远程控制软件下载
  14. 案例应用|如何借助SPC软件实现汽车零配件品质管理
  15. 读书百客:《念奴娇·赤壁怀古》赏析
  16. Ubuntu 下访问摄像头 及将摄像头数据重定向到http协议 远程访问摄像头
  17. 博士最惨能惨到什么程度?
  18. 与() 、或(|)、异或(^) 、取反(~) 运算
  19. Bert模型详解和训练实例
  20. 生命周期--艺术探索

热门文章

  1. 想做亚马逊、速卖通、Shopee等平台自养号测评的进来看看,核心分享
  2. 将B站视频设置为浏览器背景,你确定不试试?
  3. edge浏览器360导航删不掉?解铃还须系铃人,亲测有用。
  4. BEM实战之扒一扒淘票票页面 1
  5. JavaScript学习思维导图(二)
  6. html笔记_jp(完整)
  7. python活用isdigit方法显示系统进程
  8. cad标注样式快捷键_CAD标注样式如何设置?(教程篇)
  9. vscode之python框架flask 断点调试的配置(官方推荐的配置,务必注意端口)
  10. Linux 启动nginx失败!启动,重启,停止nginx!