最近資訊保安作業要寫hill密碼,涉及到求矩陣的逆。不想用乙個函式就用那些亂七八糟的庫,大概找了找又沒現成的,只能自己擼了。
寫的時候才發現線代都忘光了qaq
1//gauss-jordan elimination method to get inverse matrix
2 template double>
3 std::vectordouble>> matrixinversion(const std::vector>&a)4);
14augma.push_back(std::move(tmp));15}
16int rank =a.size();
17//
init
18for (int i = 0; i < rank; ++i)
1923
for (int i = 0; i < rank; ++i)
2432
if (j == rank) return
{};33
for (int r = i; r < 2 * rank; ++r)
3437}38
double ep =augma[i][i];
39for (int r = i; r < 2 * rank; ++r)
4043
44for (int j = i + 1; j < rank; ++j)
4551}52
}53for (int i = rank - 1; i >= 0; --i)
5462}63
}6465for (auto&vec : augma)
6669
70return
augma;
71 }
高斯 約當(Gauss Jordan)消元法
選主元的高斯 約當 gauss jordan 消元法在很多地方都會用到,例如求乙個矩陣的逆矩陣 解線性方程組 插一句 lm演算法求解的乙個步驟 等等。它的速度不是最快的,但是它非常穩定 來自網上的定義 乙個計算方法,如果在使用此方法的計算過程中,捨入誤差得到控制,對計算結果影響較小,稱此方法為數值穩...
高斯消元法求逆矩陣
僅供自己學習記錄。沒有處理主對角線有0得情況與沒有逆矩陣的情況,但也基本夠用了。const int row 4 int res row row void gauss float mat row row else 2.化為行階梯形式 特殊處理第一行 for int i 1 i row i 對角線元素歸...
高斯消元法(二) 高斯消元法原理
高斯消去法是一種常用的求解線性方程組的方法,通過逐次消元後,在回代求解,實際計算中常用的一種方法。順序消去法 將ax b按照從上至下 從左至右的順序化為上三角方程組,中間過程不對矩陣進行交換,主要步驟如下。step1 將第2行至第n行,每行分別與第一行做運算,消掉每行第乙個引數。公式如 形成如下圖所...