化成最简矩阵分成如下步骤
从矩阵的第 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) {