Что может быть лучшим способом найти обратную матрицу в SIMD?

Я копал это некоторое время

Чтобы найти обратную матрицу, мне нужно найти определитель матрицы (правильно?)

Но единственный способ, который я нашел, - это вычислить всю матрицу, используя a11 (a22a33 - a23*a32) и так далее.

Пожалуйста, просветите меня, как лучше всего найти определитель, чтобы я мог получить обратную матрицу?

или есть ли более эффективный способ получить обратную матрицу без нахождения определителя???


person NamHyunKang    schedule 01.07.2020    source источник


Ответы (1)


Вместо того, чтобы находить определитель общей матрицы, вы можете использовать LU-разложение, а затем, например, Библиотека Intel Math Kernel делает :

вычисляет inv(A), решая систему inv(A)*L = inv(U) для inv(A).

inv(U) (U – верхняя треугольная матрица) проще и эффективнее вычислять, например, с помощью показанных процедур здесь, но это сводится к тому, что определитель верхней треугольной матрицы является просто произведением ее диагонали.


И обязательное напоминание: по возможности используйте существующую математическую библиотеку, в таких числовых вычислениях очень легко ошибиться.

person evzh    schedule 01.07.2020