Який найшвидший алгоритм для обчислення зворотної матриці та її визначального значення для позитивних визначених симетричних матриць?


10

З огляду на позитивну певну симетричну матрицю, який найшвидший алгоритм для обчислення зворотної матриці та її детермінанта? Для проблем, які мене цікавлять, розмір матриці становить 30 і менше.

  1. Висока точність і швидкість дійсно необхідні. (виконано мільйони матриць)
  2. Детермінант необхідний. У кожному розрахунку необхідний лише один елемент матриці зворотного напрямку. Дякую!

Чи потрібно інвертувати мільйони таких матриць? В іншому випадку швидкість не повинна бути проблемою.
Вольфганг Бангерт

Я відредагував вашу назву та питання для наочності. Якщо я зробив якісь помилки, будь ласка, повідомте мене про це.
Джефф Оксберрі

@Wolfgang Bangerth Так, швидкість слід враховувати.
Замовлення

1
Чи знаєте ви, який елемент оберненої матриці потрібен? Або це може бути випадковий запис?
Спогад

2
@Orders Ваш коментар та редагування здаються суперечливими: вам потрібен один елемент оберненого чи всі вони?
Федеріко Полоні

Відповіді:


12

Для проблем, які мене цікавлять, розмір матриці становить 30 і менше.

Як зазначає ВольфгангБангерт, якщо у вас є велика кількість цих матриць (мільйони, мільярди), ефективність інверсії матриць зазвичай не є проблемою.

З огляду на позитивну певну симетричну матрицю, який найшвидший алгоритм для обчислення зворотної матриці та її детермінанта?

Якщо швидкість - це проблема, вам слід відповісти на такі запитання:

  • Вам справді потрібна вся обернена? (Багатьом додаткам не потрібно формувати явний зворот.)
  • Вам справді потрібен визначник? (Детермінанти нечасті, але, безумовно, нечуті в обчислювальній науці.)
  • Вам потрібна або висока точність? (Алгоритми низької точності, як правило, швидші.)
  • Чи вистачить імовірнісного наближення? (Імовірнісні алгоритми, як правило, швидші.)

Стандартною відповіддю на вашу проблему перетворення невеликої, позитивної визначеної матриці та обчислення її детермінант було б розкладання Холеського. ЯкщоA=LLT, тоді det(A)=i=1nlii2, і .det(A1)=i=1nlii2

Якщо припустити, що є на , розклад Холеського можна обчислити приблизно в флопах, що становить приблизно половину вартості розкладання LU. Однак такий алгоритм не вважався б "швидким". Рандомізовані розкладання LUAnnn3/3може бути більш швидким алгоритмом, який варто врахувати, якщо (1) вам дійсно доведеться розраховувати велику кількість матриць; (2) факторизація дійсно є обмежуючим кроком у вашій програмі; (3) будь-яка помилка, яка виникає при використанні рандомізованого алгоритму, прийнятний. Ваші матриці, ймовірно, занадто малі, щоб розрізнені алгоритми були варті, тому єдині інші можливості для більш швидких алгоритмів вимагатимуть додаткової структури матриці (наприклад, смугової) або експлуатації проблемної структури (наприклад, можливо, ви можете вміло переструктурувати свій алгоритм, щоб у вас немає довше потрібно обчислити матрицю, обернену чи її визначником). Ефективні алгоритми детермінантної орієнтовної вартості розв'язують лінійну систему в межах постійного коефіцієнта, тому ті самі аргументи, які використовуються для лінійних систем, застосовуються і до обчислення детермінантів.


Тільки коротке зауваження: якщо , для обчислення одного елементу слід обчислюють тільки й стовпець . Після того, як обчислюється факторизація Холеського, це робиться за допомогою підстановки вперед і назад відносно резус-вектора всіх нулів і лише з однією в рядці . Оскільки обчислення можна перервати, як тільки обчислити , найкращим випадком є найгірший випадок для де треба обчислити повну спину і передні заміни. B=A1bijjBjbijbnn=lnn2b11
Стефано М

@StefanoM Ще краще, ви можете переставити матрицю до початку обчислення, щоб ви завжди були в кращому випадку.
Федеріко Полоні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.