フォームの評価をたくさん行う必要があります
X(:,i)' * A * X(:,i) i = 1...n
ここで、X(:、i)はベクトルで、Aは対称行列です。表面上、私はこれをループで行うことができます
for i=1:n
z(i) = X(:,i)' * A * X(:,i)
end
遅いか、次のようにベクトル化します
z = diag(X' * A * X)
これは、Xに多数の列がある場合、RAMを許容できないほど浪費します。現在、私は妥協しています
Y = A * X
for i=1:n
z(i) = Y(:,i)' * X(:,i)
end
これは少し速く/軽いですが、それでも不十分なようです。
この結果をより効率的に達成するために、matlab / scilabのイディオムまたはトリックがあるのではないかと期待していましたか?