Быстрое матричное умножение XDX ^ T для диагонали D - PullRequest
0 голосов
/ 12 марта 2019

Рассмотрим быстрое матричное умножение XDX ^ T для матрицы X n n на m и диагональной матрицы D a m на m. Здесь m >> n (предположим, n около 1000, m около 100000). В моем приложении X является фиксированной матрицей, и значения D могут меняться на каждой итерации.

Какой быстрый способ рассчитать это? На данный момент я просто делаю простое умножение в C ++.

РЕДАКТИРОВАТЬ: я должен уточнить мою текущую процедуру, это не "простое умножение". В частности, я колонизирую умножение X на квадратный корень из диагональных элементов D, чтобы получить A: = XD ^ {1/2}. Затем я непосредственно вычисляю A * t (A) (то есть умножение матрицы n на m с ее транспонированием).

Спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Если вы знаете, что D диагональ, вы можете просто сделать простое умножение.Надеюсь, вы не умножаете нули.

...