Gauss Jordan消元法求矩陣的逆

2022-07-19 03:51:11 字數 868 閱讀 9943

最近資訊保安作業要寫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行,每行分別與第一行做運算,消掉每行第乙個引數。公式如 形成如下圖所...