【发布时间】:2019-03-11 21:51:40
【问题描述】:
考虑 XDX^T 对 X an n x m 矩阵和 D an m x m 对角矩阵的快速矩阵乘法。这里 m>>n(假设 n 在 1000 左右,m 在 100000 左右)。在我的应用程序中,X 是一个固定矩阵,并且 D 的值可以在每次迭代时改变。
什么是计算这个的快速方法?目前我只是在 C++ 中做简单的乘法运算。
编辑:我应该澄清我目前的程序,它不是“简单的乘法”。特别是,我将 X 乘以 D 的对角线项的平方根,得到 A:=XD^{1/2}。然后我直接计算 A*t(A)(这是一个 n 乘 m 矩阵与其转置的乘积)。
谢谢。
【问题讨论】:
-
如果我没记错的话,你会得到一个 对称 n × n 矩阵 B,其中元素 Bi,j = sum(k=1,M) 的 Xi, k · Xj,k · Dk。我说的对吗?
-
是的。请注意,对于 n 约 1000,m 约 100000,保存外积 X_,k · X_,k for k=1,...,m 占用过多内存。否则我们可以使用它来加快计算速度。
标签: c++ matrix matrix-multiplication