3 つの行列 X(Nxk)、FF(kxk)、X(Nxk) (再び) を乗算する必要があります。これは t(xi) * FF * xi で、xi は X の i 番目の行、i=1:N です。結果は、N 行の単一列の行列になります。乗算も X * FF * t(X) と見なすことができます。
(Nxk) は「N 行、k 列」を表し、* は代数乗算、t() 転置です。
問題は、N が非常に大きい (100k 以上) ことです。ドロップとスイープを使用して高速乗算を行うためのアドバイスをいくつか見つけました。しかし、彼らは問題の半分、つまりベクトルと行列の乗算だけを考慮しています。
X のサイズのため、A=X FF と A t(X)の 2 つの段階での乗算を避けたいと思います。したがって、必要なのは、3 つの行列を一度に乗算する関数またはヒントです (まあ、 R で計算をできるだけ速くするためです。