Более быстрые вычисления в стиле прогнозируемой нормы (квадратичная форма, метрическая матрица ...)

Мне нужно выполнить много оценок формы

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 имеет много столбцов. В настоящее время я иду на компромисс

Y = A * X
for i=1:n
    z(i) = Y(:,i)' * X(:,i)
end

который немного быстрее / легче, но все еще кажется неудовлетворительным.

Я надеялся, что может быть какая-то идиома или трюк с матлабом / scilab для достижения этого результата более эффективно?

Ответы на вопрос(3)

Ваш ответ на вопрос