Существует ли простой способ инвертировать треугольную (верхнюю или нижнюю) матрицу?
Я пытаюсь реализовать некоторые основные операции линейной алгебры, и одна из этих операций - инверсия треугольной (верхней и/или нижней) матрицы. Есть ли простой и стабильный алгоритм для этого?
Спасибо.
Ответы
Ответ 1
Да, используйте обратную замену. Стандартный алгоритм инвертирования матрицы состоит в том, чтобы найти ее LU-декомпозицию (разложение на нижнетреугольную и верхнетреугольную матрицу), использовать обратную подстановку на треугольных кусках, а затем объединить результаты, чтобы получить обратную исходную матрицу.
Ответ 2
Не инвертируйте его, если сможете. Это одна из основных заповедей числовой линейной алгебры.
Гораздо быстрее и численно более стабильно хранить матрицу L в памяти и вычислять
inv(L)b
с помощью обратной подстановки всякий раз, когда вам нужно что-то делать с inv (L).
Обратите внимание, что обычный алгоритм его инвертирования требует решения систем
inv(L)[1 0 0 ...],
inv(L)[0 1 0 ....],
inv(L)[0 0 1 ....]
и т.д., поэтому вы видите, что гораздо проще не инвертировать его вообще.
Ответ 3
Учитывая нижнюю треугольную матрицу L, backsubstitution позволяет вам решить систему
L x = b
быстро для любой правой части b.
Чтобы инвертировать L, вы можете решить эту систему для правых частей e1 = (1,0,..., 0), e2 = (0,1,..., 0),..., en = (0,0,..., 1) и объединить полученные векторы решения в единую (обязательно нижнетреугольную) матрицу.
Если вы заинтересованы в решении с закрытой формой, диагональные элементы обратного являются инверсиями исходных диагональных элементов, а формула для остальных элементов обратного становится все сложнее, когда вы двигаетесь из диагонали.
Ответ 4
Если вы говорите о действиях с одиночной точностью, посмотрите исходный код для подпрограмм LAPACK STRTRI и STRTI2.
Ответ 5
Ничего себе, что практически половина содержания курса численного анализа. Стандартные алгоритмы сделают это, и есть куча консервированного кода здесь. Конечным источником этой и большинства других обычных задач численного анализа является Численные рецепты.