QR-код LAPACK хранит Q в качестве отражателей для домохозяев. Он масштабирует вектор отражения с , поэтому первый элемент результата становится , поэтому его не нужно сохранять. И он хранит отдельный вектор , который содержит необходимые масштабные коэффициенты. Таким образом, матрица отражателя выглядит так:
где не нормируется. В то время как в учебниках матрица отражателей
где нормализуется.
Почему LAPACK масштабирует с вместо его нормализации?
Необходимое хранилище остается тем же (вместо , должно быть сохранено), и после этого применение может быть выполнено быстрее, так как нет необходимости умножать на (умножение на в версии учебника можно оптимизировать, если вместо простой нормализации масштабируется как ).
(Причина моего вопроса в том, что я пишу процедуру QR и SVD, и я хотел бы знать причину этого решения, нужно ли мне следовать этому или нет)