化成最简矩阵分成如下步骤

从矩阵的第 i=0 行开始化简

1.寻找最长元素行:从第i行开始,寻找第一个开头行元素非0的行,利用行交换把该行换到矩阵的第i行。

2.对第i行进行化简:对第i行的所有元素同除该行的首个非0元素。

3.矩阵行化简: 从矩阵的第 j=0 行开始。与第i行首个非0元素同列的元素,即为行化简的倍数,每行减去该 倍数*第i行的值就得到了一次行化简的结果 ,回第1步,i++。

/*** 矩阵行变换成最简矩阵* @tparam ElemType* @return*/
template<typename ElemType>
SmartDongLib::Matrix<ElemType> SmartDongLib::Matrix<ElemType>::simplyTransform() {Matrix<ElemType> ret(*this);//表示将要化1的矩阵行for (int transferRow = 0; transferRow < theRows_; ++transferRow) {//按列循环每行找首个非0元素,从transferRow行开始寻找最长元素行int firstNotNullCol = 0;for (; firstNotNullCol < ret.theCols_; ++firstNotNullCol) {int row = transferRow;bool isfind= false;for (; row < ret.theRows_; ++row) {ElemType firstelem=ret(row, firstNotNullCol);if (!close(firstelem, (ElemType)0 )) {isfind = true;break;}}if (isfind){//如果找到最长元素行,则和transferRow行进行行交换ret.rowSwap(transferRow,row);break;}}if (firstNotNullCol >= ret.theCols_){//零矩阵或者后继行都是0return ret;}//当前行首元素化1Real factor = ret(transferRow,firstNotNullCol);for (int col = firstNotNullCol; col < ret.theCols_; ++col) {ret(transferRow,col) =  ret(transferRow,col) / factor;}//同列元素行化0for (int i = 0 ; i <  ret.theRows_; ++i) {if ( i ==transferRow )continue;Real factor2 = ret(i,firstNotNullCol);for (int j = firstNotNullCol; j <  ret.theCols_; ++j) {ret(i,j) = ret(i,j) -  ret(transferRow,j) * factor2;}}}return ret;
}

注:此代码对括号作了运算符重载,仅提供编程思路。如有代码优化的建议可以评论。

C++ : 矩阵初等行变换,化成最简矩阵相关推荐

  1. 数学/线性代数 {矩阵初等变换,[阶梯形/最简形]矩阵,初等矩阵}

    数学/线性代数 {矩阵初等变换,[阶梯形/最简形]矩阵,初等矩阵}; @LOC_COUNTER: 3; 矩阵的初等变换 定义 矩阵的初等变换 和行列式的变换 是完全一样的; . LINK: (http ...

  2. matlab最简矩阵,Matlab将一般矩阵变换为行最简矩阵

    %function a=SimpleMatrix(x) %对矩阵实行初等行变换,,化为行最简形矩阵,其特点是:非零行的第一个非零元为1,且这些非零元所在的列的其他元素都为0 x=[2 -1 -1 1 ...

  3. 矩阵初等行变换的技巧

    一般,使用初等行变换来判定一个矩阵是否可逆,和求某矩阵的逆矩阵. 二阶矩阵使用伴随矩阵法比较方便,高阶矩阵使用初等行变换. 一般来说,将一个矩阵化为标准阵遵循下面方法: 先用第一行消掉下面所有行的第一 ...

  4. 行阶梯型矩阵,行最简形矩阵,标准形矩阵

    行阶梯形矩阵: 行最简形矩阵: 标准形矩阵:

  5. matlab将矩阵化为行最简形

    化行最简形 本代码为个人原创 用基础函数写了一个matlab脚本将矩阵变成行最简式. 本代码未参考matlab自带的rref函数,完全手写 大致思路:把矩阵含有0的行放在最下面,然后下面的行减去上面的 ...

  6. matlab 矩阵命令,matlab中的矩阵的基本运算命令

    matlab中的矩阵的基本运算命令 (2013-07-19 08:45:49) 1.1 矩阵的表示 1.2 矩阵运算 1.2.14 特殊运算 1.矩阵对角线元素的抽取 函数 diag 格式 X = d ...

  7. 【矩阵分析】线性空间、λ矩阵、内积空间、Hermite矩阵、矩阵分解、矩阵范数、矩阵函数

    单纯矩阵:A可对角化⇔①A可对角化:⇔②n个线性无关的特征向量: ⇔③每个特征值的几何重复度等于代数重复度:⇔④特征值λi对应的pi = n - rank(λiE - A). 等价矩阵:A(λ)等价于 ...

  8. 二阶矩阵转置怎么求_矩阵求导术(下)

    本文承接上篇 https://zhuanlan.zhihu.com/p/24709748,来讲矩阵对矩阵的求导术.使用小写字母x表示标量,粗体小写字母 表示列向量,大写字母X表示矩阵.矩阵对矩阵的求导 ...

  9. 矩阵迹的性质_矩阵(含逆)的迹、行列式关于矩阵自身的导数计算与Maple验证...

    常见神经网络在计算相邻层权重关系式时,矩阵对矩阵求导所涉及的维度拼接操作对理论萌新往往不太友好:对于数据型为矩阵的最小二乘问题,尽管迹对矩阵求导操作十分实用但很多人仍习惯于逐项计算偏导.本文避开&qu ...

最新文章

  1. 记《浪潮之巅》-第一版-12.短暂的春秋--与机会失之交臂的公司之一太阳公司(sun microsystems)...
  2. 用PhpStorm IDE创建GG App Engine PHP应用教程
  3. R语言连接MySQL报错:could not run statement: The used command is not allowed with this MySQL version
  4. AngularJS 、Backbone.js 和 Ember.js 的比较
  5. mysql主从配置 ssl_Mysql主从基本配置及基于ssl的配置详解
  6. 从各大跨平台技术说开去,我们真的需要虚拟 DOM 吗?
  7. python 底层原理_Python 探针实现原理
  8. 前端学习(3241):react生命周期forceUpdate
  9. 计算机有新的更新,现在是2018年,我的电脑最近总是弹出说有重要更新,提示自2017年5月9日后,microsoft - Microsoft Community...
  10. 容器编排技术 -- Kubernetes kubectl set 命令详解
  11. 设计模式(14)-Flyweight Pattern
  12. java输入输出流_金九银十准备季:Java异常+Java IO与NIO面试题(含答案)
  13. Mongodb Geo2d索引原理
  14. 指纹匹配算法matlab,指纹识别算法matlab程序
  15. mysql当前时间的本月_mysql 获得当前月1号的日期 和 0点日期方法
  16. 好用的web报表设计器(报表工具)
  17. xss.haozi.me解题记录
  18. 不再盯着男性发烧友,小米手机要去“撩妹”?
  19. git常用命令和基本操作
  20. 将Windows XP 中文版变为英文版

热门文章

  1. https和server-status配置案例
  2. webstorm和intellij idea下如何自动编译sass和scss文件
  3. Node.js 代码阅读笔记系列(0)Timer 的实现
  4. Hyper-V之02 虚拟机复制与故障转移
  5. 双11怎么那么强!之二:浅析淘宝网络通信库tbnet的实现
  6. zend 修改默认view路径,添加扩展view
  7. 【IDEA】自动导入无歧义的包
  8. sonarqube下载地址
  9. 【收藏】详解apt、yum、dnf 和 pkg
  10. Linux系统下常用rpm包搜索网站