Я постараюсь высказать свое мнение по первому вопросу относительно быстрого3×3обратное . Рассматривать
A=⎡⎣⎢abcdefghi⎤⎦⎥
Поскольку матрицы являются небольшими и очень общими (не имеют никакой известной структуры, нулей, относительных масштабов элементов), я думаю, что было бы невозможно дать алгоритм для произвольного масштаба (без 1/det(A)) обратный, который быстрее, чем 18 плавких флопов, поскольку для каждого из 9 элементов требуется 2 плавких флопа, а все продукты уникальны, при условии отсутствия предварительной информации о Aзаписи a,…,i,
A−1det(A)=adj(A)=⎡⎣⎢ei−fhbi−chce−bfdi−fgai−cgaf−cdge−dhah−bgae−bd⎤⎦⎥
Вот,
adj(A) обозначает адъюгат (транспонирование кофакторов), который по существу является обратным с «произвольным масштабом» (при условии, что обратное существует).
Тем не менее, некоторые расчеты могут быть повторно использованы для расчета det(A), Если я расширю его до первого столбца (есть еще 5 вариантов):
det(A)=a(ei−fh)+b(fg−di)+c(dh−ge)=a(ei−fh)∗−b(di−fg)∗−c(ge−dh)∗
Обратите внимание, что (*) уже был вычислен во время оценки
adj(A), Таким образом, обратная величина детерминанта может быть вычислена в 4 дополнительных плавких флопах (если
1/det(A) взаимный считается 1 флоп).
Теперь каждый из 9 элементов adj(A) следует масштабировать по уже полученной обратной величине определителя, добавив еще 9 слитых флопов.
Так,
- Рассчитать adj(A) в 18 слитых флопах
- Рассчитать det(A) в 3 слитых флопах с использованием записей уже вычисленных adj(A)
- найти 1det(A) (при условии 1 флопа).
- Масштаб каждого элемента уже вычислен adj(A) по 1det(A) в еще 9 слитых флопах.
В результате 18 + 3 + 1 + 9 = 31 слитых флопов . Вы не описали свой способ вычисления определителя, но я думаю, 1 дополнительный флоп может быть сохранен. Или это может быть использовано для проверки|det(A)|>ϵ на шаге 3, где ϵ- допуск для вырожденного (не обратимого) случая, в результате которого получается 32 плавныхif
флопа (при условии, что 1 флоп).
Я не думаю, что есть более быстрый способ вычисления обратного 3×3Общая матрица, так как все остальные расчеты являются уникальными. Использование Cayley-Hamilton не должно помочь с точки зрения скорости, так как в общем случае это потребует расчетаA2 для 3×3 матрица помимо некоторых других операций.
NB:
- этот ответ не имеет дело с численной стабильностью
- Возможный потенциал векторизации и оптимизации структуры доступа к памяти также не обсуждается.