Построение обратной матрицы — различия между версиями
м (rollbackEdits.php mass rollback) |
|||
| Строка 1: | Строка 1: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
==Описание алгоритма== | ==Описание алгоритма== | ||
Пусть <tex>A</tex> {{---}} исходная матрица. Тогда построим дополненную матрицу <tex>(A|E)</tex>, где <tex>E</tex> {{---}} единицная матрица соответсвующей размерности. Далее, в соответвии с преобразованиями Гаусса мы последовательно проходимся по всем строкам, вычитая из них линейные комбинации предыдущих. В итоге, мы получим матрицу <tex>(E|N)</tex>, где <tex>N</tex> {{---}} матрица, обратная к матрице <tex>A</tex>. | Пусть <tex>A</tex> {{---}} исходная матрица. Тогда построим дополненную матрицу <tex>(A|E)</tex>, где <tex>E</tex> {{---}} единицная матрица соответсвующей размерности. Далее, в соответвии с преобразованиями Гаусса мы последовательно проходимся по всем строкам, вычитая из них линейные комбинации предыдущих. В итоге, мы получим матрицу <tex>(E|N)</tex>, где <tex>N</tex> {{---}} матрица, обратная к матрице <tex>A</tex>. | ||
Текущая версия на 19:42, 4 сентября 2022
Описание алгоритма
Пусть — исходная матрица. Тогда построим дополненную матрицу , где — единицная матрица соответсвующей размерности. Далее, в соответвии с преобразованиями Гаусса мы последовательно проходимся по всем строкам, вычитая из них линейные комбинации предыдущих. В итоге, мы получим матрицу , где — матрица, обратная к матрице .
Псевдокод
- — исходная матрица.
- — единичная матрица.
- — обратная матрица.
function buildInverseMatrix(A: int[n][n])
N = E
for i = 0 to nonabs - 1
if A[i][i] 1
mul = A[i][i]
for j = 0 to nonabs - 1
A[i][j] /= mul
N[i][j] /= mul
for row = 0 to nonabs - 1
if i row
mul = E[row][i]
for j = 0 to nonabs - 1
A[row][j] -= mul * A[i][j]
N[row][j] -= mul * N[i][j]
return N